目前和Modbus主機相關的節點主要有6個,分別是modbus_master_rtu、modbus_master_in、modbus_master_dynamic_in、modbus_master_out、modbus_parse_in和modbus_parse_out節點。其中,modbus_master_rtu節點屬于配置節點,用于配置Modbus通信設備的參數信息,該節點提供了Modbus RTU和Modbus TCP的主機通信服務;modbus_master_in和modbus_master_dynamic_in是Modbus的輸入節點,主要用于讀取從機設備的線圈量和寄存器數據;modbus_master_out是數據的輸出節點,用于寫線圈量和寄存器;modbus_parse_in和modbus_parse_out是擴展的Modbus功能節點,一般用來對輸入/輸出數據進行處理。
modbus_master_rtu節點Modbus主機的配置節點,用于配置與Modbus主機通信的從設備的通信參數,提供了Modbus RTU和Modbus TCP主機功能。該節點需要和對應的功能節點搭配使用,不會在畫布中顯示。
1. 屬性
modbus_master_rtu節點包含了RTU和TCP兩種模式的配置,不同模式需要設置的屬性不同。
1.1RTU模式配置屬性
- 名稱 :節點名稱,用于索引查找本節點;
- 顯示名稱:用于畫布上顯示的名稱;
- 傳輸類型:用于設置鏈路層的傳輸模式(rtu/tcp可選);
- 串口設備名:用于與從設備通信的串口設備名;
- 波特率:串口波特率參數;
- 數據位:串口數據位參數;
- 校驗位:串口奇偶校驗位參數;
- 停止位:串口停止位參數;
- 響應時間:從機應答超時時間,單位ms;
- 最大請求數量:用于配置Modbus主機讀寫請求的最大數量。
1.2 TCP模式配置屬性
- IP地址:從機設備(服務器)的IP地址;
- 端口:從機設備的端口號;
- 響應時間:從機應答超時時間,單位ms;
- 最大請求數量:用于配置Modbus主機讀寫請求的最大數量。
2. 使用方法
該節點的使用依附于modbus_master_in、modbus_master_dynamic_in以及modbus_master_out等節點,使用時選擇對應的通信模式,根據從機信息配置相應的配置屬性即可。
modbus_master_in節點modbus_master_in是Modbus的輸入節點,主要用于讀取從機設備的線圈量和寄存器數據并輸出給消費者節點。其輸出是原始數據的緩沖區,后續可連接modbus_parse_in節點對數據進行處理。
1. 屬性
- 主機參數配置:輸入節點依賴modbus_master_rtu節點,選擇對應的配置節點即可;
- 讀取模式:選擇節點的觸發方式,可選擇以用戶設定的輸出周期定時向消費者節點輸出數據;也可根據輸入的信息(來自push節點)進行數據讀取并輸出;
- 從機ID:從機設備的ID地址;
- 輸出周期:用于周期讀取模式設置讀取和輸出的周期;
- 寄存器地址:需要被讀取的寄存器/線圈的起始地址;
- 讀取數量:需要讀取的寄存器/線圈數量;
- 寄存器類型:用于選擇讀取目標的類型,可選線圈量、離散量、輸入寄存器、保持寄存器。
2. 輸入
該節點屬于pump類型節點,一般不需要數據輸入,但可以使用push節點來實現數據輸入。- slaveID:從機設備的ID地址;
- address:需要被讀取的寄存器/線圈的起始地址;
- reg_num:需要讀取的寄存器/線圈數量;
- reg_type:需要讀取的寄存器/線圈類型。
3. 輸出
- slaveID:從機設備的ID地址,通常用于后級節點區分設備;
- address:讀取的寄存器起始地址;
- reg_num:讀取到的寄存器/線圈數量;
- payload:緩沖區,存儲讀取到的數據;
- payloadLength:讀取到的數據長度;
- poll_result:指明讀取是否成功;
4.使用方法
這里我們借助ZC1平臺和一個RS485型的溫濕度變送器來說明節點的使用方法。按照下圖所示分別給ZC1開發板和傳感器供電,并連接好RS485的A、B兩線。4.1 添加節點
添加modbus_master_in、modbus_parse_in、fscript以及log節點到畫布上并連接節點。
4.2 配置節點
雙擊modbus_master_in節點打開屬性配置面板。
選擇“添加新的modbus_master_rtu節點”,進入配置主機參數面板。
根據實際情況配置完相應的參數后,點擊添加,回到modbus_master_in節點配置界面。可以看到已經創建了一個新的主機參數配置,同時配置讀取模式為周期讀取,從機ID、輸出周期、寄存器地址等參數按照實際設備進行配置 。然后雙擊modbus_parse_in節點打開屬性配置面板,對modbus_parse_in進行轉換規則設置。這里我們選擇多地址轉換模式,分別對溫度和濕度兩個寄存器進行轉換,因此轉換數量設置為2,轉換類型設置為16位。接下來設置modbus_parse_in節點的后級節點fscript,主要是對后續的打印信息進行格式化。由于modbus_parse_in節點的輸出payload是array型對象,這里我們可以通過fscript的內置方法array_get來獲取數據。fscript的內容如下:
a=msg.payload
msg.payload = "溫度:"+array_get(a,0)/10 +",濕度:"+array_get(a,1)/10
4.3 下載驗證
連接好硬件,通過下載接口下載流圖進行驗證。
通過調試面板可以看到讀回的溫濕度數據。 ?modbus_master_dynamic_in節點
modbus_master_dynamic_in同樣是Modbus的輸入節點,與modbus_master_in的區別是:modbus_master_dynamic_in節點是filter類型的節點,其根據前級節點輸入的信息向從機設備讀取數據,并輸出給消費者節點。
1. 屬性
- 傳輸類型:用于設置鏈路層的傳輸模式(rtu/tcp可選);
- 主機參數配置:輸入節點依賴modbus_master_rtu節點,和使用modbus_master_in節點時一樣,選擇對應的配置節點即可;
2. 輸入
- slaveID:從機設備的ID地址;
- address:待讀取的寄存器的起始地址;
- reg_num:待讀取的寄存器的數量;
- reg_type:待讀取寄存器的類型。
3. 輸出
- slaveID:從機設備的ID地址;
- address:待讀取的寄存器的起始地址;
- reg_num:讀取到的寄存器的數量;
- payload:數據緩沖區,存儲讀取到的數據;
- payloadLength:讀取到的數據長度;
- poll_result:指明讀取是否成功。
3. 使用方式
modbus_master_dynamic_in節點一般是由fscript節點指明需要讀取的從機設備的信息,節點本身只需要創建并配置相應的主機即可。對于modbus_master_dynamic_in的輸出緩沖區,我們同樣使用modbus_parse_in節點進行處理。在fscript中指明讀取內容時,只需提供以下信息:
msg.slaveID = 1
msg.address = 0
msg.reg_num = 2
msg.reg_type = 4
modbus_master_out節點modbus_master_out節點是Modbus的輸出節點,用于寫線圈量和寄存器。
1. 屬性
- 主機參數配置:輸出節點依賴modbus_master_rtu節點,選擇對應的配置節點即可;
- 從機ID:待寫入的從機設備ID地址;
- 錯誤重試次數:發送錯誤情況下的重試次數;
- 寄存器類型:待寫入寄存器的類型。
2. 輸入
- slaveID:從機設備的ID地址,如果輸入中包含此參數,則忽略屬性中的地址;
- address:待寫入的寄存器的起始地址;
- reg_num:待寫入的寄存器的數量;
- payload:寫入緩沖區,存儲待寫入的數據,一般由modbus_parse_out輸入;
- payloadLength:寫入緩沖區的字節長度。
3. 輸出
modbus_master_out節點是sink類型的節點,一般沒有輸出。
4. 使用方法
modbus_master_out節點通常由modbus_parse_out節點進行輸入。使用時和modbus_master_in一樣創建一個主機配置,指明待寫入設備的ID地址以及寄存器類型即可。
其中,modbus_parse_out節點的輸入一般來自fscript節點,我們可以在fscript中借助array對象完成數據輸入。比如我們需要將從機地址為1的設備的寄存器0設置為2,我們只需在fscript中添加如下內容:
var a = array_create();
array_isert(a,0,2);
msg.payload = a;
msg.slaveID = 1;
msg.address = 0;
modbus_parse_in節點
Modbus輸入數據的轉換節點,這個節點一般用于接收Modbus輸入節點的原始數據,將其轉換成單個value或者array對象,以便于后續處理。
1. 屬性
- 數據轉換模式:可以選擇對輸入中的單個地址的數據進行轉換,也可以選擇對指定數量的寄存器、或者對輸入的所有地址進行轉換;
- 轉換地址:選擇單個寄存器轉換時,填寫需要轉換的寄存器地址;
- 數據轉換起始地址:選擇轉換多個寄存器時,指明轉換的起始地址;
- 轉換數量:選擇轉換多個寄存器時,指明轉換數量;
- 數據轉換類型:選擇按照哪種類型對數據進行轉換;
- 大小端選擇:大小端系統選擇;
- 數據主題:數據地址的主題(可選)。
2. 輸入
modbus_parse_in的輸入來自modbus_master_in或modbus_master_dynamic_in節點。- slaveID:從機設備的ID地址;
- address:上一級節點讀取的寄存器起始地址;
- reg_num:上一級節點讀取到的寄存器數量;
- payload:數據緩沖區指針,存儲讀取到的數據;
- payloadLength:讀取到的字節數據長度;
- poll_result:上一級節點讀取數據是否成功。
3. 輸出
- slaveID:從機設備ID地址;
- address:轉換單個寄存器時,指示數據的寄存器地址;在轉換多個寄存器模式下,指示起始的寄存器的地址;
- payloadType:指示緩沖區的類型是value還是array;
- payload:轉換后的數據緩沖區,在轉換單個寄存器時,payload的類型是value,可直接讀取;當轉換多個寄存器時,payload是個array對象,可以使用rbuffer進行讀取;
- topic:屬性中設定的數據主題;
- poll_result:上一級節點讀取數據是否成功。
4. 使用方法
modbus_parse_in節點使用時需要指定轉換的模式、待轉換的寄存器地址和數量、待轉換寄存器的數據類型以及系統的大小端模式。
作為filter類型節點,modbus_parse_in通常是從modbus_master_in節點獲取輸入。其輸出有兩種類型,在轉換單個寄存器時,payload的類型是value,可以直接讀取。當轉換多個寄存器時,payload是個array對象,可以在fscript中通過array對象的方法進行處理。其中,array對象的使用方式如下:
a = msg.payload
print("濕度 " + array_get(a, 0))
print("溫度 " + array_get(a, 1))
modbus_parse_out節點
modbus_parse_out節點通常用于將fscript節點輸出的value或array對象轉換成Modbus標準的十六進制格式,后續可以將相應的數據指針傳入Modbus的輸出節點modbus_master_out進行使用。
1. 屬性
- 寄存器起始地址:指明需要modbus_master_out寫入的寄存器的起始地址,如果節點的輸入不包含msg.address,則使用此屬性指向的地址;
- 大小端:系統大小端模式選擇;
- 主題:如果設定了主題,則節點只處理屬于自己的主題消息。
2. 輸入
- slaveID:從機設備ID地址;
- address:待寫入的寄存器起始地址;
- payload:待寫入的值,可以是value類型,也可以是array對象;
- topic:輸入的數據主題,如果本節點設置了主題屬性,則只有輸入的主題與節點的主題屬性匹配,節點才會對下一節點輸出;
3. 輸出
- slaveID:從機設備ID地址;
- address:待寫入的寄存器的起始地址;
- reg_num:待寫入的寄存器的數量;
- payload:轉換后的Modbus標準十六進制數組緩沖區指針;
- payloadLength:數組緩沖區的字節長度。
4. 使用方法
modbus_parse_out節點的前級通常是fscript,使用時在fscript中指明待寫入的從機設備ID地址、并傳遞構建好的array對象即可。其后級節點一般是modbus_master_out節點,通過modbus_master_out節點將數據寫入目標設備。其中,在fscript中構建array對象的方法如下:
a = array_create();
array_insert(a, 0, u16(1))
array_insert(a, 1, u16(2))
array_insert(a, 2, u16(3))
output.payload = a;
output.slaveID = 10;
output.address = 0;
-
MODBUS
+關注
關注
28文章
1810瀏覽量
77071 -
現場總線
+關注
關注
3文章
520瀏覽量
38584 -
ESDA
+關注
關注
0文章
28瀏覽量
7514 -
串行通信協議
+關注
關注
0文章
22瀏覽量
7674 -
致遠電子
+關注
關注
13文章
406瀏覽量
31327
原文標題:【EsDA應用】Modbus應用詳解
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論