爱招飞帮助手册 爱招飞帮助手册
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
  • FastWeb帮助主页
  • 学习手册

  • 开发手册

    • 通讯协议

      • 串口

      • ModbusTCP

        • ModbusTCP控制LED灯(WEB)
        • ModbusTCP读取温湿度(WEB)
        • 液化水槽监控
          • 1. 说明
          • 2. 设计明细
          • 3. 程序设置
            • 3.1. 程序初始设置
            • 3.2. 事件设置
          • 4. 运行结果
      • MQTT

      • RestAPI

      • HTTP

    • 交互输出

    • 媒体存取

    • 人工智慧

    • 实例运用

目录

液化水槽监控

# FastWeb 液化水槽监控

# 1. 说明

  范例采用Modbus TCP通讯协议,控制Factroy IO 的场景,场景中可进行相关操作,FastWeb 范例监控状态的变化,执行相应的操作。

  Factory IO是一款出色的虚拟仿真软件,可以自由使用其内部的各种元器件、传感器、驱动器等搭建自己理想中的工业现场,并联合其他工控设备进行编程仿真。

  范例使用的 Factory IO 场景的制作方式如下:

  在Factory IO 中创建一个空白场景。在工作站分类中找到 Tank,将其拖放至场景中,使用鼠标右键点选零件,将配置修改为 Analog。

  接下来选择驱动方式,点击菜单栏中的 文件-驱动,在下拉框中选择驱动的方式为 Modbus TCP/IP Server,点击右侧的 配置 按钮,将从站ID 修改为 255,输入、输出点按照图示进行设置。

  返回驱动界面,界面中寄存器分配设置如下:

# 2. 设计明细

  开启FastWeb设计器,分别加入下插图之控件。或者通过点击[导入]按钮选择模板文件来打开模板。

  1:TUgSwitchImage 组件,控件名称为 UgSwitchImage03。

  2:TUgPanel 组件,控件名称为 UgPanel02。

  3:TUgSwitchImage 组件,控件名称为 UgSiwtchImage01。

  4:TUgTrackBar 组件,控件名称为 TrackBarIn。

  5:TUgPanel 组件,控件名称为 panelin。

  6:TUgPanel 组件,控件名称为 panellevel。

  7: TUgWaterTank 组件,控件名称为 UgWaterTank01。

  8:TUgPanel 组件,控件名称为 panelout。

  9:TUgPanel 组件,控件名称为 panelflow。

  10: TUgPanel 组件,控件名称为 UgPanel03。

  11:TUgSwitchIamge 组件,控件名称为 UgSwitchImage02。

  12:TUgTrackBar 组件,控件名称为 TrackBarOut。

  同时,界面中设置了8个 TUgModbusTCPClient,其中的 Host 属性均设置为 Factory IO 运行的 ModbusTCP Server IP地址。

  界面中设置了5个 TUgTimer,其中的 Interval 设置为 100。

  • UgWebRunFrame属性设置

    • Height:设置窗体高度=600。
    • Width:设置窗体宽度=800。
  • UgSwichImage03属性设置

      双击控件,打开图片编辑器,上传两个图片,用于代表开与关的状态。其中开的图片在前,关的图片在后。

  • UgPanel02属性设置

    • Ttite:设置文章显示的标题,设置为 进水控制。
    • ShowCaption:是否在面板区域显示文字,设置为 False。
    • TitleAlign:设置标题显示的文字的对齐方式,设置为 taCenter。
  • UgSiwtchImage01属性设置

      控件位于 UgPanel02 中,双击控件,打开图片编辑器,上传两个图片,用于代表开与关的状态。其中开的图片在前,关的图片在后。

  • TrackBarIn属性设置

    • Max:设置取值的最大值,设置为 1000。
  • panelin属性设置

    • Caption:设置初始显示的文字,设置为 0.00。
    • Title:设置标题显示的文字,设置为 进水最大流量(L/s)。
    • TitleAlign:设置标题显示的文字的对齐方式,设置为 taCenter。
  • panellevel属性设置

    • Caption:设置初始显示的文字,设置为 0.00。
    • Title:设置标题显示的文字,设置为 液位高度(m)。
    • TitleAlign:设置标题显示的文字的对齐方式,设置为 taCenter。
  • UgWaterTank01属性设置

    • Options:设置相关选项,其中修改 Height 为 240,修改 Width 为 100。
  • panelout属性设置

    • Caption:设置初始显示的文字,设置为 0.00。
    • Title:设置标题显示的文字,设置为 出水最大流量(L/s)。
    • TitleAlign:设置标题显示的文字的对齐方式,设置为 taCenter。
  • panelflow属性设置

    • Caption:设置初始显示的文字,设置为 0.00。
    • Title:设置标题显示的文字,设置为 出水流量(L/s)。
    • TitleAlign:设置标题显示的文字的对齐方式,设置为 taCenter。
  • UgPanel03属性设置

    • Ttite:设置文章显示的标题,设置为 出水控制。
    • ShowCaption:是否在面板区域显示文字,设置为 False。
    • TitleAlign:设置标题显示的文字的对齐方式,设置为 taCenter。
  • UgSiwtchImage02属性设置

      控件位于 UgPanel03 中,双击控件,打开图片编辑器,上传两个图片,用于代表开与关的状态。其中开的图片在前,关的图片在后。

  • TrackBarOut属性设置

    • Max:设置取值的最大值,设置为 1000。

