一、概述
很多自動化工程師在實際應用中使用組態軟件與PLC進行modbus通訊,組態軟件作為主站PLC作為從站。組態軟件來采集PLC數據使用這種方式是比較常見的。但是反向的利用modbus協議讓PLC去讀組態軟件里的數據確有著特殊的意義,在某些工控場合也是很好解決方案。紫金橋軟件在組態軟件行業里首先推出了modbus server,既紫金橋modbus server可以作為modbus從機為其他軟件和硬件設備提供數據,在這篇文章中對此功能我們詳細地加以介紹。
二、S7-200 Modbus主站的實現
1、S7-200 Modbus 通信協議介紹
Modbus 是一種單主站的主/從通信模式。Modbus 網絡上只能有一個主站存在,主站在 Modbus 網絡上沒有地址,從站的地址范圍為 0 - 247,其中 0 為廣播地址,從站的實際地址范圍為 1 - 247。在 S7-200 CPU 通信口上實現的是 RS485 半雙工通信,使用的是 S7-200 的自由口能。S7-200支持 Modbus 通信協議: S7-200 CPU 上的通訊口 0 和 1 (Port 0 和 Port 1)通過指令庫支持 Modbus RTU 主站模式。
2、S7-200 Modbus主站的配置
西門子在 Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站協議庫(西門子標準庫指令)。要使用 Modbus RTU 主站指令庫,須遵循下列步驟:
⑴安裝西門子標準指令庫
⑵按照要求編寫用戶程序調用 Modubs RTU 主站指令庫 Modbus RTU 主站功能編程使用 SM0.0 調用 MBUS_CTRL 完成主站的初始化,并啟動其功能控制:
具體參數的解釋如下:
EN使能:必須保證每一掃描周期都被使能(使用SM0.0)
Mode模式:常為1,使能 Modbus 協議功能;為0 時恢復為系統 PPI 協議
Baud波特率:設為9600,要與從站波特率對應
Parity校驗:校驗方式選擇 0=無校驗
Timeout超時:主站等待從站響應的時間,以毫秒為單位,典型的設置值為1000毫秒(1秒),允許設置的范圍為 1-32767。注意:這個值必須設置足夠大以保證從站有時間響應。
Done完成位:初始化完成,此位會自動置1。可以用該位啟動 MBUS_MSG 讀寫操作
Error初始化錯誤代碼(只有在 Done 位為1時有效):
0=無錯誤
1=校驗選擇非法
2=波特率選擇非法
3=模式選擇非法
⑶調用 Modbus RTU 主站讀寫子程序MBUS_MSG,發送一個Modbus 請求;
如圖1所示,具體參數設置如下:
Slave從站地址:可選擇的范圍 1-247
RW讀寫操作:0=讀, 1=寫
注意:1. 開關量輸出和保持寄存器支持讀和寫功能
2. 開關量輸入和模擬量輸入只支持讀功能
Addr讀寫從站的數據地址:選擇讀寫的數據類型 00001至0xxxx-開關量輸出10001至1xxxx-開關量輸入
30001至3xxxx-模擬量輸入
40001至4xxxx-保持寄存器
Count通訊的數據個數(位或字的個數)
注意: Modbus主站可讀/寫的最大數據量為120個字(是指每一個 MBUS_MSG 指令)
DataPtr數據指針:1. 如果是讀指令,讀回的數據放到這個數據區中
2. 如果是寫指令,要寫出的數據放到這個數據區中
Done讀寫功能完成位
圖1西門子Modbus RTU 主站協議庫
三、紫金橋軟件Modbus從站的實現
1、紫金橋modbus server的設置
Modbus 服務器可以把紫金橋數據庫中的點映射為Modbus 設備的HR 寄存器,當前版本為3.0,支持串口和TCP/IP訪問方式,支持HR區的讀和寫方式。也就是說支持03、06、16 號命令。
具體操作是先在紫金橋軟件的安裝目錄中找到 ModbusSerSet.exe 并運行。其中左側為變量配置顯示區,它分為三列,分別是序號、數據庫位號和Modbus 地址。后兩列的意義是把某一個數據庫位號和一個Modbus 地址建立映射關系。然后再調出系統設置對話框配置從機地址、串口等參數或以太網端口號、數據格式等。
2、通訊過程
配置完成后,先運行紫金橋軟件然后在紫金橋軟件的安裝目錄中找到 ModbusServer.exe 并運行。
從上面的通訊過程看到,S7-200與紫金橋modbus server通訊的響應速度為毫秒級的。