EL6751使用教程

EL6751使用教程

EL6751是倍福推出的一个CANopen网关,用于EtherCAT和CANopen协议的转换,PLC可以经由EL6751连接和控制CANopen终端设备,例如基于CANopen协议的伺服驱动器。

CANopen协议概述

CANopen协议架构在CAN-bus总线协议之上,从OSI的七层模型来看,属于应用层协议,与CANopen协议具备同等地位且同样架构在CAN-bus总线协议之上的其他应用层协议还有汽车行业常用的SAE J1939协议,工业行业的DeviceNet协议等。

一般而言,对于工业场合的应用场景来说,工程师只需要关注高层协议的实现方法,不必探究其底层架构,CANopen协议是一种高层协议,其规范从本质上讲是对CAN帧的再封装和重定义(主要是数据部分)。例如CANopen中常说的COBID就是对CAN ID的一种重定义(这个表述从定义上而言并不十分“准确”,本文的目的不在于咬文嚼字,力求严谨,而是方便读者理解,尽量删繁就简),把原CAN ID分解为两个部分,加入了功能码的概念。

CANopen由CiA组织管理,开放,免费,非盈利。

CANopen协议中的重要概念

CANopen协议中涉及了多种通信模型,如 服务器/客户端模型,生产者/消费者模型,主从模型,CANopen的那些术语之所以让工程师感到晦涩难懂,很大一部分原因是因其适用在不同模型下导致的,若只阅读其协议内容的话在这几个模型之间来回跳跃,就容易混淆迷惑。要知道CANopen是一个高层协议,高层协议一般而言都是抽象出来的,归结出了设备的一些通用的特性,将之规范化标准化,再用这个规范化标准化的要求去指导实现一个具体的设备,非常类似于编程语言中的类和实例的关系。

CANopen协议中用到了面向对象的一些思想,一个具体的CANopen设备就是一个CANopen协议实现出来的实例,例如一个CANopen伺服驱动器,它的属性和方法就体现在它的对象字典(Object Dictionary)中。

COBID

COBID本质上就是CAN ID,以11位的CAN 2.0A为例,只不过把CAN ID的各个bit位进行了重定义,引入了功能码的概念,功能码占据了前4位,将设备的ID号缩减到7位。引入功能码的概念是为CANopen中设计的几种通信模型服务的,通过功能码来区分不同帧的功能,如SDO,PDO,NMT,SYNC等。其后的7位是用来编码从设备的地址信息,一般来说,一条CAN总线上,因为主设备要占用1个地址,而且0号地址是不允许拿来编码从设备的,是一个广播地址,因此从设备不可超过126个(这里说的主设备和从设备是一种通用说法,实际上CAN总线上的设备是不分主从的,读者理解其中的含义即可)。

NMT

NMT负责CANopen的网络管理,是报文的一种,在CANopen的设备模型中,设计有一个状态机,状态机负责切换CANopen设备的不同状态,不同状态下CANopen设备所能进行的操作也不同,一个正常运行的设备要求是处于OP状态的(operational state),而在设备进入OP状态之前,通常都需要经过Init->Pre OP->OP的状态切换过程,Init->Pre OP一般由设备自身完成(Pre OP可以理解为一种就绪态,Init是初始化过程),而Pre OP->OP切换过程就需要NMT来管理。NMT不仅仅用来管理上述的过程,整个CANopen设备的状态机各个状态之间的切换NMT都有权进行管理。

在这里插入图片描述

在这里插入图片描述

上图是摘自CiA 301 V4.2.0版的状态机切换框图,可知一个CANopen设备有四种状态,NMT可以控制这四种状态的切换。

NMT采用主从模型,这种情况下,具备NMT管理能力的节点就是主机,通常就是系统中的PLC,其他被管理的节点就是从机,通常就是CANopen设备,例如伺服驱动器,传感器等。只有主机能管理从机的状态,从机不可以管理其他从机的状态。

不同状态下能进行的通信类型是有区别的

