CANopen学习
1.CANopen協(xié)議總述
CANopen 是一個基于 CAN 串行總線的網(wǎng)絡(luò)傳輸系統(tǒng)的應(yīng)用層協(xié)議,遵循 ISO/OSI 標(biāo)準(zhǔn)模型。
網(wǎng)絡(luò)中不同的設(shè)備通過對象字典或者對象來相互交換數(shù)據(jù),其中,主節(jié)點(diǎn)可以通過過程數(shù)據(jù)對象 (PDO) 或者服務(wù)數(shù)據(jù)對象 (SDO) 來獲取或者修改其它節(jié)點(diǎn)對象字典列表中的數(shù)據(jù)。
CANopen協(xié)議主要內(nèi)容分為三大塊,如下圖CANopen 的設(shè)備模型。
推薦書籍:周立功的《CANopen輕松入門》,建議詳細(xì)拜讀,可以帶大家入門。
2.通訊接口
入門之后若要深入理解,我建議參看官網(wǎng)的《CANOpen CiA 301》標(biāo)準(zhǔn)這本文檔
CiA(CAN in Automation) 301也是大家所說的DS301,為CANopen 基礎(chǔ)協(xié)議。
我們還常看到類似CiA 401 402這些協(xié)議,其實(shí)它們是在CiA 301 之上,對各個行業(yè)不斷推出設(shè)備子協(xié)議。
所謂的子協(xié)議,就是針對不同行業(yè)的應(yīng)用對象,對 CANopen 內(nèi)部的數(shù)據(jù)含義進(jìn)行重新定義,或者添加新的控制邏輯。
按照CANOpen CiA 301協(xié)議文檔,提取了通信接口的主要內(nèi)容,如下圖:
2.1 網(wǎng)絡(luò)管理(NMT),包括 Boot-up(上線) 消息, Heartbeat(心跳) 協(xié)議及 NMT 消息,基于主從通信模式,
NMT 用于管理和監(jiān)控網(wǎng)絡(luò)中的各個節(jié)點(diǎn),主要實(shí)現(xiàn)三種功能:節(jié)點(diǎn)狀態(tài)控制、錯誤控制和節(jié)點(diǎn)啟動。
CANOpen網(wǎng)絡(luò)一般是一個主站,多個從站的局域網(wǎng)絡(luò);
NMT節(jié)點(diǎn)具有6種狀態(tài):初始化、應(yīng)用層復(fù)位、通訊復(fù)位、預(yù)操作狀態(tài)、操作狀態(tài)、停止?fàn)顟B(tài)。可以自己切換狀態(tài),也可主站切換狀態(tài);
任何一個 CANopen 從站上線后發(fā)出節(jié)點(diǎn)上線報文(boot-up)。
2.2 過程數(shù)據(jù)對象 PDO
每個 CANopen 設(shè)備包含 8 個缺省的 PDO 通道, 4 個發(fā)送 PDO 通道和 4 個接收 PDO 通道。
PDO用來傳輸實(shí)時數(shù)據(jù),包括接收 PDO(RPDO) 和發(fā)送 PDO(TPDO),數(shù)據(jù)從一個創(chuàng)建者傳到一個或多個接收者,屬于“生產(chǎn)消費(fèi)”模型,數(shù)據(jù)傳送限制在 1 到 8 個字節(jié)。
COB-ID(CAN Object Identifier,CANID是其一部分,NodeID是CANID的低7位) 定義只是預(yù)定義。
PDO 的兩種傳輸方式:同步傳輸和異步傳輸,由該 PDO 對應(yīng)的通信參數(shù)決定。
PDO 的通信參數(shù)可通過對象字典工具配置。
PDO 消息的內(nèi)容是預(yù)定義的,由該 PDO 對應(yīng)的映射參數(shù)決定。PDO 的映射參數(shù)是一個相對難理解的參數(shù),請結(jié)合《CANopen 輕松入門》圖文理解。
2.3 服務(wù)數(shù)據(jù)對象 SDO
包括接收 SDO(R-SDO) 和發(fā)送 SDO(T-SDO)。
通過使用索引和子索引, SDO 使客戶機(jī)能夠訪問設(shè)備對象字典中的項(xiàng)。
SDO 通過 CAL 中多元域的 CMS 對象來實(shí)現(xiàn),允許傳送任何長度的數(shù)據(jù),當(dāng)數(shù)據(jù)超過 4 個字節(jié)時分拆成幾個報文。
協(xié)議是確認(rèn)服務(wù)類型,為每個消息生成一個應(yīng)答。 SDO 請求和應(yīng)答報文總是包含 8 個字節(jié)。
SDO為請求應(yīng)答方式;
發(fā)送方(客戶端)、接收方(服務(wù)器) ;
通常從節(jié)點(diǎn)為 SDO 服務(wù)器,主節(jié)點(diǎn)為客戶端;
兩種協(xié)議:快速、普通 SDO 協(xié)議;
CS命令符含義需熟記(查表);
2.4 特殊協(xié)議
2.4.1.常見的就是羅列出來的3種:
同步協(xié)議,包含同步對象,同步對象是由 CANopen 主站周期性地廣播到 CAN 總線的報文,用來實(shí)現(xiàn)基本的網(wǎng)絡(luò)時鐘信號,
每個設(shè)備可以根據(jù)自己的配置,決定是否使用該事件來跟其它網(wǎng)絡(luò)設(shè)備進(jìn)行同步通信。
時間戳協(xié)議。
緊急報文協(xié)議,設(shè)備內(nèi)部通信故障或者應(yīng)用故障錯誤時發(fā)送的報文。
2.4.2.特殊協(xié)議CAN-ID定義(查表);
2.4.3.緊急報文錯誤代碼分類及含義;
3.對象字典
CANopen設(shè)備最重要的一個部分就是對象字典。對象字典本質(zhì)上是一種被預(yù)先安排的對象序列,可通過網(wǎng)絡(luò)訪問。字典里面的每一對象均可使用一個16-bit主索引和8-bit子索引尋址到。
對象字典下面主要包含:數(shù)據(jù)類型、通信對象、應(yīng)用對象。
3.1 通信子協(xié)議區(qū),如上圖1000h 到 1FFFh這個區(qū)域。也就是通信接口(或通信對象)協(xié)議區(qū)。
關(guān)于創(chuàng)建對象字典,可以使用Canfestival工具,詳見:http://www.elecfans.com/d/1153555.html
總結(jié)
- 上一篇: 长安深蓝 10 月交付新车 15513
- 下一篇: metasploit渗透测试魔鬼训练营