色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

【EsDA應用】Modbus應用詳解

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

5fce2232-bf47-11ed-bfe3-dac502259ad0.jpg

(圖片源自網絡,侵刪)

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

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

5fefe660-bf47-11ed-bfe3-dac502259ad0.jpgmodbus_master_rtu節點

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

1. 屬性

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

1.1RTU模式配置屬性

6000291c-bf47-11ed-bfe3-dac502259ad0.png
  • 名稱 :節點名稱,用于索引查找本節點;
  • 顯示名稱:用于畫布上顯示的名稱;
  • 傳輸類型:用于設置鏈路層的傳輸模式(rtu/tcp可選);
  • 串口設備名:用于與從設備通信的串口設備名;
  • 波特率:串口波特率參數;
  • 數據位:串口數據位參數;
  • 校驗位:串口奇偶校驗位參數;
  • 停止位:串口停止位參數;
  • 響應時間:從機應答超時時間,單位ms;
  • 最大請求數量:用于配置Modbus主機讀寫請求的最大數量。
1.2 TCP模式配置屬性
600f35ec-bf47-11ed-bfe3-dac502259ad0.png
  • IP地址:從機設備(服務器)的IP地址;
  • 端口:從機設備的端口號;
  • 響應時間:從機應答超時時間,單位ms;
  • 最大請求數量:用于配置Modbus主機讀寫請求的最大數量。

2. 使用方法

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

5fefe660-bf47-11ed-bfe3-dac502259ad0.jpgmodbus_master_in節點

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

1. 屬性

6031574e-bf47-11ed-bfe3-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兩線。606b4008-bf47-11ed-bfe3-dac502259ad0.png
4.1 添加節點
添加modbus_master_in、modbus_parse_in、fscript以及log節點到畫布上并連接節點。

626184da-bf47-11ed-bfe3-dac502259ad0.png

4.2 配置節點

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

627cf030-bf47-11ed-bfe3-dac502259ad0.png

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

62a2b086-bf47-11ed-bfe3-dac502259ad0.png

根據實際情況配置完相應的參數后,點擊添加,回到modbus_master_in節點配置界面。62c19cb2-bf47-11ed-bfe3-dac502259ad0.png可以看到已經創建了一個新的主機參數配置,同時配置讀取模式為周期讀取,從機ID、輸出周期、寄存器地址等參數按照實際設備進行配置 。然后雙擊modbus_parse_in節點打開屬性配置面板,對modbus_parse_in進行轉換規則設置。62efc52e-bf47-11ed-bfe3-dac502259ad0.png這里我們選擇多地址轉換模式,分別對溫度和濕度兩個寄存器進行轉換,因此轉換數量設置為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 下載驗證

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

631253f0-bf47-11ed-bfe3-dac502259ad0.png

通過調試面板可以看到讀回的溫濕度數據。63296d4c-bf47-11ed-bfe3-dac502259ad0.png ?5fefe660-bf47-11ed-bfe3-dac502259ad0.jpgmodbus_master_dynamic_in節點

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

1. 屬性

63501ea6-bf47-11ed-bfe3-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. 使用方式

636ebee2-bf47-11ed-bfe3-dac502259ad0.pngmodbus_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
5fefe660-bf47-11ed-bfe3-dac502259ad0.jpgmodbus_master_out節點

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

1. 屬性

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

2. 輸入

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

3. 輸出

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

4. 使用方法

63c0d3ee-bf47-11ed-bfe3-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;

5fefe660-bf47-11ed-bfe3-dac502259ad0.jpgmodbus_parse_in節點

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

1. 屬性

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

641a8862-bf47-11ed-bfe3-dac502259ad0.png

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


print("濕度 " + array_get(a, 0))
print("溫度 " + array_get(a, 1))

5fefe660-bf47-11ed-bfe3-dac502259ad0.jpgmodbus_parse_out節點

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

1. 屬性

647b3784-bf47-11ed-bfe3-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節點將數據寫入目標設備。

64977386-bf47-11ed-bfe3-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;
5fefe660-bf47-11ed-bfe3-dac502259ad0.jpg關聯產品 5fefe660-bf47-11ed-bfe3-dac502259ad0.jpg技術交流長按識別如下二維碼可加入“EsDA嵌入式系統設計自動化交流群”,與志同道合的朋友交流,并有專業技術人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。64f0d926-bf47-11ed-bfe3-dac502259ad0.png ?

【版權聲明】本文為ZLG開發者社區用戶原創內容,未經授權不得轉載。歡迎更多用戶到社區交流互動、創作博文,一經采用,可獲得百元京東E卡。

6519c3f4-bf47-11ed-bfe3-dac502259ad0.png

653559f2-bf47-11ed-bfe3-dac502259ad0.jpg6546ef82-bf47-11ed-bfe3-dac502259ad0.jpg

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

    關注

    13

    文章

    408

    瀏覽量

    31353

原文標題:【EsDA應用】Modbus應用詳解

文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Modbus功能碼詳解

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

    ST NPI 新上架產品【ESDA5WY】Datasheet

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

    串口屏Modbus通訊協議詳解

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

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

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

    EsDA,一站式嵌入式軟件

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

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

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

    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 ?974次閱讀
    靜電<b class='flag-5'>ESD</b>整改:原因、影響與解決方案<b class='flag-5'>詳解</b>?
    主站蜘蛛池模板: 国产私拍福利精品视频| 日日a.v拍夜夜添久久免费| 亚洲日本香蕉视频观看视频| 夜里18款禁用的免费B站动漫| 国产69精品麻豆久久久久| 蜜桃传媒在线播放| 扒开双腿疯进出爽爽爽动态图 | 国产精品午夜小视频观看| 肉多荤文高h羞耻校园| 国外色幼网| 97综合久久| 欧美性爱 成人| 国产乱色伦影片在线观看| 中文字幕在线久热精品| 久久亚洲AV无码精品午色夜麻豆 | 宝贝好紧好爽再搔一点试視頻| 双腿打开揉弄高潮H苏安安秦慕深| 久久黄色网| 伊人精品国产| 色色色久久久免费视频| 丰满女朋友在线观看中文| 日本特黄的免费大片视频| 国产AV天堂亚洲AV麻豆| 夜夜女人国产香蕉久久精品| 日本bbwhd| 久久性生大片免费观看性| 国产白丝精品爽爽久久蜜臀| 午夜插插插| 国精产品砖一区二区三区糖心| 76人遣返航班上71人呈阳性| 男污女XO猛烈的动态图| 国产这里有精品| 扒开她的黑森林让我添动态图| 亚洲中文无码永久免费| 少妇被阴内射XXXB少妇BB| 蜜桃成熟时2在线观看完整版hd| 国产在线观看的| 国产成人久久AV免费看澳门| a三级黄色片| 2019久久视频这里有精品15| 女人张腿让男人桶免费|