1)在Stop,Pre OP和OP状态下使用SDO对设备进行操作

2)在OP状态下使用PDO对设备进行读写

3)在Stop,Pre OP和OP状态下可以进行NMT操作

SDO

SDO是服务数据对象,这里所说的服务是用来对设备属性和行为进行配置和读写的含义,SDO的概念是基于服务器和客户端模型的,发起请求的一方称为客户端,响应请求并提供数据或服务的一方称为服务器。

在前述NMT的基础上,这里可以做一下对比区分,要知道主/从模型或者服务器/客户端模型都是对设备的一种分类视角,两种分类方法之间没有联系,是独立看待同一套设备的,只是角度不同而已,这个角度可能是从功能上,或者结构上而言。

NMT是在主从模型的视角下,一般认为PLC是主设备,其他的CANopen设备为从设备,若放在SDO服务器/客户端的模型下来看,PLC充当的是客户端,发送SDO请求到CANopen设备例如伺服驱动器请求伺服数据,这里的伺服驱动器就是服务器的角色,伺服驱动器响应请求并提供数据给PLC。

在客户端/服务器模型下,双方的沟通交流是需要进行“确认”的,客户端发送SDO后,服务器是需要进行响应的,是“一问一答”的形式。

PDO

PDO是过程数据对象,过程数据不难理解,意指设备运行中产生的数据,这些数据是完成一个工艺过程中最重要的数据,PLC依靠这些数据来监视和控制整个生产作业的过程。PDO的概念是基于生产者/消费者模型的,所谓生产者就是产生数据的一方,消费者就是使用数据的一方。

在前述NMT的基础上,伺服驱动器就是生产者,PLC就是消费者,有别于服务器/客户端的"一问一答"式通信方式,在生产者/消费者模型中,不需要消费者应答,生产者只负责生产数据,数据被谁使用,生产者并不关心,多个消费者可以同时使用同一个生产者的数据。

PDO是不需要应答的,这就决定了PDO的效率是高于SDO的,没有了“应答”这部分时间开销,对总线的占用时间也会减少,同等时间内可以传送更多的数据,实时性更佳。

OD

OD(object dictionary)是对象字典,这个名词对初学者而言比较生疏,换一个角度来看,OD就是CANopen设备对外交流沟通的接口,设备能提供的所有数据都由这个接口决定,外部设备要想操控访问CANopen设备,必须通过这个接口来进行,他就像一个产品说明书一样,提供了CANopen设备的所有信息。

OD中的Index就像说明书中的每个章节,Index下的subindex就像是章节下的条目,想要了解这个CANopen设备,那就读懂它提供的所有Index和sunindex即可,在此基础上,想要哪些数据或者操控哪些设置,只需要按index和subindex定位好,然后利用SDO进行读写即可(有些不支持写只支持读)

从实现方法上来看,OD就是设备内CANopen协议栈代码中的一段程序,这段程序负责将设备应用部分的代码和通信部分的代码联系起来,提供了一个设备内部和外界交互数据的规则。有个很形象的比喻:OD就是一列火车,始发站可以理解为设备应用部分,终点站可以理解为CAN接口,在始发站你需要按火车车厢的大小和性质装载不同的“货物”,到了终点站,装载员按火车车厢的大小和性质来识别不同的货物,只有你把货物装载到正确的车厢里,装载员才能正确地识别到货物,否则你想把你生产的货物正确地运送出去是不可能的。同样的道理,你需要的货物也由这列火车送进来,前提是终点站的装载员也按照火车车厢大小和性质装载货物,这样你才能正确识别,否则也无法拿到你想要的货物。

SDO和PDO都会用到OD,所以经常有人讲OD是CANopen中最重要的概念,需要吃透理解到位才可以。

SYNC

