孫 旋,蔣文凱,廖文琦
(1.桂林理工大學(xué) 機(jī)械與控制工程學(xué)院,桂林 541004;2.桂林理工大學(xué) 土木與建筑工程學(xué)院,桂林 541004)
?
基于CANopen協(xié)議的伺服驅(qū)動器從站實(shí)現(xiàn)
孫 旋1,蔣文凱1,廖文琦2
(1.桂林理工大學(xué)機(jī)械與控制工程學(xué)院,桂林541004;2.桂林理工大學(xué)土木與建筑工程學(xué)院,桂林 541004)
摘 要:針對伺服驅(qū)動器的多機(jī)應(yīng)用要求實(shí)時性高、數(shù)據(jù)量大等特點(diǎn),提出了基于CANopen總線協(xié)議的解決方案,采用了以F28M35H52C為主控制器的伺服驅(qū)動器硬件平臺,著重分析并實(shí)現(xiàn)了CANopen協(xié)議中的協(xié)議結(jié)構(gòu)、數(shù)據(jù)格式以及DS-301和DS-402子協(xié)議,使用臺達(dá)CANopen主站設(shè)備與伺服驅(qū)動器建立CANopen網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境。實(shí)驗(yàn)結(jié)果表明CANopen協(xié)議在伺服驅(qū)動器中可成功實(shí)現(xiàn)伺服驅(qū)動器的多機(jī)控制。
關(guān)鍵詞:F28M35H52C;CANopen;現(xiàn)場總線;伺服驅(qū)動器
F28M35H52C是TI公司推出的Concerto系列的雙核微處理器,主機(jī)子系統(tǒng)CPU采用ARM公司的Cortex-M3內(nèi)核,最高主頻可達(dá)100MHz,主機(jī)子系統(tǒng)負(fù)責(zé)穩(wěn)健的通信,具有非常完整的外設(shè),如以太網(wǎng)、CAN、I2C、USB、UART等,主機(jī)子系統(tǒng)實(shí)現(xiàn)了開發(fā)人員的生態(tài)環(huán)境,負(fù)責(zé)操作系統(tǒng)、中間件、軟件(SW)基礎(chǔ)結(jié)構(gòu)[1]。控制子系統(tǒng)采用的是TI的C28x微處理器,最高主頻可達(dá)150MHz,主要完成對伺服電機(jī)的控制,兩個子系統(tǒng)設(shè)計(jì)了共享的片上RAM以及IPC通信,相互之間可以快速交換數(shù)據(jù),這比以往的單獨(dú)的DSP或者DSP+FPGA的架構(gòu)性能更加優(yōu)越。
CAN(Controller Area Network)稱為控制器局域網(wǎng),屬于總線式通訊網(wǎng)絡(luò)。它是20世紀(jì)80年代初德國BOSCH公司提出為解決汽車內(nèi)部眾多控制器與測量設(shè)備之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信總線,是一種有效支持分布式控制系統(tǒng)或?qū)崟r控制的串行通信網(wǎng)絡(luò)[2],具有高可靠性、高性能等優(yōu)點(diǎn)。CANopen協(xié)議是CIA協(xié)會基于CAN總線定義的應(yīng)用層協(xié)議之一,在各種控制系統(tǒng)中得到了廣泛應(yīng)用[3]。目前廣泛應(yīng)用于伺服驅(qū)動器、儀器儀表等大量設(shè)備中。
圖1 伺服驅(qū)動器硬件框圖
eQEP(Enhanced Quadrature Encoder Pulse)增強(qiáng)型正交編碼脈沖接口連接增量式編碼器進(jìn)行測速,eCAP(Enhanced Capture)接口連接霍爾位置傳感器在上電瞬間檢測電機(jī)轉(zhuǎn)子所在的扇區(qū)位置,也可測速?;魻栯娏鱾鞲衅鳈z測電機(jī)的相電流,電機(jī)的三相電流只需檢測任意其中的兩相的電流,通過計(jì)算可獲取剩余的一相電流。F28M35H52C有兩個CAN控制器,最高波特率為1MBit/s,電路圖如圖2所示。
常用的120Ω終端電阻根據(jù)需要可外接在P201接線端子的2、3腳,采用了6N137高速光耦進(jìn)行隔離。
圖2 CAN通信電路圖
2.1OD 對象字典
對象字典(OD Object Dictionary)是CANopen 的核心概念,網(wǎng)絡(luò)中每個節(jié)點(diǎn)都有一個對象字典。對象字典描述了本設(shè)備和它的通信行為的所有參數(shù),它是一個有序的對象組,每個對象采用一個16位的索引(index)和一個8位的子索引(subindex)來確定該對象的訪問入口地址[7]。主站通過對象詞典中索引號為0x1018的參數(shù)來識別設(shè)備,每個從站設(shè)備都必須有一個相對應(yīng)的EDS (Electronic data sheet)文件。EDS文件定義了設(shè)備所有與CANopen協(xié)議相關(guān)的參數(shù)。
2.2CANopen報(bào)文結(jié)構(gòu)
CAN報(bào)文中,仲裁域用來區(qū)分幀類型的優(yōu)先級,而在CANopen報(bào)文中,除了區(qū)分幀類型的優(yōu)先級外還需區(qū)分報(bào)文的種類。在CANopen協(xié)議中,11位仲裁位稱為 COB-ID(Communication Object Identifier),分為兩部分。高4位仲裁位為功能碼(Function Code),主要用于區(qū)分報(bào)文類型;低7位仲裁位為節(jié)點(diǎn)地址(Node-ID),Node-ID取值范圍為1-127。如果Node-ID為0,則廣播至所有CANopen從站。
表1 CANopen報(bào)文結(jié)構(gòu)
CANopen協(xié)議通過功能碼的不同定義了不同類型的報(bào)文,主要有以下類型報(bào)文:NMT(Network Management Object)報(bào)文、PDO(Process Data Object)報(bào)文、SDO(Service Data Object)報(bào)文、SYNC(Synchronisation Object)報(bào)文、EMCY(Emergency Object)報(bào)文、心跳(Heartbeat)報(bào)文等。
2.3網(wǎng)絡(luò)管理對象(NMT)
NMT(Network Management)網(wǎng)絡(luò)管理基于主從結(jié)構(gòu)(Master/Slaver),這就要求在網(wǎng)絡(luò)中有一個節(jié)點(diǎn)專門作為NMT管理者,即NMT主站,其他為從站[8]。
表2 NMT報(bào)文結(jié)構(gòu)
主站通過發(fā)送NMT報(bào)文控制著CANopen網(wǎng)絡(luò)中每一個從站設(shè)備的節(jié)點(diǎn)狀態(tài),從站設(shè)備只需根據(jù)NMT報(bào)文在不同的狀態(tài)間切換即可。
圖3 NMT狀態(tài)機(jī)
圖3表明了在不同狀態(tài)下所支持的報(bào)文類型A:NMT B:Heartbeat C:SDO D:Emergency E:PDO F:Boot-up。相關(guān)切換命令如表3所示。
從站設(shè)備在上電或者復(fù)位后,設(shè)備會首先進(jìn)入Initialization狀態(tài)。在Initialization狀態(tài)中從站設(shè)備主要執(zhí)行一些初始化程序,初始化程序完成后從站設(shè)備會發(fā)送一條Boot-Up報(bào)文,然后自動進(jìn)入Pre-Operational狀態(tài),此后從站的節(jié)點(diǎn)狀態(tài)完全由主站控制。
NMT還提供了差錯控制服務(wù),主要用于檢測網(wǎng)絡(luò)中的設(shè)備是否在線和設(shè)備的當(dāng)前狀態(tài)。主要有節(jié)點(diǎn)保護(hù)報(bào)文(Node Guarding)和心跳報(bào)文(Heartbeat),節(jié)點(diǎn)保護(hù)報(bào)文是主站周期性發(fā)送遠(yuǎn)程幀給從站,從站回復(fù)當(dāng)前節(jié)點(diǎn)狀態(tài)給主站。心跳報(bào)文是從站周期性發(fā)送心跳報(bào)文給主站,主站如果在超過規(guī)定時間內(nèi)沒收到從站發(fā)過來的報(bào)文,就認(rèn)為該從站通信出現(xiàn)錯誤。一般情況下,從站通信出現(xiàn)錯誤,主站會發(fā)送NMT報(bào)文使該從站復(fù)位,通過SDO協(xié)議再次配置從站的對象詞典。一個從站設(shè)備必須選擇節(jié)點(diǎn)保護(hù)報(bào)文和心跳報(bào)文中一種的報(bào)文。
表4 心跳報(bào)文結(jié)構(gòu)
設(shè)備節(jié)點(diǎn)的不同狀態(tài)由節(jié)點(diǎn)狀態(tài)一下的相應(yīng)的值表示。
表5 心跳報(bào)文含義
2.4服務(wù)數(shù)據(jù)對象(SDO)
SDO(Service Data Object)報(bào)文主要用來訪問設(shè)備的對象字典,對CANopen網(wǎng)絡(luò)中的設(shè)備進(jìn)行配置。SDO主要有為加速傳送、分段傳送和塊傳送這三種傳送機(jī)制,其發(fā)送的報(bào)文必須得到接收者的確認(rèn)。
2.5過程數(shù)據(jù)對象(PDO)
PDO(Process Data Object)報(bào)文不需要接收者的確認(rèn),主要用來傳輸實(shí)時性較高的數(shù)據(jù),例如伺服驅(qū)動器中的電流、速度、位置等。PDO采用生產(chǎn)者/消費(fèi)者通信方式,數(shù)據(jù)從一個生產(chǎn)者傳到一個或多個消費(fèi)者,數(shù)據(jù)長度限制在8個字節(jié)之內(nèi)[9]。報(bào)文主要通對象詞典中的映射參數(shù)和通訊參數(shù)來描述。
2.6特殊功能對象
特殊功能對象主要包括緊急對象(E M C Y Emergency Object)和同步對象(SYNC Synchronisation Object)。伺服驅(qū)動器作為EMCY的生產(chǎn)者,當(dāng)設(shè)備發(fā)生故障時,會發(fā)送EMCY報(bào)文。例如:驅(qū)動器過載,過流,欠壓等故障。SYNC報(bào)與PDO傳輸密切相關(guān),例如在運(yùn)動控制中,通過設(shè)置PDO的傳輸類型為同步傳輸,可以實(shí)現(xiàn)多個設(shè)備數(shù)據(jù)的同步。同一個CANopen網(wǎng)絡(luò)中只允許一個激活的SYNC報(bào)文生產(chǎn)者。
2.7CANopen設(shè)備子協(xié)議分析DS-402[10]
DS-402子協(xié)議主要描述了運(yùn)動控制設(shè)備相關(guān)規(guī)范。主要利用控制字(0x6040)和狀態(tài)字(0x6041)控制和觀測伺服驅(qū)動器的運(yùn)行狀況,狀態(tài)機(jī)如圖4所示。
圖4 狀態(tài)機(jī)
圖4[10]表明了狀態(tài)機(jī)、控制字、狀態(tài)字之間的關(guān)系,控制字控制著狀態(tài)機(jī)的切換,狀態(tài)字反映了當(dāng)前的驅(qū)動器的狀態(tài)。
CANopen協(xié)議的實(shí)現(xiàn):
CANopen軟件主要包含CAN接收中斷程序、定時中斷程序及主程序三部分;在CAN接收中斷程序中,讀取CAN數(shù)據(jù)并放置在一個環(huán)形隊(duì)列中,環(huán)形隊(duì)列中的數(shù)據(jù)解析在主程序中完成;定時器中斷用于計(jì)時,以確定心跳包、PDO等報(bào)文所需的精準(zhǔn)時間;主程序中完成了大部分的CANopen協(xié)議。Cortex-M3端流程圖如圖5所示。
圖5 Cortex-M3端流程圖
采用臺達(dá)CANopen主站DVPCOPM-SL、伺服驅(qū)動器及USB轉(zhuǎn)CAN工具建立CANopen測試網(wǎng)絡(luò),如圖6所示。
圖6 測試網(wǎng)絡(luò)圖
通過CANopenBuilder軟件配置主站DVPCOPM需要完成導(dǎo)入EDS文件、在線掃描設(shè)備、配置主站參數(shù)等主要操作。按照圖6連接好設(shè)備后,使用CANopenBuilder軟件在線掃描設(shè)備,結(jié)果如圖7所示。
圖7 在線掃描結(jié)果
圖7中,主站已經(jīng)掃描到一個設(shè)備,006為從站設(shè)備的節(jié)點(diǎn)地址,GuilinServo為設(shè)備生產(chǎn)廠商名稱。使用USB轉(zhuǎn)CAN工具監(jiān)控CAN總線的數(shù)據(jù),如圖8所示。
圖8表明節(jié)點(diǎn)地址為6的伺服驅(qū)動器已經(jīng)工作在“操作”狀態(tài),伺服驅(qū)動器的各種類型報(bào)文與CANopen主站通信正常,表明該設(shè)計(jì)成功。
圖8 上位機(jī)軟件監(jiān)控的數(shù)據(jù)
在CANopen Builder軟件環(huán)境中進(jìn)行了主從站的通訊調(diào)試,主從站之間沒有報(bào)文丟失的現(xiàn)象,進(jìn)行了參數(shù)設(shè)置、正常運(yùn)行及急停試驗(yàn),試驗(yàn)表明以F28M35H52C為主控制器的伺服驅(qū)動器硬件設(shè)計(jì)方案,實(shí)現(xiàn)了CANopen協(xié)議中DS-301和DS-402子協(xié)議,成功完成多伺服驅(qū)動器控制功能。對在CANopen網(wǎng)絡(luò)下的多伺服驅(qū)動器的應(yīng)用有借鑒與指導(dǎo)意義。
參考文獻(xiàn):
[1] 張立偉.基于F28M35的全電腦針織橫機(jī)伺服驅(qū)動器的研究[D].杭州:杭州電子科技大學(xué),2014.
[2] 王桂榮,錢劍敏.CAN總線和基于CAN總線的高層協(xié)議[J].計(jì)算機(jī)測量與控制,2003,05:391-394.
[3] 孫樹文,楊建武,張慧慧,趙建光.基于CANopen協(xié)議的分布式控制系統(tǒng)I/O從站設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2007,12:1705-1707.
[4] Texas Instruments Inc..F28M35Hx Concerto Microcontroller[EB]. 2011:153-160.
[5] Texas Instruments Inc. Concerto F28M35x Technical Reference Manual[Z].2011.
[6] CAN in Automation. Application Layer and Communication Profile[Z].CiA Draft Standard 301,Version 4.02,2002.
[7] 馬成才.基于CANopen協(xié)議的交流伺服驅(qū)動器從站研究[D].南京:南京航空航天大學(xué),2012.
[8] 楊曉航.CANopen從站通訊模塊的開發(fā)與應(yīng)用[D].南京理工大學(xué),2014.
[9] 王碩,李恩,趙曉光.CANopen協(xié)議在高空作業(yè)車控制系統(tǒng)中的應(yīng)用[J].制造業(yè)自動化,2011,33(2).
[10] CAN in Automation.CiA Draft Standard Proposal DSP-402 CANopen Device Profile for Drives and Motion Control[S]. Version 1.1,1998,10.
Implementation of the slave station for servo driver based on CANopen protocol
SUN Xuan1, JIANG Wen-kai1, LIAO Wen-qi2
中圖分類號:TM3
文獻(xiàn)標(biāo)識碼:A
文章編號:1009-0134(2016)05-0009-05
收稿日期:2016-01-19
作者簡介:孫旋(1970 -),男,湖北人,碩士,研究方向?yàn)榻Y(jié)構(gòu)的強(qiáng)度效驗(yàn)、疲勞性分析及可靠性分析;PZT壓電材料在鋼結(jié)構(gòu)損傷檢測的應(yīng)用研究;信號的檢測、分析及其數(shù)據(jù)處理。