阮軍元,王德成,程 鵬,邵晨曦
(中機生產力促進中心,北京 100044)
基于Modbus/TCP的伺服驅動器控制研究及測試軟件的開發(fā)
阮軍元,王德成,程 鵬,邵晨曦
(中機生產力促進中心,北京 100044)
要實現(xiàn)自動控制系統(tǒng)各設備間信息和數(shù)據(jù)的高速交換,快速方便的通訊協(xié)議變得尤為可貴。Modbus通訊協(xié)議是免費提供的一種全開放式的協(xié)議,結合TCP/IP協(xié)議形成的Modbus/TCP協(xié)議具有幀錯能力強、數(shù)據(jù)傳輸量大、實時性好、開放型好等特點,特別適合一些數(shù)據(jù)傳輸要求速度快、信息量大的場合。論文以科爾摩根伺服驅動器為控制對象,結合C#編程語言,并利用Modbus/TCP協(xié)議,實現(xiàn)PC對驅動器的直接控制,這樣可以省去一些中間元器件,為一些工業(yè)控制提供了一種可靠的方便的控制方法,減少控制成本及后續(xù)的維修環(huán)節(jié)。
Modbus/TCP;驅動器;C#
網絡技術的快速高效性使得其應用越來越廣泛,由于其數(shù)據(jù)傳輸?shù)膶崟r快速低成本性,逐漸在工業(yè)控制領域得到應用,形成了當前的工業(yè)以太網技術。自20世紀70年代誕生以來,Modbus在工業(yè)領域的過程控制和數(shù)據(jù)采集中得到廣泛應用,逐漸形成了一種工業(yè)標準。目前工業(yè)中常用的Modbus通信分為兩種,一種是經由RS-232C兼容串行接口(或通過RS232/485轉換器轉換成RS485接口)組成Modbus網絡進行通信,另一種通過以太網結合TCP/IP協(xié)議組成Modbus/TCP網絡進行通信。
本文以Modbus/TCP為例,用C#編寫調試軟件,控制科爾摩根伺服驅動器實現(xiàn)一些運動控制。一般情況下伺服驅動器的控制需要利用可編程控制器來實現(xiàn),這主要是基于可編程控制器的操作性強、控制方便等優(yōu)點。科爾摩根驅動器集成了一些可編程功能,再加上以太網通信口的集成,可以方便的直接利用PC來控制,而不用通過可編程控制,這樣可以大大減少數(shù)據(jù)的傳輸時間,節(jié)省成本,并減少了維修環(huán)節(jié)。
Modbus是標準協(xié)議,在TCP/IP以太網上傳輸,支持Ethernet II和802.3兩種幀格式。圖1所示,Modbus/ TCP數(shù)據(jù)幀包含報文頭、功能代碼和數(shù)據(jù)3部分[1,2]。
數(shù)據(jù)幀格式如下:
事務標識:該Area中的數(shù)據(jù)可以由用戶自主設定,且事務處理的配對由事務標識決定,例如每一幀的序號放在事務標識中。
圖1 Modbus/TCP格式Fig.1 Format of Modbus/TCP
協(xié)議標識:該標識的Area用于整個系統(tǒng)內的多路復用(多種協(xié)議),而當系統(tǒng)使用的是Modbus協(xié)議時,則該值為0。
長度:該Area中的2字節(jié)數(shù)據(jù)表示后續(xù)區(qū)域的字節(jié)個數(shù),包括單元標識、Data啟動位置和協(xié)議數(shù)據(jù)。
單元標識:識別遠程單元(從單元),方便單元路由功能。當使用這片區(qū)域時,服務器的響應幀內容必須使用相同的單元標識,來返回該區(qū)域的數(shù)據(jù)。
協(xié)議數(shù)據(jù)包括Function和 Data兩部分。Function:讀多個寄存器的功能碼為0xAA,寫多個寄存器的功能碼為0xFF,F(xiàn)unction占用大小為1Byte。設計中讀寫功能在Modbus Function的定義如表1所示。
表1 讀寫寄存器功能碼Tab.1 Function of read and write registers
數(shù)據(jù)包括兩大部分,即起始位置(地址)和所要讀的字節(jié)數(shù) (所要寫的字節(jié)數(shù))。起始位置占用大小為 2字節(jié);讀的字節(jié)數(shù)和寫的字節(jié)數(shù)為2,占用大小為2字節(jié)。Data中的起始位置會與Head中啟動位置進行匹配檢驗。
本文以寫入和讀取伺服驅動器寄存器為例,按上述數(shù)據(jù)幀格式編寫相應代碼,實現(xiàn)PC與伺服驅動器的數(shù)據(jù)傳輸。
一般的控制基本上以讀多個寄存器和寫多個寄存器為主,通過讀寫一些數(shù)據(jù)達到監(jiān)控的目的。因此功能碼使用到的主要為03和16,以伺科爾摩根服驅動器的控制為例,電機的控制主要包括伺服的啟停、運動參數(shù)的設置、運動模式的選擇和運動任務的啟停等。驅動器內存給不同的控制單元和參數(shù)設定了內存地址,這樣伺服的控制就簡化為對不同的內存單元的讀寫操作,再加上TCP/IP數(shù)據(jù)傳輸?shù)目焖傩?,通過PC控制伺服電機運動及相應數(shù)據(jù)的采集變得方便而快速。
AKD伺服驅動器一般都會有RJ-45接口 (圖2中X11),通過雙絞線連接至PC的以太網接口,之后需要設置驅動器的IP地址以實現(xiàn)兩者之間的數(shù)據(jù)傳輸,按照驅動器的要求,使用靜態(tài)IP地址,IP地址為192.168. X1.X2,X1和X2通過旋轉開關來設,范圍為0~9。設定結束后,即可通過IP地址和Modbus端口號及相應的協(xié)議碼實現(xiàn)PC與驅動器之間的數(shù)據(jù)交換。
下面以PC控制伺服啟停和輸入伺服運動時間參數(shù)的讀寫為例,來說明Modbus/TCP協(xié)議格式及其控制方式。
圖2 AKD伺服驅動器Fig.2 AKD Servo Drive
表2 驅動器使能和運動時間的內存地址分配表Tab.2 Memory address allocation table of drive enable and movement time
按照Modbus/TCP協(xié)議的格式,則伺服使能的數(shù)據(jù)幀為:
寫入內容為1,表示將內存單元置位,相對應驅動器的動作為驅動器使能。驅動返回的數(shù)據(jù)幀中起始地址和寄存器數(shù)與驅動器收到的一致,則數(shù)據(jù)寫入成功。
讀取伺服運動時間的數(shù)據(jù)幀為:
存儲時間的寄存器數(shù)為2,地址754大于256,轉化后為2×256+242,因為為讀取數(shù)據(jù),則Send數(shù)據(jù)幀中不用寫字節(jié)數(shù)和后續(xù)內容。從Receive數(shù)據(jù)幀中可以看出后四位為讀到的數(shù)據(jù),即伺服運動時間為10ms,與設置的時間數(shù)據(jù)一致,表明數(shù)據(jù)讀取成功。
以下是用C#編程的主要代碼,首先建立通訊,通過點擊界面上不同的按鈕,將其對應的數(shù)據(jù)幀發(fā)送給伺服驅動器,即PC向驅動器傳輸Send對應的數(shù)據(jù)幀,當驅動器返回Receive數(shù)據(jù)幀時,則表明數(shù)據(jù)傳輸成功,伺服驅動器執(zhí)行相應的動作。
程序基本流程如圖3所示。
圖3 Modbus/TCP通訊基本流程圖Fig.3 The basic flowchart of Modbus/TCP communication
建立套接字并建立PC與驅動器連接的函數(shù)如下[3]:數(shù)據(jù)幀發(fā)送接收函數(shù)這里不贅述,即按照相應的數(shù)據(jù)幀格式建立數(shù)組,調用上述連接函數(shù)后,依次將數(shù)組中的數(shù)據(jù)傳輸給驅動器,Modbus/TCP協(xié)議進行數(shù)據(jù)的轉換提取后,若無錯誤且反饋成功,驅動器相應寄存單元內容改變,驅動器執(zhí)行相應的命令或PC獲取相應的數(shù)據(jù),實現(xiàn)數(shù)據(jù)的交互。測試界面如圖4所示,點擊按鈕驅動器動作和收發(fā)數(shù)據(jù)無誤。
圖4 測試軟件界面Fig.4 Test Software Interface
通過 C#編程測試,PC可以直接控制驅動器,如:運動參數(shù)的設置,運動任務的設置,運動的啟停等,實現(xiàn)過程方便快捷。利用驅動器自身的運動控制命令實現(xiàn)伺服電機的控制,這樣大大簡化了伺服電機的控制流程,不用通過PLC來建立運動包絡并調用PTO等運動任務向導來發(fā)送脈沖控制驅動器了,而是直接利用伺服本身的運動控制,減少了中間環(huán)節(jié),降低了控制成本。
[1]康向軍.基于modbus協(xié)議的數(shù)據(jù)讀寫[J].數(shù)字技術與應用,2013,2.
[2]白焰,等.基于VC的modbus協(xié)議通信測試軟件的實現(xiàn)[J].現(xiàn)代電力,2008,6.
[3]李江全,等.Visual C#.NET串口通訊及測控應用典型實例[M].北京:電子工業(yè)出版社,2012.
The Control Research of Servo Drive and the Development of Test Software Based on Modbus/TCP
RUAN Jun-Yuan,WANG De-Cheng,CHENG Peng,SHAO Chen-Xi
(China Productivity Centre for Machinery,Beijing 100044,China)
In order to realize the high speed exchange of information and data between automatic control equipment,a fast and convenient communication protocol has become particularly valuable.Modbus protocol,an open and free protocol,becomes the Modbus/TCP protocol combined with TCP/IP protocol.The new Modbus/TCP has the characteristics:fine frame error ability,a larger amount of data transmission, good real-time and openness etc,which especially is suitable for the requirements of high speed,larger amount of information transmission. In this paper,I will take Cole Morgan servo drive as the control object,combining with the C#programming language and the Modbus/ TCP protocol,to realize the direct control of PC to drive,which can save some intermediate components,provide a reliable and convenient method for some industry control,also reduce the control cost and the subsequent repair link from another point.
Modbus/TCP;Drive;C#
TP311.52
:Adoi:10.3969/j.issn.1002-6673.2014.01.030
1002-6673(2014)01-081-03
2012-12-26
阮軍元(1990-),男,碩士研究生。研究方向:機電一體化。