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

CANopen協(xié)議在智嵌物聯(lián)ZQWL采集控制終端產(chǎn)品中的應(yīng)用

智嵌物聯(lián)ZQWL ? 2022-02-18 09:47 ? 次閱讀

一、CAN和CANopen介紹

CAN(Controller Area Network)通訊以其高效率高穩(wěn)定的特性,被廣泛應(yīng)用在汽車電子、工業(yè)自動化以及物聯(lián)網(wǎng)通訊系統(tǒng)中。CANopen是基于CAN的通訊子協(xié)議,是一種為用于產(chǎn)品部件內(nèi)部網(wǎng)絡(luò)通訊而開發(fā)的系統(tǒng)。其子協(xié)議CiA401,規(guī)范了數(shù)字量輸入、數(shù)字量輸出和模擬量采集相關(guān)的使用方法。智嵌物聯(lián)ZQWL研發(fā)的帶有CAN通訊接口的采集控制終端模塊均實現(xiàn)了CANopen CiA401協(xié)議,可以非常方便的接入現(xiàn)有的CAN控制網(wǎng)絡(luò)系統(tǒng),縮短了開發(fā)周期,節(jié)省了開發(fā)費用。本文以智嵌物聯(lián)ZQWL所研發(fā)的產(chǎn)品ZQWL-IO-1DARA8A為例,介紹CANopen如何在智嵌物聯(lián)CAN產(chǎn)品中應(yīng)用的。

先準備好產(chǎn)品1DARA8和USB-CAN調(diào)試器(ZQWL-UCAN-5C111):

pYYBAGIO-kGAQ68VAAqLgkclS50015.png

該模塊支持標準的CANopen(CiA401)協(xié)議,用戶通過簡單配置后可以直接將其接入CANopen通訊網(wǎng)絡(luò)或替代原有的CANopen設(shè)備。模塊主要功能包括:

●1個TPDO,用于傳送開關(guān)量輸入狀態(tài)(DI)。

●1個RPDO,用于接收開關(guān)量輸出狀態(tài)(DO)。

●NMT服務(wù)器功能,處理NMT主機發(fā)來的命令。

SDO功能,配置和讀取CANopen字典。

●DI極性控制、全局中斷控制、單個DI中斷控制以及DI的電平觸發(fā)方式控制(任意變化觸發(fā)、Low to High觸發(fā)或者High to Low觸發(fā))。

●DO極性控制;設(shè)備故障或收到stop命令后的DO狀態(tài)可配置。

●CAN波特率可配置。

●保存整部對象字典到flash和恢復(fù)整部對象字典到出廠值。

CANopen的CiA401設(shè)備子協(xié)議詳細描述了對象字典的定義以及功能,該模塊實現(xiàn)了DI/DO部分,模塊的對象字典如下表:

索引

Index

子索引

Subindex

名稱

name

類型

Type

屬性

Attr.

默認值

default

說明

description

10000設(shè)備類型u32RO0x00030191支持CiA401的DI和DO
10030Errors Registeru8RO0錯誤寄存器
10050Sync COB-IDu32RW0同步報文COB-ID
10060Sync Periodu32RW0同步周期
10080ManufacturerstringROZQWL制造商
10090Hard VersionstringROV3.0硬件版本
100A0Soft VersionstringROV3.0軟件版本
10100Num ofSubindexu8RO1子索引數(shù)目
1Save all ODu32W0x65766173保存整部對象字典;讀時,返回0x00000001
10110Num ofSubindexu8RO1子索引數(shù)目
1Default all ODu32W0x64616F6C恢復(fù)整部對象字典;讀時,返回0x00000001
10140Emnc COB-IDu32RW0x80緊急報文COB-ID
10170Heart beat timeru16RW0x0BB8心跳包周期,單位ms

1018

0Num ofSubindexu8RO4制造商信息
1Manufactureridu32RO-制造商ID
2Product Codeu32RO-產(chǎn)品代碼
3Revision Numberu32RO-修訂號
4Serial Numberu32RO-序列號

1200

0Num ofSubindexu8RO2SDO服務(wù)器信息
1SDO Rx COB-IDu32RO0x0600+Node IDSDO接收COB-ID
2SDO Tx COB-IDu32RO0x0580+Node IDSDO發(fā)送COB-ID

1400

0Num ofSubindexu8RO6RPDO1通訊參數(shù)
1RPDO1 COB-IDu32RORPDO1 COB-ID
2Transmission Typeu8RW0xFF通訊類型
3Inhibit Timeu16RW0抑制時間
4--------保留
5Event Timeru16RW0時間定時器
6SYNC start valueu8RW0同步初始值

