0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CANopen的起源,CANopen從何而來(lái)?

倩倩 ? 來(lái)源:伺服與運(yùn)動(dòng)控制 ? 作者:伺服與運(yùn)動(dòng)控制 ? 2022-09-09 14:25 ? 次閱讀

1. CANopen的起源,CANopen從何而來(lái)?

德國(guó)Bosch公司于1983年研發(fā)CAN協(xié)議,用于汽車傳動(dòng)系統(tǒng)的網(wǎng)絡(luò)通訊。之后稱為國(guó)際標(biāo)準(zhǔn)ISO11898,目前CANopen由非營(yíng)利組織CiA(CAN in Automaion)進(jìn)行標(biāo)準(zhǔn)的起草及審核工作,基本的 CANopen 設(shè)備及通訊子協(xié)定定義在 CAN in Automation (CiA) draft standard 301. 中。針對(duì)個(gè)別設(shè)備的子協(xié)定以 CiA 301 為基礎(chǔ)再進(jìn)行擴(kuò)充,如針對(duì) I/O 模組的 CiA401 及針對(duì)運(yùn)動(dòng)控制的 CiA402。

2. CANopen硬件的優(yōu)勢(shì)?

CAN協(xié)議最大的突出特點(diǎn)是錯(cuò)誤檢測(cè),限制和處理。當(dāng)CAN設(shè)備檢測(cè)到總線錯(cuò)誤時(shí),會(huì)拒絕之前接收到的位序列,然后發(fā)送“錯(cuò)誤幀”,其完全由CAN芯片本身處理,不需要人為編程。

支持多主站,類似Profibus DP,總線上每個(gè)設(shè)備都是主站,也是從站,免除了人為仲裁的過程,方便用戶開發(fā)。

報(bào)文短幀結(jié)構(gòu),CAN報(bào)文通常只有8個(gè)字節(jié),數(shù)據(jù)幀非常短,在抗干擾能力上具有先天的優(yōu)勢(shì)。解釋一下,為什么短幀結(jié)構(gòu)抗干擾好?如果通訊報(bào)文長(zhǎng),發(fā)送一幀耗時(shí)也就長(zhǎng),假如遇到干擾,辛辛苦苦好不容發(fā)送了一條報(bào)文,結(jié)果因?yàn)楦蓴_對(duì)方還沒有收到,只能嚎啕大哭。

成本低廉,CAN外設(shè)基本在現(xiàn)在主流芯片上都可以找到,20幾塊錢的MCU都支持CAN外設(shè),有的還支持兩個(gè)CAN。這里有CiA的積極推廣作用。

3. CANopen軟件優(yōu)勢(shì)?

CANopen主要有CiA在推廣,是非盈利組織,CANopen協(xié)議資料,網(wǎng)上一堆,任何人都可以下載到,我們常用的DS301(Draft Standand),DS402,CAN粉絲幾乎人手一本,猶如葵花寶典,一定要珍藏一本。

CANopen協(xié)議開發(fā),開源項(xiàng)目非常多,CanFestival就是其中一個(gè),我做過移植,在步科MT4414TE-CAN觸摸屏,用在8位單片機(jī)上,此源碼有點(diǎn)耗費(fèi)資源,網(wǎng)上有很多基于MCU的精簡(jiǎn)源碼。

開發(fā)完整的CANopen協(xié)議棧,是很艱辛的工作,想要做好非常難。難點(diǎn)就在于你對(duì)CANopen協(xié)議的理解上,比如EMCY,復(fù)位節(jié)點(diǎn),是否需要“NO Initialization”,heartbeat,Node guard是否需要?如何處理?這條不能算是其優(yōu)點(diǎn)。

4. 為什么如此多公司在推廣CANopen?

CANopen對(duì)于運(yùn)動(dòng)控制來(lái)說(shuō)是一款優(yōu)秀的通訊協(xié)議,采用了面向?qū)ο蟮囊恍┰O(shè)計(jì)思路,比如對(duì)象字典,過程數(shù)據(jù)對(duì)象(PDO),服務(wù)數(shù)據(jù)對(duì)象(SDO)等等。