SYNC即同步对象,SYNC遵循生产者/消费者模型,SYNC一般由NMT主机发出,用来同步从机的数据,从机可以根据设定的同步方式来传输数据,例如从机收到3个SYNC后,启动数据传输,通常应用SYNC时,消费者收到SYNC后会输出自身采集到的输入数据到总线上并且读入需要它输出的数据(这个数据可能来自SYNC生产者),并在下一个SYNC到来时把需要输出的数据对外输出。

TIME

TIME即时间戳,TIME遵循生产者/消费者模型,TIME一般由NMT主机发出,用来对CANopen网络中的设备进行对时。

EMCY

EMCY即应急对象,EMCY遵循生产者/消费者模型,EMCY的生产者一般是CANopen的终端设备,例如伺服驱动器,当其内部发送错误的时候,会发送应急报文到总线上,消费者可以根据预先设定的错误处理程序进行对应的操作。

EL6751特性

1)EL6751支持最高1Mbps的波特率

2)支持PDO的“事件触发”,“周期触发”,“同步触发”三种PDO通信类型

3)启动和运行过程中进行SDO通信

4)EMCY报文支持

5)节点守护(不常用)

6)心跳报文支持(目前常用)

其他特性可以参考EL6751的官方手册,这里不再赘述。

EL6751接线

EL6751使用双绞线连接到CAN-bus上,在EL6751一侧和CANopen设备一侧分别接入120Ω的终端电阻,需要注意的是即使CAN线非常短,也要接入终端电阻 ,这在工业现场是尤为重要的一条经验,防止信号的反射。

EL6751的通信速率和CAN线长度的匹配方法可以参考这个表格来设计,这是一个经验值数据,相对比较保守,实际使用时有可能超出一定的长度也可以正常通信,这需要实地测试。

在这里插入图片描述

CAN的通信电缆尽量使用专门的双绞线,一般测试使用可以购买汽车上的CAN通信线,价格亲民,也容易获取,淘宝上即可购得。

在这里插入图片描述

EL6751参数

在这里插入图片描述

Master-Node-ID:此参数是EL6751的节点号

Baudrate:CAN线上的通信波特率

Cycle Time(us):EL6751的Task周期

Sync-Cycle Multiplier:周期系数

Sync-Cycle-Time(in us):SYNC的周期=Cycle Time*Sync-Cycle Multiplier

Sync-Tx-PDO Delay(in %):同步PDO的发送延迟时间,PLC发SYNC给CANopen从站,CANopen从站回复SYNC,PLC再发送PDO(设置从站参数,例如伺服的下一个位置)的时间延迟,设置这个时间来防止总线负载突增

Input Shift Time(in %):EtherCAT的输入偏移时间,此参数不常用

在这里插入图片描述

在倍福的体系中,诸如EL等IO模块都视为一个个的ADS设备,即使PLC也被视为ADS设备,虽然它是纯软件虚拟出来的。这样,被视为ADS设备的模块,就具备ADS设备最重要的两个参数:ADS port和AMSNetId,通过这两个参数可以调用ADS的功能块对设备进行操作,具体操作方法可参考ADS的章节,这里就不再赘述。

在这里插入图片描述

此页用于调整EL6751的EtherCAT的一些配置项,通常不需要更改,保持默认即可。

在这里插入图片描述

通过此页可以查看CAN总线的负载情况,一般情况下保持总线负载在30%以下为佳。

在这里插入图片描述

此页可以观察同步PDO的耗时情况,通常不需要特别关注。

在这里插入图片描述

此页用于观察CANopen节点的状态,正常情况下应显示为 No Error,因EL6751下没有连接任何节点,故这里显示为Node not found。

在这里插入图片描述

此项用来导入DBC文件,DBC文件汽车行业常用,用来解析车身和ECU等模块的CAN数据,此项和CANopen没什么关系,是直接处理CAN帧的,故不用关注。

EL6751下的节点设置

以AMC驱动器连接EL6751为例,导入EDS文件并进行节点参数的配置。在完成硬件接线以后,需要注意匹配好120Ω的终端电阻。

1、右键Device 2(EL6751),选择 Add New Item…

在这里插入图片描述

