当前位置:文档之家› Canopen

Canopen

Canopen
Canopen

Canopen简介

以下是所有CANopen 设备都要具备的功能:

通讯单元处理和网络上其他模组通讯所需要的通讯协定。

设备的启动及重置由状态机(state machine)控制。状态机需包括以下的几个状态:Initialization, Pre-operational, Operational 及Stopped。当接收到网络管理(NMT) 通讯对象,状态机会转换到对应的状态。

对象字典(Object Dictionary)

对象字典是一个有16 位元索引(Index) 的变量阵列。每个变量可以(但非必须)有8 位元的子索引(Subindex)。变量可用来调整设备的组态,也可以对应设备量测的资料或设备的输出。

当状态机设定为operational之后,设备的应用(application) 部份就会实现设备预期的机能。此部份可以由对象字典中的变量调整其设定,而资料由通讯层传收或接收。

对象字典

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

1、索引(Index):对象16 位元的位址。

2、对象名称(Object name):一个代表对象的symbolic type,可以是阵列、纪录或只是一个变量。

3、名称(Name):描述此entry 的字串。

4、形态(Type):变量的资料形态。

5、属性(Attribute):提供此entry 是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。

6、必须(Mandatory)/可选(Optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。

在CANopen 标准中定义了对象字典中的基本资料型态,包括逻辑值、整数及浮点数。也定义了复合对象:如阵列、记录及字串。复合对象用一个8 位元的数值作为其子索引(subindex)。记录或阵列中子索引0 的位置记录此数据结构的元素个数,资料型态为UNSIGNED8。

例如在CiA301 标准中,设备通讯的参数放在索引范围0x1000 - 0x1FFF (通讯行规区)。此区域的前几项如下:

若配合适当的工具,可以用编辑电子资料表(electronic data sheet, EDS)档案的方式规划一个设备,并且将变量的数值上传到设备中。EDS 档案的格式通常会是INI档。

通讯对象

CANopen 的物理层CANbus 每次传送的资料量不大,其中包括11 位元的ID、远端传输请求(RTR)位元及大小不超过8字节的资料。CANopen 将CANbus 11 位元的ID 分为 4 位元的功能码及7 位元的CANopen 节点ID。7 位元的ID 共有128 种不同的组合,其中ID 0 不使用,因此一个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 的功能码,因此数值小的功能码表示对应的功能重要,允许的延迟时间较短。

始化后,有些功能码和COB-ID 会对映到标准的功能,不过后续仍可以规划为其他用途。

通讯模型

CANopen 设备间的通讯可分为以下三种通讯模型。

1、在主从master/slave 模型中,一个CANopen 设备为master,负责传送或接收其他设备(称为slave)的资料。NMT 协定就使用了master/slave 模型。

2、客户端/服务器(client/server)模型定义在SDO 协定中,SDO client 将对象字典的索引及子索引传送给SDO server,因此会产生一个或数个需求资料(对象字典中,索引及子索引对应的内容)的SDO 封包。

3、生产者/消费者(producer/consumer)模型用在Heartbeat and Node Guarding 协定。由一个生产者送出资料给消费者,同一个生产者的资料可能给一个以上的消费者。又可分为二种:

1)、push-model:生产者会自动送出资料给消费者。

2)、pull-model:消费者需送出请求讯息,生产者才会送出资料。

协议

1、NMT(网络管理, Network management)协议是用来发布(设备内部)状态机的状态变更命令(如启动设备或停止设备)、以及监测远端设备启动及故障情形。

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

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

其格式为:

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。

以下用SDO 下载来说明SDO 的协定,SDO client 在要启始下载时,会送出CAN 讯

1、ccs 是SDO 传输时client 指令的识别码,可分为以下几种:

0:SDO区域下载

1:启始下载

2:启始上传

3:SDO区域上传

4:中断SDO传输

2、n为此讯息中实际资料的长度,只有在e和s设定时有效

3、e若设为1,表示是快速传输(expedited transfer),目前讯息即包括了所有要传输的资料。若设为0,表示要传输的资料无法用一个讯息传送,会分割为数个讯息。

4、s若设为1,且e也设为1,表示资料长度记录在n。若n设为0,表示实际完整资料的长度会放在此讯息中的资料字段中。

5、索引是要存取资料的对象字典索引。

6、子索引是要存取变量的子索引。

7、资料在快速传输(e=1)时是要上传的资料,若s=1且e=0,则是实际资料的长度。

进程数据对象(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 也可以使两个或两个以上的设备同时启动。只要将其RPDO 对应到相同的TPDO 即可。

同步(SYNC) 协定

同步协定使用生产者/消费者模型。同步生产者(Sync-Producer)会定时产生同步信号供同步消费者(Sync-Consumer)使用。当同步消费者收到信号,即可以进行已规划好的同步工作。[4]

同步信号会定时产生,若有PDO 是由同步信号引发,透过PDO 传送时间及同步信号传送周期之间的调整,可以使传感器定期的取様,而致动器也可以根据最新的输入信号产生对应的输出。

在对象字典中,同步对象的索引为0x1005,可透过编辑此对象启动同步协定。

时间标记对象(TIME) 协定

一般而言,时间标记对象的内容是从1984年1月1日午夜之后到现在之间经过的时间,单位为毫秒。为一个48位元(6字节)的数值。

不过有些应用会要求时间要非常精确,这种情形会需要精准的同步,尤其是在大型网络,通讯速度受限时更是如此。此时需要将各设备的时钟同步,精准度要到毫秒的等级。这个要求可透过高分辨率的同步信号达成,在同步信号中也包括了另一种时间标记,可供各设备调整时钟用。

同步信号中的时间标记型态为unsigned32,单位为 1 毫秒,因此时间标记会在每72 分钟归零重新计数。

紧急对象(EMCY) 协定

初始化

以下是在master初始化2个压力传感器(ID 分别为1 和2)中,通讯的资料。

CANopen 专有名词

1、PDO 程序资料对象- 对应实际物理量的输入及输出。资料的单位可能是RPM, V, Hz, mAmp...。

2、SDO 服务资料对象- 一般来说是组态设定的资料,如节点位置、节点ID、通讯速度、位移、增益等……。

3、COB-ID - CAN 对象编号

4、CAN ID - CAN Identifier. 是在每个CAN 讯息前面的讯息识别码,共11 位元。

5、EDS - 电子资料档(Electronic data sheet)是INI 格式的档案。

6、DCF - 设备组态档案(Device configuration file),是加强版的EDS,可以设定节点ID 及通讯速度。

相关主题
文本预览
相关文档 最新文档