[发明专利]一种实现CANopen从站的方法无效
申请号: | 201010189480.2 | 申请日: | 2010-06-02 |
公开(公告)号: | CN101854300A | 公开(公告)日: | 2010-10-06 |
发明(设计)人: | 徐喆;董石峰;段建民 | 申请(专利权)人: | 北京工业大学 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L12/40 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 刘萍 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 canopen 方法 | ||
技术领域:
本发明属于现场总线技术领域,一种实现CANopen从站的方法,特别是将最早截止期任务优先调度算法(Earliest Deadline First,EDF)引入到CANopen协议中,该方法保证了低优先级报文对实时性的要求。
背景技术:
作为一种真正开放的CAN(Controller Area Network)总线高层协议,CANopen协议允许不同的CAN设备以标准化的方式进行通讯,使得CAN设备具有互操作性。随着CANopen协议的日益完善,它在国内外已经有很多方面的应用,受到了广泛的重视。CANopen目前正在从汽车工业向更多领域辐射,在欧洲,CANopen协议已被广泛的应用于医疗装置中,并进一步扩展应用到保安控制系统中;尤其是CiA(CAN in Automation)协会会员开发出一系列CANopen产品,在机械制造、铁路、船舶、制药、食品加工、车辆等领域获得了广泛应用;在美国,CANopen协议已经成为装载机械和公共运输设备的协议标准,同时也应用于嵌入式系统的控制。但是据了解,国内在CANopen的研究还处于起步阶段,除了中国单片机公共实验室(BOL)外,目前鲜有研究院所在进行相关工作,而中国在该领域的标准制定工作也仍处于摸索阶段。因此CANopen协议在我国的进一步推广仍需大量的研发工作。由于知识产权和产品化的问题,CANopen节点的实现方法在国外也无相关技术的公开文献报道。
发明内容:
本发明的目的在于提供一种实现可灵活配置的CANopen从站的方法。
本发明提供一种实现CANopen从站的方法,如图1、图2和图3所示,其特征在于,包括以下步骤:
1)系统上电,首先初始化eCos(embedded configurable operating system)操作系统,至少包括对硬件资源的初始化;
2)初始化CAN控制器模块(集成在处理器内部),至少包括总线波特率设置,收发缓冲区配置,以及接收中断设置;
3)设置基于处理器硬件平台的时钟中断;
4)创建定时器线程,初始化系统时间;
5)初始化对象字典,对对象字典中数据区的应用对象进行初始化;
6)创建一个CANopen线程,其内部维护了一个CANopen状态机;
7)开定时器中断,启动eCos操作系统,并开始管理线程;
8)进入状态机循环,首先进入初始化状态;
设置从节点的节点号,初始化过程数据对象(Process Data Objects,PDO)和服务数据对象(Service Date Objects,SDO)的接收和发送报文数组,初始化网络管理报文(Network ManagemenT,NMT)和同步报文的接收报文数组,初始化心跳报文发送周期,初始化PDO在对象字典中的通讯参数和映射参数。
9)初始化完毕,从站自动进入预操作状态,并向CAN总线发送一条启动报文,从站进入正常的状态机循环。
CANopen状态机就是状态管理,负责从节点状态转换,维护着四种状态,分别为初始化状态、预操作状态、操作状态和停止状态。从站的状态机靠接收主站发送的NMT命令报文推动,而且没有应答报文。在预操作状态下,CANopen支持SDO通讯对象、NMT通讯对象和心跳报文的处理;在操作状态下,CANopen支持对包括PDO在内的所有通讯对象的处理;在停止状态下,CANopen支持NMT通讯对象的接收处理和节点保护机制的发送。
为了方便实现CANopen协议,从站按功能定义了PDO通讯对象处理函数、SDO通讯对象处理函数、NMT通讯对象处理函数和同步报文通讯对象处理函数。
当CAN控制器监听到总线有报文传输时,将产生接收报文中断,读报文中断服务程序开始执行,将报文从CAN控制器的接收缓冲区中读出,并通过CAN驱动接口函数对报文分类并存储到PDO或SDO或NMT或同步报文通讯对象数组中,并设置通讯对象接收数组非空标志;CANopen线程中的状态机调用接收通讯对象分发处理函数,将通讯对象数组中的报文分发给PDO或SDO或NMT或同步报文处理函数,通讯对象处理函数通过对象字典的接口对对象字典中的对象进行读写操作,完成CANopen报文的处理任务。
在该过程中如果有报文需要发送,则通过通讯对象发送函数将对象字典中的对象封装成PDO、SDO或者心跳报文的格式,在CANopen线程中调用CAN驱动发送接口函数,将报文内容写进CAN控制器的发送缓冲区中并将其发送到CAN总线上。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010189480.2/2.html,转载请声明来源钻瓜专利网。