微信如何做微商城网站建设,wordpress sql替换域名,山西省轻工建设有限责网站,3733手游网站在哪里做的CANopenNode学习笔记 文章目录CANopenNode学习笔记特性CANopen其他CANopenNode 流程图文件结构对象字典编辑器CANopenNode 是免费开源的CANopen协议栈。 CANopen是建立在CAN基础上的用于嵌入式控制系统的国际标准化(EN 50325-4) (CiA301)高层协议。有关CANopen的更多信息#…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.eds、DS301_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。