CANopen協議學習筆記一

2021-05-24 07:01:55 字數 2034 閱讀 8568

最近在學習canopen協議,遇到一些小知識點,查閱後作為補充,記錄在此,方便以後查詢,算是讀書筆記吧。

一、canopen協議中sync功能和使用

在canopen網路中應用sync要注意以下幾點:

1.sync並不是主節點必須的功能,不一定要和nmt放在同一節點上,實際網路應用中可以在網路中找乙個任務較少、實時性好的節點來作為sync生產者,sync消費者可以有多個,但是生產者同時只能有乙個存在。

2.sync是不帶資料的,以使報文盡可能短,目的是為了加快其傳輸,減少網路占用。

二、canopen協議pdo的幾種傳輸方式

由於pdo所傳輸的資料內容是無協議的且分配的識別符號範圍較sdo靠前,因此,其效率和優先順序都是較高的,通常用於實時過程資料的傳輸.

pdo是生產/消費型別的通訊方式,資料只有乙個生產者(傳送),但是消費者(接收)可以有多個,生產者和消費者事先都已知道資料的型別和內容(通過設定pdo對映來管理).

對pdo通訊引數的設定可以實現四種通訊方式:

2.遠端請求.在需要網路上某個節點的資料的時候,我發乙個遠端資料請求過去,對方在接收到請求後,把我要的資料給發過來,這種方式是在我需要的時候去主動獲取.

3.定時傳送.這個有別於sync,它是在本節點實現週期傳送,通過設定pdo引數,定乙個週期,每隔固定的時間向網路上傳送一次pdo,它與sync無關,在網路設計中主要按照感測器的資料採集速度和資料更新要求來設定定時週期.

4.事件觸發.當節點的某個時間發生觸發的一次資料傳送,例如當某個接著報警開關的開關量採集節點的報警狀態發生變化時,觸發一次pdo將報警狀態傳送到網路上,使系統能夠及時獲得該報警狀態資訊.該方式是實時性最好的一種傳輸方式,特別適合系統執行出錯報警和重大事件的及時處理上.

上面的幾種傳輸方式各有所長,在canopen網路的設計中,按照不同的應用靈活配合使用才能構建乙個優秀的解決方案.

三、sdo服務

sdo是服務資料物件介面(service data obiect)的縮寫,顧名思義提供服務資料的訪問介面,服務資料就是一些實時性要求不高的資料,一般是指節點配置引數,因此,sdo一般用來配置和獲得節點的配置引數。其優先順序只比心跳(heartbeat)高。

sdo既然稱之為服務,那就要有服務的提供者和使用者,提供者就是sdo server,使用者就是sdo client,在canopen網路中每個節點都要有乙個sdo server,因為每個節點的物件字典大部分物件都是通過sdo來訪問的,物件字典的被訪問,提供所請求的服務當然要有個sdo server。

四、怎樣實現sdo服務

sdo是canopen協議中最複雜的一部分,帶有應答機制,有多種傳輸方式,並且完整的sdo功能節點需提供1個sdo server和多個sdo client,因此sdo的實現異常困難,協議多種傳輸方式的解析處理還有跡可循,多個sdo client服務和多個對sdo server的訪問的協調就不容易了,這裡介紹一種方法——sdo執行緒來解決。

sdo執行緒參數列可以說是sdo執行緒的核心,所有sdo執行緒的建立、刪除和sdo通訊都要涉及到這個參數列。參數列內容包括能夠描述乙個sdo訪問過程的所有引數,這裡不詳述。

一次sdo訪問是這樣完成的。首先sdo發起節點(sdo client)收集足夠的資訊,建立乙個sdo執行緒,說白了就是初始化sdo執行緒參數列,將收集的資訊以特定格式放入參數列,形成一幀sdo請求,傳送出去。sdo服務節點(sdo server)收到這幀請求,為它建立乙個sdo執行緒,將這幀請求分析分解以獲得足夠資訊來初始化這個sdo執行緒對應的參數列,然後程式就會按照參數列的描述去執行server的功能收集資料來滿足這個sdo請求,然後將收集到的資料形成sdo應答幀返回給sdo client,如果此次請求結束則釋放該執行緒,否則等待下一幀請求到來;sdo client在收到應答後判斷該請求是否還有後續請求,無則釋放此sdo執行緒。如果在這個過程中,sdo server 和sdo client所在節點有收到其他節點的sdo請求或需要通過sdo請求其它節點,則新建sdo執行緒來實現,跟上面的步驟一樣,這樣就可以實現多個sdo server和sdo client服務都得到實現而互不干擾,相當於雙向多線鐵路,可比單線爽多了。

該方法已在微控制器下實現,效果還不錯。

CANOpen學習筆記(一)

canopen官方介紹 學習canopen協議主要需要了解五大部分 物件字典,pdo,sdo,nmt,特殊協議。同時需要了解cob id的概念 在sdo和pdo中cob id前四位代表功能碼,後7位是node id.功能碼例如 600h表示問,580h表示答 物件字典是乙個描述了節點所有引數的有序列...

CANopen匯流排協議基礎入門

學習組網的你,肯定不能不了解匯流排協議。那麼今天我們介紹的則是canopen匯流排協議。這個協議在多種裝置中都有所體現。那麼具體的內容請接著瀏覽文章吧。canopen匯流排協議包括通訊子協議 communication profile 和各種裝置子協議 device profile 通訊子協議描述物...

CANopen的相關學習

由於can匯流排只定義了物理層和資料鏈路層,並沒有定義應用層,因此需要canopen通訊協議來統一度量,把各種裝置標準化。canopen 實現了osi模型中的網路層以上 包括網路層 的協定。標準的 canopen 頁框 canopen 將 canbus 的 11 位元 id 稱為通訊物件 id co...