# 3. 程序设置

# 3.1. 程序初始设置

  设置全局变量。

var Old_PotentionMeterFill,Old_PotentionMeterDisCharge,Fill,DisCharge,Fill_Pressed,DisCharge_Pressed,Old_Fill,Old_DisCharge;
1

  设置初始运行项:

function UgWebRunFrameOnAfterRunScript(sender)
{
  Fill_Pressed = false;
  DisCharge_Pressed = false;
  Old_Fill = "0";
  Old_DisCharge = "1";
}
1
2
3
4
5
6
7

# 3.2. 事件设置

  • UgTimer01-OnTimer事件

  检测开关的状态寄存器,同步更新。

function UgTimer01OnTimer(sender)
{
  var s,List;
  List = new TStringList();
  if (UgModbusTCPClient01.ReadCoils(1,2,s)){
    List.CommaText = s;
    if (List.Strings[0] == "1"){
      UgSwitchImage01.IsChecked = true;
      fill = true;
    }
    if (List.Strings[0] == "0"){
      UgSwitchImage01.IsChecked = false;
      fill = false;
    }
    if (List.Strings[1] == "1"){
      UgSwitchImage02.IsChecked = true;    
      DisCharge = true;
    }
    if (List.Strings[1] == "0"){
      UgSwitchImage02.IsChecked = false;    
      DisCharge = false;   
    }
  }
  List.Free;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  • UgTimer02-OnTimer 事件

  检测读数,并更新界面中显示的读数信息。

//读数状态切换
function UgTimer02OnTimer(sender)
{
  var i,o,s,t;
  if(UgModbusTCPClient02.ReadHoldingRegister(1,i)){
    panelin.Caption = FloatToStr(i * 0.01);
  }
  if(UgModbusTCPClient02.ReadHoldingRegister(2,o)){
    panelout.Caption = FloatToStr(o * 0.01);
  }
  if(UgModbusTCPClient02.ReadHoldingRegister(5,s)){
    panellevel.Caption = FloatToStr(s * 0.001 * 3);
    UgWaterTank01.Options.Level = s * 0.1;
  }
  if(UgModbusTCPClient02.ReadHoldingRegister(6,t)){
    panelflow.Caption = FloatToStr(t * 0.01);
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • ugSwitchImage01-OnSwitch事件

  进水开关状态变化指令传递。

//进水开关
function ugSwitchImage01OnSwitch(sender)
{
  UgModbusTCPClient03.WriteCoil(1,UgSwitchImage01.IsChecked);
}
1
2
3
4
5
  • ugSwitchImage02-OnSwitch事件

  出水开关状态变化指令传递。

//出水开关
function ugSwitchImage02OnSwitch(sender)
{
  UgModbusTCPClient03.WriteCoil(2,UgSwitchImage02.IsChecked);
}
1
2
3
4
5
  • TrackBarIn - OnChange事件

  进水最大流量调节。

//进水调节
function TrackBarInOnChange(sender)
{
  UgModbusTCPClient04.WriteRegister(1,TrackBarIn.Position);
  UgModbusTCPClient04.WriteRegister(3,TrackBarIn.Position);
}
1
2
3
4
5
6
  • TrackBarOut-OnChange事件

  出水最大流量调节。

//出水调节
function TrackBarOutOnChange(sender)
{
  UgModbusTCPClient04.WriteRegister(2,TrackBarIn.Position);
  UgModbusTCPClient04.WriteRegister(4,TrackBarIn.Position);
}
1
2
3
4
5
6
  • ugSwitchImage03-OnSwitch事件

  监控开关。

//定时器
function ugSwitchImage03OnSwitch(sender)
{
  UgTimer01.Enabled = UgSwitchImage03.IsChecked;
  UgTimer02.Enabled = UgSwitchImage03.IsChecked;
  UgTimer03.Enabled = UgSwitchImage03.IsChecked;
  UgTimer04.Enabled = UgSwitchImage03.IsChecked;
  UgTimer05.Enabled = UgSwitchImage03.IsChecked;
}
1
2
3
4
5
6
7
8
9
  • UgTimer03-OnTimer 事件

  按钮开关的状态检测,如有检测到按钮按动的操作,则执行相应的操作。

//检测按钮按下,开启开关
function UgTimer03OnTimer(sender)
{
  var s,t,List;
  List = new TStringList;
  if (UgModbusTCPClient08.ReadInputBits(1,2,s)){
    List.CommaText = s;
    if (List.Strings[0] == "1"){
      Fill_Pressed = True;
    }
    if (List.Strings[1] == "0"){
      DisCharge_Pressed = True;
    }
    if ((Fill_Pressed) && (Fill == False)){
      UgModbusTCPClient05.WriteCoil(1,True);
      Fill_Pressed = false;
    }
    if ((Fill_Pressed) && (Fill == True)){
      UgModbusTCPClient05.WriteCoil(1,False);
      Fill_Pressed = false;
    }
    if ((DisCharge_Pressed) && (DisCharge == false)){
      UgModbusTCPClient05.WriteCoil(2,True);
      DisCharge_Pressed = false;
    }
    if ((DisCharge_Pressed) && (DisCharge == true)){
      UgModbusTCPClient05.WriteCoil(2,False);
      DisCharge_Pressed = false;
    }
  }
  List.Free;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  • UgTimer04-OnTimer事件

  场景中的旋钮转动检测事件,同步更新界面的流量控制。

function UgTimer04OnTimer(sender)
{
  var s,List;
  List = new TStringList();
  UgModbusTCPClient06.ReadInputRegisters(1,4,s){
    List.CommaText = s;
    if (Old_PotentionMeterFill != StrToInt(List.Strings[0])){
      UgModbusTCPClient06.WriteRegister(1,StrToInt(List.Strings[0]));
      Old_PotentionMeterFill = StrToInt(List.Strings[0]);
    }
    if (Old_PotentionMeterDisCharge != StrToInt(List.Strings[1])){
      UgModbusTCPClient06.WriteRegister(2,StrToInt(List.Strings[1]));
      Old_PotentionMeterDisCharge = StrToInt(List.Strings[1]);
    }
    UgModbusTCPClient06.WriteRegister(5,StrToInt(List.Strings[2]));
    UgModbusTCPClient06.WriteRegister(6,StrToInt(List.Strings[3]));
  }
  List.Free;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • UgTimer05-OnTimer事件

  控制开关,控制进出水流量的总开关。

function UgTimer05OnTimer(sender)
{
  var s,List;
  List = new TStringList;
  if (UgModbusTCPClient07.ReadHoldingRegisters(1,4,s)){
    List.CommaText = s;
    if (Fill){
      UgModbusTCPClient07.WriteRegister(3,StrToInt(List.Strings[0]));
    }
    Else{
      UgModbusTCPClient07.WriteRegister(3,0);
    }
    if (DisCharge){
      UgModbusTCPClient07.WriteRegister(4,StrToInt(List.Strings[1]));
    }
    Else{
      UgModbusTCPClient07.WriteRegister(4,0);
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 4. 运行结果

  使用鼠标点击工具栏保存到数据库,然后点击运行(Run),测试运行结果。监控按钮按下后,可在Factory IO 中的场景执行操作。

ModbusTCP读取温湿度(WEB)
MQTT控制LED灯(WEB)

← ModbusTCP读取温湿度(WEB) MQTT控制LED灯(WEB)→

Copyright © 2021-2025 爱招飞IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式