CANopen在歐洲已成為最普通的協(xié)議,任何一家自動(dòng)化公司都有CANopen的通訊接口,也成了低配。低配并不代表不好,只是說(shuō)明其性價(jià)比更高。CANopen定義了完整的同步控制機(jī)制,使其成為主流的運(yùn)動(dòng)控制協(xié)議,除了在CAN總線上運(yùn)行外,還被搬到了以太網(wǎng)上(CANopen over Ethernet),形成了著名的PowerLink,EtherCat工業(yè)以太網(wǎng)協(xié)議。

在這里多廢話幾句,所謂的運(yùn)動(dòng)控制總線標(biāo)準(zhǔn),沒有多大意義,因?yàn)檫\(yùn)動(dòng)控制技術(shù)都掌握在各個(gè)廠商手里,每一個(gè)稍微大一點(diǎn)的廠商,都有自己的專用運(yùn)動(dòng)控制協(xié)議,如三菱的SSCNET,安川的MECHATROLINK,倍福的CANOPEN以及EtherCat,施耐德的CANopen,西門子SiMotion,貝加萊的PowerLink,博世力士樂的SERCOS。

由于CANopen(可以看DS402,伺服控制標(biāo)準(zhǔn))在運(yùn)動(dòng)控制的優(yōu)勢(shì),尤其是同步控制,不管幾流的廠商,在運(yùn)動(dòng)控制系統(tǒng)中,多多少少都加入了自己的東西,導(dǎo)致運(yùn)動(dòng)控制系統(tǒng)通常是封閉的,很少走互聯(lián)路線,事實(shí)上要做到互聯(lián)也非常困難。

二三流廠家,開發(fā)自己的CANopen協(xié)議,根據(jù)自己的需求,將其移至到不同的物理層上去運(yùn)行,形成自己的運(yùn)動(dòng)控制系統(tǒng),其性能優(yōu)劣就在于其對(duì)CANopen協(xié)議的理解程度了。

基礎(chǔ):CANopen世界里的九個(gè)晦澀概念

1. DCF

是CAN網(wǎng)絡(luò)的配置(Config)的數(shù)據(jù)存檔文件。其作用不大,在Codesys軟件里就有此選項(xiàng)。

2. EDS

電子數(shù)據(jù)表格,是描述一臺(tái)從站設(shè)備的屬性,參數(shù)的文件,是對(duì)從站設(shè)備對(duì)象字典的描述。比如一臺(tái)伺服驅(qū)動(dòng)器,如果其內(nèi)部參數(shù)(每個(gè)參數(shù)對(duì)應(yīng)對(duì)象字典中的一個(gè)位置,由index,sub-index決定)沒有更改,其對(duì)應(yīng)的EDS文件就不會(huì)更改。多說(shuō)一句,不是所有的主控制器都需要使用EDS,比如Beckhoff就不需要,他需要你對(duì)CANopen DS301,DS402足夠熟悉,人工對(duì)齊配置;步科FD,JD伺服按照DS402標(biāo)準(zhǔn)制定EDS文件,用戶可直接配置,降低開發(fā)周期。

3. 復(fù)位節(jié)點(diǎn)

當(dāng)設(shè)備遇到異常(如從站斷線后重連,使用M258測(cè)試步科FD伺服),主控會(huì)發(fā)送“復(fù)位節(jié)點(diǎn)”,步科的ED伺服復(fù)位節(jié)點(diǎn),驅(qū)動(dòng)器恢復(fù)出廠值,而且連CAN通訊參數(shù)也恢復(fù)成默認(rèn)值。FD,JD伺服是除了CAN通訊參數(shù)外,其他配置參數(shù)恢復(fù)出廠值。

4. EMCY

緊急報(bào)文,從站如伺服,在斷電后會(huì)發(fā)送一條緊急報(bào)文,告訴主控其狀態(tài),一般伺服斷電后,其電容電量能保證其發(fā)送該條報(bào)文。

