CANopenNode学习笔记(一)--- README翻译

2023-05-16

CANopenNode学习笔记

文章目录

  • CANopenNode学习笔记
    • 特性
      • CANopen
      • 其他
    • CANopenNode 流程图
    • 文件结构
    • 对象字典编辑器

CANopenNode 是免费开源的CANopen协议栈。
CANopen是建立在CAN基础上的用于嵌入式控制系统的国际标准化(EN 50325-4) (CiA301)高层协议。有关CANopen的更多信息,请参见http://www.can-cia.org/
CANopenNode是用ANSI C语言以面向对象的方式编写的。它运行在不同的微控制器上,作为裸机应用或带RTOS应用。
通信变量、设备变量、自定义变量收集在CANopen对象字典中,可以从C代码和CANopen网络访问。
CANopenNode的主页为https://github.com/CANopenNode/CANopenNode
这是CANopenNode的第4版,带有新的对象字典实现。对于旧版本,git签出分支v1.3-master或v2.0-master。

特性

CANopen

Object Dictionary提供清晰和灵活的组织任何变量。变量可以直接访问或通过读/写函数访问。
NMT从机启动、停止、复位设备。简单的NMT主机。
Heartbeat用于监控 CANopen 设备的心跳生产者/消费者错误控制。
PDO用于广播处理数据,具有高优先级,没有协议开销。对象字典中的变量可以动态映射到TPDO上,TPDO按照通信规则进行传输,并被另一台设备作为RPDO接收。
SDO服务器支持对CANopen设备内所有对象字典变量的快速、分段和块传输访问。
SDO客户机可以访问网络内任何CANopen设备上的任何对象字典变量。
Emergency消息生产者/使用者。
Sync生产者/消费者允许网络同步传输PDO对象,等等。
Time-stamp生产者/消费者支持以毫秒分辨率进行日期和时间同步。
LSS CANopen节点ID和比特率设置,主站和从站,LSS 快速扫描。
CANopen gateway,用于 NMT 主站、LSS 主站和 SDO 客户端的 CiA309-3 Ascii 命令接口。
CANopen Safety, EN 50325-5, CiA304,安全相关网络中的“类PDO”通信
CANopen Conformance Test Tool CANopen一致性测试工具通过。

其他

适用于16位及以上单片机
多线程,实时
对象字典编辑器
对象字典或其他变量的非易失性存储。 自动或由标准 CANopen 命令控制,可配置。
可省电
可能的引导加载程序(用于固件更新)

CANopenNode 流程图

典型 CANopenNode 实现的流程图:

                            -----------------------
                           |     Program start     |
                            -----------------------
                                       |
                            -----------------------
                           |     CANopen init      |
                            -----------------------
                                       |
                            -----------------------
                           |     Start threads     |
                            -----------------------
                                 |     |     |
             --------------------      |      --------------------
            |                          |                          |
 ----------------------    ------------------------    -----------------------
| CAN receive thread   |  | Timer interval thread  |  | Mainline thread       |
|  (CAN接收线程)       |  |  (定时器触发线程)      |  |  (主线线程)           |
|                      |  |                        |  |                       |
| - Fast response.     |  | - Realtime thread with |  | - Processing of time  |
| - Detect CAN ID.     |  |   constant interval,   |  |   consuming tasks     |
| - Partially process  |  |   typically 1ms.       |  |   in CANopen objects: |
|   messages and copy  |  | - Network synchronized |  |    - SDO server,      |
|   data to target     |  | - Copy inputs (RPDOs,  |  |    - Emergency,       |
|   CANopen objects.   |  |   HW) to Object Dict.  |  |    - Network state,   |
|                      |  | - May call application |  |    - Heartbeat.       |
|                      |  |   for some processing. |  |    - LSS slave        |
|                      |  | - Copy variables from  |  | - Gateway (optional): |
|                      |  |   Object Dictionary to |  |    - NMT master       |
|                      |  |   outputs (TPDOs, HW). |  |    - SDO client       |
|                      |  |                        |  |    - LSS master       |
|                      |  |                        |  | - May cyclically call |
|                      |  |                        |  |   application code.   |
 ----------------------    ------------------------    -----------------------

