愛招飛幫助手冊 愛招飛幫助手冊
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • FastERP-1
  • Smart
  • PinToo
  • FastWeb
  • FastERP-2 企業管理系統 (opens new window)
  • 印染業ERP (opens new window)
  • 工廠終端機 (opens new window)
  • TARS
  • MARS
  • TaskRunner
  • Flying
  • FastDesk
  • HiDesk
  • HiNAT
  • FastBPM
  • 設備故障診斷 (opens new window)
  • 設備最佳運轉效益 (opens new window)
  • 企業智能助手SmeGPT (opens new window)
  • 燈號管理 (opens new window)
  • 戰情室 (opens new window)
  • 能源管理 (opens new window)
  • 人車定位 (opens new window)
  • 戰情指揮系統 (opens new window)
  • FastERP-1
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
  • 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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式