在了解了Modbus通信的基本格式後,本期將通過仿真的方式實現Modbus RTU通信協議在三菱FX3U PLC上的應用。
指令介紹
一、軟件準備
- 虛擬串口工具
- Modbus Slave
- 淩一PLC仿真器
- GX works2編程軟件
二、RS指令
RS指令是在執行串口通信時用來接收和發送數據的指令,使用該指令時需要在PLC上插入FX3U-485-BD通信模塊。
1)基本格式
其中m(發生數據的個(ge) 數)和n(接收數據的個(ge) 數)需要根據外部設備的報文格式指令,不能隨便設置。
2)示例
X0: RS指令觸發條件,當X0位ON時RS指令進入發送或接收數據的等待狀態。
D10: 發送數據的起始寄存器。
K8: 發送數據的個(ge) 數,表示每次發送D10~D17範圍內(nei) 八個(ge) 寄存器的數據。
D20: 接收數據的起始寄存器。
K7: 接收數據的個(ge) 數,表示將外部設備返回的數據存入D20~D26範圍內(nei) 的七個(ge) 寄存器裏。
三、特殊輔助繼電器
1)M8161 數據處理位數標誌繼電器
當M8161=OFF時處理16位數據。
當M8161=ON時處理低8位數據。
2)M8122 數據發送標誌繼電器
當RS指令處於(yu) 發送或接收數據的等待狀態時置位M8122,此時RS指令中發送數據寄存器裏的數據將會(hui) 被發送給外部設備。數據發送完成後係統會(hui) 自動複位M8122,不能使用程序對其進行複位操作。
3)M8123 數據接收標誌繼電器
RS指令將數據發送完成後,進入接收數據狀態。此時M8123被置位為(wei) ON,並對接收到的數據進行處理,數據處理完成後需要將M8123複位為(wei) OFF,否則無法接收下一輪的數據。
四、通信參數設置
通信參數既可以在PLC係統設置中直接設置,也可以通過改變D8120的值進行設置,兩(liang) 種設置方式任選一種即可(本文主要介紹通過D8120進行設置)。
1)直接設置
依次單擊參數列表中的“PLC參數”→“PLC係統設置2” →勾選“進行通信設置”,然後根據實際需求設置通信參數,設置完成並檢查無誤後單擊“設置結束”按鈕保存設置。
2)通過D8120設置
根據下表給定的參數並結合實際需求設置b0~b15的值,並轉換成十六進製數傳(chuan) 送給D8120,實現通信參數設置。
3)示例
將通信參數設置按如下要求進行設置:數據長度為(wei) 8位、偶校驗、停止位為(wei) 1位、波特率為(wei) 9600、無報頭報尾,控製線為(wei) 無協議的RS-485接口。
編輯程序將參數傳(chuan) 入D8120。
五、CRC指令
CRC指令的作用是計算Modbus RTU通信報文的校驗碼。
在低8位模式下(M8161=ON),當X0為(wei) ON時CRC指令計算出D10~D15六個(ge) 寄存器產(chan) 生的效驗碼,並將計算結果的高八位存入D16,低八位存入D17。
指令運用
一、項目要求
按下X0按鈕讀取1號從(cong) 站保持寄存器40000的值,按下X1將100寫(xie) 入1號從(cong) 站保持寄存器40002中,通信參數與(yu) 上文示例中保持一致。
二、編輯程序
1)初始化
在初始化程序中需要將M8161設置為(wei) 處理低8位數據模式(M8161=ON),將通信參數傳(chuan) 入特殊寄存器D8120以及複位程序中用到的寄存器。
2)添加RS指令
如果每次處理的數據長度一致,那麽(me) 隻需添加一次RS指,並且讓RS指令一直處於(yu) 等待發送或接收數據狀。
發送或接收的數據長度需要根據外部設備的要求進行設置,此處外部設備為(wei) Modbus Slave,其報文格式與(yu) 標準報文格式一致,所以此處發送和接收的數據長度分別為(wei) K8和K7。
3)編輯讀取程序
a)計算讀取程序報文
可以借助串口調試助手自動生成報文,其中84 0A為(wei) CRC校驗碼。
b)編輯報文傳(chuan) 送程序
當檢測到X0的上升沿時將生成的報文傳(chuan) 入用來發送數據的寄存器D10~D15中。
報文需要用十六進製表示。
c)添加CRC指令
CRC指令將根據前六個(ge) 報文計算出校驗碼,並將結果的高八位存入D16,低八位存入D17。
由於(yu) 仿真中CRC指令時好時壞,所以本項目不使用CRC指令,而是將校驗碼直接傳(chuan) 入D16和D17。
d)發送數據
當檢測到X0的下降沿時置位M8122完成數據的發送。
e)接收並處理讀取回來的數據
從(cong) 站返回的數據如同所示,通過分析報文可得從(cong) 站返回的數據高八位和低八位分別儲(chu) 存在D23和D24中。
通過計算把D23和D24的數據合並,然後存放到D31中。
4)編輯寫(xie) 入程序
a)編輯報文傳(chuan) 送程序
參照讀取程序的編輯方式。
b)發送數據
c)接收數據
由於(yu) 不需要接收從(cong) 站返回的數據所以直接複位M8123。
仿真環境配置
一、添加虛擬串口
需要添加兩(liang) 對虛擬串口,一對用來實現GX works2和淩一PLC仿真器的連接,另一對用實現淩一PLC仿真器和Modbus Slave的連接
二、配置淩一仿真器
配置完成後需要打開下載口和開啟擴展通信,並讓PLC處於(yu) 運行狀態。
三、配置GX works2
其配置方式與(yu) 連接實體(ti) PLC時的方式一致,主要選擇端口號。設置完成後單擊“通信測試”,測試成功後單擊“確定”保存設置,並將程序下載到仿真器中。
四、配置Modbus Slave
1) 配置Modbus Slave連接
2)配置Modbus Slave從(cong) 站功能
如圖所示設置從(cong) 站功能,並修改寄存器40000的值。
五、仿真演示
配置好仿真環境後,將程序下載到仿真器中,並進入監視狀態。
1)讀取演示
單擊仿真器中的X0按鈕,觀察D31的值是否與(yu) Modbus Slave中保持寄存器40000設置的值一致。
2)寫(xie) 入演示
單擊仿真器中的X1按鈕,觀察100是否被寫(xie) 入到從(cong) 站的保持寄存器40002中。
六、程序整體(ti) 瀏覽