在工業現場可能會遇到這樣的情況,分布在不同地方(車間、控制室場所等)的PLC之間需要進行遠程相互控制,通常是采用RS485總線,通過MODBUS協議完成此功能。
如果現場布線不方便的話,也可以采用無線方式進行通信。這里以達泰DTD433無線模組和西門子S7_200為例進行說明。
一、兩臺S7_200 西門子PLC之間的遠程控制,主從站通訊
實現的功能:
- PLC1的8個開關量輸入,I0.0~I0.7與PLC2的開關量輸出Q0.0~Q0.7一一對應,也就是說上圖中的A1開關按下時,PLC1的開關量輸入I0.0閉合,PLC2的輸出繼電器觸點Q0.0導通,L2點亮。
- PLC2的8個開關量輸入,I0.0~I0.7與PLC1的開關量輸出Q0.0~Q0.7一一對應,也就是說上圖中的A2開關按下時,PLC2的開關量輸入I0.0閉合,PLC1的輸出繼電器觸點Q0.0導通,L1點亮。
- PLC1與PLC2之間的通信是通過S7_200 CPU22XP的Port0通信口的RS485總線連接的,其中采用了Modbus協議。
二、西門子PLC通信中的Modbus協議編程方法
假設把PLC1作為主站,PLC2作為從站,分別編寫主站和從站程序,主要掌握以下要點:
Modbus 主站讀寫程序
- Modbus RTU主站功能是通過指令庫中預先編好的程序功能塊實現的,該庫只針對Port 0口有效;
- 在程序中插入MBUS_CTRL指令,并在每次掃描時執行MBUS_CTRL。您可以使用MBUS_CTRL指令初始化或更改Modbus通訊參數。
- Modbus RTU主站使用了一些用戶中斷,在用戶程序中不能禁止中斷;
- 讀取從站數據在程序中插入MBUS_MSG指令,注意從站地址設置用一致;
- 該例程訪問的為一個從站,若訪問不同的從站,可通過改變從站地址來實現。
Modbus 從站讀寫程序
- 在第一個循環周期內插入MBUS_INIT指令初始化Modbus從站協議:
Mode: 模式選擇,啟動/停止MODBUS,1=啟動;0=停止
Address: 從站地址,MODBUS從站地址,取值1~247
Baud: 波特率,可選1200,2400,4800,9600,19200,38400,57600,115200
Parity: 奇偶校驗,0=無校驗;1=奇校驗;2=偶校驗
Delay: 延時,附加字符間延時,缺省值為0
Done: 初始化完成標志,成功初始化后置1
Error: 初始化錯誤代碼
- 在本例子中,設置從站地址為8,Port0 通訊波特率為9600bps,無校驗;
- 本例子中Modbus RTU 從站指令使用的庫存儲為VB2000---VB2779,這段寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT 和MBUS_SLAVE 指令在內。
- MBUS_SLAVE指令被用于為Modbus主設備發出的請求服務,并且必須在每次掃描時執行,以便允許該指令檢查和回答Modbus請求。在每次掃描且EN輸入開啟時執行該指令。
三、無線Modbus通信的實現方法
以上說明了采用有線RS485總線實現多臺PLC之間的遠程控制方法,有時由于現場條件的限制,重新布設通信線路很不方便,例如山上與山下,或者橫跨馬路的情況,尤其對于工程改造項目二次布線幾乎是甲方無法接受的。在這種情況下,可以采用DTD433無線通信模組代替通信電纜,實現起來非常方便,不需要
無線通信模組采用中心頻率為433MHz開放的ISM頻段,內部使用全數字RF通信芯片與單片機組成無線數傳系統,外部通信接口與RS485總線完全一致,為了使用方便,通信實現所發即所得,也就是說數據通信是完全的透明方式,這樣的話,用兩個DTD433模組能夠直接代替有線的RS485通信導線。需要注意的是:
- PLC的Modbus通信速率要與無線數傳模組的波特率設置一致,例如通信參數可以設置為9600bps,8位數據,無效驗位。
- S7_200的RS485+連接DTD433的RS485_B;
- S7_200的RS485-連接DTD433的RS485_A;
- 無線數傳模組的供電電源為直流24V,與PLC可以共用電源;
- 無線通訊距離在200米左右選用DTD433A模組;
- 無線通訊距離在1000米左右選用DTD433B模組;
- 無線通訊距離在3000米左右選用DTD433C模組;
- 保證通信距離,提高通信質量要選擇高增益的吸盤天線,天線安放高度離地面越高效果越好。
四、PLC與DTD433無線模組通訊成功的案例
- 西門子PLC與DTD433C-S4 9600bps,8,N,1,RS485口
- 海為PLC與DTD433C-S4 9600bps,8,N,2,RS485口
- 臺達PLC與DTD433A_S4 9600bps,7,E,1,RS485口
編程。