MODBUS/TCP是簡單的、中立廠商的用于管理和控制自動(dòng)化設(shè)備的MODBUS系列通訊協(xié)議的派生產(chǎn)品,顯而易見,它覆蓋了使用TCP/IP協(xié)議的“Intranet”和“Internet”環(huán)境中MODBUS報(bào)文的用途。協(xié)議的最通用用途是為諸如PLC’s,I/O模塊,以及連接其它簡單域總線或I/O模塊的網(wǎng)關(guān)服務(wù)的。
MODBUS/TCP 使MODBUS_RTU協(xié)議運(yùn)行于以太網(wǎng),MODBUS TCP使用TCP/IP和以太網(wǎng)在站點(diǎn)間傳送MODBUS報(bào)文,MODBUS TCP結(jié)合了以太網(wǎng)物理網(wǎng)絡(luò)和網(wǎng)絡(luò)標(biāo)準(zhǔn)TCP/IP以及以MODBUS作為應(yīng)用協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)表示方法。MODBUS TCP通信報(bào)文被封裝于以太網(wǎng)TCP/IP數(shù)據(jù)包中。與傳統(tǒng)的串口方式,MODBUS TCP插入一個(gè)標(biāo)準(zhǔn)的MODBUS報(bào)文到TCP報(bào)文中,不再帶有數(shù)據(jù)校驗(yàn)和地址。
Modbus TCP傳輸過程中使用了TCP/IP以太網(wǎng)參考模型的5層:
第一層:物理層,提供設(shè)備物理接口,與市售介質(zhì)/網(wǎng)絡(luò)適配器相兼容
第二層:數(shù)據(jù)鏈路層,格式化信號(hào)到源/目硬件址數(shù)據(jù)幀
第三層:網(wǎng)絡(luò)層,實(shí)現(xiàn)帶有32位IP址IP報(bào)文包
第四層:傳輸層,實(shí)現(xiàn)可靠性連接、傳輸、查錯(cuò)、重發(fā)、端口服務(wù)、傳輸調(diào)度
第五層:應(yīng)用層,Modbus協(xié)議報(bào)文
Modbus數(shù)據(jù)在TCP/IP以太網(wǎng)上傳輸,支持Ethernet II和802.3兩種幀格式,Modbus TCP數(shù)據(jù)幀包含報(bào)文頭、功能代碼和數(shù)據(jù)3部分,MBAP報(bào)文頭(MBAP、Modbus Application Protocol、Modbus應(yīng)用協(xié)議)分4個(gè)域,共7個(gè)字節(jié),如圖1所示:
圖1: MODBUS TCP報(bào)文
由于使用以太網(wǎng)TCP/IP數(shù)據(jù)鏈路層的校驗(yàn)機(jī)制而保證了數(shù)據(jù)的完整性,MODBUS TCP 報(bào)文中不再帶有數(shù)據(jù)校驗(yàn)”CHECKSUM”,原有報(bào)文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS應(yīng)用協(xié)議報(bào)文頭中。
在Modbus服務(wù)器中按缺省協(xié)議使用Port 502 通信端口,在Modbus客戶器程序中設(shè)置任意通信端口,為避免與其他通訊協(xié)議的沖突一般建議2000開始可以使用。
按照使用的通途區(qū)分,共有3種類型分別為:
1) 公共功能代碼:已定義好功能碼,保證其唯一性,由Modbus.org認(rèn)可;
2) 用戶自定義功能代碼有兩組,分別為65~72和100~110,無需認(rèn)可,但不保證代碼使用唯一性,如變?yōu)楣泊a,需交RFC認(rèn)可;
3) 保留功能代碼,由某些公司使用某些傳統(tǒng)設(shè)備代碼,不可作為公共用途。
按照應(yīng)用深淺,可分為3個(gè)類別:
1) 類別0,客戶機(jī)/服務(wù)器最小可用子集:讀多個(gè)保持寄存器(fc.3);寫多個(gè)保持寄存器(fc.16)。
2) 類別1,可實(shí)現(xiàn)基本互易操作常用代碼:讀線圈(fc.1);讀開關(guān)量輸入(fc.2);讀輸入寄存器(fc.4);寫線圈(fc.5);寫單一寄存器(fc.6)。
3) 類別2,用于人機(jī)界面、監(jiān)控系統(tǒng)例行操作和數(shù)據(jù)傳送功能:強(qiáng)制多個(gè)線圈(fc.15);讀通用寄存器(fc.20);寫通用寄存器(fc.21);屏蔽寫寄存器(fc.22);讀寫寄存器(fc.23)。
在讀寄存器的過程中,以Modbus TCP請(qǐng)求報(bào)文為例,具體的數(shù)據(jù)傳輸過程如下:
1) Modbus TCP客戶端實(shí)況,用Connect()命令建立目標(biāo)設(shè)備TCP 502端口連接數(shù)據(jù)通信過程;
2) 準(zhǔn)備Modbus報(bào)文,包括7個(gè)字節(jié)MBAP內(nèi)請(qǐng)求;
3) 使用send()命令發(fā)送;
4) 同一連接等待應(yīng)答;
5) 同recv()讀報(bào)文,完成一次數(shù)據(jù)交換過程;
6) 當(dāng)通信任務(wù)結(jié)束時(shí),關(guān)閉TCP連接,使服務(wù)器可以為其他服務(wù)。
下面章節(jié)將介紹如何使用軟件選項(xiàng)包” ModbusTCP CP V4.3 "的功能塊庫配置S7-300/400單站系統(tǒng)通過CP343-1/CP443-1與第三方模擬軟件進(jìn)行Modbus/TCP進(jìn)行通訊的詳細(xì)步驟
1) 該功能塊庫可以用于S7-300單站通過CP343-1或S7-400單站通過CP443-1進(jìn)行ModbusTCP通訊。
2) 由于需要在SIMATIC站與其他通訊伙伴之間建立TCP連接用于Modbus通訊,因此需要調(diào)用SIMATIC S7標(biāo)準(zhǔn)功能塊,對(duì)于S7-300/400的CP來說,需要調(diào)用FC5(AG_SEND),FC6(AG_RECV)功能塊。
3) 對(duì)于主要功能塊FB106、107和108來說,包含了V1.x和V2.x,它們管腳參數(shù)并沒有更改,只是在V2.x中增加了FC10”AG_CNTRL”功能塊用于管理TCP連接,是否支持功能塊與CP的型號(hào)和固件版本有關(guān),如下圖1所示:
圖1 功能塊V1.x和V2.x版本區(qū)別
當(dāng)將軟件選項(xiàng)包安裝完集成到Step7時(shí),可以在Step7安裝文件的相應(yīng)目錄中找到塊庫、例程、英文手冊(cè),另外還可找到用CFC語言編程的功能快庫,供讀者選用,如下圖2~4所示,在實(shí)際的項(xiàng)目調(diào)試過程中由于例子程序的各項(xiàng)功能比較完善,因此可以直接使用例子程序根據(jù)項(xiàng)目的實(shí)際情況修改相應(yīng)的參數(shù)即可,可以節(jié)省大量的參數(shù)設(shè)置時(shí)間,以下主要描述了使用軟件選項(xiàng)包” ModbusTCP CP V4.3 "配置S7-300/400站的詳細(xì)配置和編程步驟。
圖2 塊庫、例程、英文手冊(cè)和軟件注冊(cè)的文件夾位置
圖3 例程(注:當(dāng)找不到例程時(shí)可以通過”Browse..”按鈕來進(jìn)行查找)
圖4 功能塊庫(注:當(dāng)找不到塊庫時(shí)可以通過”Browse..”按鈕來進(jìn)行查找)
以S7-400單站系統(tǒng)及Modscan32軟件為例,詳細(xì)介紹如何將S7-400單站系統(tǒng)通過CP443-1配置為Server,Modscan32為Client進(jìn)行Modbus TCP通訊,在本例中將使用帶FC10”AG_CNTRL”版本的功能塊,下圖5為服務(wù)器功能塊庫的程序結(jié)構(gòu)及各功能塊完成的功能: