主页 > 市场 > CANopen个人之所见,所想
2018年

CANopen个人之所见,所想

关键词:

CANopen

择要:不停想写一篇关于CANopen的文章,鉴于小我常识能力没有动笔,本日做了一番思惟斗争,斗胆颁发一下自己对CANOPEN的肤浅熟识。

TonyZhou: 不停想写一篇关于CANopen的文章,鉴于小我常识能力没有动笔,本日做了一番思惟斗争,斗胆颁发一下自己对CANOPEN的肤浅熟识。

计划从贩卖职员,技巧职员角度都阐发一下CANopen的上风,文章可能没有什么章法,只是想到哪里说哪里,迎接拍砖。

背景:CANopen四问

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。

上图,这便是PDO的设置设置设备摆设摆设历程,0x1402(接管PDO通讯参数),PDO应用的cob-id,传输类型,Inhibit time,EventTimer。

0x1602(映射工具),上例中映射为Controlword,Target position。

这里着重讲一下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。

先写到这里吧,看看应声再写下篇文章(想写写codesys与CANopen)。此文获得了步科孙志武的修正,沟通了心跳报文和节点复位,再次表示谢谢。迎接智友留言交流,拍砖狠砸!