0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CANopen协议在智嵌物联ZQWL采集控制终端产品中的应用

智嵌物联ZQWL 2022-02-18 09:47 次阅读

一、CAN和CANopen介绍

CAN(Controller Area Network)通讯以其高效率高稳定的特性,被广泛应用在汽车电子工业自动化以及物联网通讯系统中。CANopen是基于CAN的通讯子协议,是一种为用于产品部件内部网络通讯而开发的系统。其子协议CiA401,规范了数字量输入、数字量输出和模拟量采集相关的使用方法。智嵌物联ZQWL研发的带有CAN通讯接口的采集控制终端模块均实现了CANopen CiA401协议,可以非常方便的接入现有的CAN控制网络系统,缩短了开发周期,节省了开发费用。本文以智嵌物联ZQWL所研发的产品ZQWL-IO-1DARA8A为例,介绍CANopen如何在智嵌物联CAN产品中应用的。

先准备好产品1DARA8和USB-CAN调试器(ZQWL-UCAN-5C111):

pYYBAGIO-kGAQ68VAAqLgkclS50015.png

该模块支持标准的CANopen(CiA401)协议,用户通过简单配置后可以直接将其接入CANopen通讯网络或替代原有的CANopen设备。模块主要功能包括:

●1个TPDO,用于传送开关量输入状态(DI)。

●1个RPDO,用于接收开关量输出状态(DO)。

●NMT服务器功能,处理NMT主机发来的命令。

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

●DI极性控制、全局中断控制、单个DI中断控制以及DI的电平触发方式控制(任意变化触发、Low to High触发或者High to Low触发)。

●DO极性控制;设备故障或收到stop命令后的DO状态可配置。

●CAN波特率可配置。

●保存整部对象字典到flash和恢复整部对象字典到出厂值。

CANopen的CiA401设备子协议详细描述了对象字典的定义以及功能,该模块实现了DI/DO部分,模块的对象字典如下表:

索引

Index

子索引

Subindex

名称

name

类型

Type

属性

Attr.

默认值

default

说明

description

10000设备类型u32RO0x00030191支持CiA401的DI和DO
10030Errors Registeru8RO0错误寄存器
10050Sync COB-IDu32RW0同步报文COB-ID
10060Sync Periodu32RW0同步周期
10080ManufacturerstringROZQWL制造商
10090Hard VersionstringROV3.0硬件版本
100A0Soft VersionstringROV3.0软件版本
10100Num ofSubindexu8RO1子索引数目
1Save all ODu32W0x65766173保存整部对象字典;读时,返回0x00000001
10110Num ofSubindexu8RO1子索引数目
1Default all ODu32W0x64616F6C恢复整部对象字典;读时,返回0x00000001
10140Emnc COB-IDu32RW0x80紧急报文COB-ID
10170Heart beat timeru16RW0x0BB8心跳包周期,单位ms

1018

0Num ofSubindexu8RO4制造商信息
1Manufactureridu32RO-制造商ID
2Product Codeu32RO-产品代码
3Revision Numberu32RO-修订号
4Serial Numberu32RO-序列号

1200

0Num ofSubindexu8RO2SDO服务器信息
1SDO Rx COB-IDu32RO0x0600+Node IDSDO接收COB-ID
2SDO Tx COB-IDu32RO0x0580+Node IDSDO发送COB-ID

1400

0Num ofSubindexu8RO6RPDO1通讯参数
1RPDO1 COB-IDu32RORPDO1 COB-ID
2Transmission Typeu8RW0xFF通讯类型
3Inhibit Timeu16RW0抑制时间
4--------保留
5Event Timeru16RW0时间定时器
6SYNC start valueu8RW0同步初始值

1401-

15FF

0

RPDOx禁用

16000Num ofSubindexu8RO1RPDO1映射参数
1RPDO1 mappingu8RO0x62000108映射地址

1800

0Num ofSubindexu8RO6TPDO1通讯参数
1TPDO1 COB-IDu32ROTPDO1 COB-ID
2Transmission Typeu8RW0xFF通讯类型
3Inhibit Timeu16RW0抑制时间
4--------保留
5Event Timeru16RW0时间定时器
6SYNC start valueu8RW0同步初始值

