当前位置:首页 >> 信息与通信 >>

CANopen源代码框架说明


CANopen 源代码结构介绍
广州虹科电子科技有限公司 龚龙峰 陈秋苑 support@hkaco.com 2015 年 12 月 摘要: 本文主要介绍五部分内容: 商业版代码与开源代码的详细区别; CANopen 协会-CiA 的各重要子协 议的代码包情况介绍;代码包重要服务;代码包框架介绍和使用说明;支持的 MCU 列表和升级情 况。 首先先介绍一下开源代码和商业

版代码的区别,当然这其实已经是“公开的秘密”,只是我们 没有去详细总结而已: 1、费用:商业版代码收费,开源代码免费;商业版代码节省了很多研发人员和测试人员的时间, 节省了很多人力成本。 2、技术支持和文档:遇到问题,商业版有人负责解答,有完整的操作文档和手册(将近五百页 的详细说明书) ,开源无人解答--问题解决的几率小、风险不确定性大。 3、代码质量和稳定性:商业版本有质量保证,代码的质量、优化和效率;使用开源代码存在质 量风险大大提高; 4、开发难度和时间:商业版有完整的多款不同硬件平台的 demo 提供,大大降低开发移植难度 和时间。 (研发人员的薪资也是成本,产品质量和推出市场的时间也是机遇与挑战) 。商业版代码 的研发工作量增加、后期测试难度和时间也增加。 5、测试和调试配套:商业版有完整的工具链和测试方法提供,开源代码没有。完整的测试工具 包括:网络组网和管理以及测试(导入 EDS 文件组网并修改对应的数据,快速图形化 PDO mapping)、报文分析、快速创建对象字典 生成 EDS 文件、USB-CAN 卡采集数据等等。 6、培训:提供一天在线培训,开源代码无任何培训和技术支持 7、后期延展性很好:SO-877-VP 或者 SO-1063-VP 提供 30 多种不同 MCU 平台的 demo,并且每年 不断更新和增加,如果项目需要更换 MCU,可以快速移植,不需要额外的开发工作量。而开源代 码没有这方面的资源。 如果要做 serious 的产品,一般用商业版的代码更有保障,这也是为什么很多标杆企业采用商 业版代码的原因。国内运动控制行业、医疗行业、轨道交通等行业用户最广的代码供应商。 德国 SYS TEC 的商用版代码这个代码非常大的好处在于:1、提供完全开放的代码;2、买断 式的使用权限(当然,仅限本公司本地址);3、一个价格,购买三十多种 MCU 的 demo,这 无疑为公司的其他项目或者以后的升级提供了很多的便利。4、代码的稳定性和文档的完整,差 不多 20 年的客户经验积累了非常多的文档和高质量的代码。5、一年免费升级(所有新平台 demo 都可以拿到)

华南理工大学国家科技园

可选的代码清单: SO-877-VP:支持 CiA301,401 协议 SO-1063-VP:支持 CiA301,401 协议+CiA302 协议(302 主要指 NMT manager-动态切换 网络状态和管理,SDO manager-动态创建 SDO 连接,动态 OD 等等) 插件清单: SO-1081:CiA 402 协议-运动控制行业专用协议代码 SO-1089:CANopen Bootloader Source Code SO-1059:符合 CiA 304 safety 规范的代码,符合 IEC61508 的 SIL3 等级。 SO-1114:flying master 源代码,配合 SO-1063 使用,符合 CiA302-part2 的规范。这个 不指 CiA302-Part6 的网络冗余,它指的是同一个网络之间如果同时有几个不同的 NMT master,则可以互相切换。 SO-1078:SDO Gateway 源代码 SO-1066:MPDO 源代码:Multiple PDO 传输。 SO-877-VP 或者 SO-1063-VP 包括如下服务: 免费培训:德国思泰研发工程师赠送一天的免费培训(主要针对 CANopen 源代码的协议学习 以及如何上手开发,在线远程培训)。 二,提供免费 demo:贵司可以得到附件我们所列出的所有 MCU 平台下的 demo,比如我们有 STM32F107 的 demo,您可以直接简单修改就可以完成移植,剩余的功能您直接参考原有的 demo 修改就可以。(德国的软件开发人员编写的源代码程序都是模块化的,可读性很强)。 三,买断式授权:贵司可以不限使用时间,不限开发人数,不收取年费(除非贵司要升级和技术 服务),不限产品 MCU 平台,不限产品种类,不收取产品的授权费用,这属于买断性的授权等 等。(但是贵司的开发需要在注册地址和注册公司内部使用) 四,VP包赠送开发和调试过程中所需的多款软件:CDE软件(负责CANopen网络管理,设备管 理,PDO映射,修改任意CANopen设备的EDS文件比如站地址和波特率等等), CANinterpreter软件(负责接收/发送/保存/解析CANopen报文,比如PDO,SDO,NMT等)。 还包括一个德国原装进口的USB-CAN转换器。 五、样例代码(可以通过 support@hkaco.com 留下信息后,免费索取): 四个文件包括(一般拿到正式代码的 demo 后,也就只有这几个文件需要修改或检查): ex_slv.c: objdict.h: ccmmain_.c: demo_flyma.c: a simple CANopen Slave Demo according to CiA-301 with 3 Object dictionary which belongs to ex_slave.c excerpt of the file ccmmain.c (corresponds to our SO-877) a simple Demo according to CiA-301 and CiA-302 including RPDOs and 3 TPDOs (this corresponds to our SO-877).

