本章我們先簡單介紹下Modbus的通信原理,然後介紹下例程中需要用的硬件及網絡的拓撲結構。
Modbus RTU是一種主從通信協議,其物理層採用RS485網絡。RS485的串行通信規程中規定應用數據單元(Application Data Unit,ADU)的最大長度為256個字節。在Modbus RTU協議中,從站地址佔用1個字節,校驗位佔用2個字節,因此協議數據單元PDU(Protocol Data Unit)的最大長度為256-1-2=253字節
在協議數據單元PDU中,功能代碼佔用1個字節,因此數據長度為0~252個字節。如下圖:
Modbus通信協議的PDU包括三種:
1)Modbus請求PDU(Modbus Request PDU);
2)Modbus應答PDU(Modbus Response PDU);
3)Modbus異常應答PDU(Modbus Exception Response PDU);
以功能代碼“0x01”為例,其請求PDU的格式如下表:
其應答PDU的格式如下表:
不同的功能碼其數據長度的單位不同。位(bits)操作的功能碼,其請求數據的長度以“位”為單位;字(WORD)操作的功能碼,其請求數據的長度以“字”為單位;
比如:功能碼0x01(讀取線圈),其請求數據(線圈數量)是以“位(bits)”為單位的;而功能碼0x03(讀取保持寄存器),其請求數據(保持寄存器)是以“字(WORD)”為單位的;
Modbus通信協議規定了不同的參數地址,與PLC的CPU地址有一種對應關係。以S7-200 Smart為例,Modbus參數地址與CPU的地址的對應關係見下面的表格:
本例程主站採用S7-1200的PLC,從站採用S7-200 Smart的PLC。
1、硬件配置:
1.1 主站:
S7-1200 CPU1215C;
CM1241-RS485;
1.2 從站:
S7-200 Smart CPU ST40;
2、通信任務:
2.1 Modbus主站讀取從站Modbus參數地址40001開始的10個字長的數據;
2.2 Modbus主站將6個字長的數據寫入到從站起始Modbus參數地址40011;
2.3 Modbus主站讀取從站Modbus參數地址10001開始的8個位的數據;
2.4 Modbus主站將8個位寫入到從站Modbus參數地址00001;
3、網絡連接:
主站的CM1241-RS485模塊通過Profibus電纜連接到從站CPU ST40本體的RS485端口;為了監控和下載程序方便,可以用交換機將CPU ST40、CPU1215C和編程電腦PG/PC連接起來。整個網絡拓撲圖如下:
閱讀更多 河北乾嶽自動化 的文章