CANopen的相关学习

摘要:
由于CAN总线只定义了物理层和数据链路层,并没有定义应用层,因此需要CANopen通信协议来统一度量,把各种设备标准化。CANopen实现了OSI模型中的网络层以上的协定。标准的CANopen页框:CANopen将CANbus的11位元ID称为通讯对象ID。分为4位元的功能码及7位元的CANopen节点ID。7位元的ID共有128种不同的组合,其中ID0不使用,因此一个CANopen网络上最多允许127台设备。

CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。

由于CAN总线只定义了物理层和数据链路层,并没有定义应用层,因此需要CANopen通信协议来统一度量,把各种设备标准化。CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。

标准的 CANopen页框:

CANopen的相关学习第1张

CANopen 将 CANbus 的 11 位元 ID 称为通讯对象 ID (COB-ID)。分为 4 位元的功能码及 7 位元的 CANopen节点ID。

7 位元的 ID 共有 128 种不同的组合,其中 ID 0 不使用,因此一个 CANopen 网络上最多允许 127 台设备。

应用CANopen时,需要传递的配置信息和应用信息都放在过程数据对象PDO(Process data object)和服务数据对象SDO(Service data object)

过程数据对象(PDO)服务

PDO分为TPDO和RPDO

CANopen的相关学习第2张

PDO属于过程数据,单向传输,无需接收节点回应CAN报文来确认,属于“生产消费”模型

一个节点分别有 4 个 TPDO 及 4 个 RPDO 。

PDO的触发方式:

  • 事件触发Event:
当数据变化时,立刻发送出去,不需要等待主机轮训才发送,所以实时性好,而且避免重复数据占用大量总线占用资源,就像数据压缩了一样。事件驱动类型的RPDO可立即处理收到的数据。
  • 远程请求或轮询RTR:
此方式就像485通信一样,主控主动远程请求或者轮询,子设备才发送PDO。因为市面上有一些不支持远程帧的CAN控制器,不建议使用。
  • 同步传输SYNC:
CAN总线上有一个设备作为SYNC信号的生产者,其他设备作为消费者。生产者和消费者都又SYNC计数功能,消费者计数到一定时(1~240),自动发送PDO。
  • if(同步传输&&事件触发):
顾名思义,不仅满足定时还满足事件触发,才发送PDO。

CANopen的相关学习第3张

服务数据对象SDO

服务数据对象用于读写节点的对象字典,现只实现SDO下载和上传的全速模式,不支持正常模式也不支持块下载和上传,因为数据量不大,实现的功能足够用,SDO全速下载和上传采用应答式服务,由监控终端向节点发送服务请求,由节点返回应答。

CANopen的相关学习第4张

SDO属于服务数据,“服务器客户端”模型,轮询式

SDO传送机制:

加速传送(Expedited transfer):最多传输4字节数据

分段传送(Segmented transfer):传输数据长度大于4字节

块传送(Block transfer):当传送数据长度大于4字节时,多个分段只由一个确认报文应答以增加总线吞吐量

对象字典OD

CANopen 设备都需要具备对象字典(Obiect Dictionary),用来设定设备组态及进行非即时的通讯。

是一个有序的对象组,每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引。

三个子协议:

通信子协议描述对象字典的主要形式,以及对象字典中的通信对象和参数。适用于所有的CANopen设备,索引值范围为0x1000~0x1FFF

制造商自定义子协议根据需求定义对象字典项,索引值范围为0x2000~0x5FFF

设备子协议为各种不同类型的设备定义对象字典中的对象,其索引值范围为0x6000~0x9FFFF

CANopen的相关学习第5张

免责声明:文章转载自《CANopen的相关学习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇1-key nrf52832c#判断输入textbox是否为数字下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

高通创始人复盘30年发展历程

美国西海岸时间12月12日,在圣迭戈高通总部,我们见到了久违的艾文·雅各布(Irwin Jacobs,以下简称艾文)。   这是一位已经被写入传奇的老人。   最早,他在大学学习的是酒店管理,但只学了一年半,就果断转学电子工程,最终在麻省理工学院取得博士学位后留校任教。1968年,他辞去做了13年的老师工作,与两位同伴共同创业,成立了一家知名的技术咨询公司...

ESP8266使用详解

[From] http://www.cnblogs.com/yangfengwu/p/5205570.html 用的这款   各引脚功能:来至厂家提供的资料 GPIO0 默认是工作模式(不接线)。如果接了低电平就是下载模式(给模块刷固件!!),所以可以不接线,当然也可以接高电平。 反正一开始连接的时候CH_PD必须为高电平。其余的可以不接。...

高性能 Windows Socket 组件 HPSocket

高性能 Windows Socket 组件 HP-Socket v2.1.1 正式发布(源代码及测试用例下载) HP-Socket   以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket。现在把 HP-Socket 的所有代码向大众公开,希望能对大家有所帮助;另外,为了让大家能更方便的学...

java和vb进行socket通信以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决

java和vb进行socket 以及java与c/c++/oc 进行socket通信时汉字字符串编码问题解决 我遇到的是 java 编码字符集采用 UTF-8 编码字符采用2+字符 我测试的代码如下 System.out.println("UTF-8:a->" + "a".getBytes("UTF-8").length); System....

一、OpenTCS4.12 创建一个新的通信驱动

很多人研究这个平台,都会卡在第一步,如何创建一个新的通信驱动, 官方文档也没怎么写清楚 今天写这个博客,是为了帮助大家创建一个新的驱动(具体的通信,我这儿就不讲解) 一、首先在官网下载4.12的源码http://www.opentcs.org/en/download.html 二、安装IDE 我这儿使用的是NetBeans8.2(不会装的就别学JAVA了)...

开网页自动进入路由器设置界面的解决办法(腾达路由器)

腾达路由器设置完毕后,开网页自动进入路由器设置界面,并且WAN口状态显示连接中 问题1:显示“连接中”怎么办? 原因1:路由器WAN口的上网方式选择错误。 解决方法:进到路由器设置页面,点击“高级设置”-“WAN口设置”选择正确的上网方式. 原因2:宽带的账号和密码输错了或者没有区分大小写 解决方法:输入正确的宽带帐号和密码,注意区分帐号密码大小写。 原...