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

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

3天内不再提示

CANopen的起源,CANopen从何而来?

倩倩 来源:伺服与运动控制 作者:伺服与运动控制 2022-09-09 14:25 次阅读

1. CANopen的起源,CANopen从何而来?

德国Bosch公司于1983年研发CAN协议,用于汽车传动系统的网络通讯。之后称为国际标准ISO11898,目前CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301. 中。针对个别设备的子协定以 CiA 301 为基础再进行扩充,如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。

2. CANopen硬件的优势?

CAN协议最大的突出特点是错误检测,限制和处理。当CAN设备检测到总线错误时,会拒绝之前接收到的位序列,然后发送“错误帧”,其完全由CAN芯片本身处理,不需要人为编程

支持多主站,类似Profibus DP,总线上每个设备都是主站,也是从站,免除了人为仲裁的过程,方便用户开发。

报文短帧结构,CAN报文通常只有8个字节,数据帧非常短,在抗干扰能力上具有先天的优势。解释一下,为什么短帧结构抗干扰好?如果通讯报文长,发送一帧耗时也就长,假如遇到干扰,辛辛苦苦好不容发送了一条报文,结果因为干扰对方还没有收到,只能嚎啕大哭。

成本低廉,CAN外设基本在现在主流芯片上都可以找到,20几块钱的MCU都支持CAN外设,有的还支持两个CAN。这里有CiA的积极推广作用。

3. CANopen软件优势?

CANopen主要有CiA在推广,是非盈利组织,CANopen协议资料,网上一堆,任何人都可以下载到,我们常用的DS301(Draft Standand),DS402,CAN粉丝几乎人手一本,犹如葵花宝典,一定要珍藏一本。

CANopen协议开发,开源项目非常多,CanFestival就是其中一个,我做过移植,在步科MT4414TE-CAN触摸屏,用在8位单片机上,此源码有点耗费资源,网上有很多基于MCU的精简源码。

开发完整的CANopen协议栈,是很艰辛的工作,想要做好非常难。难点就在于你对CANopen协议的理解上,比如EMCY,复位节点,是否需要“NO Initialization”,heartbeat,Node guard是否需要?如何处理?这条不能算是其优点。

4. 为什么如此多公司在推广CANopen?

CANopen对于运动控制来说是一款优秀的通讯协议,采用了面向对象的一些设计思路,比如对象字典,过程数据对象(PDO),服务数据对象(SDO)等等。

CANopen在欧洲已成为最普通的协议,任何一家自动化公司都有CANopen的通讯接口,也成了低配。低配并不代表不好,只是说明其性价比更高。CANopen定义了完整的同步控制机制,使其成为主流的运动控制协议,除了在CAN总线上运行外,还被搬到了以太网上(CANopen over Ethernet),形成了著名的PowerLink,EtherCat工业以太网协议。

在这里多废话几句,所谓的运动控制总线标准,没有多大意义,因为运动控制技术都掌握在各个厂商手里,每一个稍微大一点的厂商,都有自己的专用运动控制协议,如三菱的SSCNET,安川的MECHATROLINK,倍福的CANOPEN以及EtherCat,施耐德的CANopen,西门子SiMotion,贝加莱的PowerLink,博世力士乐的SERCOS。

由于CANopen(可以看DS402,伺服控制标准)在运动控制的优势,尤其是同步控制,不管几流的厂商,在运动控制系统中,多多少少都加入了自己的东西,导致运动控制系统通常是封闭的,很少走互联路线,事实上要做到互联也非常困难。

二三流厂家,开发自己的CANopen协议,根据自己的需求,将其移至到不同的物理层上去运行,形成自己的运动控制系统,其性能优劣就在于其对CANopen协议的理解程度了。

基础:CANopen世界里的九个晦涩概念

1. DCF

是CAN网络的配置(Config)的数据存档文件。其作用不大,在Codesys软件里就有此选项。

2. EDS

电子数据表格,是描述一台从站设备的属性,参数的文件,是对从站设备对象字典的描述。比如一台伺服驱动器,如果其内部参数(每个参数对应对象字典中的一个位置,由index,sub-index决定)没有更改,其对应的EDS文件就不会更改。多说一句,不是所有的主控制器都需要使用EDS,比如Beckhoff就不需要,他需要你对CANopen DS301,DS402足够熟悉,人工对齐配置;步科FD,JD伺服按照DS402标准制定EDS文件,用户可直接配置,降低开发周期。

3. 复位节点

