加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線13185520415
        公司新聞
        西門子Modbus通訊編程實例
        發布時間: 2023-12-31 19:57 更新時間: 2024-11-22 08:00
        觀看西門子Modbus通訊編程實例視頻

        Zui近單獨在寫Modbus和現場總線的介紹,都是一些思路性質的介紹,不涉及具體的實例,可能很多童鞋還是覺得不夠具體,因為我現在不做具體的編程調試了,所以直接些實例很費勁。參考了一些網上的和施耐德電氣內部的資料,寫成以下的案例,用了一些其他人的勞動成果,如果原作者在意版權問題,請聯系我,我尊重您的所有權。


        我的帖子里提過Modbus的功能碼,常用的沒幾個,這里列出更多的(也不是全部):

        功能碼(十進制)十六進制說明
        0101讀線圈
        0202讀離散量輸入
        0303讀保持寄存器
        0404讀輸入寄存器
        0505寫單個線圈
        0606寫單個寄存器
        0707讀異常狀態
        0808診斷
        110B獲得事件計數器
        120C獲得事件記錄
        150F寫多個線圈
        1610寫多個寄存器
        1711報告從站ID
        2216屏蔽寫寄存器
        2317讀/寫多個寄存器
        2418讀FIFO隊列


        DATA_EXCH功能塊是用于Premium和M340傳輸數據到另外一臺設備,這個功能塊支持Modbus所有的功能碼。

        DATA_EXCH用梯形圖表示:


        各個引腳定義:

        ADR為地址引腳,對于PREMIUM系列需要使用ADDR功能塊連接。
        對于M340系列需要使用ADDM功能塊連接。
        TYPE為類型引腳,1為接受/發送,2為只接受,3為只發送。
        EMIS為要發送表
        RECP為接受表
        GEST為交換管理表


        實例一:讀取N位(功能碼01)


        其中在EMIS數組中第一個字,低字節為功能碼01,高字節為讀取位的起始位1
        第二個字,低字節為讀取位的起始位1,高字節為讀取位的長度5
        第三個字,低字節為讀取位的長度5
        Zui后要在交換管理表的第四個字中定義這個報文字節的長度,為1個字節的功能碼,2個字節的數據起始地址,2個字節的讀取位的長度,所以長度為1+2+2=5


        在TWIDO中賦值如下:


        在RECP中第一個字為返回碼

        第二個字為讀取的數據




        Modbus通訊編程實例(二)




        實例二:讀取N字(功能碼03)


        其中在EMIS數組中第一個字,低字節為功能碼03,高字節為讀取字的起始地址1

        第二個字,低字節為讀取字的起始地址1,高字節為讀取字的長度6
        第三個字,低字節為讀取字的長度6
        Zui后要在交換管理表的第四個字中定義這個報文字節的長度,為1個字節的功能碼,2個字節的數據起始地址,2個字節的讀取字的長度,所以長度為1+2+2=5


        在TWIDO中賦值如下


        在RECP中第一個字為返回碼

        第二個字開始為讀取的數據


        聯系方式

        • 電  話:13510737515
        • 聯系人:董海波
        • 手  機:13185520415
        • 微  信:13185520415