Flying Master (this corresponds to our SO-1063) 1)代码是模块化的结构,可读性很强,注释很清楚,而且采用商业级的代码,研发工作的继承 性较好,因为采用的是统一的编程规范。采用功能模块化的结构,还有一个好处是:里面提供了 很多不同的功能模块,但是您不需要把每个功能模块都加到您的项目中,只需要一些相关的,这 样的话就使得您做不同的项目时很灵活,代码效率也很高。 2)通过 Macros 非常简单就可以创建对象字典文件,请参考附件的 objdict.h

华南理工大学国家科技园

3)可自由选择需要调试的部分-针对输出 4) 代码是包括 LSS (Layer Setting Services) 的, 这个可以用于修改任何一个标准的 CANopen 节点的通讯地址和波特率等, 使得您开发的设备不仅可以通过外设的拨码开关等设置, 还可以通 过支持 LSS 的软件设置。 六,节省开发周期,提高代码质量,代码量少 优化性能高,提供一年免费升级和技术支持服务: 我们有个深圳的客户(做运动控制)在不懂 CANopen 协议的基础上,在我们的 demo 上用 STM32 F103 开发了 IO 接口,用时是五天,开发完所有的功能并完成了一致性测试的。这个 源代码是德国的,至今已经销售将近 20 年,在全球有非常多的客户,这些都从侧面反映了代码 的稳定性和质量。有 demo 则大大减少了开发的难度,提高了开发效率,加快了产品上市时间。

SO-877-VP 或者 SO-1063 在源代码安装之后,一般会有 8 个文件夹,如下图:

我们可以按顺序进行一一介绍: 一、ccm 主要是与 CCM 相关的函数,这里的包含了 CCM 层的接口函数读写,API 的封装, 波特率的设置,CAN 外部控制器等等。

华南理工大学国家科技园

二、cdrv,里面放着三种类型的函数,分别为 bdi 开头的波特率设置,cci 开头的外部 CAN 控制器,以及 cdrv 开头的是芯片自带 CAN 控制器的驱动源程序。

华南理工大学国家科技园

2.1 其中, 在以 bdi 开头的程序里面是晶振波特率的计算, 其中已经定义了从 6M 到 100M 的 晶振记算,当然如果从中没有找到相应的波特率,也可以根据我们已有的格式和功能函数, 由客户自己来定义,如下图是 6M 的例子:

2.2

cci 开头的外部 CAN 控制器,定义了不同外部 CAN 控制器的功能函数。

2.3 以 cdrv 开头是一些芯片自带 CAN 控制器的驱动源程序,里面都是 CAN 消息处理。 CAN 的 数据接收到以后,就是通过这些 API 接口函数,直接提交给协议栈的。因为是基于 Linux 的, 所以我们会看到一些 Linux 的进程。可以参照 cdrv.h 进行讲解。

华南理工大学国家科技园

三、Copstack 协议栈可以先跳过不讲,这里面主要根据 CiA301 规范的 CANopen 协议栈的内 容。 四、objdicts
对象字典: 客户可以在里面选择与自己对象字典功能相近的,然后再其基础上进行修改,

而不需要用户重新全部定义。例如,ds401_7p 就是 7 个 PDO 的;ds401_2axis 为 2 轴的。

当创建对象字典的时候,我们可以看到是从索引 0x1000 开始定义的,一般都是从 OBD_BEGIN 开头,以 OBD_END 结束完成整个定义,具体里面索引和子索引后面的 0x05、0x07 是什么意思,我们不用去记, 可以通过查手册找到相关的定义。同时在这里定义的是对象字典的结构,保证对象字典的通用性。