当设备遇到异常(如从站断线后重连,使用M258测试步科FD伺服),主控会发送“复位节点”,步科的ED伺服复位节点,驱动器恢复出厂值,而且连CAN通讯参数也恢复成默认值。FD,JD伺服是除了CAN通讯参数外,其他配置参数恢复出厂值。

4. EMCY

紧急报文,从站如伺服,在断电后会发送一条紧急报文,告诉主控其状态,一般伺服断电后,其电容电量能保证其发送该条报文。

5. 心跳,节点保护

配置心跳参数,设置心跳周期,心跳消费时间,这个消费者时间实际上是作为一个超时参数。主站收到一个心跳后,开始计时,如果在超时时间内没有收到下一个心跳,则认为从站离线,并报告错误,按照用户配置的错误处理方法处理。

网络中的每个节点都可以配置心跳,主站可以监听从站,从站可以监听主站,从站还可以监听从站。这里有一个生产者、消费者的概念,总线上的设备定义自己是心跳的生产者,还是消费者。生产者产生心跳,消费者监听心跳,然后在捕捉到异常后做出对应的处理。

个人认为心跳作用不大,假设某个设备断线,重连后复位节点,而此设备刚好是使用了原点功能的伺服呢?断电上电后,原点位置改变。所以在一些客户应用中,出现此情况,小伙子,你麻利的,赶快断电重启吧。

节点保护,其作用类似心跳,但可以读取从站设备的CANopen通讯状态(初始化,预操作,操作中,停止),属于DS301的范畴。

6. DS301和DS402的区别

DS301就是一个通讯协议栈,DS402是建立在DS301的上层协议,属于伺服类的控制协议,协议中规定好每个对象字典值得作用,比如0x6040,是控制字。DS402把一个伺服应该具有的功能都定义好了,开发厂家按照协议定义即可。

7. 对象字典

从软件的角度来说,对象字典本质就是一些数据结构的集合。可以这么理解,把对象字典看做是一本书,CANopen设备的行为准则是要参考这本书的,不管它做什么,只要它的行为要参考对象字典,就必须先查阅字典,再决定要不要做。比如它什么时候发送TPDO,这个行为是需要查询对象字典中对应于TPDO的传输类型以及Event timer。还有就是像PDO映射的原理,比如我要发送的数据,都是去查询这本书,看下它那里写的什么内容,然后我在把这部分内容以PDO的形式发送出去。

例如你的程序收到了一笔CAN报文,由于可以访问对象字典的对象是SDO,首先要判断它是SDO对象,那么你的程序就需要按照SDO中指定的索引和子索引去查找对象字典(一个排好序的数据结构集),找到相应的对象后按照SDO中的指令去操作这个对象,例如把一个值赋给字典中的变量。

8. SDO

这个很简单,就是类似串口的一发一回模式,主站发送请求帧,从站回复应答帧。

大家看几个例子就明白了。

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通讯参数),PDO使用的cob-id,传输类型,Inhibit time,EventTimer。

0x1602(映射对象),上例中映射为Controlword,Target position。

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

这里着重讲一下Transmission Type,上述是codesys中支持的集中方式:

acyclic sync(数值为0):同步PDO,同步方式由具体设备协议定义

Cyclic sync(数值为1-240):同步PDO,每个N个SYNC周期后,发送PDO

Sync rtr(数值253):同步PDO,收到远程帧请求后发送PDO

Async(数值253):异步PDO,收到远程帧后发送PDO

最后两个Async(254,255),都是设备厂家定义的,也是大家最常用的,当事件发生时发送。各个厂家在这里基本都是使用数据变化时发送方式,FD,JD伺服两种方法是一样的,都是数据变化发送。要注意设置“禁止时间”,降低CANOPEN通讯带宽。

具体案例

主控制器写target position,mode of operation给伺服,此PDO的cob-id为0x200 node id。传输方式为255或者254,禁止时间为100,也就是10ms。

审核编辑 :李倩

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

    关注

    57

    文章

    2681

    浏览量

    462832
  • 伺服控制
    +关注

    关注

    5

    文章

    148

    浏览量

    20450
  • 运动控制系统

    关注

    0

    文章

    87

    浏览量

    14131

原文标题:为什么伺服控制中CANopen通讯这么火?

