理论教育 使用施耐德SoMachine控制器实现CANopen总线基础

使用施耐德SoMachine控制器实现CANopen总线基础

时间:2023-10-22 理论教育 版权反馈
【摘要】:CANopen标准包括寻址方案、数个小的通信子协定及由设备子协定所定义的应用层。图12-2 CANopen总线架构CANopen凭借其可靠、实时、灵活、经济的特点而被广泛应用,并且已成为国际标准。CANopen协议是在现场总线CAN-BUS之上定义的一套应用层协议,其核心是对象字典及多种通信方式。在CANopen标准中定义了对象字典中的基本资料形态,包括逻辑值、整数及浮点数。表12-3是一个标准的CANopen通信帧。

使用施耐德SoMachine控制器实现CANopen总线基础

CANopen是一种架构在控制局域网路(Control Area Network,CAN)上的高层通信协定,包括通信子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。

CANopen实际作了OSI模型中的网络层以上(包括网络层)的协定。CANopen标准包括寻址方案、数个小的通信子协定及由设备子协定所定义的应用层。CANopen支持网络管理、设备监控及节点间的通信,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言,资料链接层及实体层会用CAN来实际操作。

基本的CANopen设备及通信子协定定义在CAN in Automation(CiA)标准301中。针对个别设备的子协定以CiA 301为基础再进行扩充。如针对I/O模组的CiA401及针对运动控制的CiA402。其总线架构如图12-2所示。

978-7-111-46531-7-Chapter12-2.jpg

图12-2 CANopen总线架构

CANopen凭借其可靠、实时、灵活、经济的特点而被广泛应用,并且已成为国际标准。CANopen协议是在现场总线CAN-BUS之上定义的一套应用层协议,其核心是对象字典及多种通信方式。对象字典是应用单元和通信单元之间的接口,实际上是设备的所有参数列表。应用单元和通信单元都可访问这个参数列表。对象字典中的条目(对象或参数)通过一个16位索引(Index)和一个8位子索引(Subindex)进行识别或定位,用户可对条目进行读或写。对象字典的分配见表12-1。

表12-1对象字典的分配

978-7-111-46531-7-Chapter12-3.jpg

对象字典描述了对象设备的所有功能。例如伺服驱动器的索引6060:0定位到了设备的运行模式,后面跟的数据确定了运行模式,如图12-3所示。

每个设备制造商会为自己的设备做好一个ASCII码格式的对象字典,即电子数据表(E-lectronic Data Sheet,EDS)文件。这个电子数据表可以导入到控制器,实现控制器与设备的CANopen通信。好了,让我们再来梳理一下有关的CANopen通信要用到的概念和名称。

1.设备通信

通信单元处理和网络上其他模组通信所需要的通信协定。设备的起动及重置由状态机(State Machine)控制。状态机需包括以下几个状态:初始化(Initialization)、预运行(Pre-operational)、运行(Operational)及停止(Stopped)。当接收到网络管理(NMT)通信对象,状态机会转换到对应的状态。对象字典(Object Dictionary)是一个有16位元索引(Index)的变量阵列。每个变量可以(但非必须)有8位元的子索引(Subindex)。变量可用来调整设备的组态,也可以对应设备量值的数据或设备的输出。当状态机设定为Operational之后,设备的应用(Application)部分就会实现设备预期的功能。此部分可以由对象字典中的变量调整其设定,而数据由通信层传输或接收。

978-7-111-46531-7-Chapter12-4.jpg

图12-3 对象字典定位设备运行模式

2.对象字典

CANopen设备都需要具备对象字典,用来设定设备组态及进行非即时的通信。对象字典的入口定义如下。

