在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【EsDA應用】Modbus應用詳解

ZLG致遠電子 ? 2023-03-18 10:16 ? 次閱讀

Modbus作為一種公開、免費的現場總線,被廣泛應用于工業電子領域。本文基于EsDA開發平臺,為您詳細介紹Modbus主機功能節點的使用方式,以及如何快速實現讀取Modbus從機數據。1b5a8320-c37a-11ed-ad0d-dac502259ad0.jpg ?Modbus簡介Modbus是一種串行通信協議,由于其公開、免費、易于部署和維護的優點,被廣泛應用于工業電子領域,并且已經成為工業領域通信協議的業界標準。

(圖片源自網絡,侵刪)

以往我們在使用Modbus協議進行應用開發時,通常需要自己實現諸多的Modbus功能碼,或者移植開源的第三方庫,這個過程往往比較費時費力,耽誤項目的進展。基于EsDA設計的Modbus主機功能節點,可以通過簡單的拖拽、連線方式,快速實現讀取Modbus從機數據,搭配其他功能節點,可以快速搭建出一個集數據采集上報、遠程控制于一體的物聯網應用。
1b5a8320-c37a-11ed-ad0d-dac502259ad0.jpg ?Modbus相關節點介紹

目前和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功能節點,一般用來對輸入/輸出數據進行處理。


1b99d3ae-c37a-11ed-ad0d-dac502259ad0.jpg modbus_master_rtu節點

Modbus主機的配置節點,用于配置與Modbus主機通信的從設備的通信參數,提供了Modbus RTU和Modbus TCP主機功能。該節點需要和對應的功能節點搭配使用,不會在畫布中顯示。

1. 屬性

modbus_master_rtu節點包含了RTU和TCP兩種模式的配置,不同模式需要設置的屬性不同。

1.1RTU模式配置屬性

1baad1d6-c37a-11ed-ad0d-dac502259ad0.png

  • 名稱 :節點名稱,用于索引查找本節點;
  • 顯示名稱:用于畫布上顯示的名稱;
  • 傳輸類型:用于設置鏈路層的傳輸模式(rtu/tcp可選);
  • 串口設備名:用于與從設備通信的串口設備名;
  • 波特率:串口波特率參數;
  • 數據位:串口數據位參數;
  • 校驗位:串口奇偶校驗位參數;
  • 停止位:串口停止位參數;
  • 響應時間:從機應答超時時間,單位ms;
  • 最大請求數量:用于配置Modbus主機讀寫請求的最大數量。

1.2 TCP模式配置屬性

1bb31e22-c37a-11ed-ad0d-dac502259ad0.png

  • IP地址:從機設備(服務器)的IP地址;
  • 端口:從機設備的端口號;
  • 響應時間:從機應答超時時間,單位ms;
  • 最大請求數量:用于配置Modbus主機讀寫請求的最大數量。

2. 使用方法

該節點的使用依附于modbus_master_in、modbus_master_dynamic_in以及modbus_master_out等節點,使用時選擇對應的通信模式,根據從機信息配置相應的配置屬性即可。


1b99d3ae-c37a-11ed-ad0d-dac502259ad0.jpg modbus_master_in節點

modbus_master_in是Modbus的輸入節點,主要用于讀取從機設備的線圈量和寄存器數據并輸出給消費者節點。其輸出是原始數據的緩沖區,后續可連接modbus_parse_in節點對數據進行處理。

1. 屬性

1be40758-c37a-11ed-ad0d-dac502259ad0.png

  • 主機參數配置:輸入節點依賴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兩線。1c17eb7c-c37a-11ed-ad0d-dac502259ad0.png4.1 添加節點

添加modbus_master_in、modbus_parse_in、fscript以及log節點到畫布上并連接節點。

1c3f531a-c37a-11ed-ad0d-dac502259ad0.png

4.2 配置節點

雙擊modbus_master_in節點打開屬性配置面板。

1c629dac-c37a-11ed-ad0d-dac502259ad0.png

