文档详情

Canopen PDO 简介与示例

博****1
实名认证
店铺
DOCX
22.48KB
约6页
文档ID:413190300
Canopen PDO 简介与示例_第1页
1/6

4.PDO 通讯4.1 PDO COB-ID 参数每一个PDO在对象字典内都会有其对应的PDO通讯参数,在使用PDO之前, 必须要先查询对象字典中PDO通讯参数对象内的COB-ID项目(子索引0x01) COB-ID项目内记录了 PDO在传输时会使用的COB-ID,共有32位COB-ID项目每一个位所表示的意义如下表:Bit编号值含义31(MSB)0PDO存在(此PD O有效)1PDO不存在(此PDO无效)300此PDO允许RTR传输1此PDO允许RTR传输29011-bit ID(CAN 2.0A)129-bit ID(CAN 2.0B)28-110若bit 29=0,则此处的数值为0x若bit 29=1 :则此处就是29位COB-ID 内的第28~11位10-0(LSB)xCOB-ID内的第10~0位除了保留的COB-ID以外,其他的COB-ID都能用来自定义PDO的COB-ID, 但要注意避免一个COB-ID在同一节点上被不同的通讯对象重复使用当bit 31=0时,PDO为有效状态,此时PDO的COB-ID的参数不允许更改4.2 传输类型PDO通讯参数含有数个作用不同的参数,其中子索引为0x02的参数为传输 类型,而每一个PDO均可设定其传输类型。

通过传输类型可以了解PDO在传送与 接收时的特性不同类型与PDO传输特性关系表:传输类型PDO传输了方式同步F=ii rH异步循环非循环仅远程传送请求0OO1-240OO241-251reversed252OO253OO254O255O当 TxPDO 的传输类型是 1-240 之间的某个值,则表示需要接收到这么多个 SYNC对象才能够触发TxPDO的传送若RxPDO的传输类型是0-240,则仅需要一 个SYNC对象的接收便可以启用在此之前收到且尚未被启用的RxPDO对象,与传 输类型的数字大小无关仅TxPDO的传输类型可以被设定为252和253,如果传输类型被设定为这两 种时,则只有在接收到此TxPDO的RTR信息时,设备才会对外传送TxPDO传输 类型若被设定为252,则表示设备在接收到SYNC对象时,才会更新TxPDO内的 数据传输类型若被设定为253,则在接收到RTR信息时,设备会更新TxPDO内 的数据传输类型如果被设定为254和255,便可以使用事件定时器(Event Timer) 来触发TxPDO的传送另外若某DI被映射到某个PDO,当此DI的值变化时,也 会触发其对应TxPDO的传送。

对RxPDO而言,若是传输类型被设定为254或255, 则在接收到RxPDO之后,就必须立即启用此RxPDO4.3 PDO 通讯规则根据CANopenDS-301的规范,与PDO有关的对象存放在对象字典中主索引 0x1400到0xlBFF之间每一个PDO的通讯参数对象均会对应到一个映像参数对 象,两者之间为一对一的关系譬如第1组RxPDO通讯参数存放于对象字典中主 索引为0x1400的地方,而其相对应的映射参数存放于对象字典中主索引0x1600 的地方,可依次推得主索引0x1401和0x1601为一对,主索引0x1402和0x1602 为一对TxPDO的通讯参数和映像参数的关系同样遵循这样的关系在用户开始 利用PDO对实际的I/O通道作存取前,必须先取得PDO的通讯参数和映射参数此外,PDO的通讯只能在NMT的操作(Operational)状态下使用,若使用者 要使用PDO来进行数据的传输,可以透过NMT模块控制协议传送模块控制信息, 要求设备改变 NMT 状态为操作状态另外,通过PDO传送信息,PDO内的数据长度必须和其对应PDO映射参数内 所记录的数据长度相吻合,当PDO消费者收到PDO信息时,会根据此PDO的COB-ID 来查找相对应的RxPDO映射参数。

