加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

簡單實用的CANopen介紹

2023/08/18
9501
服務支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 1.什么是CANopen?
    • 2.1 CANopen框架
    • 2.2 CANopen通信協(xié)議/服務
    • 2.5 PDO——操作CANopen網(wǎng)絡
    • 2.6 虹科CANopen解決方案
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

目前,CANopen通訊協(xié)議已經(jīng)在工業(yè)領域得到了廣泛的使用,由于其面向?qū)ο蟮脑O計思路,CANopen協(xié)議已成為歐洲等國家的自動化公司標配的通訊接口之一。在本系列文章中,我們將介紹CANopen協(xié)議的基礎內(nèi)容,包括對象字典、服務、SDO、PDO和主/從站節(jié)點等。如需購買CANopen相關(guān)產(chǎn)品或需要CANopen培訓服務,請發(fā)郵件到support@hkaco.com聯(lián)系虹科工業(yè)控制團隊?!

1.什么是CANopen?

CANopen是一種基于CAN的通信協(xié)議。這項協(xié)議非常有用,因為它可以讓設備、節(jié)點(如工業(yè)機械)之間具有現(xiàn)成的互操作性,并且提供了安裝前和安裝后配置設備的標準方法。CANopen最初是為面向運動的機器控制系統(tǒng)設計的,如今,它被廣泛用于電機控制(步進/伺服電機)領域,并在以下應用中得到廣泛使用:

  • 機器人技術(shù)(包括自動化機器人、傳送帶和其他工業(yè)機械)
  • 醫(yī)療(包括X射線發(fā)生器、注射器、病人床和透析設備)
  • 汽車(包括農(nóng)業(yè)、鐵路、拖車、重型、船舶等)

CANopen是一個基于CAN總線的“高層協(xié)議”,這意味著CAN總線(ISO 11898)就像集裝箱的卡車一般作為CANopen信息的“運輸工具”。在OSI模型中, CAN總線代表兩個最低層(物理層數(shù)據(jù)鏈路層)。這意味著,CAN只是實現(xiàn)了帶有11位CAN ID、遠程傳輸(RTR)位和64個數(shù)據(jù)位(與更高層的協(xié)議相關(guān))的字段的幀的傳輸。換言之,CAN總線在CANopen中的作用與在J1939協(xié)議相同。而CANopen則實現(xiàn)了OSI模型的第七層,并能夠適應除CAN以外的其他數(shù)據(jù)鏈路層協(xié)議(例如EtherCAT、Modbus、Powerlink)。

值得關(guān)注的是,隨著CAN FD的推出,CANopen FD作為下一代CANopen標準,可能會發(fā)揮著越來越重要的作用。具體細節(jié),歡迎到CiA官網(wǎng)中查看。

相較于CAN總線和J1939協(xié)議,CANopen協(xié)議新增了6個核心概念:

  • 通信模式。設備/節(jié)點的通信有3種模式: 主/從站、客戶端/服務器和生產(chǎn)者/消費者。
  • 通信協(xié)議。用于通信的協(xié)議,如配置節(jié)點(SDO)或傳輸實時數(shù)據(jù)(PDO)等。
  • 設備狀態(tài)。一個設備支持不同的狀態(tài),一個 "主站 "節(jié)點可以改變一個 "從站 "節(jié)點,包括重置等操作。
  • 對象字典。每個設備都有一個OD,其中有指定設備配置等的條目,它可以通過SDO訪問。
  • 電子數(shù)據(jù)表。EDS是OD條目的標準文件格式,它允許使用服務工具來更新設備。
  • 設備設置文件。描述了I/O模塊(CiA 401)和運動控制(CiA 402)等供應商獨立性

2.CANopen通信基礎知識

在CANopen網(wǎng)絡中,需要多個設備進行通信,例如,在工業(yè)自動化設置中,你可能有一個帶有多個伺服電機節(jié)點和一個控制接口/PC節(jié)點的機械臂。CANopen中存在著三種通信模式,每種模式都與我們所討論的CANopen協(xié)議緊密相連。下面將簡單介紹這三種模式:

第一, 主/從站。一個節(jié)點(例如控制接口)作為應用主站或主控制器。它向從站設備(例如伺服電機)請求數(shù)據(jù)。這個過程被用于診斷或狀態(tài)管理。在標準應用中,可以有0到127個從站。但需要注意,請注意:在單個CANopen網(wǎng)絡中,可以有不同的主機控制器共享同一個數(shù)據(jù)鏈路層。