選擇“添加新的modbus_master_rtu節點”,進入配置主機參數面板。

1c952056-c37a-11ed-ad0d-dac502259ad0.png

根據實際情況配置完相應的參數后,點擊添加,回到modbus_master_in節點配置界面。1ca28fd4-c37a-11ed-ad0d-dac502259ad0.png可以看到已經創建了一個新的主機參數配置,同時配置讀取模式為周期讀取,從機ID、輸出周期、寄存器地址等參數按照實際設備進行配置 。然后雙擊modbus_parse_in節點打開屬性配置面板,對modbus_parse_in進行轉換規則設置。1cb4ac32-c37a-11ed-ad0d-dac502259ad0.png這里我們選擇多地址轉換模式,分別對溫度和濕度兩個寄存器進行轉換,因此轉換數量設置為2,轉換類型設置為16位。接下來設置modbus_parse_in節點的后級節點fscript,主要是對后續的打印信息進行格式化。由于modbus_parse_in節點的輸出payload是array型對象,這里我們可以通過fscript的內置方法array_get來獲取數據。fscript的內容如下:

a=msg.payloadmsg.payload = "溫度:"+array_get(a,0)/10 +",濕度:"+array_get(a,1)/10

4.3 下載驗證

連接好硬件,通過下載接口下載流圖進行驗證。

1ccb688c-c37a-11ed-ad0d-dac502259ad0.png

通過調試面板可以看到讀回的溫濕度數據。1cd6dc76-c37a-11ed-ad0d-dac502259ad0.png1b99d3ae-c37a-11ed-ad0d-dac502259ad0.jpg modbus_master_dynamic_in節點

modbus_master_dynamic_in同樣是Modbus的輸入節點,與modbus_master_in的區別是:modbus_master_dynamic_in節點是filter類型的節點,其根據前級節點輸入的信息向從機設備讀取數據,并輸出給消費者節點。

1. 屬性