若此PDO内的数据长度m大于其映像参数所记 录的长度n,则PDO消费者只会取前n字节来使用,其余部分丢弃若此PDO内 的数据长度小于其映像参数所记录的长度,则PDO消费者将不会处理这个PDO, 并且会发出一个错误码为8210h的EMCY(Emergency)信息给PDO生产者4.4 PDO 通讯范例4.4.1 读写设备 IO假设CANopen IO设备有16路DI, 16路DO,节点ID为1使用预设COB-ID, 16个DI映射给第一组TxPDO, 16个DO映射给第一组RxPDOPDO传输类型预设 是255,使其输出 0x55AA步骤 1:在使用 PDO 通讯之前,必须将设备 NMT 状态设定在操作状态11 位 COB-ID =000RTR=0DLC=80101000000000000NMT主端 k NMT从端节点:1步骤 2:传送对象字典总第一组 RxPDO 给 IO 设备11 位 COB-ID =201RTR=0DLC=8AA55000000000000PDO生产者 ► PDO消费者COB-ID: 0x201PDO-msg: AA 55 00 00 00 00 00 00根据设备预设 PDO 映射,第一组 RxPDO 只有 2 字节数据,此处的数据长度 DLC 是 8,设备在收到这个 PDO 之后会依据这个 PDO 映射参数处理前面 2 个字节, 后面6个字节丢弃。

第一个字节映射DO通道0〜7,第二字节映射DO通道8〜15 在10设备上第一组RxPDO的预设是255,在收到此PDO之后会立即更新DO通道 状态当 DI 变化时,对象字典内的数值就会发生变化由于第一组 TxPDO 传输类 型是255,当DI变化时,会传送第一组TxPDO给PDO消费者,假如DI状态改变 为 0xDDFF11位 COB-ID=181RTR=0DLC=2FFDDPDO消费者 PDO生产者COB-ID: 0x181PDO-msg: FF DD 00 00 00 00 00 00 数据长度设定为2,因此只有前面 2个字节有效模拟量输出AO与数字量输出DO类似,一个模拟量通道占用2个字节例如, 预设第二组 RxPDO 对应一个 AO 通道 AI 数值变化并不会自动传送 TxPDO 给 PDO 消费者,使用者需要通过RTR远程传送请求,设备收到RTR信息以后会传送AI 的TxPDO给使用者4.1.2 事件计时器步骤1 :利用SDO存取对象字典内主索引为0x1801,子索引为0x05的项目, 将第2组TxPDO的事件定时器数值设定为1000事件定时器内数值的单位为毫 秒,所以此处的 1000 即 1 秒。

11 位 COB-ID =601RTR=ODLC=82B011805E8030000SDO客户端 ► SDO服务端ccs: 1n: 2e: 1s: 1m: 01 18 05d: E8030000 0x03E8即十六进制的1000此外因为n=2,所以最后2字节的内容“0000“没有意义步骤2:如果SDO传输成功,SDO服务端回复以下信息结束SDO通讯11 位 COB-ID =581RTR=0DLC=86001180500000000SDO客户端 SDO服务端scs: 3m: 01 18 05步骤3:更改了事件计时器后,第二组的TxPDO便会以每1秒传送一次4.1.2 非循环同步 RxPDO步骤1:设定第一组RxPDO的传输类型为011 位 COB-ID =601RTR=0DLC=82F00140200000000SDO客户端 > SDO服务端ccs: 1n: 3e: 1s: 1m: 00 14 02d:0011 位 COB-ID =581RTR=ODLC=86000140200000000SDO客户端 SDO服务端scs:3m:00 14 02步骤2:使用第一组RxPDO,让10设备更改DO输出为OxFFOO。

11 位 COB-ID = 201RTR=0DLC=800FF000000000000PDO生产者 ► PDO消费者COB-ID: 0x201PDO-msg: 00 FF 00 00 00 00 00 00步骤3:发送一个SYNC对象给I0设备,触发前一个步骤传输的RxPDOo11 位 COB-ID = 80RTR=0DLC=0SYNC生产者 ► SYNC消费者4.1.2 非循环同步 TxPDO步骤1:设定第一组TxPDO传输类型为0o11 位 COB-ID =601RTR=0DLC=82F00180200000000SDO客户端 ► SDO服务端ccs:1n:3e:1s:1m:001802d:000000 0011 位 COB-ID =581RTR=0DLC=86000180200000000SDO客户端+SDO 服务端scs:3m:00 18 02步骤2: TxPDO传输类型为0,当DI变化后10设备不会自动发送TxPDO,如果收到 SYNC 信息后, TxPDO 就会触发如果 DI 没有变化,即使收到 SYNC 信息也不会触发 TxPDO 的发送11 位 COB-ID = 80RTR=ODLC=0SYNC生产者 ► SYNC消费者步骤 3: IO 设备发送 TxPDO 给使用者。

下载提示
相似文档
正为您匹配相似的精品文档