2、弹出的对话框中选择 Miscellaneous->CANopen Node

在这里插入图片描述

3、右键Box 14(CANopen Node)->Load PDOs from EDS files…

在这里插入图片描述

4、找到驱动器厂商提供的EDS文件,一般我们第三方提供的EDS文件拷贝到这个目录下:C:\TwinCAT\3.1\Config\Io\CANopen

在这里插入图片描述

5、导入的时候如果EDS文件内厂商使用到的TPDO和RPDO超过EL6751可以自动生成COBID的数量(EL6751会自动生成TPDO1到TPDO4的COBID,假定节点号为1,则对应的COBID依次为0x181,0x281,0x381,0x481),则会出现弹窗提示,这个可以选择“否”,稍后自己配置就可以了。

在这里插入图片描述

同样地,对RxPDO弹出的警告也选择“否”即可。

在这里插入图片描述

6、观察一下导入EDS文件后从站的TxPDO和RxPDO的配置,以TxPDO1为例,打开可以看到此PDO的COBID=0x181;传输类型为255(async);Inhibit Time为生产禁止约束时间,表示此PDO间隔多久可以再次发送;Length表示此TxPDO1的数据长度为2byte,此项和映射的数据有关联不可更改;Event Time是一个事件定时器,对于RxPDO来讲,定时触发主站发送RxPDO到节点,对于TxPDO来讲,主站在这个时间段内监控TxPDO是否发送上来。

Disable checking of PDO length 此项一般不进行勾选,主站要检查TxPDO的长度。

在这里插入图片描述

7、查看该PDO下映射的变量名字为Status word,可知是伺服的状态字,单击可以在Variable选项卡下查看这个变量的具体信息。

在这里插入图片描述

在Flags选项卡下可以对Status word进行大小端调换,显示方式调整成十进制或者十六进制等
在这里插入图片描述

Online选线卡可以在线看此变量的值,且显示的方式和Flags选项卡下一致,一般调试的时候,如果厂商的代码以十六进制给出,那么可以把 Display Mode选择为 Hex模式。因为这里没有连上伺服,所以显示为灰色。

在这里插入图片描述

EL6751在接入CANopen的从站后,上电伊始会进行初始化和开机自检过程,这个过程是用户无法干预的,自检结束后,EL6751会发送一个远程帧,其格式如下图所示,其中node ID就是EL6751中Box下填写的从站ID号,这个远程帧可以用来诊断此从站是否在线。

在这里插入图片描述

在这里插入图片描述

Automatic Adjust PDO COB ids:此项勾选以后EL6751可以自动调整PDO帧的ID号和Node id保持一致,当我们修改节点地址的时候,SDO选项卡下的节点号就会自动更新。
Automatic PDO COB Download:此项勾选以后,EL6751启动后会自动把SDOs项下的信息下载到CAN node中。
Profile No和Add:Add和Profile No配合用来校对设备的0x1000索引下的“Device Type”,EL6751会在启动后校验这个选项是否和设备本身读上来的一致,通常不需要更改,保持0就是不进行校验,若要设置的话,校验不通过就会在”Diag“项下报错。
Guard Time:节点守护时间
Life Time Factor:节点生存时间系数
这两个参数需要配合使用,Life Time=Guard Time*Life Time Factor,如果节点在Life Time时间内没有收到来自Master的问询,则会生产一个EMCY事件,会认为是Master断线了,同样地,如果Master没有收到来自Slave的回复,则同样产生一个EMCY事件,会认为Slave断线了。

Use Heartbeat:此项勾选会优先于Guard事件,心跳报文是采用的生产者/消费者模型,所有CAN node按自身OD中0x1017索引规定的时间向总线发送心跳,格式一般为0x700+Node ID+NMT status,如果CANopen节点的OD中0x1017这个索引下的值为0x0,那么就是没有启用心跳报文。