第二, 客戶端/服務器??蛻舳讼蚍掌靼l(fā)送數(shù)據(jù)請求,服務器回復請求的數(shù)據(jù)。例如,當應用程序主站需要從站的OD中獲取數(shù)據(jù)時使用這一模式。從服務器上讀取是一種 "上傳",而“寫入”是一種 "下載"(該術(shù)語采用服務器端的角度)。
第三, 消費者/生產(chǎn)者。該模式中生產(chǎn)者節(jié)點向網(wǎng)絡廣播數(shù)據(jù),由消費者節(jié)點消費。生產(chǎn)者根據(jù)請求(拉模型)或沒有特定請求(推模型)發(fā)送此數(shù)據(jù)。

顯然,這些模型實際上是相同的,但為了術(shù)語的一致性,我們對它們進行了區(qū)分。

2.1 CANopen框架

為了理解CANopen通信,有必要對CANopen的CAN報文進行分解。如下圖,11位的CAN ID被稱為通信對象標識符(COB-ID),它被分成兩部分。前4位相當于功能代碼,接下來的7位包含節(jié)點ID。

為了理解COB-ID的工作原理,需要從簡單的CANopen網(wǎng)絡中如何使用標識符的預定義分配開始。

如上圖,COB-ID(381、581等)與通信服務(傳輸PDO 3、傳輸SDO等)相關(guān)聯(lián),因此,COB-ID詳細說明了哪個節(jié)點正在發(fā)送/接收數(shù)據(jù),以及使用了什么服務。如下圖的例子,一個節(jié)點ID為5的CANopen設備將通過11位的CAN ID 585傳輸SDO,這對應于二進制功能代碼1011,節(jié)點ID 5(在二進制中為0000101)。

2.2 CANopen通信協(xié)議/服務

接下來,我們將簡要介紹CANopen的7種服務類型,以及它們?nèi)绾卫?個CAN幀數(shù)據(jù)字節(jié)。

2.2.1 網(wǎng)絡管理(NMT)

NMT服務用于通過NMT命令(如:啟動、停止、復位)來控制CANopen設備的狀態(tài)(如:預運行、運行、停止)。
為了改變狀態(tài),NMT主機發(fā)送一個帶有 CAN ID 0的2字節(jié)消息(即功能代碼0和節(jié)點ID 0)。所有從站節(jié)點都處理這個報文。第一個CAN數(shù)據(jù)字節(jié)包含請求的狀態(tài),而第二個CAN數(shù)據(jù)字節(jié)包含目標節(jié)點的節(jié)點ID。節(jié)點ID 0表示廣播命令。

可能的命令包括轉(zhuǎn)換到運行(狀態(tài)01)、停止(狀態(tài)02)、預運行(狀態(tài)80)以及重置應用程序(81)和重置通信(82)。例如:將節(jié)點0x06設置為運行模式: 000 01 06

2.2.2 同步(SYNC)

SYNC報文用于同步幾個CANopen設備的輸入和響應--通常由應用主站觸發(fā)。應用主機將SYNC消息(COB-ID 080)發(fā)送到CANopen網(wǎng)絡(帶或不帶SYNC計數(shù)器)。多個從節(jié)點可以配置為對SYNC做出反應,并通過傳輸同時捕獲的輸入數(shù)據(jù)或通過與參與同步操作的節(jié)點同時設置輸出來響應。使用SYNC計數(shù)器可以配置幾組同步操作的設備。

2.2.3 緊急情況 (EMCY)

緊急服務用于設備出現(xiàn)致命錯誤(如傳感器故障)時,允許它向網(wǎng)絡的其他部分指示這一點。受影響的節(jié)點以高優(yōu)先級向網(wǎng)絡發(fā)送單個EMCY消息(例如,節(jié)點5的COB-ID 085)。數(shù)據(jù)字節(jié)包含有關(guān)錯誤的信息,可以查找詳細信息。

2.2.4 時間戳(TIME) [PDO]

通過這種通信服務,可以分配全球網(wǎng)絡時間。時間服務包含一個6字節(jié)的日期和時間信息。應用主機發(fā)送 CAN ID 為100的TIME消息,其中最初的4個數(shù)據(jù)字節(jié)包含以毫秒為單位的午夜之后的時間,接下來的2個字節(jié)包含自1984年1月1日以來的天數(shù)。

2.2.5 過程數(shù)據(jù)對象 [PDO]

PDO服務用于在設備之間傳輸實時數(shù)據(jù),例如位置等測量數(shù)據(jù)或扭矩請求等命令數(shù)據(jù)。在這方面,它類似于J1939中的廣播數(shù)據(jù)參數(shù)。關(guān)于PDO服務,我們將在下文中進行詳細介紹。

