CANopen轻松入门五

[复制链接]
查看60427 | 回复0 | 2024-1-9 08:28:53 | 显示全部楼层 |阅读模式
1、过程数据对象PDO(Process data object)

如前文所述PDO属于过程数据用来传输实时数据,即单向传输,无需接收节点回应CAN报文来确认,从通讯术语上来说是属于“生产消费”模型PDO,如图所示,就像食品销售柜台,生产者摆出“食品”,但只有“需要”的消费者才会来买,没有指向性



生产者消费者模型

数据长度被限制为1~8 字节。最多只要1帧就可以把一条信息或者一个变量传递结束。

1.PDO的CAN-ID定.

PDO通信比较灵活,广义上只要符合PDO范围内的所有CANID都可以作为节点自身的TPDO或者RPDO使用,也称为COB-ID,不受功能码和Node-ID限制,如图所示。



PDO的CANID规则

而在PDO预定义中,人为规定了TPDO和RPDO,规定了Node-ID在PDO中的位置,规定了PDO的编号,如表所示。



PDO的CANID定义

PDO分为TPDO(发送PDO)和(接收RPDO),发送和接收是以CANopen节点自身为参考(如果CAN主站或者其他从站就相反)。TPDO和RPDO分别有4个数据对象,每种数据对象就是1条CAN报文封装,这些都是数据收发的容器,就像图所示,水果箩筐为使用者准备好,就看使用者在里面放什么水果了。

当然,如果某个节点需要传递的资源特别多,则有出现例如TPDO5之类的数据对象,而它们的CAN-ID定义就需要打破预定义的规则,比如我们可以定义Node-ID为1的节点中TPDO5是182h,这里的PDO的COB-ID中的低7位不再是表示Node-ID。其实所有的PDO的COB-ID与Node-ID无必然规则上的联系。

2.PDO的传输形式

PDO的两种传输方式:同步传输和异步传输。如图所示,1、2为异步传输,3、4为同步传输。



PDO的传输形式

异步传输(由特定事件触发)

其触发方式可有两种,第一种是由设备子协议中规定的对象特定事件来触发(例如,定时传输,数据变化传输等)。第二种是通过发送与PDO的COB-ID相同的远程帧来触发PDO的发送。目前应用中的异步传输基本都采用第一种。

同步传输(通过接收同步对象实现同步)

同步传输就是通过同步报文让所有节点能在同一时刻进行上传数据或者执行下达的应用指令,可以有效避免异步传输导致的应用逻辑混乱和总线负载不平衡的问题。一般发送同步报文的节点是NMT主机。

同步传输又可分为周期传输(循环)和非周期传输(无循环)。周期传输则是通过接收

同步对象(SYNC)来实现,可以设置1~240个同步对象触发。非周期传输是由远程帧预触发或者由设备子协议中规定的对象特定事件预触发传送

3 PDO的通信参数

PDO通信参数,定义了该设备所使用的COB-ID、传输类型、定时周期等。RPDO通讯参数位于对象字典索引的1400h to15FFh,TPDO通讯参数位于对象字典索引的1800h to 19FFh。每条索引代表一个PDO的通信参数集,其中的子索引分别指向具体的各种参数。如表所示



PDO的通讯参数

Number of entries参数条目数量:即本索引中有几条参数;

COB-ID:即这个PDO发出或者接收的对应CAN帧ID;

发送类型:即这个PDO发送或者接收的传输形式,通常使用循环同步和异步      制造商特定事件较多;

Inhibit time生产禁止约束时间(1/10ms):约束PDO发送的最小间隔,避免导致总线负载剧烈增加,比如数字量输入过快,导致状态改变发送的TPDO频繁发送,总线负载加大,所以需要一个约束时间来进行“滤波”,这个时间单位为0.1ms;

Event timer事件定时器触发的时间(单位ms):定时发送的PDO,它的定时时间,如果这个时间为0,则这个PDO为事件改变发送。

SYNC start value同步起始值:同步传输的PDO,收到诺干个同步包后,才进行发送,这个同步起始值就是同步包数量。比如设置为2,即收到2个同步包后才进行发送。

4 PDO的映射参数

PDO映射参数是初学者学习CANopen时的一个难点,它包含了一个对象字典中的对象列表,这些对象映射到相应的PDO,其中包括数据的长度(单位,位),对于生产者和消费者都必须要知道这个映射参数,才能够正确的解释PDO内容。就是将通信参数、应用数据和具体CAN报文中数据联系起来。

RPDO通讯参数1400hto15FFh,映射参数1600hto17FFh,数据存放为2000h之后厂商自定义区域;TPDO通讯参数1800hto19FFh,映射参数1A00hto1BFFh,数据存放为2000h之后厂商自定义区域。

为了更加直观地表现映射,表模拟TPDO1,将参数、应用数据、CAN报文数据联合起来展示,不同的映射采用不同的颜色。



PDO在对象字典的映射关系

2、服务数据对象SDO(Service data object)

SDO主要用于CANopen主站对从节点的参数配置。服务确认是SDO的最大的特点,为每个消息都生成一个应答,确保数据传输的准确性。如图所示,这就像快递,需要收方签收后,给寄方发送一个已经签收的确认才算完成一次投递



SDO与快递签收

在一个CANopen系统中,通常CANopen从节点作为SDO服务器,CANopen主节点作为客户端(称为CS通讯)。SDO客户端通过索引和子索引,能够访问SDO服务器上的对象字典。这样CANopen主节点可以访问从节点的任意对象字典项的参数,并且SDO也可以传输任何长度的数据(当数据长度超过4个字节时就拆分成多个报文来传输)。

1.通讯原则(communication principle)

SDO的通讯原则非常单一,发送方(客户端)发送CAN-ID为600h+Node-ID的报文,其中Node-ID为接收方(服务器)的节点地址,数据长度均为8字节;

接收方(服务器)成功接收后,回应CAN-ID为580h+Node-ID的报文。这里的Node-ID依然是接收方(服务器)的节点地址,数据长度均为8字节



SDO通讯原则

2.快速SDO协议(Expedited SDO protocol)

最常用最常见的SDO协议是快速SDO,所谓快速,就是1次来回就搞定。前提是读取和写入的值不能大于32位。如图所示,为快速SDO协议的示意图。命令中直接包含了要读写的索引、子索引、数据。可谓直接命中。

快速SDO的难点在于CS命令符的记忆,需要读者收藏这个示意图



快速SDO示意图

通过快速SDO,可以直接对CANopen节点的对象字典中的值进行读取和修改,所以在做参数配置之外,也经常作为关键性数据传输之用。比如CANopen控制机器人的电机转动角度时,就使用SDO来传输,保证可靠

3 普通SDO协议(Normal SDO protocol)

当需要传输的值超过32位时,就不能使用快速SDO传输。必须使用普通SDO进行分帧传输。在应用中较少用到,一般用于CANopen节点的程序固件升级,或者做网关转换MVB总线之类数据最大可达256位的应用。

普通SDO协议难点在于分包逻辑与CS命令符的变化。依然难以记忆,需要读者将以下示意图进行收藏。

当然普通SDO的CAN帧ID与快速SDO相同,依然发送方(客户端)发送的报文CAN-ID为600h+Node-ID,接收方(服务器)成功接收后,回应CAN-ID为580h+Node-ID的报文

3.1. 下载协议download protocol



3.2上传协议upload protocol如图



                   本文章转载自广州致远(原文作者周立功、黄敏思)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则