1寫在前面
上一章節(jié)提供的例程是標(biāo)準(zhǔn)、數(shù)據(jù)幀格式的傳輸例程,結(jié)合前面理論知識(shí),相信你根據(jù)參考例程可以實(shí)現(xiàn)遠(yuǎn)程幀及其他類型的數(shù)據(jù)傳輸。
前面教程講述內(nèi)容為CAN總線協(xié)議,屬于底層硬件相關(guān)的一些內(nèi)容。從本文開始,將正式講述CANOpen協(xié)議。
CANOpen協(xié)議是基于CAN總線的上一層軟件協(xié)議。該教程前面內(nèi)容是建立底層通信,只有在底層通信成功基礎(chǔ)上,才能實(shí)現(xiàn)上一層的通信協(xié)議。
提示:CANOpen協(xié)議內(nèi)容很多,有許多內(nèi)容都是一些抽象的概念。所以,有一些內(nèi)容相對(duì)較難理解,隨著慢慢深入即可消除那些疑慮。
2
CANopen協(xié)議總述
CANopen 是一個(gè)基于 CAN 串行總線的網(wǎng)絡(luò)傳輸系統(tǒng)的應(yīng)用層協(xié)議,遵循 ISO/OSI 標(biāo)準(zhǔn)模型。
網(wǎng)絡(luò)中不同的設(shè)備通過對(duì)象字典或者對(duì)象來相互交換數(shù)據(jù),其中,主節(jié)點(diǎn)可以通過過程數(shù)據(jù)對(duì)象 (PDO) 或者服務(wù)數(shù)據(jù)對(duì)象 (SDO) 來獲取或者修改其它節(jié)點(diǎn)對(duì)象字典列表中的數(shù)據(jù)。
CANOpen協(xié)議主要內(nèi)容分為三大塊,如下圖CANopen 的設(shè)備模型。
CANOpen協(xié)議從大方向的劃分,就如上圖所示三大塊。但是,這三大塊里面的內(nèi)容就牽涉到許多......
初學(xué)者可以以上圖模型為中心,再結(jié)合實(shí)際例程理解CANOpen協(xié)議的各種抽象概念。
下面章節(jié)將進(jìn)一步講述模型中三大塊內(nèi)容的一些概念,初學(xué)者能理解盡量理解,不能理解可以先做了解即可。
3
通信對(duì)象
CANopen協(xié)議中常用的通信對(duì)象包含如下幾點(diǎn):
1) 網(wǎng)絡(luò)管理對(duì)象(NMT)
網(wǎng)絡(luò)管理對(duì)象包括 Boot-up 消息, Heartbeat 協(xié)議及 NMT 消息,基于主從通信模式, NMT 用于管理和監(jiān)控網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn),主要實(shí)現(xiàn)三種功能:節(jié)點(diǎn)狀態(tài)控制、錯(cuò)誤控制和節(jié)點(diǎn)啟動(dòng)。
2) 服務(wù)數(shù)據(jù)對(duì)象 (SDO)
包括接收 SDO(R-SDO) 和發(fā)送 SDO(T-SDO)。
通過使用索引和子索引, SDO 使客戶機(jī)能夠訪問設(shè)備對(duì)象字典中的項(xiàng)。
SDO 通過 CAL 中多元域的 CMS 對(duì)象來實(shí)現(xiàn),允許傳送任何長度的數(shù)據(jù),當(dāng)數(shù)據(jù)超過 4 個(gè)字節(jié)時(shí)分拆成幾個(gè)報(bào)文。
協(xié)議是確認(rèn)服務(wù)類型,為每個(gè)消息生成一個(gè)應(yīng)答。 SDO 請(qǐng)求和應(yīng)答報(bào)文總是包含 8 個(gè)字節(jié)。
3) 過程數(shù)據(jù)對(duì)象(PDO)
包括接收 PDO(RPDO) 和發(fā)送 PDO(TPDO)。
用來傳輸實(shí)時(shí)數(shù)據(jù),數(shù)據(jù)從一個(gè)創(chuàng)建者傳到一個(gè)或多個(gè)接收者。數(shù)據(jù)傳送限制在 1 到 8 個(gè)字節(jié)。
每個(gè) CANopen 設(shè)備包含 8 個(gè)缺省的 PDO 通道, 4 個(gè)發(fā)送 PDO 通道和 4 個(gè)接收 PDO 通道。
PDO 包含同步和異步兩種傳輸方式,由該 PDO 對(duì)應(yīng)的通信參數(shù)決定。
PDO 消息的內(nèi)容是預(yù)定義的,由該 PDO 對(duì)應(yīng)的映射參數(shù)決定。
4) 同步對(duì)象 (SYNC)
同步對(duì)象是由 CANopen 主站周期性地廣播到 CAN 總線的報(bào)文,用來實(shí)現(xiàn)基本的網(wǎng)絡(luò)時(shí)鐘信號(hào),每個(gè)設(shè)備可以根據(jù)自己的配置,決定是否使用該事件來跟其它網(wǎng)絡(luò)設(shè)備進(jìn)行同步通信。
5) 緊急報(bào)文 (EMCY)
設(shè)備內(nèi)部通信故障或者應(yīng)用故障錯(cuò)誤時(shí)發(fā)送的報(bào)文。
4
對(duì)象字典
對(duì)象字典是設(shè)備規(guī)范中最重要的部分。它是一組參數(shù)和變量的有序集合,包含了設(shè)備描述及設(shè)備網(wǎng)絡(luò)狀態(tài)的所有參數(shù)。
通過網(wǎng)絡(luò)可以采用有序的預(yù)定義的方式來訪問的一組對(duì)象。這里就牽涉到定義對(duì)象字典的生成問題,后面我會(huì)講述關(guān)于對(duì)象字典生成工具相關(guān)內(nèi)容。
CANopen 協(xié)議采用了帶有 16 位索引和 8 位子索引的對(duì)象字典。你可以理解為一本漢語字典,我們需要查找里面的某個(gè)漢子(可以理解定義的某個(gè)數(shù)據(jù)),我們就會(huì)從拼音或筆畫(索引)進(jìn)去找到對(duì)應(yīng)位置。
CANOpen 協(xié)議對(duì)象字典主索引如下圖,這只是一個(gè)主要的索引。其實(shí)還能細(xì)分下去,這里不過多講述,后續(xù)會(huì)進(jìn)一步講述。
5
應(yīng)用
應(yīng)用這一塊的內(nèi)容包含應(yīng)用程序、設(shè)備子協(xié)議實(shí)現(xiàn)。可以從CANopen 的設(shè)備模型明白,對(duì)外就是IO接口,也就是供我們調(diào)用的接口。
應(yīng)用這一塊包含CANOpen協(xié)議上層的內(nèi)容,可以簡單理解封裝的一些供用戶讀寫操作的函數(shù)。
應(yīng)用這一塊內(nèi)容在后面結(jié)合實(shí)例分析會(huì)牽涉,初學(xué)者可以簡單了解有這么一塊,且知道這一塊在CANOpen協(xié)議中大致的作用即可。
-
CAN
+關(guān)注
關(guān)注
57文章
2754瀏覽量
463697 -
CANopen
+關(guān)注
關(guān)注
8文章
253瀏覽量
43588 -
NMT
+關(guān)注
關(guān)注
0文章
7瀏覽量
3636
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論