1401-

15FF

0

RPDOx禁用

16000Num ofSubindexu8RO1RPDO1映射參數(shù)
1RPDO1 mappingu8RO0x62000108映射地址

1800

0Num ofSubindexu8RO6TPDO1通訊參數(shù)
1TPDO1 COB-IDu32ROTPDO1 COB-ID
2Transmission Typeu8RW0xFF通訊類型
3Inhibit Timeu16RW0抑制時間
4--------保留
5Event Timeru16RW0時間定時器
6SYNC start valueu8RW0同步初始值

1801-

19FF

0

TPDOx禁用

1A000Num ofSubindexu8RO1TPDO1映射參數(shù)
1TPDO1 mappingu8RO0x60000108映射地址

2000

0Num ofSubindexu8RO3設(shè)備唯一序列號
1Serial id1u32RO-序列號1
2Serial id2u32RO-序列號2
3Serial id3u32RO-序列號3
20010Num ofSubindexu8RO1CAN波特率寄存器
1CAN baudu8RW0CAN波特率對應(yīng)表
60000Num ofSubindexu8RO1DI狀態(tài)信息
1DI statusu8RW0x00DI狀態(tài)寄存器
60020Num ofSubindexu8RO1DI極性信息
1DI polarityu8RW0x00DI極性寄存器
60050Num ofSubindexu8RO1DI全局中斷使能
1DI global InterruptboolRWTRUE(1)DI全局中斷使能
60060Num ofSubindexu8RO1DI任意變化中斷使能
1DI any change Interruptu8RW0xFFDI任意變化中斷使能
60070Num ofSubindexu8RO1DI由低到高中斷使能
1DI Low to High Interruptu8RW0x00DI由低到高中斷使能
60070Num ofSubindexu8RO1DI由高到低中斷使能
1DI High to Low Interruptu8RW0x00DI由高到低中斷使能
62000Num ofSubindexu8RO1DO狀態(tài)信息
1DO statusu8RW0x00DO狀態(tài)寄存器
62020Num ofSubindexu8RO1DO極性控制
1DO polarityu8RW0x00DO極性控制
62060Num ofSubindexu8RO1DO錯誤模式使能
1DO error modeu8RW0xFFDO錯誤模式使能
62070Num ofSubindexu8RO1DO錯誤模式狀態(tài)值
1DO error valueu8RW0x00DO錯誤模式狀態(tài)值

注意下文所有的測試條件為:Node ID為1;CAN波特率以及對象字典均為默認值。

二、Boot up和心跳包測試

模塊上電會發(fā)出一個Boot up報文:id為701數(shù)據(jù)為00。

該模塊默認心跳時間為0X0BB8(3000ms)。模塊上電后發(fā)送心跳報文如下(采用我司生產(chǎn)的usb-can調(diào)試器):

pYYBAGIO-kGARFebAA0LJn2n5Cc392.png

注意,上述修改后參數(shù),參數(shù)并未保存到flash中,模塊掉電或復(fù)位后心跳包時間仍然是原來的數(shù)值。如果用戶想保存到flash中,可以利用索引1010,具體操作方法參見下文。

三、NMT命令測試

模塊內(nèi)置NMT服務(wù)器功能,可以根據(jù)NMT指令切換工作狀態(tài),模塊上電初始化成功后自動進入到預(yù)操作模式(PreOperational),這時模塊會發(fā)送數(shù)據(jù)為7f、CAN id為701的心跳報文,如上節(jié)所述。

按照NMT命令規(guī)范,演示如下:

①進入操作模式(Operational)

發(fā)送can id為00,數(shù)據(jù)為01 01的報文:

pYYBAGIO-kGALz9JAAxlHQDpQqY676.png

模塊進入到stop模式,心跳包數(shù)據(jù)變?yōu)?4,如上圖。進入stop模式時,繼電器輸出狀態(tài)可以通過索引6206和6207共同確定,具體可參考下文。

③復(fù)位命令

發(fā)送can id為00,數(shù)據(jù)為81 01的報文:

poYBAGIO-kGARxezAAHEs0Jzwso078.png

模塊復(fù)位,發(fā)一條Boot up報文;心跳包數(shù)據(jù)變?yōu)?f,模塊自動進入預(yù)操作模式(PreOperational),如上圖。

其他模式的切換參考標準CANopen通訊協(xié)議。

四、DO輸出命令測試

