一、CAN和CANopen简介
CAN总线全称为Controller Area 包装机械、烟草等行业得到了广泛的应用。CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节 不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
另外,CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任意插在PC、AT、XT兼容机上,方便地构成分布式监控系统。
而CANopen是基于CAN总线的应用层协议,在开放的现场总线标准中CANopen是最著名和成功的一种,已经在欧洲和美国获得广泛的认可和大量应用。1992年在德国成立了“自动化CAN用户和制造商协会”(CiA,CANinAutomation),开始着手制定自动化CAN的应用层协议CANopen。此后,协会成员开发出一系列CANopen产品,在机械制造、铁路、车辆、船舶、制药、食品加工等领域获得大量应用。目前CANopen协议已经成为了一种新的工业现场总线标准EN-50325-4。CANopen协议是CAN-in-Automation(CiA)定义的标准之一,在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。
二、CANopen的基本知识
EDS文件
EDS (Electronic Data Sheet) EDS文件描述了CAN网络上设备通信属性(波特率、输出类型、I/O提供…)。它由设备制造商提供,用于在配置工具中配置节点(就像Windows里的设备驱动程序)。
PDO PDO (过程数据对象)
CANopen帧包含I/O数据 区分在:
1、传送PDO:TXPDO 带有节点提供给其他节点的数据
2、接收PDO:RXPDO 节点消耗的数据 传送的方向从节点的观点看总是可见的。PDO没有必要包含所有节点映象。通常模拟量和数字量被分成不同的PDO进行传送。对输出也是同样如此! SDO SDO (服务数据对象) CANopen帧包含参数 SDO主要用于在程序运行时,从设备读参数或者向设备写参数 COB-ID COB-ID(通讯对象标识符) 每个CAN帧以一个COB-ID开头,COB-ID作为CAN帧的标识符。
在配置阶段,每个节点在接收COB-ID时,对帧来说,他是提供者或者消费者。
三、关于CANopen 介绍
CANopen是一个标准的工业控制系统现场总线协议。它特别适合实时控制的PLC ,因为它为集成的和可传输的工业应用提供了一个高效、低成本的解决方案。
CANopen协议
CANopen协议是建立在CAL协议基础上的一个子协议。通过定义设备规范,它甚至更加适合于标准工业组件。C ANopen是一个CIA(CAN in Automation)标准,投入市场之初,它就迅速被推广。在欧洲,CANopen现在已经被公认为基于CAN设计的工业系统的工业标准。
物理层
CAN使用差分驱动两总线(公共回路)。CAN信号是CAN-high和CAN-low线之间的电压差值。
CANopen协议
1:CAN-high线
2:CAN-low线
3:终端电阻:120Ω
4:节点
根据电磁兼容要求,总线可以使用平行、双绞或者屏蔽走线方式。单线结构使反射最小化。
CANopen规范文件
通讯规范文件
CANopen规范文件时基于“通信规范文件”的,用来规定主要通讯机制和它们的描述(DS301)。
设备规范文件
在设备规范文件中描述了工业自动化领域最重要的设备类型,同时也定义了设备功能类型。
标准设备描述例子为: ◆数字量和模拟量输入/输出模块(DS401) ◆电机(DS402) ◆控制设备(DS4P403) ◆闭环控制器(DSP404) ◆PLC (DS405) ◆编码器(DS406) 通过CAN总线配置设备 通过CAN总线配置设备的可能性是制造商要求自治的基本原则之一。
CANopen规范文件的通用规格 CANopen是符合以下规定文件的,用于CAN系统的一套规范: ◆开发的总线系统 ◆无协议超负荷的实时数据交换 ◆可重新定义尺寸的模块化设计 ◆设备互用性和交换性 ◆被大量国际制造商支持 ◆标准的网络配置 ◆访问所有的参数设备 ◆同步和循环过程数据/事件驱动数据 CANopen产品认证 在市场上提供CANopen认证产品的制造商都是CiA组织成员。
CAN标准 CANopen协议被CIA组织定义并且可访问该组织(须遵守某些限制)站点:http://www.can-cia.com.对主从设备的源代码可以从不同的供应商得到。
与CANopen网络通讯 通讯协议文件基于CAL服务和协议。
它提供用户对两种交换类型的访问:SDO、PDO。
在上电时,设备进入一个初始化阶段,接着进入预处理阶段。在这个阶段,只有SDO可以通讯。在接到一个启动命令后,设备进入工作状态,在这个阶段PDO可以进行通讯,SDO通讯仍然有效。
CANopen启动Boot-up 启动过程 最小设备配置指定了简化的启动程序。这个过程描述如下: CANopen启动Boot-up 详细步骤介绍: 1、模块上电 2、模块初始化,进入预处理状态 3、NMT服务:启动远程节点 4、NMT服务:预处理 5、NMT服务:停止远程节点 6、NMT服务:重启节点 7、NMT服务:重启节点通讯 初始 进入“重新启动通讯”后,设备进入初始模式。
该状态允许的操作有: ◆定义要求的通讯对象(SDO、PDO、紧急事件处理) ◆安装相关的CAL服务 ◆配置CAN控制器 初始化完成后设备自动进入预处理模式。
预处理 进入预处理的条件: ◆在初始化完成后 ◆在正常工作模式下,接收到“进入预处理”NMT命令 在这种情况下,设备的配置可以被修改。然而只有SDO可以用来读或写设备的参数。
当配置完成后,通过接收相关的命令,设备进入以下的工作状态: ◆停止 ,当接收到“停止远程节点”NMT命令 ◆运行 ,当接收到“启动远程节点”NMT命令 停止 如果设备处于“预处理”或者“正常工作”状态,接收到“节点停止”命令(NMT服务),设备进入“停止状态”。
在这种情况下,设备不能被配置。不能读写设备相关参数(SDO),只有从设备的监视功能(即节点保护)有效。
操作 当设备处于“预处理”状态,接收到“启动远程节点”,设备进入操作状态。在“运行”状态,当使用“节点启动”NMT服务启动CANopen网络,所有的设备功能性被使用,PDO、SDO均可进行通讯。
过程数据对象(PDO) PDO定义 PDO是过程数据通信相关的通信对象,它能保证过程数据的实时交换。
一个CANopen设备的PDO对象定 义了它与网络上其他CANopen设备之间的隐式数据交换。
当设备运行时,PDO交换被激活。
PDO类型 有两种PDO类型: ◆ TXPDO/TPDO:PDO被设备传送 ◆ RXPDO/RPDO:PDO被设备接收 PDO的供给者与消费者 PDO基于“供给者/消费者”模型。传送的叫“供给者”,接收的叫“消费者”。
PDO的传送模式 ◆同步(通过接收SYNC对象实现同步) 非周期:由远程帧预触发传送,或者由设备子协议中规定的对象特定事件预触发传送。 周期:传送在每1到240个SYNC消息后触发。
◆ 异步 由远程帧触发传送。
由设备子协议中规定的对象特定事件触发传送。
服务数据对象(SDO) SDO定义 服务数据对象SDO允许使用显示请求交换数据。
当设备处于预处理、工作状态,SDO服务是有效的 。
SDO的类型 有两种SDO类型: ◆读SDO(上传) ◆写SDO(下载) 客户端/服务器模型 SDO协 议是基于“客户端/服务器”模型。
对于下载SDO 客户端发送一个标示被写对象的请求,服务器返回一个确认信息。
对于上传SDO 客户端发送一个标示被读对象的请求,服务器返回被读对象的数据。
对于一个未处理的SDO 对于以上的两种情况,如果一个SDO不能被处理,服务器返回一个错误代码。
“节点保护”和“寿命保护” 使用期限的定义 “使用期限”参数是按以下来计算的: 使用期限=保护时间(看门狗时间)使用期限系数;保护时间的典型值在250ms到2S之间。对象0X100CH含有以毫秒时间定义的保护时间,对象0X100DH含有“使用期限系数”。
监控机制: 1、节点保护 2、心跳报文 监控激活 如果两个参数中有一个为零,那么模块不执行监控,即无寿命保护。为了激活监控,必须在两个对象中输入非零的数值。
保证可靠工作 为了保证可靠工作,建议设置“使用期限系数”为2。如果不是只样,主模块会产生延时(例如,在“节点保护”时高优先级信息的处理或者内部处理时),模块会转入预处理模式而不产生错误。
监控的重要性 这两种保护机制对CANopen系统的安全运行特别重要,特别是对不工作于事件-被控模式的设备。
从设备的监控 监控按以下的方法执行: ◆ 主设备发送远程帧,来读取从设备的状态; COB-ID 0x700+Node_ID 从设备答复: COB-ID Byte0 0x700+Node_ID Bit 7 : toggle Bit6-0 : 状态 ◆从设备可以被配置为产生周期性的被称着“心跳报文”的报文,周期性的发送从设备的状态。
COB-ID Byte0 0x700+Node_ID状态 主设备的监控 如果主设备基于严格循环请求“保护”信息,从设备可以检测主设备的状态。如果从设备在也定义的使用期限内没有收到主设备的请求(保护错误),它会认为主设备故障。这种情况下相应输出进入出错状态并且从设备进入预处理状态。
“保护”协议 在第一个“保护”信息里,“锁住位”(t)的值是0,然后在每个后来的保护信息里,该位都会改变,只有可以显示信息是否丢失。总线头部用7个剩余的位来指示网络状态: 网络状态 响应 被停止 0x04或0x84 预处理 0x7f或0xff 操作 0x05或0x85 四、CANopen设备 CAN总线网络中有如下几类设备: (1) PLC:PLC做CAN上的一个主站,起到中央控制器的作用,对整个系统的工作起安排、调度、执行各个操作等作用。作为CAN网络中的主站,PLC可以访问网络中任何节点的任何可以访问的数据,并起总线监控作用,实时监控总线上各个节点的工作状态,如果出现错误并执行相应的处理程序; (2) 分散式I/O:通常由电源部分、通信适配器部分、接线端子部分组成。 分散式I/O不具有程序存储和程序执行,通信适配器部分接收主站指令,按主站指令驱动I/O,并将I/O输入及故障诊断等信息返回给主站。
(3) 驱动器、传感器、执行机构等现场设备:即带CAN接口的现场设备,可由主站在线完成系统配置、参数修改、数据交换等功能。至于哪些参数可进行通信及参数格式由CANopen行规决定。