1801-

19FF

0

TPDOx禁用

1A000Num ofSubindexu8RO1TPDO1映射参数
1TPDO1 mappingu8RO0x60000108映射地址

2000

0Num ofSubindexu8RO3设备唯一序列号
1Serial id1u32RO-序列号1
2Serial id2u32RO-序列号2
3Serial id3u32RO-序列号3
20010Num ofSubindexu8RO1CAN波特率寄存器
1CAN baudu8RW0CAN波特率对应表
60000Num ofSubindexu8RO1DI状态信息
1DI statusu8RW0x00DI状态寄存器
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状态信息
1DO statusu8RW0x00DO状态寄存器
62020Num ofSubindexu8RO1DO极性控制
1DO polarityu8RW0x00DO极性控制
62060Num ofSubindexu8RO1DO错误模式使能
1DO error modeu8RW0xFFDO错误模式使能
62070Num ofSubindexu8RO1DO错误模式状态值
1DO error valueu8RW0x00DO错误模式状态值

注意下文所有的测试条件为:Node ID为1;CAN波特率以及对象字典均为默认值。

二、Boot up和心跳包测试

模块上电会发出一个Boot up报文:id为701数据为00。

该模块默认心跳时间为0X0BB8(3000ms)。模块上电后发送心跳报文如下(采用我司生产的usb-can调试器):

pYYBAGIO-kGARFebAA0LJn2n5Cc392.png

注意,上述修改后参数,参数并未保存到flash中,模块掉电或复位后心跳包时间仍然是原来的数值。如果用户想保存到flash中,可以利用索引1010,具体操作方法参见下文。

三、NMT命令测试

模块内置NMT服务器功能,可以根据NMT指令切换工作状态,模块上电初始化成功后自动进入到预操作模式(PreOperational),这时模块会发送数据为7f、CAN id为701的心跳报文,如上节所述。

按照NMT命令规范,演示如下:

①进入操作模式(Operational)

发送can id为00,数据为01 01的报文:

pYYBAGIO-kGALz9JAAxlHQDpQqY676.png

模块进入到stop模式,心跳包数据变为04,如上图。进入stop模式时,继电器输出状态可以通过索引6206和6207共同确定,具体可参考下文。

③复位命令

发送can id为00,数据为81 01的报文:

poYBAGIO-kGARxezAAHEs0Jzwso078.png

模块复位,发一条Boot up报文;心跳包数据变为7f,模块自动进入预操作模式(PreOperational),如上图。

其他模式的切换参考标准CANopen通讯协议。

四、DO输出命令测试

模块通过RPDO1接收数据,来控制DO的输出,根据RPDO1的通讯参数可知,对端的COB-ID为0x0200+Node ID,即0x0201。可以通过发can id为0x0201、数据长度为1字节的标准帧来控制DO的状态,注意模块只有在操作模式下时该指令有效。其中1字节的数据和继电器对应关系为:

DO继电器输出和数据bit对应关系

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

例如打开第一个继电器DO,可以发送如下数据:

CAN帧ID:0x0201;

CAN数据:0x01;

poYBAGIO-kGAUEBzAAdBLPXWSvk128.png

Bit位值的含义:0为正逻辑;0为反逻辑。

索引6202(子索引01)默认值为0x00,全部为正逻辑。用户可以通过SDO命令修改DO输出极性对象6202的值,来改变输出极性,如改成0xff,那么,模块收到上述数据后,将第一路继电器关闭,其余路打开。

当然也可以用SDO命令读取对象索引6200,子索引01来获取DO的状态。

五、DI默认参数测试

模块通过TPDO1发送DI开关量输入的状态。是否触发TPDO1的发送,由以下条件决定:

①TPDO1的通讯参数配置(索引1800);

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

③DI中断触发方式(索引6006/6007/6008);

④模块当前的工作模式;

先看第一个条件,根据对象字典的默认配置可知,RPDO1的默认通讯参数为:

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