2.2.6 服務數(shù)據(jù)對象 [SDO]

SDO服務用于訪問/改變CANopen設備的對象字典中的值。例如,當應用主站需要改變CANopen設備的某些配置時,可以通過SDO服務來實現(xiàn)。

2.2.7 節(jié)點監(jiān)控(心跳)[SDO]

心跳服務有兩個目的:提供一個“活動”的消息和確認NMT命令。NMT從設備周期性地(例如每100毫秒)發(fā)送心跳消息(例如節(jié)點5的CAN ID為705),在第一個數(shù)據(jù)字節(jié)中包含節(jié)點的“狀態(tài)”。如果在特定時間限制內(nèi)沒有收到任何消息,心跳消息的“消費者”(例如 NMT 主設備和可選的任何其他設備)就會做出反應。例如:節(jié)點5處于預運行模式,周期性發(fā)送:705 7F

2.3 對象字典

在7個CANopen服務中,PDO和SDO服務特別重要,因為它們構(gòu)成了大多數(shù)CANopen通信的基礎。下面我們將進行詳細介紹,但在此之前我們需要了解CANopen的一個核心概念:對象字典。

所有的CANopen節(jié)點必須有一個對象字典(OD),對象字典是一個標準化結(jié)構(gòu),包含描述CANopen節(jié)點行為的所有參數(shù)。

OD條目通過一個16位的索引和8位的子索引進行查詢。例如,符合CANopen標準的節(jié)點OD的索引1008(子索引0)包含節(jié)點設備名稱。

具體來說,對象字典中的條目由屬性定義的:

  • 索引:對象的16位地址
  • 對象名稱:制造商的設備名稱
  • 對象代碼:數(shù)組、變量或記錄
  • 數(shù)據(jù)類型:例如VISIBLE_STRING、UNSIGNED32或記錄名稱
  • 訪問: “rw”(讀/寫),“ro”(只讀)或 “wo”(只寫)
  • 類別:這表明參數(shù)是強制性的還是可選的

OD標準化部分

在對象字典被分成標準化的部分中,有一些條目是強制性的,而另一些是完全可定制的。重要的是,一個設備(例如一個從站設備)的OD條目可以被另一個設備(例如一個主設備)通過CAN訪問,例如使用SDO。
這可以讓主站改變從站節(jié)點是否通過特定的輸入傳感器記錄數(shù)據(jù),或改變從站發(fā)送心跳的頻率。閱讀電子數(shù)據(jù)表和設備配置文件可以幫助理解OD。

電子數(shù)據(jù)表(EDS)

在實踐中,配置/管理復雜的CANopen網(wǎng)絡將會用到一些合適的軟件工具。為了簡化這一點,CiA 306標準定義了一種人類可讀且和機器友好的INI文件格式,作為設備OD的“模板”--例如 “ServoMotor3000”。此EDS通常由供應商提供,包含所有設備對象(但不包括值)的信息。

設備配置文件(DCF)

假設一家工廠購買了一臺ServoMotor3000,以整合到他們的傳送帶上。在操作過程中,操作員編輯了設備的EDS,并在EDS中添加了特定的參數(shù)值或改變了每個對象的描述名稱。這樣一來,操作者就有效地創(chuàng)建了所謂的設備配置文件(DCF)。有了這個文件,ServoMotor3000便能夠集成到現(xiàn)場的特定CANopen網(wǎng)絡中。

查看真實的EDS/DCF示例是理解CANopen對象字典的最佳方法之一,在下圖中,您可以留意EDS和DCF對象條目之間的區(qū)別以及DCF如何包含特定的參數(shù)值。

此外,我們建議到官網(wǎng)上查看CiA 306標準,通過實際的例子對OD、EDS和DCF有更深入的了解。

如前文所述,DCF通常在設備集成時創(chuàng)建。然而,經(jīng)常需要在初始配置后讀取或改變一個節(jié)點的對象值——這就是SDO服務的作用所在。

2.4 SDO——配置CANopen網(wǎng)絡

SDO服務允許CANopen節(jié)點通過CAN網(wǎng)絡讀取/編輯另一個節(jié)點的對象字典的值。正如在“通信模型”中提到的,SDO服務使用“客戶端/服務器”模式。具體來說,一個SDO “客戶端”與一個專門的SDO“服務器”發(fā)起通信。其目的可以是更新一個OD條目(稱為“SDO下載”)或讀取一個條目(“SDO上傳”)。在簡單的主/從網(wǎng)絡中,具有NMT主站功能的節(jié)點充當所有NMT從站節(jié)點讀取或?qū)懭肫銸D的客戶端。

