一、需求描述
1、設(shè)備作為服務(wù)端時(shí),需要給出對(duì)應(yīng)的測(cè)試方法,即要求 PLC 作為客戶端,設(shè)備作為服務(wù)端,因此要求編寫(xiě) PLC 的ModBusTCP客戶端
2、先了解一下設(shè)備作為服務(wù)端的ModBusTCP網(wǎng)絡(luò)觸發(fā)業(yè)務(wù)邏輯
(1)設(shè)備需要設(shè)置網(wǎng)絡(luò)觸發(fā),并設(shè)置觸發(fā)指令(假如為T(mén)R),以及ModBusTCP服務(wù)端設(shè)置如圖
(2)PLC通過(guò)如圖信息連接設(shè)備
(3)PLC發(fā)送指令 TR 到設(shè)備
(4)設(shè)備收到 TR 指令,與網(wǎng)絡(luò)觸發(fā)設(shè)置的TR指令比對(duì)
(5)指令一致則進(jìn)行觸發(fā)
(6)觸發(fā)的結(jié)果寫(xiě)到設(shè)備端的傳輸?shù)刂飞?,需要PLC主動(dòng)去訪問(wèn)和獲取
二、官方文檔與解釋
如下,這里涉及到主站和從站的概念,與服務(wù)端和客戶端的描述有些差異,解釋如下:這個(gè)用英語(yǔ)比較好解釋,主站MASTER還有“主管”的意思,從站SLAVE還有“奴隸”的意思。從通訊過(guò)程上來(lái)說(shuō),主站發(fā)出通訊命令,從站應(yīng)答。
因此,PLC為主站,設(shè)備為從站。這個(gè)概念不要和“服務(wù)端、客戶端”的概念混淆,不是一回事,只是為了利于編程的理解,在這里需要明確一下。
2、理解主站和從站的概念后,我們應(yīng)該找到PLC作為主站功能的實(shí)現(xiàn)文檔,如下圖
三、根據(jù)官方文檔進(jìn)行編程
1、連接設(shè)置
2、協(xié)議設(shè)置
操作路徑:[工具]? [通信協(xié)議支持功能]? [文件]? [新建]? “協(xié)議設(shè)置”畫(huà)面? [編輯]? [協(xié)議添加]
本次實(shí)例使用2個(gè)協(xié)議:?03:RD Holding Registers? +? WR Multi Registers
四、編程
1、上述代碼解釋與實(shí)驗(yàn)
(1)改變D403的長(zhǎng)度為20,接收到最大的長(zhǎng)度為20,程序設(shè)置為:
(2)改變D402的賦值為10,即設(shè)備的取值地址為10到20的區(qū)域(11個(gè)數(shù)據(jù)),程序設(shè)置為:
(3)連接編號(hào)的對(duì)應(yīng)關(guān)系
(5)協(xié)議號(hào)的對(duì)應(yīng)關(guān)系
(6)設(shè)備站號(hào)為1,程序設(shè)置為:
(7)基于上述操作,我們實(shí)現(xiàn)了PLC對(duì)設(shè)備的讀操作
(8)增加WR Multi Registers協(xié)議,并下發(fā)到PLC中
(9)代碼