TPDO1的通讯类型为0xFF(索引1800,子索引02),即为事件触发模式;

TPDO1的抑制时间为0x00(索引1800,子索引03),即不抑制;

TPDO1的事件定时器为0x00(索引1800,子索引05),即不启用;

所以第一个条件即为开关量事件触发。

再看第二个条件,根据对象字典的默认配置可知,DI全局中断为TURE,即打开状态。

再看第三个条件,根据对象字典的默认配置可知,DI中断触发方式中,DI_any_change(索引6006,子索引01)的值为0xFF;Low_to_High(索引6007,子索引01)的值为0x00;How_to_Ligh(索引6008,子索引01)的值为0x00;

再看第四个条件,只有模块在操作模式下时才能触发TPDO1。

由以上配置可知,在操作模式下,DI有任意变化时,就会触发中断。

DI的状态值在索引6000的对象中保存,DI输入的极性在索引6002的对象中保存,下图为TPDO1的触发逻辑关系:

poYBAGIO-kGAX7sdAAU4LFrVjH4541.png

其中索引6003对象为禁止状态,即不对DI做滤波处理,因为读取硬件输入状态时已经做了延时消抖动处理。

TPDO1的数据(索引6000,子索引01)为1个字节,其和DI对应关系为

DI开关量输入和数据bit对应关系

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

DI极性控制(索引6002子索引01)与DI的关系:

DO开关量输入极性和对象索引6002数据bit对应关系

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

在默认参数条件下,DI有变化时,模块输出如下:

poYBAGIO-kKAQfMZAAGtJWIVHDE119.png

上图,序号000001为第一路DI有触发(有低电平变成了高电平);

序号000004为第一路DI有触发(有高电平变成了低电平)。

当然也可以用SDO命令读取对象索引6000,子索引01来获取DI的状态。

六、DI定时上传设置测试

可以通过SDO命令写通讯参数对象中的事件定时器(索引1800,子索引05)来实现DI状态的定时上传,例如将该对象写0x00c8(200)ms:

发送CAN帧ID为0x0601,数据为:2b 00 18 05 c8 00 00 00

poYBAGIO-kKAbLsDAAKbJ7nKMSk248.png

模块收到后,将按照200ms上传一次(触发TPDO1)。

也可以用同样的方式设置TPDO1的抑制时间。

七、DI同步上传设置测试

可以通过SDO命令写通讯参数对象中的通讯类型(索引1800,子索引02)和对象子索引1005(同步COB-ID)来实现DI状态的同步上传,注意通讯类型的值value必须为1~240(十进制),其含义是模块收到value个同步帧时就触发一次TPDO1,例如value设为0x01:

发送CAN帧ID为0x0601,数据为:2f 00 18 02 01 00 00 00

poYBAGIO-kOAB_MeAA2QNkzCSqY086.png

八、对象字典的恢复出厂测试

模块可以用过SDO命令操作索引1011对象来实现对整部对象字典的恢复出厂。

目前仅支持恢复整部对象字典功能。

发送:CAN帧ID为0x0601,数据为:23 11 10 01 64 61 6f 6c;模块收到后,将整部对象字典恢复到出厂默认参数:

