0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CANOpen系列教程14_协议源码移植 (二)

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-06 15:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1写在前面

该系列教程上一篇文章《协议源码移植(一)》算是对CANOpen移植的准备工作,如果想要理解移植过程的知识,其实还有许多内容得了解。

本文挑一些重点来讲述,从协议源码添加到工程,源代码理解,到最后输出效果。

提示:该系列教程基于:CanFestival架构、STM32F1芯片、FreeRTOS操作系统Keil MDK-ARM开发环境。

2

添加源码、路径

本节内容针对初学者做出简要描述,相关内容可参看文章《Keil系列教程02_新建基础软件工程》。

2.1 添加组、文件

简单来说,就是在你已建好的工程中添加与CANOpen相关的组和文件,如下图:

2.2 添加路径

添加CANOpen源码的inc头文件等相关路径,编译的时候才能找到对应文件。

3

添加代码及分析

移植的重要过程就是添加、删除和修改源代码这一步骤。从教程上一篇文章下载,并看过源代码的朋友就会发现,其实我们需要添加的代码并不多,主要就是需要实现几个底层的驱动函数。

下面将重要的几点罗列出来。

1.修改canfestival.h文件

上文说了一下:添加三行语句,防止递归包含。

这里就是CANOpen定义的底层驱动接口,接口函数具体代码需要我们自己实现。

canSend这个函数被CANOpen源代码调用的最多,我们最好不修改函数接口,同时需要我们实现(我在canopen_drv.c中实现的)。

其它initTimer、 canInit等函数接口,在源码中没有调用,我也没有按照这套接口来实现(初始化我在bsp下实现的)。

2.底层驱动初始化代码

上面说的initTimer、 canInit初始化,我这边为了与我代码一致,使用TIM_Initializes、CAN_Initializes替代。

分别位于bsp_timer.c 和 bsp_can.c下面,实现的具体内容这里不描述,具体可以下载源码工程参看。

3.定时器调度相关接口

其中setTimer和getElapsedTime这两个函数会被timer.c协议源文件调用。在timer.h里面有什么(如下图),但函数体没有实现,需要我们自己实现。

同时,TimeDispatch函数已经实现,定义在timer.c,但需要被定时调用(调度)。

4.CAN发送接口函数canSend

这个CAN发送函数相当重要,接口最好不要自定义,因为scr下面多个源文件都调用了该函数。

同时,发送函数会被定时调度。所以,如果你调度方式像我例程那样,使用定时器中断的方式实现。那么,你就要考虑在中断函数里面发送的情况。

以上就是CANOpen移植,底层驱动相关的一些接口实现和说明。这部分内容,CanFestival框架提供源码是定义在drivers下面,比如STM32F1的就是cm3下面的cm3.c:

我单独提出来实现这些驱动函数是因为我跑了一个FreeRTOS系统。当然,你的驱动也可按照drivers下面那样实现。

5.其它

A.发送和接收缓存

我这边是通过队列来实现发送和接收缓存,而cm3.c是通过MessBuf_Write和MessBuf_Read来实现缓存。

B.中断接收

我使用CAN中断接收数据,和定时器中断调度。

提示:我中断入口函数是宏定义实现的,需要包含宏定义头文件。

#define CAN_RX_IRQHandler USB_LP_CAN1_RX0_IRQHandler

#define CANOPEN_TIM_IRQ_Handler TIM2_IRQHandler

C.配置节点

配置节点ID,节点的状态,这里只是简单的Demo,没有添加应用代码。

4

工程下载及运行效果

1.下载工程“CANOpen工程模板(含主、从站-心跳)”

https://pan.baidu.com/s/1LzD0Epc-Z8vlHsb-sD3WVw

提取码:l2dc

2.运行效果

我提供的例程是一个只有心跳(间隔时间我们配置为1000ms)Demo工程。所以,启动之后,你会发现总线上间隔1秒有一个心跳。

下图是我通过CAN分析仪抓取的CAN总线数据(如果你没有分析仪,可以用我《系列教程6》提供的例程,通过串口打印)