文件结构

  • 301/ - CANopen 应用层和通信配置文件。
    • CO_config.h - CANopenNode 的配置宏。
    • CO_driver.h - CAN 硬件和 CANopenNode 之间的接口。
    • CO_ODinterface.h/.c - CANopen 对象字典接口。
    • CO_Emergency.h/.c - CANopen 紧急协议。
    • CO_HBconsumer.h/.c - CANopen 心跳消费者协议。
    • CO_NMT_Heartbeat.h/.c - CANopen 网络管理和心跳生产者协议。
    • CO_PDO.h/.c - CANopen 过程数据对象协议。
    • CO_SDOclient.h/.c - CANopen 服务数据对象 - 客户端协议(主站功能)。
    • CO_SDOserver.h/.c - CANopen 服务数据对象 - 服务器协议。
    • CO_SYNC.h/.c - CANopen 同步协议(生产者和消费者)。
    • CO_TIME.h/.c - CANopen 时间戳协议。
    • CO_fifo.h/.c - 用于 SDO 和网关数据传输的 Fifo 缓冲区。
    • crc16-ccitt.h/.c - CRC 16 CCITT 多项式的计算。
    • 303/ - CANopen 推荐
      • CO_LEDs.h/.c - CANopen LED 指示灯
    • 304/ - CANopen 安全。
      • CO_SRDO.h/.c - CANopen 安全相关数据对象协议。
      • CO_GFC.h/.c - CANopen 全局故障安全命令(生产者和消费者)。
    • 305/ - CANopen 层设置服务 (LSS) 和协议。
      • CO_LSS.h - CANopen 层设置服务协议(通用)。
      • CO_LSSmaster.h/.c - CANopen 层设置服务 - 主协议。
      • CO_LSSslave.h/.c - CANopen 层设置服务 - 从站协议。
    • 309/ - 从其他网络访问 CANopen。
      • CO_gateway_ascii.h/.c - Ascii 映射:NMT 主站、LSS 主站、SDO 客户端。
    • 贮存/
      • CO_storage.h/.c - CANopen 数据存储基础对象。
      • CO_storageEeprom.h/.c - CANopen 数据存储对象,用于将数据存储到块设备 (eeprom) 中。
      • CO_eeprom.h - 与 CO_storageEeprom 一起使用的 Eeprom 接口,功能是特定于目标系统的。
    • 额外的/
      • CO_trace.h/.c - 用于随时间记录变量的 CANopen 跟踪对象。
    • example/ - 包含基本示例的目录,应在任何系统上编译。
      • CO_driver_target.h - CANopenNode 的示例硬件定义。
      • CO_driver_blank.c - CANopenNode 的示例空白接口。
      • main_blank.c - 主线和其他线程 - 示例模板。
      • CO_storageBlank.h/.c - 数据存储到非易失性存储器的示例空白演示。
      • Makefile - 例如 Makefile。
      • DS301_profile.xpd - DS301 的 CANopen 设备描述文件。 它还包括 CANopenNode 的特定属性。 该文件在对象字典编辑器的配置文件中也可用。
      • DS301_profile.edsDS301_profile.md - 标准 CANopen EDS 文件和降价文档文件,从 DS301_profile.xpd 自动生成。
      • OD.h/.c - CANopen 对象字典源文件,从 DS301_profile.xpd 自动生成。
    • doc/ - 文档目录
      • CHANGELOG.md - 更改日志文件。
      • deviceSupport.md - 有关受支持设备的信息。
      • objectDictionary.md - CANopen 对象字典接口的描述。
      • CANopenNode.png - 小图标。
      • html - 带有文档的目录 - 必须由 Doxygen 生成。
    • CANopen.h/.c - CANopen 对象的初始化和处理,适用于通用配置。
    • codingStyle - 编码风格的例子。
    • Doxyfile - 文档生成器 doxygen 的配置文件。
    • 许可证 - 许可证。
    • README.md - 这个文件。

对象字典编辑器

对象字典是CANopen 最重要的部分之一。

要自定义对象字典,必须使用外部应用程序:CANopenEditor。 还提供了最新的预编译二进制文件。 只需提取 zip 文件并运行 EDSEditor.exe。 在 Linux 中,它使用 mono 运行,这在 Ubuntu 上默认可用。 只需将文件权限设置为“可执行”,然后执行程序即可。

在程序中,在首选项中,将导出器设置为“CANopenNode_V4”。 然后开始新项目或打开现有的项目文件。

