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