摘要:當(dāng)前的通訊方式各式各樣,,通訊協(xié)議也是五花八門,,如何讓通訊更加穩(wěn)定可靠,,這是很多工程師的棘手問題。本文將運(yùn)用國際規(guī)范的通訊標(biāo)準(zhǔn)解說其通訊協(xié)議的定義方式,。
過程數(shù)據(jù)對(duì)象PDO(Process data object)
PDO屬于過程數(shù)據(jù)用來傳輸實(shí)時(shí)數(shù)據(jù),,即單向傳輸,無需接收節(jié)點(diǎn)回應(yīng)CAN報(bào)文來確認(rèn),,從通訊術(shù)語上來說是屬于“生產(chǎn)消費(fèi)”模型PDO,,如圖 1所示,,就像食品銷售柜臺(tái),生產(chǎn)者擺出“食品”,,但只有“需要”的消費(fèi)者才會(huì)來買,,沒有指向性。
圖 1 生產(chǎn)者消費(fèi)者模型
數(shù)據(jù)長度被限制為1~8 字節(jié),。最多只要1幀就可以把一條信息或者一個(gè)變量傳遞結(jié)束,。
PDO的CAN-ID定義
PDO通信比較靈活,廣義上只要符合PDO范圍內(nèi)的所有CANID都可以作為節(jié)點(diǎn)自身的TPDO或者RPDO使用,,也稱為COB-ID,,不受功能碼和Node-ID限制,如圖 2所示,。
圖 2 PDO的CANID規(guī)則
而在PDO預(yù)定義中,人為規(guī)定了TPDO和RPDO,,規(guī)定了Node-ID在PDO中的位置,,規(guī)定了PDO的編號(hào),如表 1所示,。
表 1 PDO的CAN-ID定義
PDO分為TPDO(發(fā)送PDO)和(接收RPDO),,發(fā)送和接收是以CANopen節(jié)點(diǎn)自身為參考(如果CAN主站或者其他從站就相反)。TPDO和RPDO分別有4個(gè)數(shù)據(jù)對(duì)象,,每種數(shù)據(jù)對(duì)象就是1條CAN報(bào)文封裝,,這些都是數(shù)據(jù)收發(fā)的容器,就像圖 3所示,,水果籮筐為使用者準(zhǔn)備好,,就看使用者在里面放什么水果了。
圖 3 PDO和SDO就像水果籮筐
當(dāng)然,,如果某個(gè)節(jié)點(diǎn)需要傳遞的資源特別多,,則有出現(xiàn)例如TPDO5之類的數(shù)據(jù)對(duì)象,而它們的CAN-ID定義就需要打破預(yù)定義的規(guī)則,,比如我們可以定義Node-ID為1的節(jié)點(diǎn)中TPDO5是182h,,這里的PDO的COB-ID中的低7位不再是表示Node-ID。其實(shí)所有的PDO的COB-ID與Node-ID無必然規(guī)則上的聯(lián)系,。
PDO的傳輸形式
PDO的兩種傳輸方式:同步傳輸和異步傳輸,。 如圖 4所示,1,、2為異步傳輸,,3、4為同步傳輸,。
圖 4 PDO的傳輸形式
異步傳輸(由特定事件觸發(fā))
其觸發(fā)方式可有兩種,,第一種是由設(shè)備子協(xié)議中規(guī)定的對(duì)象特定事件來觸發(fā)(例如,,定時(shí)傳輸,數(shù)據(jù)變化傳輸?shù)龋?。第二種是通過發(fā)送與PDO的COB-ID相同的遠(yuǎn)程幀來觸發(fā)PDO的發(fā)送,。目前應(yīng)用中的異步傳輸基本都采用第一種。
同步傳輸(通過接收同步對(duì)象實(shí)現(xiàn)同步)
同步傳輸就是通過同步報(bào)文讓所有節(jié)點(diǎn)能在同一時(shí)刻進(jìn)行上傳數(shù)據(jù)或者執(zhí)行下達(dá)的應(yīng)用指令,,可以有效避免異步傳輸導(dǎo)致的應(yīng)用邏輯混亂和總線負(fù)載不平衡的問題,。一般發(fā)送同步報(bào)文的節(jié)點(diǎn)是NMT主機(jī)。
同步傳輸又可分為周期傳輸(循環(huán))和非周期傳輸(無循環(huán)),。周期傳輸則是通過接收同步對(duì)象(SYNC)來實(shí)現(xiàn),,可以設(shè)置1~240個(gè)同步對(duì)象觸發(fā)。 非周期傳輸是由遠(yuǎn)程幀預(yù)觸發(fā)或者由設(shè)備子協(xié)議中規(guī)定的對(duì)象特定事件預(yù)觸發(fā)傳送,。
PDO的通信參數(shù)
PDO通信參數(shù),,定義了該設(shè)備所使用的COB-ID、傳輸類型,、定時(shí)周期等,。RPDO通訊參數(shù)位于對(duì)象字典索引的1400h to 15FFh,TPDO通訊參數(shù)位于對(duì)象字典索引的1800h to 19FFh,。每條索引代表一個(gè)PDO的通信參數(shù)集,,其中的子索引分別指向具體的各種參數(shù)。如表 2所示,。
?Number of entries參數(shù)條目數(shù)量:即本索引中有幾條參數(shù),;
?COB-ID:即這個(gè)PDO發(fā)出或者接收的對(duì)應(yīng)CAN幀ID;
?發(fā)送類型:即這個(gè)PDO發(fā)送或者接收的傳輸形式,,通常使用循環(huán)同步和異步制造商特定事件較多,;
?Inhibit time生產(chǎn)禁止約束時(shí)間(1/10ms):約束PDO發(fā)送的最小間隔,避免導(dǎo)致總線負(fù)載劇
?烈增加,,比如數(shù)字量輸入過快,,導(dǎo)致狀態(tài)改變發(fā)送的TPDO頻繁發(fā)送,總線負(fù)載加大,,所以需要一個(gè)約束時(shí)間來進(jìn)行“濾波”,,這個(gè)時(shí)間單位為0.1ms;
?Event timer事件定時(shí)器觸發(fā)的時(shí)間(單位ms):定時(shí)發(fā)送的PDO,,它的定時(shí)時(shí)間,,如果這個(gè)時(shí)間為0,則這個(gè)PDO為事件改變發(fā)送,。
?SYNC start value同步起始值:同步傳輸?shù)腜DO,,收到諾干個(gè)同步包后,才進(jìn)行發(fā)送,,這個(gè)同步起始值就是同步包數(shù)量,。比如設(shè)置為2,,即收到2個(gè)同步包后才進(jìn)行發(fā)送。
PDO的映射參數(shù)
PDO映射參數(shù)是初學(xué)者學(xué)習(xí)CANopen時(shí)的一個(gè)難點(diǎn),,它包含了一個(gè)對(duì)象字典中的對(duì)象列表,,這些對(duì)象映射到相應(yīng)的PDO,其中包括數(shù)據(jù)的長度(單位,,位),,對(duì)于生產(chǎn)者和消費(fèi)者都必須要知道這個(gè)映射參數(shù),才能夠正確的解釋PDO內(nèi)容,。就是將通信參數(shù),、應(yīng)用數(shù)據(jù)和具體CAN報(bào)文中數(shù)據(jù)聯(lián)系起來。
RPDO通訊參數(shù)1400h to 15FFh,,映射參數(shù)1600h to 17FFh,,數(shù)據(jù)存放為2000h 之后廠商自定義區(qū)域;TPDO通訊參數(shù)1800h to 19FFh,,映射參數(shù)1A00h to 1BFFh,,數(shù)據(jù)存放為2000h 之后廠商自定義區(qū)域。
為了更加直觀地表現(xiàn)映射,,表 3模擬TPDO1,,將參數(shù),、應(yīng)用數(shù)據(jù),、CAN報(bào)文數(shù)據(jù)聯(lián)合起來展示,不同的映射采用不同的顏色,。
表 3 PDO在對(duì)象字典中的映射關(guān)系
CAN transmission( CAN發(fā)送報(bào)文)
TPDO1(CAN-ID = 181h) Data field:數(shù)據(jù)域4個(gè)字節(jié)
請(qǐng)讀者閱讀3遍以上,,如果還是無法理解。請(qǐng)打開廣州致遠(yuǎn)電子的CANopen主站卡管理軟件CANManager for CANopen,,導(dǎo)入XGate-COP10模塊從站協(xié)議棧模塊的EDS文件,,來真實(shí)感受一下。點(diǎn)擊配置從站,,“高級(jí)”中進(jìn)行感性認(rèn)識(shí),。
USBCAN-E-P與PCI-5010-P主站卡可為PC機(jī)拓展出CANOpen通訊接口,實(shí)現(xiàn)CANOpen協(xié)議的數(shù)據(jù)通信,。作為CANOpen網(wǎng)絡(luò)的管理者,,實(shí)現(xiàn)全部的CANOpen網(wǎng)絡(luò)管理(NMT)功能。