pYYBAGIO-kKAe7JwAAYQT211CDQ847.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    CANopen协议架构和应用原理

    稳健的通信协议和接口工业电机控制应用中发挥着重要作用。工业驱动应用,当需要多个处理器元件来持续通信以完成复杂任务时,
    的头像 发表于 11-04 13:49 110次阅读

    如何保障后台与终端产品之间数据安全交互

    随着互联网、智能终端等相关行业的飞速发展,对终端产品远程控制的需求人们生活中越来越普遍。如何保障后台与终端产品之间数据安全交互、不被篡改、
    的头像 发表于 08-26 17:20 340次阅读
    如何保障后台与<b class='flag-5'>终端产品</b>之间数据安全交互

    【智】2-8路PT100高精度温度采集模块

    2-8路PT100高精度温度采集模块
    的头像 发表于 06-04 09:54 487次阅读
    【智<b class='flag-5'>嵌</b><b class='flag-5'>物</b><b class='flag-5'>联</b>】2-8路PT100高精度温度<b class='flag-5'>采集</b>模块

    联网络IO控制器接入智云控演示

    的网络IO控制器(云版本)支持接入智云,实现设备的远程控制与检测。本文档以智
    的头像 发表于 05-30 09:26 460次阅读
    智<b class='flag-5'>嵌</b><b class='flag-5'>物</b>联网络IO<b class='flag-5'>控制</b>器接入智<b class='flag-5'>嵌</b>云控演示

    通博PLC网关实现mewtocol协议PLC设备数据采集

    是松下公司开发的一种通信协议,主要用于工业自动化设备之间的通信和控制通博PLC网关通过支持Mewtocol协议,能够实现与Mewtoc
    的头像 发表于 03-11 16:02 569次阅读
    <b class='flag-5'>物</b>通博<b class='flag-5'>联</b>PLC网关实现mewtocol<b class='flag-5'>协议</b>PLC设备数据<b class='flag-5'>采集</b>

    自动化码头中CANopen与Ethercat协议的应用

    自动化码头中,协议转换是一个关键环节,它能够实现不同设备之间的数据交互和协同工作。其中,将CANopen协议转换为EtherCAT协议的应
    的头像 发表于 01-19 14:57 355次阅读

    通博工业智能网关快速实现OPC UA协议设备数据采集

    OPC UA协议是工业联网十分重要且常见的通信协议,实现不同设备、机器和系统之间数据通信和实时交互,工业领域中广泛使用。
    的头像 发表于 01-18 15:08 1445次阅读
    <b class='flag-5'>物</b>通博<b class='flag-5'>联</b>工业智能网关快速实现OPC UA<b class='flag-5'>协议</b>设备数据<b class='flag-5'>采集</b>

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    自动化控制领域,Profinet和CanOpen都是广泛应用的通信协议。Profinet是一种基于以太网的通信协议,主要用于工业自动化领域
    的头像 发表于 01-10 10:50 697次阅读
    Profinet<b class='flag-5'>协议</b>转换为<b class='flag-5'>CanOpen</b><b class='flag-5'>协议</b>来连接<b class='flag-5'>CanOpen</b>伺服驱动器的应用

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    自动化控制领域,Profinet和CanOpen都是广泛应用的通信协议。Profinet是一种基于以太网的通信协议,主要用于工业自动化领域
    发表于 01-10 10:29

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    自动化控制领域,Profinet和CanOpen都是广泛应用的通信协议。Profinet是一种基于以太网的通信协议,主要用于工业自动化领域
    的头像 发表于 01-10 10:27 390次阅读

    工业通讯CANOPEN转EtherCAT的转换

    CANOPEN转EtherCAT协议转换网关是一款能够将CANOPEN接口设备连接到EtherCAT网络系统的产品。该网关作为EtherCAT网络的从站,可以将
    发表于 12-12 11:31

    ModbusTCP转CanOpen网关助力工控行业

    CANopen协议的优势,确保了在数据传输过程的高效与稳定。 这款网关的应用场景十分广泛。工业自动化系统,它可以实现不同设备间的互联
    发表于 12-11 10:53

    Modbus转CANopen协议相互转换工业的作用

    于汽车和工业自动化领域。某些应用,可能需要将Modbus协议转换为CANopen协议。这可以通过使用专门的Modbus转
    发表于 12-08 17:02

    Modbus转CANopen协议相互转换工业的作用

    于汽车和工业自动化领域。某些应用,可能需要将Modbus协议转换为CANopen协议。这可以通过使用专门的Modbus转
    的头像 发表于 12-08 17:00 456次阅读

    Modbus转CANopen协议相互转换工业的作用

    于汽车和工业自动化领域。某些应用,可能需要将Modbus协议转换为CANopen协议。这可以通过使用专门的Modbus转
    的头像 发表于 12-08 16:58 442次阅读
    Modbus转<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>相互转换<b class='flag-5'>在</b>工业<b class='flag-5'>中</b>的作用