索引(Index):对象16位元的位址。对象名称(Object name):一个代表对象的符号类型,可以是阵列、纪录或只是一个变量。名称(Name):描述此入口的字串。形态(Type):变量的数据形态。属性(Attribute):提供此入口是否可读/可写的数据,有下列四种:可读/写、只读、只写、只读常数。必须(Mandatory)/可选(Optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。在CANopen标准中定义了对象字典中的基本资料形态,包括逻辑值、整数及浮点数。也定义了复合对象,如阵列、记录及字串。复合对象用一个8位元的数值作为其子索引(Subindex)。记录或阵列中子索引0的位置记录此数据结构的元素个数,资料型态为UNSIGNED8。

例如在CiA301标准中,设备通信的参数放在索引范围0x1000~0x1FFF(通信行规区)。此区域的前几项见表12-2。

表12-2 通信定义区

978-7-111-46531-7-Chapter12-5.jpg

若配合适当的工具,可以用编辑EDS档案的方式规划一个设备,并且将变量的数值上传到设备中。EDS档案的格式通常会是INI文件。

3.通信对象

CANopen的物理层CANbus每次传送的资料量不大,其中包括11位元的ID、远端传输请求(RTR)位元及大小不超过8位元的数据。CANopen将CANbus 11位元的ID分为4位元的功能码及7位元的CANopen节点ID。7位元的ID共有128种不同的组合,其中ID0不使用,因此一个CANopen网络上最多允许127台设备。CANbus在CAN 2.0 B规格中允许29位元的ID,因此若配合CAN 2.0 B使用,CANopen网络上可以超过127台设备,不过在实际运用中,大多数的CANopen网络上设备数量均低于此数值。

CANopen将CANbus的11位元ID称为通信对象ID(COB-ID)。当传输数据出现碰撞时,CANbus的仲裁机制会使COB-ID最小的信息继续传送,不用等待或重传。COB-ID的前4个位元是CANopen的功能码,因此数值小的功能码表示对应的功能重要,允许的延迟时间较短。

表12-3是一个标准的CANopen通信帧。

表12-3 CANopen通信帧

978-7-111-46531-7-Chapter12-6.jpg

在CANopen标准中,部分COB-ID被保留作网络管理及SDO通信用。而在设备初始化后,有些功能码和COB-ID会对应到标准的功能,不过后续仍可以规划为其他用途。

4.通信模型

CANopen设备间的通信可分为以下3种通信模型。

在master/slave模型中,一个CANopen设备为主站(master),负责传送或接收其他设备从站(slave)的数据。NMT协定就使用了master/slave模型。客服(client/server)模型定义在SDO协定中,SDO客户将对象字典的索引及子索引传送给SDO服务员,因此会产生一个或数个需求数据(对象字典中,索引及子索引对应的内容)的SDO封包。生产者/消费者(producer/consumer)模型用在Heartbeat and Node Guarding协定。由一个生产者送出数据给消费者,同一个生产者的数据可能给一个以上的消费者。又可分为两种:推送方式(push-model):生产者会自动送出数据给消费者;拉进方式(pull-model):消费者需送出请求信息,生产者才会送出数据。

5.NMT协定

NMT(网络管理,Network Management)协定会定义(设备内部)状态机的状态变更命令(如起动设备或停止设备)、侦测远端设备bootup及故障情形。

NMT master使用的模组控制协定可变更设备的状态。其COB-ID为0,其功能码及节点ID均为0,因此网络上的所有节点均会处理这个信息。在此信息的数据部分会有此信息实际针对节点的ID,此ID也可为0,表示所有节点都要变更为指定的状态。

使用CIA405.NMT功能块可以从控制器应用程序控制CANopen设备的NMT状态。例如,我们用此功能块复位CAN总线或总线上的某个节点。

功能块通过执行对CANopen目标设备的NMT服务请求,来执行请求的NMT状态转换。

CIA405.TRANSITION_STATE ENUM

NMT状态机描述主要操作中的NMT从站的初始化和状态。

图12-4显示的是NMT状态、关联的可用通信对象(PDO、SDO、SYNC、EMCY和NMT)和5种状态转换(A到E)。

CIA405.TRANSITION_STATE枚举类型包含表12-4中介绍的NMT状态转换命令。(www.daowen.com)

978-7-111-46531-7-Chapter12-7.jpg

图12-4 网络管理状态及其转换

表12-4 CIA405.TRANSITION_STATE的枚举变量及功能

978-7-111-46531-7-Chapter12-8.jpg

6.心跳协定

心跳协定(Heartbeat protocol)是用来监控网络中的节点及确认其正常工作。心跳信息的生产者(一般是slave设备)周期性地送出功能码1110,ID为本身节点ID的信息,信息的资料部分有一个表示节点状态的位元。而心跳信息的消费者负责接收上述资料,若在指定时间(于设备的对象字典中定义)内,消费者均未收到信息,可采取相关行动(例如显示错误或重置该设备)。

其格式为:COBID+DATA(status of node)CANopen设备需要在bootup时自动从Initial-izing状态切换至Pre-operational状态,设备会在切换完成后送出一个心跳信息,这就是心跳协定。

有一种pull model的NMT协定,称作节点监控(Node guarding)协定,也可以作从机的监控。

7.服务数据对象协定

服务数据对象(SDO)可用来存取远端节点的对象字典,读取或设定其中的数据。提供对象字典的节点称为SDO server,存取对象字典的节点称为SDO client。SDO通信一定由SDO client开始,并提供初始化相关的参数。

在CANopen的术语中,上传是指由SDO server中读取数据,而下载是指设定SDO server的数据。

8.过程数据对象协定

过程数据对象(PDO)协定可用来在许多节点之间交换即时的数据。可透过一个PDO,传送最多8字节(64位元)数据给一设备,或由一设备接收最多8字节(64位元)的数据。一个PDO可以由对象字典中几个不同索引的资料组成,规划方式则是透过对象字典中对应PDO配置及PDO参数的索引。

PDO分为两种:传送用的TPDO及接收用的RPDO。一个节点的TPDO是将资料由此节点传输到其他节点,而RPDO则是接收由其他节点传输的资料。一个节点分别有4个TPDO及4个RPDO。

PDO可以用同步或异步的方式传送:同步的PDO是由同步SYNC信息触发,而异步的PDO是由节点内部的条件或其他外部条件触发。例如若一个节点规划为允许接受其他节点产生的TPDO请求,则可以由其他节点送出一个没有数据但有设定RTR位元的TPDO(TP-DO请求),使该节点送出需求的数据。

借由RPDO也可以使两种设备同时起动。

除了定义对象字典,CANopen协议还定义了网络物理结构,如图12-5所示。即连接各个设备站点的电缆是带屏蔽的双绞线传输线的终端电阻为120Ω。在整个网络中包括主站在内的站点数,最多不能超过127个。电缆的信号为CAN_H、CAN_L和CAN_GND。在同一网络内,各个站点的通信速率要求配置一样。通信速率根据传输距离的大小而有不同。请参见表12-5电缆长度和速率的配置。

978-7-111-46531-7-Chapter12-9.jpg

图12-5 CANopen总线的物理结构

表12-5 电缆长度和速率的配置

978-7-111-46531-7-Chapter12-10.jpg

在控制器上的CANopen总线口被设计为D型9针口,如图12-6所示。在运动控制器中有两个CANopen总线口,一个是通用总线口,一个是可以做多轴同步的总线口,我们称为CANmotion总线口。

978-7-111-46531-7-Chapter12-11.jpg

图12-6 CANopen在控制器上的端口

CANopen接线的规定如图12-7所示。D型9针插头的CANopen接线定义见表12-6。

通常CANopen现场总线,在现场中使用带有D型插头的电缆,它的优点是抗干扰性强,可靠性高。在控制柜中采用RJ45电缆进行连接,它的的优点是布线简单又快捷。驱动器上的CANopen总线RJ45端口定义如图12-8所示。

注意:使用带有RJ45连接器的电缆时,最大总线长度减半。

波特率为1Mbit/s时,传输线就限制为3m。

RJ45接头定义见表12-7。

这些定义都是CANopen总线的标准,这使得各个设备制造商提供的设备无论从软件配置还是硬件接线都有了统一的标准,总线互联变得非常方便。

978-7-111-46531-7-Chapter12-12.jpg

图12-7 CANopen接线的规定

表12-6 D型9针插头的CANopen接线定义

978-7-111-46531-7-Chapter12-13.jpg

N.C.:未连接。该屏蔽已连接到引脚6,即0Vdc引脚。

978-7-111-46531-7-Chapter12-14.jpg

图12-8 驱动器CN4和CN5上的CANopen总线RJ45端口定义

表12-7 RJ45接头定义

978-7-111-46531-7-Chapter12-15.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