模塊通過RPDO1接收數(shù)據(jù),來控制DO的輸出,根據(jù)RPDO1的通訊參數(shù)可知,對端的COB-ID為0x0200+Node ID,即0x0201??梢酝ㄟ^發(fā)can id為0x0201、數(shù)據(jù)長度為1字節(jié)的標準幀來控制DO的狀態(tài),注意模塊只有在操作模式下時該指令有效。其中1字節(jié)的數(shù)據(jù)和繼電器對應(yīng)關(guān)系為:

DO繼電器輸出和數(shù)據(jù)bit對應(yīng)關(guān)系

bit76543210
DODO-8DO-7DO-6DO-5DO-4DO-3DO-2DO-1

例如打開第一個繼電器DO,可以發(fā)送如下數(shù)據(jù):

CAN幀ID:0x0201;

CAN數(shù)據(jù):0x01;

poYBAGIO-kGAUEBzAAdBLPXWSvk128.png

Bit位值的含義:0為正邏輯;0為反邏輯。

索引6202(子索引01)默認值為0x00,全部為正邏輯。用戶可以通過SDO命令修改DO輸出極性對象6202的值,來改變輸出極性,如改成0xff,那么,模塊收到上述數(shù)據(jù)后,將第一路繼電器關(guān)閉,其余路打開。

當(dāng)然也可以用SDO命令讀取對象索引6200,子索引01來獲取DO的狀態(tài)。

五、DI默認參數(shù)測試

模塊通過TPDO1發(fā)送DI開關(guān)量輸入的狀態(tài)。是否觸發(fā)TPDO1的發(fā)送,由以下條件決定:

①TPDO1的通訊參數(shù)配置(索引1800);

②DI全局中斷配置(索引6005,子索引01);

③DI中斷觸發(fā)方式(索引6006/6007/6008);

④模塊當(dāng)前的工作模式;

先看第一個條件,根據(jù)對象字典的默認配置可知,RPDO1的默認通訊參數(shù)為:

TPDO1的COB-ID為0x0180+Node ID(索引1800,子索引01),即0x0181;

TPDO1的通訊類型為0xFF(索引1800,子索引02),即為事件觸發(fā)模式;

TPDO1的抑制時間為0x00(索引1800,子索引03),即不抑制;

TPDO1的事件定時器為0x00(索引1800,子索引05),即不啟用;

所以第一個條件即為開關(guān)量事件觸發(fā)。

再看第二個條件,根據(jù)對象字典的默認配置可知,DI全局中斷為TURE,即打開狀態(tài)。

再看第三個條件,根據(jù)對象字典的默認配置可知,DI中斷觸發(fā)方式中,DI_any_change(索引6006,子索引01)的值為0xFF;Low_to_High(索引6007,子索引01)的值為0x00;How_to_Ligh(索引6008,子索引01)的值為0x00;

再看第四個條件,只有模塊在操作模式下時才能觸發(fā)TPDO1。

由以上配置可知,在操作模式下,DI有任意變化時,就會觸發(fā)中斷。

DI的狀態(tài)值在索引6000的對象中保存,DI輸入的極性在索引6002的對象中保存,下圖為TPDO1的觸發(fā)邏輯關(guān)系:

poYBAGIO-kGAX7sdAAU4LFrVjH4541.png

其中索引6003對象為禁止狀態(tài),即不對DI做濾波處理,因為讀取硬件輸入狀態(tài)時已經(jīng)做了延時消抖動處理。

TPDO1的數(shù)據(jù)(索引6000,子索引01)為1個字節(jié),其和DI對應(yīng)關(guān)系為

DI開關(guān)量輸入和數(shù)據(jù)bit對應(yīng)關(guān)系

bit76543210
DIDI-8DI-7DI-6DI-5DI-4DI-3DI-2DI-1

DI極性控制(索引6002子索引01)與DI的關(guān)系:

DO開關(guān)量輸入極性和對象索引6002數(shù)據(jù)bit對應(yīng)關(guān)系

bit76543210
DIDI-8DI-7DI-6DI-5DI-4DI-3DI-2DI-1

在默認參數(shù)條件下,DI有變化時,模塊輸出如下:

poYBAGIO-kKAQfMZAAGtJWIVHDE119.png

上圖,序號000001為第一路DI有觸發(fā)(有低電平變成了高電平);

序號000004為第一路DI有觸發(fā)(有高電平變成了低電平)。

當(dāng)然也可以用SDO命令讀取對象索引6000,子索引01來獲取DI的狀態(tài)。

六、DI定時上傳設(shè)置測試

可以通過SDO命令寫通訊參數(shù)對象中的事件定時器(索引1800,子索引05)來實現(xiàn)DI狀態(tài)的定時上傳,例如將該對象寫0x00c8(200)ms:

發(fā)送CAN幀ID為0x0601,數(shù)據(jù)為:2b 00 18 05 c8 00 00 00

poYBAGIO-kKAbLsDAAKbJ7nKMSk248.png

模塊收到后,將按照200ms上傳一次(觸發(fā)TPDO1)。

也可以用同樣的方式設(shè)置TPDO1的抑制時間。

七、DI同步上傳設(shè)置測試

可以通過SDO命令寫通訊參數(shù)對象中的通訊類型(索引1800,子索引02)和對象子索引1005(同步COB-ID)來實現(xiàn)DI狀態(tài)的同步上傳,注意通訊類型的值value必須為1~240(十進制),其含義是模塊收到value個同步幀時就觸發(fā)一次TPDO1,例如value設(shè)為0x01:

發(fā)送CAN幀ID為0x0601,數(shù)據(jù)為:2f 00 18 02 01 00 00 00

poYBAGIO-kOAB_MeAA2QNkzCSqY086.png

八、對象字典的恢復(fù)出廠測試

模塊可以用過SDO命令操作索引1011對象來實現(xiàn)對整部對象字典的恢復(fù)出廠。

目前僅支持恢復(fù)整部對象字典功能。

發(fā)送:CAN幀ID為0x0601,數(shù)據(jù)為:23 11 10 01 64 61 6f 6c;模塊收到后,將整部對象字典恢復(fù)到出廠默認參數(shù):

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

    評論

    相關(guān)推薦

    如何保障后臺與終端產(chǎn)品之間數(shù)據(jù)安全交互

    隨著互聯(lián)網(wǎng)、智能終端等相關(guān)行業(yè)的飛速發(fā)展,對終端產(chǎn)品遠程控制的需求人們生活中越來越普遍。如何保障后臺與終端產(chǎn)品之間數(shù)據(jù)安全交互、不被篡改、
    的頭像 發(fā)表于 08-26 17:20 ?231次閱讀
    如何保障后臺與<b class='flag-5'>終端產(chǎn)品</b>之間數(shù)據(jù)安全交互

    【智聯(lián)】2-8路PT100高精度溫度采集模塊

    聯(lián)2-8路PT100高精度溫度采集模塊
    的頭像 發(fā)表于 06-04 09:54 ?315次閱讀
    【智<b class='flag-5'>嵌</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)</b>】2-8路PT100高精度溫度<b class='flag-5'>采集</b>模塊

    聯(lián)網(wǎng)絡(luò)IO控制器接入智云控演示

    聯(lián)的網(wǎng)絡(luò)IO控制器(云版本)支持接入智云,實現(xiàn)設(shè)備的遠程控制與檢測。本文檔以智
    的頭像 發(fā)表于 05-30 09:26 ?290次閱讀
    智<b class='flag-5'>嵌</b><b class='flag-5'>物</b>聯(lián)網(wǎng)絡(luò)IO<b class='flag-5'>控制</b>器接入智<b class='flag-5'>嵌</b>云控演示

    通博聯(lián)PLC網(wǎng)關(guān)實現(xiàn)mewtocol協(xié)議PLC設(shè)備數(shù)據(jù)采集

    是松下公司開發(fā)的一種通信協(xié)議,主要用于工業(yè)自動化設(shè)備之間的通信和控制通博聯(lián)PLC網(wǎng)關(guān)通過支持Mewtocol協(xié)議,能夠?qū)崿F(xiàn)與Mewtoc
    的頭像 發(fā)表于 03-11 16:02 ?470次閱讀
    <b class='flag-5'>物</b>通博<b class='flag-5'>聯(lián)</b>PLC網(wǎng)關(guān)實現(xiàn)mewtocol<b class='flag-5'>協(xié)議</b>PLC設(shè)備數(shù)據(jù)<b class='flag-5'>采集</b>

    自動化碼頭中CANopen與Ethercat協(xié)議的應(yīng)用

    自動化碼頭中,協(xié)議轉(zhuǎn)換是一個關(guān)鍵環(huán)節(jié),它能夠?qū)崿F(xiàn)不同設(shè)備之間的數(shù)據(jù)交互和協(xié)同工作。其中,將CANopen協(xié)議轉(zhuǎn)換為EtherCAT協(xié)議的應(yīng)
    的頭像 發(fā)表于 01-19 14:57 ?303次閱讀

    通博聯(lián)工業(yè)智能網(wǎng)關(guān)快速實現(xiàn)OPC UA協(xié)議設(shè)備數(shù)據(jù)采集

    OPC UA協(xié)議是工業(yè)聯(lián)網(wǎng)十分重要且常見的通信協(xié)議,實現(xiàn)不同設(shè)備、機器和系統(tǒng)之間數(shù)據(jù)通信和實時交互,工業(yè)領(lǐng)域中廣泛使用。
    的頭像 發(fā)表于 01-18 15:08 ?1264次閱讀
    <b class='flag-5'>物</b>通博<b class='flag-5'>聯(lián)</b>工業(yè)智能網(wǎng)關(guān)快速實現(xiàn)OPC UA<b class='flag-5'>協(xié)議</b>設(shè)備數(shù)據(jù)<b class='flag-5'>采集</b>

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

    自動化控制領(lǐng)域,Profinet和CanOpen都是廣泛應(yīng)用的通信協(xié)議。Profinet是一種基于以太網(wǎng)的通信協(xié)議,主要用于工業(yè)自動化領(lǐng)域
    的頭像 發(fā)表于 01-10 10:50 ?629次閱讀
    Profinet<b class='flag-5'>協(xié)議</b>轉(zhuǎn)換為<b class='flag-5'>CanOpen</b><b class='flag-5'>協(xié)議</b>來連接<b class='flag-5'>CanOpen</b>伺服驅(qū)動器的應(yīng)用

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

    自動化控制領(lǐng)域,Profinet和CanOpen都是廣泛應(yīng)用的通信協(xié)議。Profinet是一種基于以太網(wǎng)的通信協(xié)議,主要用于工業(yè)自動化領(lǐng)域
    發(fā)表于 01-10 10:29

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

    自動化控制領(lǐng)域,Profinet和CanOpen都是廣泛應(yīng)用的通信協(xié)議。Profinet是一種基于以太網(wǎng)的通信協(xié)議,主要用于工業(yè)自動化領(lǐng)域
    的頭像 發(fā)表于 01-10 10:27 ?332次閱讀

    工業(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ò)的從站,可以將
    發(fā)表于 12-12 11:31

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

    CANopen協(xié)議的優(yōu)勢,確保了在數(shù)據(jù)傳輸過程的高效與穩(wěn)定。 這款網(wǎng)關(guān)的應(yīng)用場景十分廣泛。工業(yè)自動化系統(tǒng),它可以實現(xiàn)不同設(shè)備間的互聯(lián)
    發(fā)表于 12-11 10:53

    Modbus轉(zhuǎn)CANopen協(xié)議相互轉(zhuǎn)換工業(yè)的作用

    于汽車和工業(yè)自動化領(lǐng)域。某些應(yīng)用,可能需要將Modbus協(xié)議轉(zhuǎn)換為CANopen協(xié)議。這可以通過使用專門的Modbus轉(zhuǎn)
    發(fā)表于 12-08 17:02

    Modbus轉(zhuǎn)CANopen協(xié)議相互轉(zhuǎn)換工業(yè)的作用

    于汽車和工業(yè)自動化領(lǐng)域。某些應(yīng)用,可能需要將Modbus協(xié)議轉(zhuǎn)換為CANopen協(xié)議。這可以通過使用專門的Modbus轉(zhuǎn)
    的頭像 發(fā)表于 12-08 17:00 ?394次閱讀

    Modbus轉(zhuǎn)CANopen協(xié)議相互轉(zhuǎn)換工業(yè)的作用

    于汽車和工業(yè)自動化領(lǐng)域。某些應(yīng)用,可能需要將Modbus協(xié)議轉(zhuǎn)換為CANopen協(xié)議。這可以通過使用專門的Modbus轉(zhuǎn)
    的頭像 發(fā)表于 12-08 16:58 ?372次閱讀
    Modbus轉(zhuǎn)<b class='flag-5'>CANopen</b><b class='flag-5'>協(xié)議</b>相互轉(zhuǎn)換<b class='flag-5'>在</b>工業(yè)<b class='flag-5'>中</b>的作用

    ZQWL-USBCANFD二次開發(fā)通訊協(xié)議V1.04

    根據(jù)需要設(shè)置(范圍9600~48000000bps),硬件自動匹配。本文檔介紹二次開發(fā)的參數(shù)配置,數(shù)據(jù)收發(fā)等協(xié)議。 智聯(lián)ZQWL開發(fā)的一
    的頭像 發(fā)表于 09-28 15:52 ?610次閱讀
    <b class='flag-5'>ZQWL</b>-USBCANFD二次開發(fā)通訊<b class='flag-5'>協(xié)議</b>V1.04