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