該案例是西門子PLC 200Smart與200Smart通訊程式。
一、實現的功能:
(1) 主站讀取從站的VW10---VW20六個字,存入主站的VW0—VW10。
(2) 主站讀取從站的MB4MB5存入主站的MB4MB5。
(3) 主站把VD30寫到從站的VD50
分析說明
1、該案例有3個讀寫功能要完成,由於MODBUS通訊某一時間只能有一條 MBUS_MSG 指令處於啟用狀態,因此需要輪詢通訊。
2、由於MBUS_MSG指令不能使用M儲存器,因此需先在從站編寫M區傳送到V區程式,再透過通訊把V區資料讀入到主站,主站再編寫V區傳送到M區指令,完成從站的M區資料到主站的M區。
3、VD傳送是4個位元組,2個字
從站程式
MB4\5先傳送到時V區,才能實現通訊
由於從站是以VB10為起始地址,因此VB40VB41對應的MODBUS
地址為[(40-10)+2]/2=16,為40016。
從站的VD50(VB50-VB54)對應的MODBUS地址為40021
從站編寫完程式後,注意要分配庫儲存器
主站程式
定義引數
初始化復位各通訊標誌
按I0.0開始通訊
讀從站的6個字VW10-VW20到主站VW0-VW10
從站起始地址是VW10,對應40001地址
完成後置位下一指令復位上通訊標誌
讀一個字
40016地址對應VW40,讀到VW200
讀完傳到MW4,完成M區傳送
再輪詢下一個
寫一個字VD30到從站VD50
又返回第一輪詢