文章出处:【微信号:旺材伺服与运动控制,微信公众号:旺材伺服与运动控制】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MODBUS TCP 转 CANOpen

    产品概述 SG-TCP-COE-210 网关可以实现将 CANOpen 接口设备连接到 MODBUS TCP 网络中。用户不需要了解具体的 CANOpen 和 Modbus TCP 协议即可实现
    的头像 发表于 09-24 13:59 151次阅读
    MODBUS TCP 转 <b class='flag-5'>CANOpen</b>

    DeviceNet转CANopen协议网关(DeviceNet转CANopen

    一,设备主要功能 捷米特JM-DNT-COP网关实现DeviceNet总线和CANopen网络连接起来。本网关连接到DeviceNet总线中作为从站使用,连接到CANopen总线中作为主站
    的头像 发表于 09-10 10:16 191次阅读
    DeviceNet转<b class='flag-5'>CANopen</b>协议网关(DeviceNet转<b class='flag-5'>CANopen</b>)

    人工智能从何而来

    当大家都在讨论人工智能的时候,有一个问题似乎很少有人关注,即:人工智能从何而来
    的头像 发表于 09-06 09:27 464次阅读

    CANopen以太网网关怎么用?

    CANopen以太网网关怎么用? CANopen以太网网关是一种连接CANopen总线和以太网的设备,它提供了在CANopen网络和以太网之间传输数据的功能。本文将详细介绍
    的头像 发表于 02-02 16:59 3105次阅读

    EtherCAT转CANopen网关在工业领域的应用方法

    在工业领域中,EtherCAT转CANopen网关是一种重要的通讯设备,它能够实现EtherCAT协议与CANopen协议之间的转换,从而让不同的设备之间能够进行通讯。 以下是EtherCAT转
    发表于 01-31 14:54

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

    在自动化控制领域,Profinet和CanOpen都是广泛应用的通信协议。Profinet是一种基于以太网的通信协议,主要用于工业自动化领域的数据传输和远程监控;而CanOpen是一种用于控制器
    发表于 01-10 10:29

    智能楼宇系统canopen协议与ModbusTCP协议进行通讯

    通过CANopen转ModbusTCP网关设备进行转换:可以使用一个CANopen转ModbusTCP网关设备,将CANopen协议转换为Modbus TCP协议。该CANopen
    的头像 发表于 01-03 15:20 411次阅读
    智能楼宇系统<b class='flag-5'>canopen</b>协议与ModbusTCP协议进行通讯

    通过CANopen转Modbus TCP网关的伺服系统

    通过CANopen转Modbus TCP网关的伺服系统,我们能够实现CANopen协议与Modbus TCP协议之间的无缝转换,从而为伺服电机的通讯和控制带来更大的便利和灵活性。 首先我们可以通过
    发表于 01-02 16:51

    ModbusTCP转CANopen网关在楼宇消防中的应用

    Modbus TCP转CANopen网关在楼宇消防中的应用主要是实现Modbus TCP协议的消防设备与CANopen协议的楼宇自动化系统之间的通信转换。在楼宇消防系统中,消防设备的通信协议通常采用
    发表于 12-25 16:29

    耐用通信Ethercat转canopen网关在钢铁行业的应用案例

    ——将用户canopen设备接入国产 PLC 控制系统 关键词:Ethercat转canopen Ethercat PLC Canopen台达伺服   现场应用Ethercat转canopen
    的头像 发表于 12-25 10:19 410次阅读
    耐用通信Ethercat转<b class='flag-5'>canopen</b>网关在钢铁行业的应用案例

    工业通讯中CANOPEN转EtherCAT的转换

    CANOPEN转EtherCAT协议转换网关是一款能够将CANOPEN接口设备连接到EtherCAT网络系统的产品。该网关作为EtherCAT网络的从站,可以将CANOPEN设备集成到EtherCAT控制系统中,实现EtherC
    的头像 发表于 12-12 11:33 365次阅读
    工业通讯中<b class='flag-5'>CANOPEN</b>转EtherCAT的转换

    工业通讯中CANOPEN转EtherCAT的转换

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

    ModbusTCP转CanOpen网关助力工控行业

    在工业自动化领域,协议转换网关一直扮演着至关重要的角色。其中,modbustcp转canopen网关以其独特的优势,成为不同设备间通信的桥梁。这款网关将modbus TCP协议的设备与CANopen
    发表于 12-11 10:53

    高速DAC相位噪声从何而来?首要的原因原来是它……

    高速DAC相位噪声从何而来?首要的原因原来是它……
    的头像 发表于 11-29 16:56 371次阅读
    高速DAC相位噪声<b class='flag-5'>从何而来</b>?首要的原因原来是它……

    串口转CANopen模块适合哪些项目用?

    串口转CANopen模块适用于需要在串口通信和CANopen总线之间进行数据转换和通信的项目。以下是一些适合使用串口转CANopen模块的项目示例: (1)工业自动化系统:在工业自动化领域,许多设备
    的头像 发表于 11-21 08:10 642次阅读
    串口转<b class='flag-5'>CANopen</b>模块适合哪些项目用?