S7-200兩個PLC互相通信,Step7軟件的使用,進(jìn)行主站和從站直接的通訊。以下主要內(nèi)容為從Step7 軟件里面的庫模塊是使用就行介紹。
一、使用Modbus協(xié)議庫
二、Modbus的地址
Modbus地址通常是包含數(shù)據(jù)類型和偏移量的5個字符值。第一個字符確定數(shù)據(jù)類型,后面四個字符選擇數(shù)據(jù)類型內(nèi)的正確數(shù)值。
(1)主站尋址Modbus主站指令可將地址映射到正確功能,然后發(fā)送至從站設(shè)備。Modbus主站指令支持下列Modbus地址:00001到09999是離散輸出(線圈);10001到19999是離散輸入(觸點);30001到39999是輸入寄存器(通常是模擬量輸入);40001到49999是保持寄存器。所有Modbus地址都是基于1,即從地址1開始第一個數(shù)據(jù)值。有效地址范圍取決于從站設(shè)備。不同的從站設(shè)備將支持不同的數(shù)據(jù)類型和地址范圍。
(2)從站尋址Modbus主站設(shè)備將地址映射到正確功能。Modbus從站指令支持以下地址:00001至00128是實際輸出,對應(yīng)于Q0.0-Q15.7;10001至10128是實際輸入,對應(yīng)于I0.0-I15.7;30001至30032是模擬輸入寄存器,對應(yīng)于AIW0至AIW62;40001至04XXXX是保持寄存器,對應(yīng)于V區(qū)。所有Modbus地址都是從1開始編號的。
示例:
三、相關(guān)指令介紹
(一)做主站使用Modbus master庫
(1)初始化主設(shè)備指令MBUS_CTRL用于S7-200端口0(或用于端口1的MBUS_CTRL_P1指令)可初始化、監(jiān)視或禁用Modbus通信。
EN:使能端,有信號則該指令執(zhí)行
Mode:輸入的值用于選擇通信協(xié)議。輸入值為 1 時,將 CPU 端口分配給 Modbus 協(xié)議并啟用該協(xié)議。輸入值為 0 時,將 CPU 端口分配給 PPI 系統(tǒng)協(xié)議并禁用 Modbus 協(xié)議。
Baud:波特率
Parity:設(shè)置為與 Modbus 從站設(shè)備的奇偶校驗相匹配。所有設(shè)置使用一個起始位和一個停止位。允許的值如下:0(無奇偶校驗)、1(奇校驗)和 2(偶校驗)。
Port:設(shè)置物理通信端口(0 = CPU 中集成的 RS-485,1 = 可選 CM01 信號板上的 RS-485 或 RS-232)。
Timerout:設(shè)為等待從站做出響應(yīng)的毫秒數(shù)。“超時”(Timeout) 值可以設(shè)置為 1 ms 到 32767 ms 之間的任何值。典型值是 1000 ms (1 s)。“超時”(Timeout) 參數(shù)應(yīng)設(shè)置得足夠大,以便從站設(shè)備有時間在所選的波特率下做出響應(yīng)。
Done:初始化完成標(biāo)志,成功初始化后置1.數(shù)據(jù)類型為布爾
error:初始化錯誤代碼。數(shù)據(jù)類型為字節(jié)
通過在每次掃描時調(diào)用 MBUS_CTRL 來初始化和監(jiān)視 Modbus 主站。Modbus 主站設(shè)為 9.6 Kbps,無奇偶校驗。從站設(shè)備允許在 1000 毫秒(1 秒)內(nèi)進(jìn)行響應(yīng)。
(2)MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于啟動對Modbus從站的請求,并處理應(yīng)答。當(dāng)EN輸入和“首次”輸入打開時,MBUS_MSG指令啟動對Modbus從站的請求。發(fā)送請求、等待應(yīng)答、并處理應(yīng)答。EN輸入必須打開,以啟用請求的發(fā)送,并保持打開,直到“完成”位被置位。
En:使能端
First:在有新請求發(fā)送時打開。
Slave:從站地址
RW:0-讀,1-寫。
Addr:modbus起始地址。
Count:讀取或?qū)懭氲臄?shù)據(jù)元素的數(shù)量
DataPtr:讀取或?qū)懭胝埱笙嚓P(guān)數(shù)據(jù)的間接地址
該指令會對從站 2 的 4 個保持寄存器執(zhí)行寫入 (RW = 1) 操作。從 CPU 中的 VB100-VB107(4 個字)獲取寫數(shù)據(jù),然后寫入到 Modbus 從站中的地址 40001 - 40004。
(二)做從站使用 Modbus Slave庫
(1)MBUS_INIT指令用于啟用、初始化或禁止Modbus通信。在使用MBUS_SLAVE指令之前,必須正確執(zhí)行MBUS_INIT指令
EN:使能端
Mode:模式 0-禁用Modbus 1-啟用Modbus
Addr:設(shè)備地址
Baud:波特率
Parity:校驗位 0-無校驗 1-奇校驗 2-偶校驗
Port:端口號
Delay:延時 通過使標(biāo)準(zhǔn) Modbus 信息超時時間增加分配的毫秒數(shù)來延遲標(biāo)準(zhǔn) Modbus 信息結(jié)束超時條件。在有線網(wǎng)絡(luò)上運行時,該參數(shù)的典型值應(yīng)為 0。如果使用具有糾錯功能的調(diào)制解調(diào)器,則將延時設(shè)置為 50至 100 ms 之間的值。如果使用擴(kuò)頻無線通信,則將延時設(shè)置為 10 至 100 ms 之間的值。“延時”(Delay) 值可以是 0 至 32767 ms。
MaxIQ:用于設(shè)置 Modbus 地址 0xxxx 和 1xxxx 可用的 I 和 Q 點數(shù),取值范圍是 0 至 256。值為 0 時,將禁用所有對輸入和輸出的讀寫操作。建議將 MaxIQ 值設(shè)置為 256。
MAXAI:用于設(shè)置 Modbus 地址 3xxxx 可用的字輸入 (AI) 寄存器數(shù),取值范圍是 0 至 56。值為 0 時,將禁止讀取模擬量輸入。
MAXHold:用于設(shè)置 Modbus 地址 4xxxx 或 4yyyyy 可訪問的 V 存儲器中的字保持寄存器數(shù)。
HoldStart:是 V 存儲器中保持寄存器的起始地址。該值通常設(shè)置為 VB0,因此參數(shù) HoldStart 設(shè)置為 &VB0(地址 VB0)。
Done:初始化完成標(biāo)志,成功初始化后置1.數(shù)據(jù)類型為布爾
Error:初始化錯誤代碼。數(shù)據(jù)類型為字節(jié)
(2)MBUS_SLAVE指令用于為Modbus主設(shè)備發(fā)出的請求服務(wù),并且必須在每次掃描時執(zhí)行,以便允許該指令檢查和回答Modbus請求。
提示:還要對 在調(diào)用了Modbus指令庫的指令后,還要對庫存儲區(qū)進(jìn)行分配,這是非常重要的,否則即使編寫程序沒有語法錯誤,程序編譯后也會顯示至少幾十個錯誤。分配庫存儲區(qū)的方法如下:先選中“程序塊”,再單擊右鍵,彈出快捷菜單,并單擊“庫存儲區(qū)”,如圖4-4所示。再在“庫存儲區(qū)”中填寫Modbus指令所需要用到的存儲區(qū)的起始地址。