1cfd4c30-c37a-11ed-ad0d-dac502259ad0.png

  • 傳輸類型:用于設置鏈路層的傳輸模式(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. 使用方式

1d0ccafc-c37a-11ed-ad0d-dac502259ad0.pngmodbus_master_dynamic_in節點一般是由fscript節點指明需要讀取的從機設備的信息,節點本身只需要創建并配置相應的主機即可。對于modbus_master_dynamic_in的輸出緩沖區,我們同樣使用modbus_parse_in節點進行處理。

在fscript中指明讀取內容時,只需提供以下信息:

msg.slaveID = 1msg.address = 0msg.reg_num = 2msg.reg_type = 4


1b99d3ae-c37a-11ed-ad0d-dac502259ad0.jpg modbus_master_out節點

modbus_master_out節點是Modbus的輸出節點,用于寫線圈量和寄存器。

1. 屬性

1d487a16-c37a-11ed-ad0d-dac502259ad0.png

  • 主機參數配置:輸出節點依賴modbus_master_rtu節點,選擇對應的配置節點即可;
  • 從機ID:待寫入的從機設備ID地址;
  • 錯誤重試次數:發送錯誤情況下的重試次數;
  • 寄存器類型:待寫入寄存器的類型。

2. 輸入

  • slaveID:從機設備的ID地址,如果輸入中包含此參數,則忽略屬性中的地址;
  • address:待寫入的寄存器的起始地址;
  • reg_num:待寫入的寄存器的數量;
  • payload:寫入緩沖區,存儲待寫入的數據,一般由modbus_parse_out輸入;
  • payloadLength:寫入緩沖區的字節長度。

3. 輸出

modbus_master_out節點是sink類型的節點,一般沒有輸出。

4. 使用方法

1d5a1b9a-c37a-11ed-ad0d-dac502259ad0.png

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;

1b99d3ae-c37a-11ed-ad0d-dac502259ad0.jpg modbus_parse_in節點

Modbus輸入數據的轉換節點,這個節點一般用于接收Modbus輸入節點的原始數據,將其轉換成單個value或者array對象,以便于后續處理。

1. 屬性

1d7aa518-c37a-11ed-ad0d-dac502259ad0.png

  • 數據轉換模式:可以選擇對輸入中的單個地址的數據進行轉換,也可以選擇對指定數量的寄存器、或者對輸入的所有地址進行轉換;
  • 轉換地址:選擇單個寄存器轉換時,填寫需要轉換的寄存器地址;
  • 數據轉換起始地址:選擇轉換多個寄存器時,指明轉換的起始地址;
  • 轉換數量:選擇轉換多個寄存器時,指明轉換數量;
  • 數據轉換類型:選擇按照哪種類型對數據進行轉換;
  • 大小端選擇:大小端系統選擇;
  • 數據主題:數據地址的主題(可選)。

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節點使用時需要指定轉換的模式、待轉換的寄存器地址和數量、待轉換寄存器的數據類型以及系統的大小端模式。

1d96d242-c37a-11ed-ad0d-dac502259ad0.png

作為filter類型節點,modbus_parse_in通常是從modbus_master_in節點獲取輸入。其輸出有兩種類型,在轉換單個寄存器時,payload的類型是value,可以直接讀取。1db7643a-c37a-11ed-ad0d-dac502259ad0.png當轉換多個寄存器時,payload是個array對象,可以在fscript中通過array對象的方法進行處理。1dce54e2-c37a-11ed-ad0d-dac502259ad0.png其中,array對象的使用方式如下:

a = msg.payload
print("濕度 " + array_get(a, 0))print("溫度 " + array_get(a, 1))

1b99d3ae-c37a-11ed-ad0d-dac502259ad0.jpg modbus_parse_out節點

modbus_parse_out節點通常用于將fscript節點輸出的value或array對象轉換成Modbus標準的十六進制格式,后續可以將相應的數據指針傳入Modbus的輸出節點modbus_master_out進行使用。

1. 屬性

1e003674-c37a-11ed-ad0d-dac502259ad0.png

  • 寄存器起始地址:指明需要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節點將數據寫入目標設備。

1e21d720-c37a-11ed-ad0d-dac502259ad0.png

其中,在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;

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6069

    瀏覽量

    136328
  • MODBUS
    +關注

    關注

    28

    文章

    1820

    瀏覽量

    77249
收藏 人收藏

    評論

    相關推薦

    Modbus功能碼詳解

    Modbus標準在協議中規定了以下3類Modbus功能碼。
    的頭像 發表于 10-29 14:35 ?1589次閱讀

    ST NPI 新上架產品【ESDA5WY】Datasheet

    ESDAxxWY系列:汽車應用中的ESD保護。在確保汽車應用安全性的同時縮減PCB尺寸對于需要穩健保護功能的系統,選擇ESDAxxWY可確保實現高可靠性和高質量。這類器件用于防止敏感電子元件受到
    發表于 10-21 10:46 ?0次下載

    串口屏Modbus通訊協議詳解

    Modbus是一種開放的通信協議,廣泛應用于工業自動化領域。它定義了消息結構和設備間的通信方式,支持多種物理層網絡,如RS-232、RS-485等。本文將詳細介紹如何在串口屏上實現Modbus通訊
    的頭像 發表于 10-20 14:23 ?1656次閱讀

    (4)什么是TVS ESD及工作電壓 箝位電壓

    ESD
    上海雷卯電子
    發布于 :2024年10月18日 17:26:05

    EsDA,一站式嵌入式軟件

    EsDA是一套面向工業智能物聯領域的嵌入式系統設計自動化工具集,包含實時操作系統AWorksLP、低代碼開發平臺AWStudio、資源管理平臺AXPI、跨平臺GUI引擎AWTK和云服務平臺ZWS
    的頭像 發表于 09-15 08:10 ?337次閱讀
    <b class='flag-5'>EsDA</b>,一站式嵌入式軟件

    高效數據傳輸Modbus RTU轉Modbus TCP網關

    上篇我們就談到Modbus網關在WinCC系統的應用,本篇就為大家詳解InTouch作為客戶端如何通過Modbus網關與工業自動化設備進行數據交換的?話不多說,我們直接開始! 要想了解InTouch
    的頭像 發表于 08-02 14:24 ?572次閱讀
    高效數據傳輸<b class='flag-5'>Modbus</b> RTU轉<b class='flag-5'>Modbus</b> TCP網關

    使用modbus地址時的注意事項

    如表1所示。PLC地址例如40001、30002等。 寄存器modbus協議地址指通信時使用的寄存器地址,在實際編程中,由于寄存器PLC地址前綴的區分作用,所以只需說明后4位數,而且需轉換為4位十六進制
    發表于 07-24 06:38

    Modbus RTU轉PROFINET協議轉換網關 HT1S-PNS485-S10

    Modbus RTU/RS485/232 轉 PROFINET(S7-400/1500/1200、CPU315-2PN/DP)網關HT1S-PN485-S5為最大可支持5個MODBUS從站,輸入
    發表于 06-06 14:43

    ESD管 AZ5825-01F型號ESDA05CPX參數對比

    ESD管 AZ5825-01F型號ESDA05CPX參數對比
    的頭像 發表于 05-11 08:03 ?938次閱讀
    <b class='flag-5'>ESD</b>管 AZ5825-01F型號<b class='flag-5'>ESDA</b>05CPX參數對比

    modbus報文解析,modbus報文格式詳解

    Modbus協議是一種通信協議,用于在工業自動化系統中連接電子設備,用于在工業自動化和控制系統中進行數據交換。。Modbus協議通過串行通信線路(例如RS-485)或以太網進行通信。Modbus
    的頭像 發表于 04-16 15:16 ?2650次閱讀

    Modbus轉Profine網關接溫度傳感器方案# Profinet轉485Modbus網關

    MODBUS網關
    興達易控
    發布于 :2024年04月04日 22:02:50

    Modbus轉Profinet網關解決Modbus輪詢速度慢# Profinet轉Modbus網關

    MODBUS網關
    興達易控
    發布于 :2024年03月20日 19:12:27

    靜電ESD整改:原因、影響與解決方案詳解

    靜電ESD整改:原因、影響與解決方案詳解?|深圳比創達電子
    的頭像 發表于 03-13 10:26 ?987次閱讀
    靜電<b class='flag-5'>ESD</b>整改:原因、影響與解決方案<b class='flag-5'>詳解</b>?
    主站蜘蛛池模板: 国内色视频 | 99r8这里精品热视频免费看 | 久久久免费网站 | 免费在线一区二区三区 | 扒开末成年粉嫩的流白浆视频 | jzzjlzz亚洲乱熟在线播放 | 国产理论视频在线观看 | 亚洲精品福利网站 | 国产叼嘿免费视频网站 | 欧美成人aaaa免费高清 | 色丁香在线视频 | 91国内在线视频 | 午夜亚洲| 黄色在线播放网址 | 一级做a爱片在线播放 | 午夜影院18 | 高清人人天天夜夜曰狠狠狠狠 | 日韩欧美不卡片 | 成人免费看黄网站yyy456 | 色多多黄色| 午夜美女影院 | 拍拍拍无挡视频免费全程1000 | 97久久人人 | 天天综合天天综合色在线 | 你懂的免费在线 | 亚洲天天做日日做天天欢毛片 | 亚洲天堂二区 | 亚洲免费在线观看视频 | 亚洲人成伊人成综合网久久 | 天天草天天爽 | 乱操视频 | 在线播放免费 | 久久精品亚洲 | 国产精品香蕉在线一区 | 欧美区在线 | 亚洲高清资源 | 国产小视频在线免费观看 | 深夜视频在线播放视频在线观看免费观看 | 久久九九国产精品怡红院 | 日本偷偷操 | 中文字幕一区二区三区不卡 |