示例:客戶端節(jié)點SDO下載

客戶端節(jié)點可以通過在 CAN 幀下方的廣播來啟動到節(jié)點 5 的 SDO 下載 - 這將觸發(fā)節(jié)點 5(并被其他節(jié)點忽略,見上圖)。SDO“接收”(即請求)CAN 幀如下所示:

SDO消息變量解釋

  • 首先,COB-ID 605反映了“SDO接收”的使用(COB-ID 600 +節(jié)點ID)
  • CCS(客戶端命令指定符)是傳輸類型(例如,1:下載,2:上傳)
  • n是字節(jié)區(qū)4-7中不包含的字節(jié)數(shù)(如果e和s被設置為有效)
  • e表示“加速傳輸”,且所有數(shù)據(jù)都在單個CAN幀中(如果有設置)
  • s表示數(shù)據(jù)大小顯示為n(如果有設置)
  • 索引(16位)和子索引(8位)反映了要訪問的OD地址
  • 最后,節(jié)點5將相應字節(jié)4-7中包含的相關(guān)數(shù)據(jù)

一旦主站節(jié)點(客戶端)發(fā)送CAN幀,從站節(jié)點5(服務器)通過COB-ID 585的“SDO傳輸”進行響應。響應包含索引/子索引和4個空數(shù)據(jù)字節(jié)。自然,如果客戶端節(jié)點請求上傳(即從節(jié)點5OD讀取數(shù)據(jù)),節(jié)點5將響應字節(jié)4-7中包含的相關(guān)數(shù)據(jù)。此外,對于更大的數(shù)據(jù)場景,可以使用SDO分段/塊進行傳輸。

一般來說,SDO很靈活,但也會帶來較高的成本,這使得SDO不太適合實時操作數(shù)據(jù)。這就是PDO的用武之地。

2.5 PDO——操作CANopen網(wǎng)絡

CANopen的PDO服務用于在CANopen節(jié)點之間有效地共享實時操作數(shù)據(jù)。例如,PDO將攜帶來自壓力傳感器的壓力數(shù)據(jù)或來自溫度傳感器的溫度數(shù)據(jù)。原則上,SDO服務也能實現(xiàn)共享實時操作數(shù)據(jù),但由于單個SDO響應只能攜帶4個數(shù)據(jù)字節(jié),出于成本原因,我們不建議這么做。

此外,假設一個主站節(jié)點需要來自節(jié)點5的兩個參數(shù)值(例如“SensTemp2”和“Torque5”)。如果通過SDO來實現(xiàn),需要4個完整的CAN幀(2個請求和2個響應)。相比之下,一個PDO消息可以包含8個完整的數(shù)據(jù)字節(jié),而且它可以在一個幀內(nèi)包含多個對象參數(shù)值。因此,在SDO服務中至少需要4個報文,而在PDO服務中則可能只需要1個報文就可以完成。

PDO通常被看作是最重要的CANopen協(xié)議,因為它承載了大量的信息。下面我們將介紹CANopen的PDO服務是如何工作的。

PDO服務使用的是“消費者/生產(chǎn)者”模型。因此,生產(chǎn)者 "生產(chǎn)數(shù)據(jù)",它使用發(fā)送PDO(TPDO)將其傳送給“消費者”(主站)。反之,它可以通過“接收PDO”(RPDO)從消費者那里接收數(shù)據(jù)。

例如,生產(chǎn)者節(jié)點可以被配置為對應的同步觸發(fā),例如每隔100ms廣播給消費者。然后,節(jié)點5可以在傳輸帶有COB-ID 185的PDO下廣播:

請注意這里的數(shù)據(jù)字節(jié)是如何裝入3個參數(shù)值的。這些值反映了節(jié)點5的特定OD條目的實時數(shù)據(jù)。使用這些信息的節(jié)點(消費者)需要知道如何解釋PDO數(shù)據(jù)字節(jié)。

在某種程度上,PDO服務有點像J1939 PGN和SPN,這類似于特定J1939 參數(shù)組(PG)如何在 8 個數(shù)據(jù)字節(jié)中包含多個 SPN/信號(也稱為數(shù)據(jù)參數(shù))。J1939 CAN 幀不需要在“解碼”信息上浪費數(shù)據(jù)字節(jié),因為相關(guān)節(jié)點(以及外部工具通過例如J1939 DBC 文件或 J1939 PDF 標準)知道這一點。問題在于,在 CANopen 中,這些“PDO 映射”通常是可配置的,并且可以在創(chuàng)建 DCF 或通過 SDO 服務期間進行更改。

