阮軍元,王德成,程 鵬,邵晨曦
(中機生產力促進中心,北京 100044)
基于Modbus/TCP的伺服驅動器控制研究及測試軟件的開發(fā)
阮軍元,王德成,程 鵬,邵晨曦
(中機生產力促進中心,北京 100044)
要實現自動控制系統(tǒng)各設備間信息和數據的高速交換,快速方便的通訊協議變得尤為可貴。Modbus通訊協議是免費提供的一種全開放式的協議,結合TCP/IP協議形成的Modbus/TCP協議具有幀錯能力強、數據傳輸量大、實時性好、開放型好等特點,特別適合一些數據傳輸要求速度快、信息量大的場合。論文以科爾摩根伺服驅動器為控制對象,結合C#編程語言,并利用Modbus/TCP協議,實現PC對驅動器的直接控制,這樣可以省去一些中間元器件,為一些工業(yè)控制提供了一種可靠的方便的控制方法,減少控制成本及后續(xù)的維修環(huán)節(jié)。
Modbus/TCP;驅動器;C#
網絡技術的快速高效性使得其應用越來越廣泛,由于其數據傳輸的實時快速低成本性,逐漸在工業(yè)控制領域得到應用,形成了當前的工業(yè)以太網技術。自20世紀70年代誕生以來,Modbus在工業(yè)領域的過程控制和數據采集中得到廣泛應用,逐漸形成了一種工業(yè)標準。目前工業(yè)中常用的Modbus通信分為兩種,一種是經由RS-232C兼容串行接口(或通過RS232/485轉換器轉換成RS485接口)組成Modbus網絡進行通信,另一種通過以太網結合TCP/IP協議組成Modbus/TCP網絡進行通信。
本文以Modbus/TCP為例,用C#編寫調試軟件,控制科爾摩根伺服驅動器實現一些運動控制。一般情況下伺服驅動器的控制需要利用可編程控制器來實現,這主要是基于可編程控制器的操作性強、控制方便等優(yōu)點??茽柲Ω寗悠骷闪艘恍┛删幊坦δ?,再加上以太網通信口的集成,可以方便的直接利用PC來控制,而不用通過可編程控制,這樣可以大大減少數據的傳輸時間,節(jié)省成本,并減少了維修環(huán)節(jié)。
Modbus是標準協議,在TCP/IP以太網上傳輸,支持Ethernet II和802.3兩種幀格式。圖1所示,Modbus/ TCP數據幀包含報文頭、功能代碼和數據3部分[1,2]。
數據幀格式如下:
事務標識:該Area中的數據可以由用戶自主設定,且事務處理的配對由事務標識決定,例如每一幀的序號放在事務標識中。
圖1 Modbus/TCP格式Fig.1 Format of Modbus/TCP
協議標識:該標識的Area用于整個系統(tǒng)內的多路復用(多種協議),而當系統(tǒng)使用的是Modbus協議時,則該值為0。
長度:該Area中的2字節(jié)數據表示后續(xù)區(qū)域的字節(jié)個數,包括單元標識、Data啟動位置和協議數據。
單元標識:識別遠程單元(從單元),方便單元路由功能。當使用這片區(qū)域時,服務器的響應幀內容必須使用相同的單元標識,來返回該區(qū)域的數據。
協議數據包括Function和 Data兩部分。Function:讀多個寄存器的功能碼為0xAA,寫多個寄存器的功能碼為0xFF,Function占用大小為1Byte。設計中讀寫功能在Modbus Function的定義如表1所示。
表1 讀寫寄存器功能碼Tab.1 Function of read and write registers
數據包括兩大部分,即起始位置(地址)和所要讀的字節(jié)數 (所要寫的字節(jié)數)。起始位置占用大小為 2字節(jié);讀的字節(jié)數和寫的字節(jié)數為2,占用大小為2字節(jié)。Data中的起始位置會與Head中啟動位置進行匹配檢驗。
本文以寫入和讀取伺服驅動器寄存器為例,按上述數據幀格式編寫相應代碼,實現PC與伺服驅動器的數據傳輸。
一般的控制基本上以讀多個寄存器和寫多個寄存器為主,通過讀寫一些數據達到監(jiān)控的目的。因此功能碼使用到的主要為03和16,以伺科爾摩根服驅動器的控制為例,電機的控制主要包括伺服的啟停、運動參數的設置、運動模式的選擇和運動任務的啟停等。驅動器內存給不同的控制單元和參數設定了內存地址,這樣伺服的控制就簡化為對不同的內存單元的讀寫操作,再加上TCP/IP數據傳輸的快速性,通過PC控制伺服電機運動及相應數據的采集變得方便而快速。
AKD伺服驅動器一般都會有RJ-45接口 (圖2中X11),通過雙絞線連接至PC的以太網接口,之后需要設置驅動器的IP地址以實現兩者之間的數據傳輸,按照驅動器的要求,使用靜態(tài)IP地址,IP地址為192.168. X1.X2,X1和X2通過旋轉開關來設,范圍為0~9。設定結束后,即可通過IP地址和Modbus端口號及相應的協議碼實現PC與驅動器之間的數據交換。
下面以PC控制伺服啟停和輸入伺服運動時間參數的讀寫為例,來說明Modbus/TCP協議格式及其控制方式。
圖2 AKD伺服驅動器Fig.2 AKD Servo Drive
表2 驅動器使能和運動時間的內存地址分配表Tab.2 Memory address allocation table of drive enable and movement time
按照Modbus/TCP協議的格式,則伺服使能的數據幀為:
寫入內容為1,表示將內存單元置位,相對應驅動器的動作為驅動器使能。驅動返回的數據幀中起始地址和寄存器數與驅動器收到的一致,則數據寫入成功。
讀取伺服運動時間的數據幀為:
存儲時間的寄存器數為2,地址754大于256,轉化后為2×256+242,因為為讀取數據,則Send數據幀中不用寫字節(jié)數和后續(xù)內容。從Receive數據幀中可以看出后四位為讀到的數據,即伺服運動時間為10ms,與設置的時間數據一致,表明數據讀取成功。
以下是用C#編程的主要代碼,首先建立通訊,通過點擊界面上不同的按鈕,將其對應的數據幀發(fā)送給伺服驅動器,即PC向驅動器傳輸Send對應的數據幀,當驅動器返回Receive數據幀時,則表明數據傳輸成功,伺服驅動器執(zhí)行相應的動作。
程序基本流程如圖3所示。
圖3 Modbus/TCP通訊基本流程圖Fig.3 The basic flowchart of Modbus/TCP communication
建立套接字并建立PC與驅動器連接的函數如下[3]:數據幀發(fā)送接收函數這里不贅述,即按照相應的數據幀格式建立數組,調用上述連接函數后,依次將數組中的數據傳輸給驅動器,Modbus/TCP協議進行數據的轉換提取后,若無錯誤且反饋成功,驅動器相應寄存單元內容改變,驅動器執(zhí)行相應的命令或PC獲取相應的數據,實現數據的交互。測試界面如圖4所示,點擊按鈕驅動器動作和收發(fā)數據無誤。
圖4 測試軟件界面Fig.4 Test Software Interface
通過 C#編程測試,PC可以直接控制驅動器,如:運動參數的設置,運動任務的設置,運動的啟停等,實現過程方便快捷。利用驅動器自身的運動控制命令實現伺服電機的控制,這樣大大簡化了伺服電機的控制流程,不用通過PLC來建立運動包絡并調用PTO等運動任務向導來發(fā)送脈沖控制驅動器了,而是直接利用伺服本身的運動控制,減少了中間環(huán)節(jié),降低了控制成本。
[1]康向軍.基于modbus協議的數據讀寫[J].數字技術與應用,2013,2.
[2]白焰,等.基于VC的modbus協議通信測試軟件的實現[J].現代電力,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-),男,碩士研究生。研究方向:機電一體化。