先启动一会儿主站,然后关闭,再启动从站的数据,重要信息我都标记出来了。

A.上线报文:ID:0x700 Data:0

B.网络管理:ID:0x000 Data:00代表管理所有节点 Data:80代表复位节点

C.心跳报文:ID:0x700 Data:05代表Operational操作状态

提示:主站具有网络管理,而从站没有。同时,数据值(如81、05)的含义可参看CiA 301手册网络管理的章节(后期进行讲述)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    59

    文章

    3106

    浏览量

    473799
  • CANopen
    +关注

    关注

    8

    文章

    526

    浏览量

    49921
  • STM32F
    +关注

    关注

    1

    文章

    42

    浏览量

    18859
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业场景中,CANopen 和 Modbus rtu 无法通讯怎么办?

    一、问题分析 协议不匹配通常表现为: CANopen 设备无法直接与 Modbus 设备通信; 系统中有 CANopen 主站和 Modbus 从站,或反之; 数据格式、地址映射、通信机制不一致
    的头像 发表于 05-08 14:30 77次阅读

    跨越协议壁垒CCLinkIE与CANopen网关在风电步科伺服控制中的实战

    跨越协议壁垒:CC-Link IE与CANopen网关在风电步科伺服控制中的实战 某海上风电场变桨系统升级时,遇到了棘手问题:主控采用三菱L系列PLC,只支持CC-Link IE协议
    的头像 发表于 04-27 15:27 214次阅读
    跨越<b class='flag-5'>协议</b>壁垒CCLinkIE与<b class='flag-5'>CANopen</b>网关在风电步科伺服控制中的实战

    异构网络下的协议转换:CCLinkIE转CANopen网关在智能仓储中的应用

    异构网络下的协议转换:CCLink IE转CANopen网关在智能仓储中的应用 在现代化仓储物流系统中,自动化设备往往来自不同技术世代,通信协议的差异成为系统集成的核心障碍。三菱电机
    的头像 发表于 04-24 13:47 169次阅读
    异构网络下的<b class='flag-5'>协议</b>转换:CCLinkIE转<b class='flag-5'>CANopen</b>网关在智能仓储中的应用

    破解协议壁垒,驱动精密注塑—Ethernet/IP转CANopen伺服的黄金纽带

    采用CANopen协议时,疆鸿智能JH-EIP-COP网关化身“通信枢纽”,让异构协议设备实现毫秒级协同,驱动精密制造。 伺服(以IS620PT系列为例)技术参数: 定位精度:≤±0.
    的头像 发表于 04-09 15:43 223次阅读
    破解<b class='flag-5'>协议</b>壁垒,驱动精密注塑—Ethernet/IP转<b class='flag-5'>CANopen</b>伺服的黄金纽带

    协议破壁者:疆鸿智能PROFINET转CANopen网关赋能“白库存”柔性嬗变

    面临这样的挑战:核心控制器采用西门子S7-1500系列PLC,其工业以太网PROFINET协议高效可靠,是产线级控制的理想选择;而执行末端的关键角色——ABB FlexPicker高速分拣机器人,其驱动系统则广泛采用CANopen
    的头像 发表于 02-03 15:20 244次阅读
    <b class='flag-5'>协议</b>破壁者:疆鸿智能PROFINET转<b class='flag-5'>CANopen</b>网关赋能“白库存”柔性嬗变

    ProfiNet转CANopen协议转换网关实现西门子1200 PLC与多个CANopen水下仪表通讯的配置案例

    CANopen 协议,且数量超过 9 台。传统方案是在 PLC 机架内加装 CM CANopen 模块,但受限于海底长距离总线拓扑与防爆分区,一旦超过 8 个节点即出现报文碰撞、丢包率 >3 %,无法满足
    的头像 发表于 11-14 10:32 893次阅读
    ProfiNet转<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>转换网关实现西门子1200 PLC与多个<b class='flag-5'>CANopen</b>水下仪表通讯的配置案例

    协议桥接新范式:稳联技术打通EtherCAT与CANopen,赋能施耐德变频器

    协议桥接新范式:稳联技术打通EtherCAT与CANopen,赋能施耐德变频器 本方案实现欧姆龙控制器(EtherCAT主站)通过EtherCAT-CANopen协议转换网关控制施耐德
    的头像 发表于 11-07 15:20 1583次阅读
    <b class='flag-5'>协议</b>桥接新范式:稳联技术打通EtherCAT与<b class='flag-5'>CANopen</b>,赋能施耐德变频器

    CANopen转Profient网关协议介绍

    CANopen介绍: CANopen是一种基于控制器局域网(CAN)的高层工业通信协议,由国际用户和制造商协会CiA于1995年发布,基础规范为CiA 301标准。该协议覆盖OSI模型
    的头像 发表于 09-25 17:31 972次阅读
    <b class='flag-5'>CANopen</b>转Profient网关<b class='flag-5'>协议</b>介绍

    移植CANfestival,发现can无法接收数据,为什么?

    最近在研究Canopen协议,在f407的板子上移植了canfestival协议移植成功后遇到一些问题,总线上我在没有发数据的情况下还是
    发表于 09-11 07:46

    EtherCAT转CANopen网关配置:汇川PLC与Autonics编码器通信最佳实践

    站),而AGV导航模块中的高精度编码器选用奥托尼克斯(Autonics)PRC-2000系列CANopen协议设备。由于EtherCAT与CANopen
    的头像 发表于 09-05 15:25 905次阅读
    EtherCAT转<b class='flag-5'>CANopen</b>网关配置:汇川PLC与Autonics编码器通信最佳实践

    通信协议高材生,PROFINET to CANopen网关连接西门子PLC与汇川变频器

    PLC通过CANopen监控变频器的运行是工业中较为常见的应用,控制中心系统通过监控变频器不同的状态来控制变频器启停,设定变频器的运行速度进而控制电机。监控系统采用西门子1500系列PLC,支持
    的头像 发表于 08-12 10:49 1323次阅读
    通信<b class='flag-5'>协议</b>高材生,PROFINET to <b class='flag-5'>CANopen</b>网关连接西门子PLC与汇川变频器

    承担CANOPEN转PROFINET协议转换功能的网关与台达伺服器的连接

    西门子S7 - 1200系列PLC可编程逻辑控制器(PLC),需与具备CANOPEN通讯功能的伺服驱动器设备进行连接。西门子的PLC采用PROFINET实时以太网通讯协议,若要连接CANOPE
    的头像 发表于 07-24 18:01 729次阅读
    承担<b class='flag-5'>CANOPEN</b>转PROFINET<b class='flag-5'>协议</b>转换功能的网关与台达伺服器的连接

    CANopen转EtherCAT协议转换案例解析

    在工业自动化领域,运动控制器与传感器之间的协议兼容性是系统集成中的关键挑战。某智能装备制造企业采用EtherCAT协议的运动控制器作为主站,需驱动基于CANopen协议的分布式传感器网
    的头像 发表于 06-17 19:22 670次阅读
    <b class='flag-5'>CANopen</b>转EtherCAT<b class='flag-5'>协议</b>转换案例解析

    协议大和解:ETHERCAT转CANopen网关配置

    最近有同学后台咨询疆鸿智能EtherCAT转CANopen协议转换网关如何配置,小编今天给大家详细分享下配置的步骤。 一,设备主要功能 JH-ECT009 型网关是EtherCAT网络
    的头像 发表于 05-21 14:55 916次阅读
    <b class='flag-5'>协议</b>大和解:ETHERCAT转<b class='flag-5'>CANopen</b>网关配置

    面向高温工业场景的EtherCAT/CANopen协议转换系统设计与应用

    在金属冶炼行业,高效稳定的通信系统是保障生产流程顺畅、提升生产效率的关键。从矿石预处理、高温熔炼,到精炼成型,各个环节的设备紧密协作,而JH-ECT009疆鸿智能EtherCAT转CANopen协议
    的头像 发表于 05-21 14:41 497次阅读
    面向高温工业场景的EtherCAT/<b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>转换系统设计与应用