CANopen个人之所见,所想-现场总线-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6150发布~
查看: 3714|回复: 2

CANopen个人之所见,所想

[复制链接]
  • TA的每日心情
    开心
    2017-11-20 22:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-5-13 09:51:07 | 显示全部楼层 |阅读模式
      关键词:
      摘要:不时想写一篇关于CANopen的文章,鉴于个人学问才干没有动笔,今天做了一番思想斗争,斗胆发表一下自己对CANOPEN的肤浅认识。
      TonyZhou: 不时想写一篇关于CANopen的文章,鉴于个人学问才干没有动笔,今天做了一番思想斗争,斗胆发表一下自己对CANOPEN的肤浅认识。
      计划从销售人员,技术人员角度都剖析一下CANopen的优势,文章可能没有什么章法,只是想到哪里说哪里,欢送拍砖。
      
    20141216155213083.png
      背景: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。
      
    20141216155249536.png
      
    20141216155307864.png
      上图,这就是PDO的配置过程,0x1402(接纳PDO通讯参数),PDO运用的cob-id,传输类型,Inhibit time,EventTimer。
      0x1602(映射对象),上例中映射为Controlword,Target position。
      
    20141216155324614.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。
      
    20141216155426271.png
      先写到这里吧,看看反响再写下篇文章(想写写codesys与CANopen)。此文得到了步科孙志武的修正,沟通了心跳报文和节点复位,再次表示感激。欢送智友留言交流,拍砖狠砸!
    打赏鼓励一下!
    +10
    回复

    使用道具 举报

    该用户从未签到

    发表于 2015-9-25 14:47:29 | 显示全部楼层
    不错,谢谢。正在学习canopen,没得硬件现在,一头雾水
    打赏鼓励一下!
    +10
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-11-24 21:51:19 | 显示全部楼层
    谢谢,学习一下
    打赏鼓励一下!
    +10
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号 )|网站地图

    GMT+8, 2020-11-27 05:33 , Processed in 0.229088 second(s), 73 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表