郭愛華
摘要:MODBUS/TCP是MODBUS 通訊中的一種以太網(wǎng)通訊方式,MODBUS/TCP通訊對使用硬件要求低,應(yīng)用廣泛。西門子PLC的S7-200可以設(shè)置為MODBUS/TCP通信方法,其中使用了兩個(gè)MODBUS/TCP命令“MB_CLIENT”指令和“MB_SERVER”指令,它們分別將PLC設(shè)置MODBUS客戶端和MODBUS服務(wù)器,本文重點(diǎn)介紹這兩個(gè)命令的設(shè)置方法。
Abstract: MODBUS/TCP is an Ethernet communication method in MODBUS communication. MODBUS/TCP communication has low hardware requirements and a wide range of uses. The Siemens PLC S7-1200 can be set to the MODBUS/TCP communication method, in which two MODBUS/TCP commands "MB_CLIENT" and "MB_SERVER" are used, which respectively set the PLC as a MODBUS client for industrial robots and MODBUS server for MES manufacturing process execution and management system. This paper focuses on the setting methods of these two commands.
關(guān)鍵詞:MODBUS/TCP;S7-1200;客戶端;服務(wù)器
Key words: MODBUS/TCP;S7-1200;client;server
中圖分類號:TP368.5 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1006-4311(2019)30-0204-03
0 ?引言
自動(dòng)化系統(tǒng)包括多種通訊協(xié)定,它們是可以應(yīng)用于工業(yè)控制器上的通用語言。通過多種協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它們有一定的成為工業(yè)標(biāo)準(zhǔn)。有了它們,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。
常見的通訊協(xié)定,例如三菱PLC常用的CC-LINK,西門子常用的PROFIBUS和PROFINET IO通訊方式,施耐德公司的MODBUS通訊方式,等等。西門子PLCS7-1200CPU可以使用的一種通訊方式是MODBUS/TCP方式,在西門子CPU中它是結(jié)合了MODBUS通訊方式和PROFINET通訊方式,可以使用PROFINET通訊來連接MODBUS客戶端或服務(wù)器。
在工業(yè)4.0信息技術(shù)產(chǎn)業(yè)時(shí)代的大背景下,借助互聯(lián)網(wǎng)或其他網(wǎng)絡(luò),變革了全新的智能制造模式,網(wǎng)絡(luò)下單點(diǎn)單按需生產(chǎn)制造模式成為工業(yè)制造發(fā)展趨勢。MES制造企業(yè)生產(chǎn)過程執(zhí)行管理系統(tǒng)可以成為其中的一環(huán),結(jié)合西門子S7-1200CPU控制器,以及工業(yè)4.0必備的工業(yè)機(jī)器人搬運(yùn)機(jī)構(gòu)、料庫機(jī)構(gòu)、機(jī)床生產(chǎn)機(jī)構(gòu)共同組成智能化生產(chǎn)體系,本文中它們之間的主要通訊方式采用MODBUS/TCP通訊方式。
1 ?Modbus 協(xié)議的簡單介紹
Modbus 協(xié)議定義了一個(gè)控制器能認(rèn)識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它是一種集散控制,工業(yè)控制器可以通過連網(wǎng)進(jìn)行MODBUS通訊,它服從工業(yè)控制器網(wǎng)絡(luò)協(xié)議,是公開發(fā)表的,對外開放,易于操作,是工業(yè)控制設(shè)備之間比較常用的通訊方式。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
當(dāng)在一MODBUS網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器須要知道它們的設(shè)備地址,識別按地址發(fā)來的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用MODBUS協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了MODBUS協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測的方法。
標(biāo)準(zhǔn)的MODBUS網(wǎng)絡(luò)通信,能設(shè)置為兩種傳輸模式(ASCII或RTU)中的任何一種,MODBUS/TCP采用了RTU傳輸模式。當(dāng)控制器設(shè)為在MODBUS網(wǎng)絡(luò)上以RTU(遠(yuǎn)程終端單元)模式通信,在消息中的每個(gè)8Bit字節(jié)包含兩個(gè)4Bit的十六進(jìn)制字符。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。
2 ?MES制造企業(yè)生產(chǎn)過程執(zhí)行管理系統(tǒng)
MES系統(tǒng)能根據(jù)不同操作者的用戶名和密碼登陸生成不同系統(tǒng)加工任務(wù),即具有管理用戶的功能,并能判別糾錯(cuò);可以在工作任務(wù)中的進(jìn)行零件的選擇以篩選零件類型,并能視具體情況進(jìn)行零件加工任務(wù)的增減;
自動(dòng)化智能制造系統(tǒng)應(yīng)實(shí)現(xiàn)全自動(dòng)化機(jī)器人生產(chǎn)線,云制造以及基于RFID的智慧工廠。MES系統(tǒng)的任務(wù)應(yīng)包括項(xiàng)目管理、智能設(shè)計(jì)、智能工藝、智能編程、智能制造、智能測量、OEE設(shè)備監(jiān)控、APS排產(chǎn)等多項(xiàng)業(yè)務(wù)及功能。
3 ?搬運(yùn)工業(yè)機(jī)器人生產(chǎn)系統(tǒng)
工業(yè)機(jī)器人作為現(xiàn)代信息工業(yè)產(chǎn)業(yè)柔性制造系統(tǒng)重要的組成部分,在本例中負(fù)責(zé)搬運(yùn)物料在倉庫與各機(jī)場設(shè)備之間,采用的是華中工控機(jī)器人,能與PLC使用MODBUS/TCP連接,交換數(shù)據(jù),根據(jù)PLC提供的數(shù)據(jù)進(jìn)行流程判斷每步的工作目的,是整個(gè)系統(tǒng)的重要執(zhí)行部分,同時(shí)也是系統(tǒng)最主要的控制中心,MES系統(tǒng)在本例中只提供數(shù)據(jù),PLC負(fù)責(zé)各部分的數(shù)據(jù)信息連接傳送,和少量對MES數(shù)據(jù)的分析,工業(yè)機(jī)器人負(fù)責(zé)將PLC輸送來的數(shù)據(jù),通過流程進(jìn)行分析,形成倉庫產(chǎn)品的加工軌跡,由它來生成整個(gè)加工過程的流程圖。
4 ?西門子PLCS7-1200CPU控制系統(tǒng)的選型介紹
本例使用了S7-1200 1215C DC/DC/DC的CPU的PLC,它的性能為有100 KB的工作存儲器;24VDC電源,板載DI14x24VDC漏型/源型,DQ10x24VDC及AI2和 AQ2,即14個(gè)數(shù)字量輸入,10個(gè)數(shù)字量輸出,2個(gè)模擬量輸入和2個(gè)模擬量輸出;板載6個(gè)高速計(jì)數(shù)器和4個(gè)脈沖輸出;信號板擴(kuò)展板載I/O;多達(dá)3個(gè)通信模塊用于串行通信;多達(dá)8個(gè)信號模塊用于I/O擴(kuò)展;0.04ms/1000條指令;2個(gè)PROFINET端口用于編程,HMI和PLC間的通信,本例中通過PROFINET接口連接MODBUS/TCP,作為MODBUS/TCP客戶端與工業(yè)機(jī)器人相連,再作為MODBUS/TCP服務(wù)器與MES制造過程管理系統(tǒng)相連接。
5 ?柔性制造系統(tǒng)MODBUS/TCP的程序?qū)嵗?/p>
西門子PLC在工控方面性能可靠,本文介紹針對S7-1200的在MODBUS/TCP通訊方式,其中主要使用分別了兩個(gè)指令,“MB_CLIENT”指令負(fù)責(zé)作為MODBUS/TCP客戶端通過S7-1200 CPU的PROFINET連接工業(yè)機(jī)器人,能進(jìn)行通信的通訊方式進(jìn)行主動(dòng)的連接。使用以太網(wǎng)系統(tǒng)可以在客戶端和服務(wù)器之間建立連接、發(fā)送請求、接收響應(yīng)并控制Modbus TCP服務(wù)器的連接終端。而另一個(gè)指令“MB_SERVER”指令作為MODBUS/TCP服務(wù)器,通過S7-1200 CPU的PROFINET連接進(jìn)行通信?!癕B_SERVER”指令將處理MODBUS/TCP客戶端MES制造企業(yè)生產(chǎn)過程執(zhí)行系統(tǒng)的連接請求、接收MODBUS功能的請求并發(fā)送響應(yīng),客戶端可以對其數(shù)據(jù)進(jìn)行訪問和更改。使用這兩個(gè)指令,無需其它任何硬件模塊。
第一種“MB_CLIENT”指令,西門子S7-1200為客戶端,訪問工業(yè)機(jī)器人數(shù)據(jù)的MODBUS/TCP通訊方式。
S7-1200讀取工業(yè)機(jī)器人數(shù)據(jù):西門子PLC的以太網(wǎng)地址設(shè)為192.168.8.1,工業(yè)機(jī)器人的以太網(wǎng)地址設(shè)為192.168.8.2,將機(jī)器人內(nèi)部的地址的1-16號數(shù)據(jù)(數(shù)據(jù)可以包括機(jī)器人的位置、狀態(tài)等)送到為機(jī)器人與PLC相互通訊時(shí)MB_CLIENT中PLC的數(shù)據(jù)塊的的全局?jǐn)?shù)據(jù)塊DB2的DBW0至DBW30的16個(gè)字中,設(shè)M50.0的常開觸點(diǎn)為PLC讀取機(jī)器人數(shù)據(jù)的MODBUS/TCP服務(wù)器的通訊請求信號,其程序見圖1。
“MB_CLIENT”指令中輸入?yún)?shù) MB_MODE、MB_DATA_ADDR 和 DATA_LEN 與相關(guān) Modbus 功能的關(guān)系表如表1。
由表1可知MB_MODE=0、MB_DATA_ADDR=30001、DATA_LEN=16的組合指定MODBUS功能代碼為04,從機(jī)器人地址讀入16個(gè)字。
S7-1200向工業(yè)機(jī)器人寫入數(shù)據(jù):以太網(wǎng)地址同讀取,將全局?jǐn)?shù)據(jù)塊DB2的DBW32至DBW64(包括存于PLC中其他設(shè)備數(shù)據(jù),如MES數(shù)據(jù),倉庫數(shù)據(jù),機(jī)床數(shù)據(jù)或命令)寫入到工業(yè)機(jī)器人MODBUS地址中,M50.1的常開觸點(diǎn)為PLC寫入機(jī)器人數(shù)據(jù)的MODBUS/TCP服務(wù)器的通訊請求信號,其程序如圖2。
由關(guān)系表可以讀出,MB_MODE=1、MB_DATA_ADDR
=40001、DATA_LEN=16的組合指定MODBUS功能代碼為16,向機(jī)器人地址寫入16個(gè)字。
第二種“MB_SERVER”指令,西門子S7-1200為MODBUS服務(wù)器,由MES系統(tǒng)訪問PLC數(shù)據(jù)的MODBUS/TCP通訊方式。本例中我們僅做MES發(fā)送命令給PLC的程序,“MB_SERVER”指令本身是可以允許到達(dá)的Modbus 功能(1、2、4、5和15)直接讀取和寫入訪問S7-1200 CPU 的過程映像輸入和輸出,但在本例中我們還是使用全局?jǐn)?shù)據(jù)塊DB8來實(shí)現(xiàn)數(shù)據(jù)的讀寫,且由于數(shù)據(jù)塊的讀寫超過一個(gè)字,還是使用Modbus的功能3和16來讀寫數(shù)據(jù)塊,MB_SERVER指令中的MB_HOLD_REG參數(shù)中輸入的數(shù)據(jù)塊指針和長度對應(yīng)了MODBUS客戶端從頭開始的地址數(shù)據(jù),例如MB_HOLD_REG參數(shù)寫入P#DB8.DBX0.0 WORD 20,則DB8.DBW0對應(yīng)MES的MODBUS首地址數(shù)據(jù),之后共20個(gè)字的長度一一對應(yīng),見圖3。
為了能夠?qū)Σ煌瑺顟B(tài)情況下的不同的數(shù)據(jù)進(jìn)行按條件順序傳輸,建立一個(gè)通訊規(guī)則,可以使系統(tǒng)和各個(gè)設(shè)備之間能有序的進(jìn)行溝通,按照操作步驟依次進(jìn)行傳輸,回應(yīng),清零進(jìn)行周期工作,使傳輸?shù)臄?shù)據(jù)更可靠,做以下的設(shè)置:第一步,先在MES中設(shè)置代表不同工作狀態(tài)的命令碼如0為復(fù)位,1為啟動(dòng),2為停止,3為設(shè)備運(yùn)行,將它放入MODBUS首地址中傳入DB8.DBW0中,可在后續(xù)其他的地址中添加一些設(shè)備號,位置等數(shù)據(jù)信息,這步稱為MES發(fā)給PLC指令。第二步,將DB8.DBW0的數(shù)據(jù)傳入DB8.DBW10,將DB8.DBW10回傳給MES,這步稱為PLC響應(yīng)MES的指令。第三步,MES對回應(yīng)進(jìn)行處理,確認(rèn)命令碼正確傳輸后,送復(fù)位用的命令碼0給PLC,PLC清除DB8.DBW10,稱為MES清除PLC步驟數(shù)據(jù),完成某步驟的數(shù)據(jù)傳輸共需這三步。以命令碼為3的數(shù)據(jù)傳輸為例的實(shí)際程序如圖4。
此程序完成了MES向PLC傳輸命令碼3,PLC回呼MES,MES傳回清零碼,進(jìn)行清零的三個(gè)步驟,能使數(shù)據(jù)的傳輸更加有層次,更可靠。
可靠而方便的通訊方式,使自動(dòng)化電氣設(shè)備與設(shè)備之間能更靈活的聯(lián)系起來,MODBUS通訊方式本身使應(yīng)用比較自由而廣泛的,結(jié)合MES系統(tǒng),西門子PLC控制器和工業(yè)機(jī)器人完成了三者之間的自動(dòng)化系統(tǒng)通訊聯(lián)系。可以預(yù)計(jì)隨著移動(dòng)互聯(lián)和工業(yè)4.0的推進(jìn),自動(dòng)化通訊技術(shù)也將不斷的發(fā)展創(chuàng)新,未來的通訊方式會更廣泛,更靈活,更迅速,更準(zhǔn)確。
參考文獻(xiàn):
[1]樊啟永,廖小吉,田超.基于MES的料倉智能取料系統(tǒng)構(gòu)建及機(jī)器人編程的實(shí)現(xiàn)[J].工業(yè)技術(shù)與職業(yè)教育,2019:11-13.
[2]吳玉文,蔡鎖寧,邱濤.基于Modbus/TCP的工業(yè)機(jī)器人與PLC通信研究[J].河南科技,2018(12):33-35.
[3]何永亞.基于prOpcKit的opc數(shù)據(jù)訪問服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].價(jià)值工程,2012,31(05):172-174.