5. 心跳,節(jié)點(diǎn)保護(hù)

配置心跳參數(shù),設(shè)置心跳周期,心跳消費(fèi)時(shí)間,這個(gè)消費(fèi)者時(shí)間實(shí)際上是作為一個(gè)超時(shí)參數(shù)。主站收到一個(gè)心跳后,開始計(jì)時(shí),如果在超時(shí)時(shí)間內(nèi)沒有收到下一個(gè)心跳,則認(rèn)為從站離線,并報(bào)告錯(cuò)誤,按照用戶配置的錯(cuò)誤處理方法處理。

網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都可以配置心跳,主站可以監(jiān)聽從站,從站可以監(jiān)聽主站,從站還可以監(jiān)聽從站。這里有一個(gè)生產(chǎn)者、消費(fèi)者的概念,總線上的設(shè)備定義自己是心跳的生產(chǎn)者,還是消費(fèi)者。生產(chǎn)者產(chǎn)生心跳,消費(fèi)者監(jiān)聽心跳,然后在捕捉到異常后做出對(duì)應(yīng)的處理。

個(gè)人認(rèn)為心跳作用不大,假設(shè)某個(gè)設(shè)備斷線,重連后復(fù)位節(jié)點(diǎn),而此設(shè)備剛好是使用了原點(diǎn)功能的伺服呢?斷電上電后,原點(diǎn)位置改變。所以在一些客戶應(yīng)用中,出現(xiàn)此情況,小伙子,你麻利的,趕快斷電重啟吧。

節(jié)點(diǎn)保護(hù),其作用類似心跳,但可以讀取從站設(shè)備的CANopen通訊狀態(tài)(初始化,預(yù)操作,操作中,停止),屬于DS301的范疇。

6. DS301和DS402的區(qū)別

DS301就是一個(gè)通訊協(xié)議棧,DS402是建立在DS301的上層協(xié)議,屬于伺服類的控制協(xié)議,協(xié)議中規(guī)定好每個(gè)對(duì)象字典值得作用,比如0x6040,是控制字。DS402把一個(gè)伺服應(yīng)該具有的功能都定義好了,開發(fā)廠家按照協(xié)議定義即可。

7. 對(duì)象字典

從軟件的角度來(lái)說(shuō),對(duì)象字典本質(zhì)就是一些數(shù)據(jù)結(jié)構(gòu)的集合??梢赃@么理解,把對(duì)象字典看做是一本書,CANopen設(shè)備的行為準(zhǔn)則是要參考這本書的,不管它做什么,只要它的行為要參考對(duì)象字典,就必須先查閱字典,再?zèng)Q定要不要做。比如它什么時(shí)候發(fā)送TPDO,這個(gè)行為是需要查詢對(duì)象字典中對(duì)應(yīng)于TPDO的傳輸類型以及Event timer。還有就是像PDO映射的原理,比如我要發(fā)送的數(shù)據(jù),都是去查詢這本書,看下它那里寫的什么內(nèi)容,然后我在把這部分內(nèi)容以PDO的形式發(fā)送出去。

例如你的程序收到了一筆CAN報(bào)文,由于可以訪問對(duì)象字典的對(duì)象是SDO,首先要判斷它是SDO對(duì)象,那么你的程序就需要按照SDO中指定的索引和子索引去查找對(duì)象字典(一個(gè)排好序的數(shù)據(jù)結(jié)構(gòu)集),找到相應(yīng)的對(duì)象后按照SDO中的指令去操作這個(gè)對(duì)象,例如把一個(gè)值賦給字典中的變量。

8. SDO

這個(gè)很簡(jiǎn)單,就是類似串口的一發(fā)一回模式,主站發(fā)送請(qǐng)求幀,從站回復(fù)應(yīng)答幀。

大家看幾個(gè)例子就明白了。

To write the 1 byte data : 0xFD in the object dictionary of node 5, at index 0x1400, subindex 2, sends :

605 2F 00 14 02 FD 00 00 00

