完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
标签 > CANopen
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通信协协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通信协协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
总述
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。
CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通信协协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
总述
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。
CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。
CANopen优势概述
1.物理层非常稳定;2. 数据链路层可靠,因为相比其他所有总线,只有CAN可以做到达到汉明间距(Hamming Distanz)为6,能够检测报文里多达5个随机引入的位错误及15位突发性错误。3. 灵活,兼容性高;4. 可互操作性高;5. 价格低 (对于设备生产商来说);6. CAN产品尺寸小,节省空间;7.支持冗余备用
CANopen 基础
1. TPDO和RPDO都是针对从站来说的,协议上没有有讲任何一个关于主站的概念,协议就只是定义从站,没有定义主站任何东西。
TPDO:从站-》主站
RPDO:主站-》从站
2. PDO的COB-ID是用来唯一标识一个PDO报文的,不同的PDO设置不同的COB-ID。
3. 主站和从站的通信过程基本是这样的:
a.主站检测从站是否在线;
b.在线的话开始通过SDO配置从站;
c.配置成功,则发送一个NMT start remote node指令让从站进入Operation状态,开始PDO的通信。
4. CANopen所定义的所有Object都是要在从站上实现的,只是数值是由主站在开始PDO传输前通过SDO写入的。
5. 标识符正如其名,是CAN帧的一个标识,CANopen使用了这个标识符,并且把它定义为COB-ID,规定了高四位为功能码,低7位为节点ID,但是,CANopen并没有规定每个节点发出的所有帧都必须带上自己的ID,也没有规定接收的帧都必须跟自己的ID匹配,所以从根上说,COB-ID还是标识符的作用,它只是被规划了一下含义,举两个例子:PDO,COB-ID的组成即可以是发送方ID也可以是接收方ID,看你方便和具体使用规律;SDO,规定了使用server的ID来沟通。CANopen的预定义连接集是比较纠结,描述的不够清晰。
6. Heartbeat并不分主站和从站,仅是一种断线检测机制,主站可以发给从站,从站也可以发给主站,看用户的需求,一般的主站配置软件都可以设置主站或从站是否要监控对方的在线状态。
支持heartbeat的从站,都有1016和1017两个参数,1017的数值表示从站送出heartbeat报文的间隔时间,1016表示从站监控主站或其它从站的超时时间(如果从站支持,可以同时监控主站或其它从站的在线状态,根据应用需求而定),所以1016是一个数组型的参数。
当主站在consumer的时间内没有收到从站的Heartbeat(producer时间间隔发送),那么认为从站掉线。
7. 实现CANOPEN的步骤:
① CANopen 协议体系的实现;
② CANopen 相应开发和配置工具的实现。
第2 阶段主要完成CANopen 标准开发工具的开发,开发过程可以分为 2 个步骤:第1 个步骤是EDS 和DCF 配置工具的开发;第2 个步骤是开发实现对象字典的工具。
实现对象字典的过程是:将EDS和DCF用“文件转化工具”转化为“内部实现描述(XML)”,再用“目标配置代码工具”从而实现对象字典。
EDS就是提供从站的一些默认的参数值给主站的组态软件,供用户配置从站的时候使用,EDS不是必须的,但大多数的主站配置软件都需要,有些主站软件也不需要EDS文件,比如Bechkoff的主站就不需要从站提供EDS文件。
8. 一般每个节点既可以作为server又可以作为client,server向client开放自己的OD供访问,两者的parameter都存放在设备唯一的OD中。
9. 不同的传输类型支持几种不同的数据传输方式:
① 同步触发,由同步帧触发,以同步整个网络数据,不同的数据频率通过设置不同的同步数实现。
② 事件触发。
③ 内部定时触发(也可以归到事件触发) 。
10. 同步PDO的实际意义与应用场合
应用程序刷进对象字典时间和频率都是由编程人员自行确定的,你可以根据PDO的类型自行确定,比如每隔5个sync的时间刷新一次对象内容,这样数据的新鲜程度是5个sync,如果要求更进一步的新鲜程度,你可以在刷新对象内容后直接触发一帧PDO。
同步PDO在实际应用中的优势:很多,提供一致的系统节拍,使得总线的数据尽量保证新鲜程度的同时,能够减少通讯量,合理的规划总线占用率。比如总线分布式的控制回路,怎样保证控制周期的准确性和数据的有效性呢?
同步传输的最重要应用是多轴同步控制,沒有这种同步机制,多轴传动功能是沒有办法实现的。
PDO只是个载体,或者说它好比一辆货车,车厢里装什么货,是可以配置的,这些由PDO映射来完成,PDO映射用来指定把对象字典的那些对象装进PDO,或者从接收的PDO中将数据放到那些对象中。
SYNC周期是恒定的,它基本上就是系统通信部分的节拍了,节拍乱了,一切都是浮云了。
11.CAN及CANOPEN通讯协议大全
12. 移植canfestival到ARM上的步骤:
1)在学习移植CANopen之前要先熟悉CAN,能够使用CAN进行节点间的通信设计。
2)熟悉CAnopen协议,通读一遍301协议,并且结合国内的一些介绍性资料了解一下CAnopen的结构、定位和工作方式。
3)结合一些较简单的协议栈代码,比如置顶的两套小代码,能够读懂一个,明白运行过程,最好能移植到你的硬件上试一下,毕竟它的代码量较之CANFestival要小的多。
4)准备移植CANFestival,先在你熟悉和有条件实验的平台下,比如x86的windows下试着编译运行CANFestival(我记得有window的vc工程可以编译的)。熟悉和理解CANFestival,最后再把CANFestival移植到你的目标平台,可能会需要编写硬件接口驱动的。
13. 心跳报文是单向的,一般的主站都可以提供配置的方法,你可以让主站监控从站是否断线,也可以让从站监控主站是否断线,或者两个一起互相监控。
14. 一般的主站都需要一个配套的配置软件,我们习惯叫网络组态软件(Configuration tool software),让用户可以根据自己的需求来对网络进行配置。
15. 同步和异步,是针对不同的应用需求定义的方式,如果你的控制在各个从站间不需要配合,其实异步是比较科学的方式,一般同步都是运动控制中使用。
16. EDS文件只是一个具有可读性的设备对象字典的描述,设备实际的对象字典,是对它的软件实现,即设备实现了这个EDS所描述的对象字典,如果从站资料里面EDS文件支持读写,而实际访问却不可写,要么是从站没按照这个对象字典实现,要么是有其它的条件开启写入功能,比如物理开关或者参数开关。最好还是详细阅读一下从站的资料,也可以咨询该设备的供应商。
17. dummy在CANOPEN里原本的意思是空的,没有意义的对象,用来占用PDO的数据,以达到调整PDO数据结构的目的。你基本上可以理解它的作用是会占用PDO的数据区,但不起作用。
耐用通讯 Canopen 转 modbus 网关在改造项目中的应用
关键字:Canopen转Modbus RTU、canopen机器人、视觉采集、 一、 摘要 客户要求是在工厂项目改造中,将六轴机器人控制器与工业照相机进...
在CAN/CANopen产品开发过程中,数据分析是非常关键的一环。数据帧分析软件就如您工作中的万能工具。不但能够抓取CAN数据包,还应能够协助您分析数据...
启动管理器实现了CiA 302中定义的CANopen网络的启动功能。CANopen Manager可以配置为根据设备类型(0x1000)和身份数据(0x...
浅谈CM CANopenS7-1200 PLC的CANopen连接
MS Industrial Networks 的 CM CANopen 模块与 Siemens 的 S7-1200 PLC 的 TIA Portal 配...
CANOpen系列教程10_ 关于Canfestival及对象字典生成工具环境搭建
CANOpen系列教程10_关于Canfestival及对象字典生成工具环境搭建
CANOpen系列教程01_ 初识CAN与CANOpen及相关内容
CANOpen系列教程01_初识CAN与CANOpen及相关内容
CANOpen系列教程04 _CAN总线波特率、位时序、帧类型及格式说明
CANOpen系列教程04_CAN总线波特率、位时序、帧类型及格式说明
CANOpen系列教程11_ 深度分析CanFestival_3架构
CANOpen系列教程11_深度分析CanFestival_3架构
编辑推荐厂商产品技术软件/工具OS/语言教程专题
电机控制 | DSP | 氮化镓 | 功率放大器 | ChatGPT | 自动驾驶 | TI | 瑞萨电子 |
BLDC | PLC | 碳化硅 | 二极管 | OpenAI | 元宇宙 | 安森美 | ADI |
无刷电机 | FOC | IGBT | 逆变器 | 文心一言 | 5G | 英飞凌 | 罗姆 |
直流电机 | PID | MOSFET | 传感器 | 人工智能 | 物联网 | NXP | 赛灵思 |
步进电机 | SPWM | 充电桩 | IPM | 机器视觉 | 无人机 | 三菱电机 | ST |
伺服电机 | SVPWM | 光伏发电 | UPS | AR | 智能电网 | 国民技术 | Microchip |
开关电源 | 步进电机 | 无线充电 | LabVIEW | EMC | PLC | OLED | 单片机 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 蓝牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太网 | 仿真器 | RISC | RAM | 寄存器 | GPU |
语音识别 | 万用表 | CPLD | 耦合 | 电路仿真 | 电容滤波 | 保护电路 | 看门狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 阈值电压 | UART | 机器学习 | TensorFlow |
Arduino | BeagleBone | 树莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 华秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |