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