If success, the node 5 responds :

585 60 00 14 02 00 00 00 00

To write the 4 bytes data : 0x60120208 in the object dictionary of node 5, at index 0x1603, subindex 1, sends :

605 23 03 16 01 08 02 12 60

If success, the node 5 responds :

585 60 03 16 01 00 00 00 00

9. PDO

分為TX-PDO,RX-PDO。

9a765512-2fff-11ed-ba43-dac502259ad0.png

9ab0524e-2fff-11ed-ba43-dac502259ad0.png

上圖,這就是PDO的配置過程,0x1402(接收PDO通訊參數(shù)),PDO使用的cob-id,傳輸類型,Inhibit time,EventTimer。

0x1602(映射對(duì)象),上例中映射為Controlword,Target position。

9ad7c6a8-2fff-11ed-ba43-dac502259ad0.png

這里著重講一下Transmission Type,上述是codesys中支持的集中方式:

acyclic sync(數(shù)值為0):同步PDO,同步方式由具體設(shè)備協(xié)議定義

Cyclic sync(數(shù)值為1-240):同步PDO,每個(gè)N個(gè)SYNC周期后,發(fā)送PDO

Sync rtr(數(shù)值253):同步PDO,收到遠(yuǎn)程幀請(qǐng)求后發(fā)送PDO

Async(數(shù)值253):異步PDO,收到遠(yuǎn)程幀后發(fā)送PDO

最后兩個(gè)Async(254,255),都是設(shè)備廠家定義的,也是大家最常用的,當(dāng)事件發(fā)生時(shí)發(fā)送。各個(gè)廠家在這里基本都是使用數(shù)據(jù)變化時(shí)發(fā)送方式,F(xiàn)D,JD伺服兩種方法是一樣的,都是數(shù)據(jù)變化發(fā)送。要注意設(shè)置“禁止時(shí)間”,降低CANOPEN通訊帶寬。

具體案例

主控制器寫target position,mode of operation給伺服,此PDO的cob-id為0x200 node id。傳輸方式為255或者254,禁止時(shí)間為100,也就是10ms。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2669

    瀏覽量

    462565
  • 伺服控制
    +關(guān)注

    關(guān)注

    5

    文章

    148

    瀏覽量

    20424
  • 運(yùn)動(dòng)控制系統(tǒng)

    關(guān)注

    0

    文章

    86

    瀏覽量

    14131

原文標(biāo)題:為什么伺服控制中CANopen通訊這么火?