支持许多项目文件类型,EDS、XDD v1.0、XDD v1.1、旧的自定义 XML 格式。 然后可以将生成的项目文件保存为 XDD v1.1 文件格式 (xmlns=“http://www.canopen.org/xml/1.1”)。 项目文件也可以导出为其他格式,可用于生成对象字典的文档和CANopenNode源文件。

如果启动了新项目,则可能会插入 DS301_profile.xpd。 如果编辑现有(旧)项目,则可能会删除现有的通信特定参数,然后可能会插入新的 DS301_profile.xpd。 另一种方法是通过观察 objectDictionary.md 中 CANopenNode 的对象字典要求来编辑现有的通信参数。

要克隆、添加或删除,请选择对象并使用右键单击。 正确设置自定义对象字典需要一些 CANopen 知识。 也可以从另一个项目中插入单独的对象。

CANopenNode 在标准项目文件中包含一些自定义属性。 有关详细信息,请参阅 objectDictionary.md。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CANopenNode学习笔记(一)--- README翻译 的相关文章

  • get请求 包括username和password

    方法一 xff1a public static String wisdomNetMessagePlat String sn String encoding throws Exception String result 61 34 34 St
  • Arduino控制L298N

    一般做智能小车或者DIY开发的童鞋需要用到Arduino这狂开发板 xff0c 作为一名好奇心很强的软件开发人员 xff0c 我自然也想尝尝鲜特别是利用Arduino做一些人机交互的项目 xff0c 如果结合了Kinect AR增强现实 x
  • gitlab打tag的作用,以及如何基于tag切分支

    在 GitLab 中 xff0c Tag 是将 Git 项目中特定的提交标记为版本的一种方式 Tag 能够用于标记发布的版本 xff0c 以便于对代码的每个版本进行管理和追踪 打 Tag 的作用主要有以下几点 xff1a 标记版本发布 xf
  • 解析包含用户名密码的FTPURL

    include lt stdio h gt include lt string h gt void parse ftpurl char url char user char passwd char ipaddr uint port char
  • nvidia jetson xavier nx Deepstream Yolov3示例模型运行

    最近在玩nvidia jetson xavier nx的板子 xff0c 特在此做一些笔记 1 进入sample目录 cd opt nvidia deepstream deepstream sources objectDetector Yo
  • go-mysql-elasticsearch+mysql 同步 ElasticSearch(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 一 Elasticsearch xff1a https www elastic co
  • Intel Realsense D400系列相机自校准细节,减少踩坑!!

    自校准 xff08 对任意环境非白墙 注意距离0 4 2米之间 xff0c 深度 xff08 相机拍摄内容中物体所占空间 xff09 50 xff09 xff1a 打开Intel realSense viewer xff1a 连接设备 xf
  • QT实现NMea截取指定片段字符串——$GNGGA(小白第一次编,后期有机会完善代码,高勿)

    总体思路 xff1a 1 读取所有数据 xff08 readAll xff08 xff09 xff09 QByteArray readbuf 61 serial gt readAll 2 查找标志位 xff08 QString中使用inde
  • linux c&&c++关于赋值问题(char*传给另一个char*)

    仅列出四种 xff0c 欢迎补充 xff01 方法一 xff1a 直接 char buf1 61 char buf2 xff0c xff08 xff01 xff01 xff01 这里的赋值是将buf2的地址赋给了buf1 xff0c 此后b
  • B6AC使用说明

    1 接线方式 接线如下图所示 xff0c 如果电池是XT60 xff0c 可以用接鳄鱼夹子的T插夹在XT60的接口上 2 设置方法 2 1 锂电池充电 1 xff09 Batt Type gt 切换选择 LiPo BATT gt Enter
  • 整数转换为字符串

    include lt stdio h gt 反转字符串 char reverse char s char temp char p 61 s p指向s的头部 char q 61 s q指向s的尾部 while q 43 43 q q 交换移动
  • 【工具使用】Modbus Poll软件使用详解

    软件介绍 Modbus Poll是一个模拟Modbus协议主机的上位机软件 xff0c 主要用于模拟测试跟其他从机设备通信的过程 与之成套存在的另一个软件 Modbus Slave xff0c 则是模拟Modbus协议从机的上位机软件 该软
  • c++下程序的运行(第3方库的安装及安装gdal)

    C 43 43 安装第三方库 1 概览2 编译 xff0c 首先要熟悉程序编译过程 xff08 预处理 gt 编译 gt 汇编 gt 链接 xff09 2 1 编译流程4步2 1 1 1 预处理2 1 2 2 编译2 1 3 3 汇编2 1
  • 制作IEC101/104报文解析工具

    文章目录 准备 一 IEC101 104协议 二 制作解析工具步骤 1 建立协议族 2 建立协议 3 建立术语 4 建立报文块 5 建立报文解析规则 总结 准备 这里是基于 在线解析二进制报文 文章中介绍的物联网助手来快速搭建IEC101
  • PHP各版本技术特性(标贝科技)

    文章目录 PHP8JIT流程配置测试小结 match表达式 PHP7HugepageHugepage简介Hugepage配置 Opcache file cacheOpcache file cache简介Opcache file cache配
  • vue、springboot集成websocket跨域问题解决

    由于浏览器连接的是服务器上的websocket xff0c 导致出现了如下跨域错误 xff1a The value of the 39 Access Control Allow Origin 39 header in the respons
  • 动态库学习

    总结一 xff1a 动态库 前言 我们知道程序编译链接经常使用动态 xff0c 同时我们可能还知道 xff0c 动态库时程序运行时加载的 但是动态库到底有什么作用 xff0c 如何生成 如何加载等 xff0c 我们却很少关注 接下来 xff
  • Python学习第一次问题笔记:vscode 运行python代码没有输出(Code runner)

    目录 问题 xff1a 解决方案 xff1a 原因一 xff1a 原因二 xff1a 问题 xff1a 新安装Visual Studio Code后 xff0c 在其上进行第一次代码运行时 xff0c 会出现只在终端中显示代码结果 xff0
  • 标准差分进化算法matlab程序实现

    终于开始了研究生阶段的学习生活 xff0c 繁琐的入学相关事宜也处理得差不多了 在9月5号 xff0c 我们实验室召开了第一次小组会议 xff0c 导师也相继给我们指定了各自的研究方向 xff0c 不出意外 xff0c 我接下来将围绕智能优
  • 《图解深度学习》学习笔记(一)

    第一章 绪论 监督学习 xff1a 需要基于输入数据及其期望输出 xff0c 通过训练从数据中提取通用信息或特征信息 特征值 xff0c 以此得到预测模型 这里的特征值是指根据颜色和边缘等认为定义的提取方法从训练样本中提取的信息 xff08

随机推荐

  • 3D点云基础知识(一)-初始入门-知乎整理(一)

    本文基于如下知乎文章 xff0c 调整部分内容整理输出 xff0c 一为梳理基础知识 xff0c 二为致敬原作 作者 xff1a Mr 苍雪 链接 xff1a https zhuanlan zhihu com p 344635951 来源
  • Open3D处理点云数据(一)点云文件读取、写入、显示

    import open3d as o3d import numpy as np pcd 61 o3d geometry PointCloud pcd类型的数据 np points 61 np random rand 100 3 随机生成点云
  • Ubuntu非管理员root安装ninja:解决RuntimeError: Ninja is required to load C++ extensions错误

    服务器是共用的 xff0c 所以无法使用sudo apt get 命令快速安装 只能自己下载git上的源代码然后编译 xff0c 装在自己的私人目录下 否则 sudo apt get 安装很容易 xff0c 55555555 Ninja是一
  • Elasticsearch相似度算分TF-IDF BM25(标贝科技)

    欢迎体验标贝语音开放平台 地址 xff1a https ai data baker com source 61 qaz123 xff08 注 xff1a 填写邀请码hi25d7 xff0c 每日免费调用量还可以翻倍 xff09 控制相关度
  • 【K210】K210学习笔记五——串口通信

    K210 K210学习笔记五 串口通信 前言K210如何进行串口通信K210串口配置K210串口发送相关定义K210串口接收相关定义K210串口发送接收测试 完整源码 前言 本人大四学生 xff0c 电赛生涯已经走到尽头 xff0c 一路上
  • C++类与对象笔记十二:运算符重载三:递增运算符重载

    先看看系统自带的递增运算符 43 43 递增运算符重载 43 43 xff1b a 43 43 43 43 a int a 61 10 cout lt lt 43 43 a lt lt endl 11 先加 xff0c 后输出 cout l
  • C++类与对象笔记十四:多态六:虚析构和纯虚析构

    多态使用时 xff0c 如果子类中有属性开辟到堆区 xff0c 那么父类指针在释放时无法调用子类的析构代码 即 xff1a 父类指针无法调用子类实例对象内的析构函数 造成堆区内存泄漏 解决方案 将父类中的析构函数改为虚析构或者纯虚析构 虚析
  • PCL笔记九:采样一致性

    模型拟合 xff1f 采样一致性的目的 xff1a 用于排除错误的样本 基于采样一致性算法的应用主要是对点云进行分割 xff0c 根据不同设定的几何模型 xff0c 估计对应的几何模型的参数 xff0c 在一定允许误差范围内分割出在模型上的
  • ubuntu下安装gfortran

    找官网 xff1a GFortranBinaries GCC Wiki 找到GNU Linux 找到Download xff0c 点击蓝色链接下载 此外有installtion instructions安装步骤 Gfortran Binar
  • 面试可能会问六:智能指针

    先看一下百度百科的解释 xff1a 指针指针 当类中有指针成员时 xff0c 一般有两种方式来管理指针成员 xff1a 一是采用值型的方式管理 xff0c 每个类对象都保留一份指针指向的对象的拷贝 xff1b 另一种更优雅的方式是使用智能指
  • C++笔记:指针转向(重新赋值)时的问题;重复释放;原地址遗漏释放;赋值运算符重载operator=;

    一个类默认会创建4个函数 xff1a 默认构造 拷贝构造 析构 和operator 61 函数 最后一个就是赋值运算符重载 xff0c 可以进行简单的值传递 注意 xff1a 这个是值传递 问题就在这 xff1b 还有一种传递叫 xff1a
  • C++笔记:虚继承

    虚继承解决的是菱形继承 Animal下派生出Sheep和Tuo类 动物基类下 xff0c 有两个派生类 xff0c 一个是羊类 xff0c 一个是驼类 这两个类都继承了Animal的一个属性 xff0c 比如m age 这样就导致资源的浪费
  • Ubuntu 搭建文件服务器(Nginx)

    1 xff0c 下载Nginx 2 xff0c 安装Nginx 3 xff0c Nginx指令及脚本使用 4 xff0c 配置Nginx 1 xff0c 下载Nginx 去官网下载对应的Nginx版本 nginx download 直接在u
  • WS2812灯珠(四)---实现全彩呼吸灯效果

    WS2812灯珠实现呼吸灯效果主要涉及到呼吸函数及颜色模型两部分的内容 清楚了这两点结合之前的灯珠驱动程序 xff0c 便可以实现任意颜色的呼吸变换效果了 呼吸函数 具体的呼吸函数细节这里就不介绍了 xff0c 感兴趣的可以自行搜索 这里下
  • 浅谈Marlin2.0

    简介 marlin固件发展至今已经形成了三个比较重大的版本 xff1a 1 0版 xff0c 1 1版 xff0c 2 0版 我接触marlin固件已经有一段时间了 xff0c 原来一直对于marlin固件的结构和应用平台一直不是很理解 x
  • uni-app多平台融合【入门】(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 uni app多平台融合 入门 标贝科技 xff09 一 uni app介绍 uni
  • vscode开发STM32(三)---调试篇

    vscode开发STM32 xff08 三 xff09 调试篇 文章目录 vscode开发STM32 xff08 三 xff09 调试篇前提条件配置调试配置JLink使用 96 JLinkGDB 96 进行调试配置stlink使用openO
  • CANopen资料收集

    CANopen资料收集 文章目录 CANopen资料收集开源CANopen协议栈1 CanFestival2 CANopenNode 3 canopen stack CIA官网canopen说明 https www can cia org
  • Modbus资料收集

    Modbus资料收集 文章目录 Modbus资料收集开源Modbus协议栈1 FreeModbus2 uc Modbus 开源Modbus协议栈 1 FreeModbus 网站 xff1a https www embedded expert
  • CANopenNode学习笔记(一)--- README翻译

    CANopenNode学习笔记 文章目录 CANopenNode学习笔记特性CANopen其他 CANopenNode 流程图文件结构对象字典编辑器 CANopenNode 是免费开源的CANopen协议栈 CANopen是建立在CAN基础