CANopen( 二 )


CANopen

文章插图
CANopen参考模型CANopen设备模型:
CANopen

文章插图
CANopen设备模型协定NMT 协定NMT(网路管理, Network management)协定会定义(设备内部)状态机的状态变更命令(如启动设备或停止设备)、侦测远端设备 bootup及故障情形 。NMT master 使用的模组控制协定可变更设备的状态 。其 COB-ID 为 0,其功能码及节点 ID 均为 0,因此网路上的所有节点均会处理这个信息 。在此信息的数据部份会有此信息实际针对节点的ID,此 ID 也可为 0,表示所有节点都要变更为指定的状态 。心跳协定(Heartbeat protocol)是用来监控网路中的节点及确认其正常工作 。心跳信息的生产者(一般是 slave 设备)周期性的送出功能码 1110、ID 为本身节点 ID 的讯息,信息的数据部份有一个表示节点状态的位 。而心跳信息的消费者负责接收上述数据,若在指定时间(于设备的对象字典中定义)内,消费者均未收到信息,可採取相应动作(例如显示错误或重置该设备) 。其格式为:COBID + DATA(status of node) CANopen 设备需要在 bootup 时自动从 Initializing 状态切换至 Pre-operational 状态,设备会在切换完成后送出一个心跳信息,这就是心跳协定 。有一种 pull model 的 NMT 协定,称作节点监控(Node guarding)协定,也可以作从机的监控 。SDO 协定服务数据对象(SDO)可用来存取远端节点的对象字典,读取或设定其中的数据 。提供对象字典的节点称为SDO server,存取对象字典的节点称为SDO client 。SDO 通讯一定由SDO client 开始,并提供初始化相关的参数 。在CANopen的术语中,上传是指由 SDO server 中读取数据,而下载是指设定 SDO server 的数据 。由于对象字典中的数据长度可能超过8个位元组,无法只用一个CAN数据包传输,SDO也支援长数据包的分割(segmentation)和合併(desegmentation) 。这样的对象有二种:SDO下载/上传(SDO download/upload)及SDO区块下载/上传(SDO Block download/upload) 。CANopen协定较新版本支援SDO区块传输,可以允许传输大量的数据,且传输的overhead可以较低 。负责处理SDO数据传输的COB ID可在对象字典中设定 。在对象字典的索引0x1200至0x127F可设定SDO server的COB ID,最多可设定到127个 。而SDO client可以在对象字典的索引0x1280至0x12FF中设定 。不过预定义连结(pre-defined connection set)定义在开机后(Pre-operational状态)可用来设定设备组态的SDO 。接收用的COB ID为0x600 +节点ID,而传送用的COB为0x580 +节点ID 。PDO 协定过程数据对象 (PDO) 协定可用来在许多节点之间交换即时的数据 。可透过一个 PDO,传送最多 8 位元组(64位)数据给一设备,或由一设备接收最多 8 位元组(64位元)的数据 。一个 PDO 可以由对象字典中几个不同索引的数据组成,规划方式则是透过对象字典中对应 PDO mapping 及 PDO 参数的索引 。PDO 分为两种:传送用的 TPDO 及接收用的 RPDO 。一个节点的 TPDO 是将数据由此节点传输到其他节点,而 RPDO 则是接收由其他节点传输的数据 。一个节点分别有 4 个 TPDO 及 4 个 RPDO。PDO 可以用同步或异步的方式传送:同步的 PDO 是由 SYNC 信号触发,而异步的 PDO 是由节点内部的条件或其他外部条件触发 。例如若一个节点规划为允许接受其他节点产生的 TPDO 请求,则可以由其他节点送出一个没有数据但有设定 RTR 位元的 TPDO(TPDO 请求),使该节点送出需求的数据 。藉由 RPDO 也可以使两种设备同时启动 。CANopen 专有名词PDO 过程数据对象 - 对应实际物理量的输入及输出 。数据的单位可能是 RPM, V, Hz, mAmp... 。SDO 服务数据对象 - 一般来说是组态设定的数据,如节点位置、节点ID、通信速度、位移、增益等 。……COB-ID - CAN 对象编号CAN ID - CAN Identifier. 是在每个 CAN 数据前面的信息识别码,共 11 位元 。EDS - 电子数据手册(Electronic data sheet)是 INI 格式或XML格式(从2007年底开始)的档案 。DCF - 设备配置档案(Device configuration file),是加强版的 EDS,可以设定节点 ID 及通信速度 。更多协定介绍,请参考:CANopen应用程式框架图CANopen最小程式开发流程图;