华南理工大学国家科技园

如果要做一个对象字典,需要关注的是 obdcfg.h 和 objdict.h 两个文件。obdcfg.h 是对象字典的配置文 件。

华南理工大学国家科技园

五 example 与 target、其中 example 是完成不同功能的例子,在 target 文件夹下的这么多硬件平台,
都只是实现 一个功能,如一个主站或者从站;而在 examples 下我们看到的函数,ex_mst.c 的功能是支 持主站一个 instance 的,而 ex_mst_2inst.c 是支持主站2个 instance,就是指支持两个 CAN 接口的。如果 先前是只有一个 inst 的,需要实现两个 inst,可以通过加载 ex_mst_2inst.c,删掉 ex_mst.c。

六、project 也是 Demo 样例,是先前进行一次源代码的大更新,这样是为了有更好的延用性,以前比较 旧的样例平台文件并没有删除,而是放在 project 下,现在新的文件都会放在 target 目录下面,同时会不 断更新。

华南理工大学国家科技园

SYS TEC CANopen Source Code
Supported Target Platforms
Version: 2012.05.16 ST Microelectronics STM32F Series (STM32F107) x x

Supported Microcontrollers

Fujitsu F2MC 16LXMB90F590/540G/350/348

freescale PowerPC MPC555/565

TI DSP TMS320F28xx Series

Microchip PIC32Mxxx Family

freescale Coldfire MCF52xx

freescale Coldfire MCF54xx

Supported CAN controllers Internal FullCAN Internal BasicCAN Internal PeliCAN SJA1000 (external) 82C200 (external) Intel 82527 (external)

AMD Alchemy AU100-400 x x

BECK IPC SC123, SC143

Generic 8/16/32-bit MCUs

Atmel AT89C51CC01/2/3

Infineon TriCore TC1796

Infineon TriCore TC1766

Atmel AT91SAM7A3

Infineon SAB C5x5C

Atmel AT90CAN128

Microchip dsPIC33F

Renesas M16C/60

Philips 80xC592

Infineon XC16x

Infineon XE16x

Intel x86 CPUs

NXP LPC2129

NXP LPC2300

NXP LPC1768

NXP LPC229x

Infineon C16c

8051 Family

Philips 591

x x x x x

x x

x x

x x

x x

x x x x x

x x

x x

x x

x x

x x

x x

x x x x x x x x

x x

x x

x x

x x

x x

x x

x x

x x

x x

x x

x x

CAN-bus interfaces SYS TEC pcNetCAN SYS TEC USB-CANmodul series SYS TEC CAN-Ethernet Gateway PEAK PCAN-PCI PEAK PCAN-USB PEAK PCAN-Dongle Tews Technologies TPMC 816 ESD GmbH PMC/331

IDE KEIL ?Vision (C51 V7.x) KEIL ?Vision (C166 V4.x) KEIL ?Vision (ARM V2.0) KEIL ?Vision (RealView ARM) TASKING CC51 TASKING CC166 TASKING CCM16C Fujitsu Softtune FFMC-16 Microsoft Visual C++ 5.0 Microsoft Visual C++ 6.0 eMbedded Visual C++ 4.0 Code Composer Studio Metrowerks CodeWarrior ADS (Arm Developer Suite) GNU toolchain Paradigm Beck Edition Code Red Tech - LPCXpresso eCosPRO Toolchain MPLAB

Operating Systems without OS Linux eCos PXROS MS-DOS MS Windows 9x/ME/NT/2000/XP MS WinCE 4.2 VxWorks*) CMX*)
*) Realized as custom-specific adaptation

Luminary Micro LM3S8971 (ARM Cortex M3) x x