2.6 虹科CANopen解決方案

2.6.1 虹科CANopen數(shù)據(jù)記錄儀——CANedge2

CANopen經(jīng)常被用于倉庫中的電動叉車或自動導引車中,對CANopen數(shù)據(jù)進行監(jiān)測和分析有利于改善管理,比如監(jiān)測充電狀態(tài)有助于減少故障和改善電池壽命,并且工業(yè)機械可以通過云端的物聯(lián)網(wǎng)CAN記錄器進行監(jiān)控,根據(jù)CANopen數(shù)據(jù)預測和避免故障。此外,CAN記錄器可以作為工業(yè)機械的“黑匣子”,提供數(shù)據(jù)用于解決OEM和用戶之間的糾紛,或作為罕見問題診斷的一部分。

2.6.2 虹科CANopen IO模塊

虹科HK-CIO系列是支持CANopen協(xié)議的遠程IO模塊,IO類型包含數(shù)字量,模擬量,高速計數(shù)器,脈沖輸出,PWM,PT100/1000等,緊湊型設計,支持DIN導軌安裝,IO與CANopen通訊之間相互電氣隔離。

2.6.3 虹科CANopen協(xié)議開發(fā)方案

虹科CANopen源代碼實施全功能符合CiA 301標準草案,支持快速且標準地開發(fā)你的CANopen主站或從站設備,包括NMT主站(網(wǎng)絡管理)、LSS主站(層設置服務)或SDO客戶端。

產(chǎn)品及方案

  • CAN卡(USB,PCI,PCIe,MiniPCIe等多種接口類型)
  • 通訊協(xié)議板卡(CO,ECAT,DP,PN,DN,EIP,Modbus,CC,IO-Link等多種協(xié)議)
  • 通訊協(xié)議網(wǎng)關(guān)(CO,ECAT,DP,PN,DN,EIP,Modbus,CC,IO-Link等多種協(xié)議)
  • 通訊協(xié)議IO模塊(CO,ECAT等多種協(xié)議)
  • 通訊協(xié)議嵌入式模塊(CO,ECAT,PN,EIP,Modbus,CC-Link等多種協(xié)議)
  • 通訊協(xié)議協(xié)議棧(CO,IO-Link,ECAT,PN,EIP等多種協(xié)議)
  • “新”以太網(wǎng)開發(fā)方案(TSN IPcore,HSR/PRP IPcore,網(wǎng)管/非網(wǎng)管以太網(wǎng)IPcore,同步IPcore等)
  • “新”以太網(wǎng)硬件解決方案(TSN板卡,TSN交換機,TSN評估套件,HSR/PRP板卡,HSR/PRP交換機)
  • 工控機(涵蓋多種性能、尺寸和安裝方式選擇)
  • 【虹科干貨】簡單實用的CANopen介紹.docx

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
NCP45525IMNTWG-H 1 onsemi Load Switch, Integrated, ecoSWITCH&trade, 6.0 A, DFN8 2x2, 0.5P, 3000-REEL

ECAD模型

下載ECAD模型
$1.24 查看
ADG1419BRMZ 1 Rochester Electronics LLC 1-CHANNEL, SGL POLE DOUBLE THROW SWITCH, PDSO8, ROHS COMPLIANT, MO-187AA, MSOP-8
$4.65 查看
ADG1413YRUZ 1 Rochester Electronics LLC QUAD 1-CHANNEL, SGL POLE SGL THROW SWITCH, PDSO16, ROHS COMPLIANT, MO-153AB, TSSOP-16
$7.19 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

虹科是一家資源整合及技術(shù)服務落地供應商,與全球頂尖公司深度技術(shù)合作,專注于制造業(yè)、汽車、生物、醫(yī)藥、測試與測量、廣播電視與媒體、通信、網(wǎng)絡安全、光電等領域,為客戶提供:智能自動化、工業(yè)物聯(lián)網(wǎng)、智能感知、數(shù)字化+AR、光電、網(wǎng)絡安全、測試測量、衛(wèi)星與無線通信、醫(yī)藥環(huán)境監(jiān)測與驗證、生命科學、汽車電子、汽車維修診斷、云科技等解決方案。虹科始終致力于為行業(yè)客戶提供創(chuàng)新及前端的產(chǎn)品和技術(shù)解決方案,為科技社會發(fā)展助力加碼。