文章出處:【微信號(hào):旺材伺服與運(yùn)動(dòng)控制,微信公眾號(hào):旺材伺服與運(yùn)動(dòng)控制】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MODBUS TCP 轉(zhuǎn) CANOpen

    產(chǎn)品概述 SG-TCP-COE-210 網(wǎng)關(guān)可以實(shí)現(xiàn)將 CANOpen 接口設(shè)備連接到 MODBUS TCP 網(wǎng)絡(luò)中。用戶不需要了解具體的 CANOpen 和 Modbus TCP 協(xié)議即可實(shí)現(xiàn)
    的頭像 發(fā)表于 09-24 13:59 ?63次閱讀
    MODBUS TCP 轉(zhuǎn) <b class='flag-5'>CANOpen</b>

    DeviceNet轉(zhuǎn)CANopen協(xié)議網(wǎng)關(guān)(DeviceNet轉(zhuǎn)CANopen

    一,設(shè)備主要功能 捷米特JM-DNT-COP網(wǎng)關(guān)實(shí)現(xiàn)DeviceNet總線和CANopen網(wǎng)絡(luò)連接起來(lái)。本網(wǎng)關(guān)連接到DeviceNet總線中作為從站使用,連接到CANopen總線中作為主站
    的頭像 發(fā)表于 09-10 10:16 ?161次閱讀
    DeviceNet轉(zhuǎn)<b class='flag-5'>CANopen</b>協(xié)議網(wǎng)關(guān)(DeviceNet轉(zhuǎn)<b class='flag-5'>CANopen</b>)

    人工智能從何而來(lái)

    當(dāng)大家都在討論人工智能的時(shí)候,有一個(gè)問題似乎很少有人關(guān)注,即:人工智能從何而來(lái)?
    的頭像 發(fā)表于 09-06 09:27 ?422次閱讀

    CANopen以太網(wǎng)網(wǎng)關(guān)怎么用?

    CANopen以太網(wǎng)網(wǎng)關(guān)怎么用? CANopen以太網(wǎng)網(wǎng)關(guān)是一種連接CANopen總線和以太網(wǎng)的設(shè)備,它提供了在CANopen網(wǎng)絡(luò)和以太網(wǎng)之間傳輸數(shù)據(jù)的功能。本文將詳細(xì)介紹
    的頭像 發(fā)表于 02-02 16:59 ?3053次閱讀

    EtherCAT轉(zhuǎn)CANopen網(wǎng)關(guān)在工業(yè)領(lǐng)域的應(yīng)用方法

    在工業(yè)領(lǐng)域中,EtherCAT轉(zhuǎn)CANopen網(wǎng)關(guān)是一種重要的通訊設(shè)備,它能夠?qū)崿F(xiàn)EtherCAT協(xié)議與CANopen協(xié)議之間的轉(zhuǎn)換,從而讓不同的設(shè)備之間能夠進(jìn)行通訊。 以下是EtherCAT轉(zhuǎn)
    發(fā)表于 01-31 14:54

    Profinet協(xié)議轉(zhuǎn)換為CanOpen協(xié)議來(lái)連接CanOpen伺服驅(qū)動(dòng)器的應(yīng)用

    在自動(dòng)化控制領(lǐng)域,Profinet和CanOpen都是廣泛應(yīng)用的通信協(xié)議。Profinet是一種基于以太網(wǎng)的通信協(xié)議,主要用于工業(yè)自動(dòng)化領(lǐng)域的數(shù)據(jù)傳輸和遠(yuǎn)程監(jiān)控;而CanOpen是一種用于控制器
    發(fā)表于 01-10 10:29

    智能樓宇系統(tǒng)canopen協(xié)議與ModbusTCP協(xié)議進(jìn)行通訊

    通過CANopen轉(zhuǎn)ModbusTCP網(wǎng)關(guān)設(shè)備進(jìn)行轉(zhuǎn)換:可以使用一個(gè)CANopen轉(zhuǎn)ModbusTCP網(wǎng)關(guān)設(shè)備,將CANopen協(xié)議轉(zhuǎn)換為Modbus TCP協(xié)議。該CANopen轉(zhuǎn)
    的頭像 發(fā)表于 01-03 15:20 ?394次閱讀
    智能樓宇系統(tǒng)<b class='flag-5'>canopen</b>協(xié)議與ModbusTCP協(xié)議進(jìn)行通訊

    通過CANopen轉(zhuǎn)Modbus TCP網(wǎng)關(guān)的伺服系統(tǒng)

    通過CANopen轉(zhuǎn)Modbus TCP網(wǎng)關(guān)的伺服系統(tǒng),我們能夠?qū)崿F(xiàn)CANopen協(xié)議與Modbus TCP協(xié)議之間的無(wú)縫轉(zhuǎn)換,從而為伺服電機(jī)的通訊和控制帶來(lái)更大的便利和靈活性。 首先我們可以通過
    發(fā)表于 01-02 16:51

    ModbusTCP轉(zhuǎn)CANopen網(wǎng)關(guān)在樓宇消防中的應(yīng)用

    Modbus TCP轉(zhuǎn)CANopen網(wǎng)關(guān)在樓宇消防中的應(yīng)用主要是實(shí)現(xiàn)Modbus TCP協(xié)議的消防設(shè)備與CANopen協(xié)議的樓宇自動(dòng)化系統(tǒng)之間的通信轉(zhuǎn)換。在樓宇消防系統(tǒng)中,消防設(shè)備的通信協(xié)議通常采用
    發(fā)表于 12-25 16:29

    耐用通信Ethercat轉(zhuǎn)canopen網(wǎng)關(guān)在鋼鐵行業(yè)的應(yīng)用案例

    ——將用戶canopen設(shè)備接入國(guó)產(chǎn) PLC 控制系統(tǒng) 關(guān)鍵詞:Ethercat轉(zhuǎn)canopen Ethercat PLC Canopen臺(tái)達(dá)伺服 ? 現(xiàn)場(chǎng)應(yīng)用Ethercat轉(zhuǎn)canopen
    的頭像 發(fā)表于 12-25 10:19 ?395次閱讀
    耐用通信Ethercat轉(zhuǎn)<b class='flag-5'>canopen</b>網(wǎng)關(guān)在鋼鐵行業(yè)的應(yīng)用案例

    工業(yè)通訊中CANOPEN轉(zhuǎn)EtherCAT的轉(zhuǎn)換

    CANOPEN轉(zhuǎn)EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)是一款能夠?qū)?b class='flag-5'>CANOPEN接口設(shè)備連接到EtherCAT網(wǎng)絡(luò)系統(tǒng)的產(chǎn)品。該網(wǎng)關(guān)作為EtherCAT網(wǎng)絡(luò)的從站,可以將CANOPEN設(shè)備集成到EtherCAT控制系統(tǒng)中,實(shí)現(xiàn)EtherC
    的頭像 發(fā)表于 12-12 11:33 ?349次閱讀
    工業(yè)通訊中<b class='flag-5'>CANOPEN</b>轉(zhuǎn)EtherCAT的轉(zhuǎn)換

    工業(yè)通訊中CANOPEN轉(zhuǎn)EtherCAT的轉(zhuǎn)換

    CANOPEN轉(zhuǎn)EtherCAT協(xié)議轉(zhuǎn)換網(wǎng)關(guān)是一款能夠?qū)?b class='flag-5'>CANOPEN接口設(shè)備連接到EtherCAT網(wǎng)絡(luò)系統(tǒng)的產(chǎn)品。該網(wǎng)關(guān)作為EtherCAT網(wǎng)絡(luò)的從站,可以將CANOPEN設(shè)備集成到
    發(fā)表于 12-12 11:31

    ModbusTCP轉(zhuǎn)CanOpen網(wǎng)關(guān)助力工控行業(yè)

    在工業(yè)自動(dòng)化領(lǐng)域,協(xié)議轉(zhuǎn)換網(wǎng)關(guān)一直扮演著至關(guān)重要的角色。其中,modbustcp轉(zhuǎn)canopen網(wǎng)關(guān)以其獨(dú)特的優(yōu)勢(shì),成為不同設(shè)備間通信的橋梁。這款網(wǎng)關(guān)將modbus TCP協(xié)議的設(shè)備與CANopen
    發(fā)表于 12-11 10:53

    高速DAC相位噪聲從何而來(lái)?首要的原因原來(lái)是它……

    高速DAC相位噪聲從何而來(lái)?首要的原因原來(lái)是它……
    的頭像 發(fā)表于 11-29 16:56 ?345次閱讀
    高速DAC相位噪聲<b class='flag-5'>從何而來(lái)</b>?首要的原因原來(lái)是它……

    串口轉(zhuǎn)CANopen模塊適合哪些項(xiàng)目用?

    串口轉(zhuǎn)CANopen模塊適用于需要在串口通信和CANopen總線之間進(jìn)行數(shù)據(jù)轉(zhuǎn)換和通信的項(xiàng)目。以下是一些適合使用串口轉(zhuǎn)CANopen模塊的項(xiàng)目示例: (1)工業(yè)自動(dòng)化系統(tǒng):在工業(yè)自動(dòng)化領(lǐng)域,許多設(shè)備
    的頭像 發(fā)表于 11-21 08:10 ?627次閱讀
    串口轉(zhuǎn)<b class='flag-5'>CANopen</b>模塊適合哪些項(xiàng)目用?