广州虹科电子科技有限公司 CANopen 源代码 2013 年到 2015 年 9 月 29 号之间的升级情况和记录: Revision history of SYS TEC CANopen Stack Latest changes: Version V5.62: 29.09.2015 - New demo added in SO-1059 (Safety Add-on) for Texas Instruments RM42. - New demo added in SO-877 for STMicroelectronics STM32F407. - New demo added in SO-1063 for STMicroelectronics STM32F407 Version V5.61: 26.06.2015 - Software changed: The file ccmwin32.c is ready for 64 Bit Windows now. - New demo added in SO-1059 (Safety Add-on) for Texas Instruments RM48. - New feature: New demo added in SO-877 for STMicroelectronics STM32F107 using Segger embOS and IAR Workbench. Version V5.60: 12.12.2014 - New feature: New demo added which shows the handling with the object 0x1029 "Error Behavior" according to the CiA-301 standard. Version V5.59: 18.07.2014 - New feature: Now the SDO gateway supports SDO access to the own OD on remote network. - New feature: Support of Xilinx ZYNQ7000 - based on and for Enclustra Mars ZX3 with eCos OS Version V5.56: 18.10.2013 - New feature: Flying Master implemented according to CiA-302 part 2. It is available for SO-1063 and is installed as Add-on. - New feature: SDO gateway implemented according to CiA-302 part 7. It is available for SO-877 and SO-1063 and is installed as Add-on. Version V5.55: 08.08.2013 - New feature: New demo project for explorer-16-PIC32 added with 2 instances - New feature: Support of the new TEWS CAN card driver V2.x in cdrv_tdrv011.c. - New feature: 64Bit version of SYS TEC wrapper cdrvwrap64.dll added. - New feature: Support of TI's AM335X with GNU compiler - New feature: Support of Microchip's PIC32 with MPLAB X compiler - Software changed: Projects for Mitsubishi SKP32C84 updated for the newer HEW version V4.09.01. Version V5.53: 18.01.2013 - New feature: Demo with Linux Socket CAN driver added - New feature: CAN driver for Renesas RX62T added - New feature: SDO Gateway implemented according to CiA-302 part 2. www.hkaco.com sales@hkaco.com 广州市五山华南理工大学国家科技园 2 号楼 504-505 室 support@hkaco.com 电话:020-38743030 , 38743032 邮编:510640 传真:020-38743233

广州虹科电子科技有限公司 Version V5.52: 18.01.2013 - New feature: Support of Atmel's AT90CAN128 (AVR) with IAR compiler

www.hkaco.com sales@hkaco.com

广州市五山华南理工大学国家科技园 2 号楼 504-505 室 support@hkaco.com 电话:020-38743030 , 38743032

邮编:510640 传真:020-38743233


相关文章:
canopen-总结-代码分析-gy
canopen-总结-代码分析-gy_计算机软件及应用_IT/计算机_专业资料。2013-07-20 ...个人空间修改头像代码分... 11页 免费 1、CANopen协议栈源代码 9页 免费喜欢...
怎么做CANopen开发
、、 我可以提供 F2812 CANopen 源代码 301 + 402 联系 bluestar_nj@hto...但驱动器安装手册上没有说明从站是否配 置有 EDS 文件,因为 SDO 是通过访问 ...
贝加莱系统
CANopen、Profibus、 DeviceNet、Modbus-IDA,适合于...ETHERNET Powerlink 接口(EPL 框架,协议支持),集成 ...源式,可配置的输入滤波,3 线连 X20DI2372 接技术...
STM32上CAN_OPEN总线移植
另外在网上下载了下列代码: Atmel 公司网站上有关 canopen 参考资料源代码。 Microchip 公司网站上的有关芯片资料和源代码 CiA 网站上的 DS301 和 DS406 部分 ...
解析CiA402
框架解析 刘允松 适用于所有通讯协议(Modbus, CANopen, Ethernet, Profibus DP,...故障状态,变频器锁定,对电机没有输出,变频器显示相应的故 障代码。 CiA 状态...
CANopen主从站软件
as Master/Slave according to DSP305 (定购代码(1.02.0126.00005) 实现效果 CANopen 协议软件包以 C 源码的形式提供,经过 CiA 最新的 CANopen 测试软件测试。 ...
现场总线CANopen学习笔记一
现场总线CANopen学习笔记一_信息与通信_工程科技_专业资料。通过对《现场总线CANopen设计与应用》的学习,总结了学习CANopen的知识要点和CANopen源代码。希望能够对CANopen...
UML试题库
(47)显示的是 源代码以及实际执行代码的组织结构。...bool canOpenDocument(string docName){ /*判断是否...时都有重要的里程碑,其中生命 周期架构是在(18)...
变频器控制的IO框架模式
下面说明设置的方法和结果。 我们知道, CiA 控制框架下, 在 通讯控制字 CMD ...CANOpen 将通讯控制字的 bit5 置 1,则参数【手动给定】所指定 的给定源的...
CANopen协议介绍
^-^ 讲义内容: 通常 CANopen 协议相关的一些资料相对来说比较晦涩,非专业人士看起来 比较困难。 我尽量以浅显易懂的方式将 CANopen 协议的框架和它在实际应用中 ...
更多相关标签:
canopen源代码 | canopen协议栈源代码 | stm32 canopen 源代码 | canopen主站源代码 | learun开发框架源代码 | 查看框架的源代码 | ssh框架实例源代码 | 框架源代码 |