CANopen 通信行规特性
CANopen 应用于多种领域。最初由从事工业控制的CiA(CAN in Automation)会员开发的CANopen 网络也应用于越野车、海上电子设备、医疗设备、甚至于还可应用于公共汽车和铁路。
CANopen 是基于CAN(控制局域网)串行的总线系统的网络系统,CANopen 应用层和通信行规(CiA DS-301 和CiA DSP302)既支持对设备参数的直接存取,也支持对时间苛求的过程数据通信。
CANopen 的设备接口和应用行规(CiA DS-4XX)定义标准化的应用对象和基本功能。CANopen 网络管理服务简化了项目设计、系统集成和诊断。在每个分散的控制应用中都有各自所需的不同的通信对象。在CANopen 总线上,所有这些通信对象都是标准化的,并在通信字典中详尽地进行了描述。CANopen 对象字典可以用一个16 位的索引进行存取,在数组和结构的情况下再用一个8 位的子索引。该字典也描述了设备的全部应用对象。此外,设备制造商可定义非标准化的应用对象。CANopen 对象字典允许在一个物理的CANopen 模块上实现8 台虚拟设备。
*通信对象
CANopen 指定有四类通信对象,用8 个字节的数据字段把过程数据对象PDO(Process Data Objects)映象到一个单一的CAN 帧,从而传输应用对象。每个PDO 有一个唯一的标识符,且可以仅通过一个节点发送。但其接受者可不止一个(生产者/消费者通信)。 发送PDO 可用多种方式,如由内部事件驱动、由内部定时器驱动、由远程请求驱动和由接收到来自特定的节点的一个同步信息驱动。应用对象和支持的传送方式的缺省映象在对象字典中对每一个PDO 都作了描述,PDO 标识符具有高优先级,以确保良好的实时性能,如果需要硬实时控制,那么系统的设计者可为每个PDO 组态一个禁止时间(inhibit-time), 该“禁止时间”严禁在特定的时间内发送这个对象,因此,设计者可对多个对象设计一个确定的PDO 行为。发送PDO 无需确认。在PDO 映象对象中定义了被在PDO 内传送的应用对象,它描述了所映象的应用对象的顺序和长度。在预操作状态(Pre-Operational State)期间,支持动态PDO 映象的设备必须支持这个功能,若在预操作状态下支持动态映象,则服务数据对象SDO 客户负责数据的一致性。
第二类通信对象是传送组态数据的服务数据对象SDO(Service Data Objects)。组态数据有时多于8 个字节。SDO 传输协议允许传送任意长度的数据对象,第一段内的第一个字节包含必须的数据流控制信息,它包括为克服众所周知的双重接受CAN 帧的问题而设置的一个触发位,第一段内的第2-4 字节包含要读出或写入的对象字典登入项的索引和子索引,第一段内的最后四个字节可用于组态数据。用同样的CAN标识符,第二段以及其后继段包含控制字节和多达7 个字节的组态数据,接受者确认每个字节以便有点对点通信(客户/服务器)。
第三类通信对象是网络管理对象:节点保护对象(Node guarding Object)和NMT对象。节点保护对象是由NMT 主站节点远程请求的具有一个字节的CAN 帧,数据字节主要包含节点的状态,节点保护时间在对象定期发送。节点保护时间在对象字典中也作了规定,并且可以由SDO 进行组态。此外,还规定了保护时间寿命(Life Guarding Time), 在该时间区内NMT 主站必须保护一个NMT 从站,这就确保了即使在主站不存在的情况下,节点仍能以用户指定的方式作出反应。NMT 对象映象到一个单一的带有2 个字节数据长度的CAN 帧,它的标识符为0。 第一个字节包含命令说明符,第二个字节包含必须执行此命令的设备的节点标识符(当节点标识符为0 时所有的节点必须执行此命令)。 由NMT 主站发送的NMT 对象强制节点转换成另一个状态。CANopen 状态机规定了初始化状态,子程序操作,操作状态和停止(正式为:准备)状态。在加电后每个CANopen 处于初始化状态,然后自动地转换到预操作状态,在此状态下提供了同步对象和节点保护,还允许SDO 的传送。如果NMT 主站已将一个或多个节点设置为操作状态则允许他们发送和接受PDO。 在停止状态除NMT 对象外,不允许通信。初始化状态又分成三个子状态,以使全部或部分的节点复位。在Reset_Application 子状态中,制造商专用(manufacture-specific)行规区域和标准化设备行
规区域的参数均设置成它们的缺省值。在Reset_Communication 子状态中,通信行规区域的参数设定为它们的通电(power-on)值。第三个子状态是初始化状态,在通电后或复位通信后或复位应用后节点自动地进入此状态,通电值(Power-on)是上一次存储的参数。
CANopen 还定义了三个特定的用于同步应急指示和时间标记的对象。同步对象由同步发生器定期广播,该对象提供了基本网络时钟,同步报文之间的时间由通信循环周期对象定义,它可在boot-up 过程由组态工具写入到应用设备,可能会产生时间偏差,产生偏差的原因或者是由于存在一些其它的具有较高优先权标识符的对象,它是由同步发生器传送过程中产生的或者由在同步对象之前正在传送的那个帧造成的,同步对象被映象到一个单一的带有标识符128 的帧,用缺省配置,同步对象不带任何数据,但它可具有多达8 个字节的用户专用数据。
应急对象由设备内部出现致命错误来触发,并从相关应用设备上的应急客户发送,因此应急对象适用于中断类型的报警信号。每个“错误事件”(error event)只能发送一次应急对象,只要在设备上不发生新的错误就不得再发送应急对象,零个或多个应急对象消费者可接受这些。应急消费者的反应是由应用指定的。CANopen 定义了应急对象中要传送的若干个应急错误代码,它是一个单一的具有8 个数据字节的CAN 帧。
利用时间标记对象(Time Stamp Object), 一个通用的时间帧参考被提供给应用设备,它包含一个时间和日期的值,该对象传送紧跟在生产者/消费者推进方式(Push mode)之后,相关的CAN 帧有标识符256 和一个6 个字节长度的数据字段。
*标识符的地址分配
由于CAN 是一种面向网络的通信对象(COB), 在网络中每个COB 有一个或多个关联的标识符。标识符隐含地指定了它的优先级,因此,对COB 的标识符的地址分配是系统设计中的一个主要方面。为了减少组态工作量,为CANopen 网络定义了强制性的缺省标识符地址分配表,这些标识符在预操作状态中是可用的,通过动态的分配还可以修改它们。CANopen 设备必须提供它所支持的通信对象的相应的标识符缺省行规ID。 地址分配表包含一个功能部分和一个模块ID 部分,该功能部分决定对象的优先级,而ID 模块部分(module-ID-part)在相同功能的设备间进行区分。ID地址分配表与预定义的主/从连接集(set)相对应,并允许在单主与多达127 个从站设备之间进行点对点(peer-to-peer)通信。它也支持非确认的NMT 广播、同步和时间标记对象。预定义的主/从连接集支持一个应急对象,一个SDO, 2个接收PDO(Receive-PDO),2 个发送PDO(Transmit- PDO)和节点保护对象(Node Guarding Object)。 为优化标识符的地址分配,系统设计者可改变标识符的地址分配,这种改变可静态地完成,也就是说在系统运行期间标识符是固定的。动态分配即:用SDO 服务通过CAN 网络分配标识符。动态分配是基于CANopen 系统的优选方法,为了把数据项传送到网络中的正确地点,有时必须把Transmit-PDO 与Receive-PDO 连接在一起,它们从某台设备发送,而由其它设备接收,在缺省标识符分配不满足的系统内情况就是如此。在PDO 链接过程中,系统设备者必须小心,传输PDO(Transmit-PDO)具有各自唯一的标识符,且被链接的PDO 的数据长度是相同的。
页:
[1]