General CAN-Node(direct access to layer 2,no NMT):选择此项意味着EL6751不再工作于CANopen的协议下,而是工作在数据链路层,即可以认为是工作在CAN2.0A(或2.0B如果启用了29bit的ID选项)直接操纵CAN帧,即CAN-ID+Data Area,此项类似于于使用诸如CAN盒或者PCAN这种工具直接发送原始帧的形式。这样EL6751就不能再进行NMT管理(NMT是CANopen下的概念,CAN2.0A下没有这个说法),网络管理需要由用户来实现,可用于非标准的CANopen设备。直接根据设备的使用说明书对设备进行操作。

在这里插入图片描述

SDOs:此选项下所列出的Obj.idx索引项0x18xx和0x14xx是TPDO和RPDO的通信参数,EL6751默认生成的此项参数规定了PDO对应的COBID和同步类型。例如0x1800规定了TPDO1的COBID为0x181,同步类型为255(255意为异步传输且取决于设备类型,例如DS402的伺服,一般为255,但是别的设备不一定是255,如果把值设到1-240范围,假定为20,就是规定同步传输时从站收到20个SYNC后,节点开始发送TPDO)这里的值在节点导入EDS文件后会自动更新,一般无需手动调整,如果是自己配置PDO的发送类型和映射关系,则需要按自己设定的方式去更改,更改方法在倍福的info上有说明,这里不再赘述。

在这里插入图片描述

ADS:此项可以用来查看EL6751的ADS设备信息,并且对于EL6751来说,可以使用此项下的Online-Access对EL6751进行SDO的在线读写,例如,要读取一个伺服的状态字,对于符合DS402的伺服,其状态字的索引为index 0x6041,没有subindex,那么有:
index-Group=0x6041
index-Offset=0x00000000
Read-Length=2
然后点击Read按钮即可读出此索引下的status word值,读出的值显示在Read-Data框内。
在这里插入图片描述
Diag:此项下展示节点的状态,如果节点正常,此处显示为”Box State:No Error“,否则会显示节点的错误号,此错误号和NodeState值相关。
Group=0x6041
index-Offset=0x00000000
Read-Length=2
然后点击Read按钮即可读出此索引下的status word值,读出的值显示在Read-Data框内。
Diag:此项下展示节点的状态,如果节点正常,此处显示为”Box State:No Error“,否则会显示节点的错误号,此错误号和NodeState值相关。

FAQ

1)何为EDS文件

EDS文件全称是电子数据表,英文electronic data sheets,注意EDS是文本格式的文件,可以使用常见的文本编辑器打开,其内保存的是设备的属性和对应的参数配置,对于倍福的PLC来说,其下的CANopen从站到底有哪些功能,需要配置哪些参数,都是通过EDS文件来确定的,倍福的PLC了解从站的唯一窗口就是通过EDS文件,在倍福PLC的IO-tree里面所展示出来的CANopen从站的PDO数量和每个PDO内的变量数量和类型都根据EDS文件读出来的。
这里有一个问题
有的客户可能导入EDS文件以后也无法正常通讯上,需要注意的是,厂商在提供给客户的EDS文件可能并不对应单一的设备,有可能对应该系列的所有衍生型号设备,为了“大而全”的目的,将EDS文件编制的很全面,但是针对此系列的某一个具体型号,需要用户对EDS文件进行增删操作,把该型号没有实现的PDO删除掉,把该型号能提供的PDO增加上,对应的PDO中的变量数量和变量类型做到和设备手册一一对应,这样主站在和从站通讯的时候才能不发生“差错”。

2)EL6751是否支持CAN2.0A和CAN2.0B

答案是肯定的,EL6751支持CAN2.0A和CAN2.0B,有些厂家的设备经常提供“CAN盒”来发送CAN帧对设备进行控制,并提供这样的一些样例,针对这种使用方式,EL6751也是可以做到的,有两种方式可以实现类似CAN盒的行为
2.1 使用ADS功能块通过SDO通讯进行控制,每个PLC周期进行数据交互
2.2 直接配置General CAN node的模式进行控制

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值