发明名称 一种实现CANopen从站的方法
摘要 一种实现CANopen从站的方法,特征在于本从站实现的硬件平台是基于PowerPC架构的处理器,在eCos操作系统上构建多线程系统,包括CANopen状态机线程、定时器线程和读报文中断。状态机线程用来管理从站的状态转换,CAN报文接收、CAN报文、PDO报文、SDO和报文收发、PDO、SDO、NMT和同步报文处理等CANopen的基本任务。其中传输实时数据的同步PDO报文中引入了最早截止期优先级(EDF)动态调度算法,保证低优先级报文对实时性的要求,改善总线通讯特性。本发明将eCos嵌入式实时操作系统应用在从站的设计中,具有高度的实时性和并发处理能力;将动态调度算法引入CANopen从站同步PDO报文的设计,保证低优先级报文对实时性的要求;对象字典满足网络灵活的配置,通过主站动态的改变对象字典中的对象。
申请公布号 CN101854300B 申请公布日期 2012.05.16
申请号 CN201010189480.2 申请日期 2010.06.02
申请人 北京工业大学 发明人 徐喆;董石峰;段建民
分类号 H04L12/56(2006.01)I;H04L12/40(2006.01)I 主分类号 H04L12/56(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 刘萍
主权项 一种实现架构在控制局域网路上的高层通讯协定的从站的方法,其特征在于,包括以下步骤:1)系统上电,首先初始化嵌入式可配置操作系统;2)初始化集成在处理器内部嵌入式可配置控制器模块,至少包括总线波特率设置,收发缓冲区配置,以及接收中断设置;3)设置基于处理器的时钟中断;4)创建定时器线程,初始化系统时间;5)初始化对象字典,对对象字典中数据区的应用对象进行初始化;采用主索引定位,子索引确定对象的思想构建对象字典,具体如下:使用结构体定义子索引,子索引结构体的成员变量包含对象的属性,至少包含读写权限、数据类型、数据长度和指向对象的指针,定义主索引时包含指向子索引的指针和子索引数目;根据对象的功能将对象字典的主索引分成不同的功能区,为每个分区定义上边界和下边界;6)创建一个架构在控制局域网路上的高层通讯协定的线程,架构在控制局域网路上的高层通讯协定的线程内部维护了一个架构在控制局域网路上的高层通讯协定的状态机;7)开定时器中断,启动嵌入式可配置操作系统,并开始管理线程;8)进入状态机循环,首先进入初始化状态;设置从节点的节点号,初始化过程数据对象和服务数据对象的接收和发送报文数组,初始化网络管理报文和同步报文的接收报文数组,初始化心跳报文发送周期,初始化过程数据对象在对象字典中的通讯参数和映射参数;9)初始化完毕,架构在控制局域网路上的高层通讯协定的从站自动进入预操作状态,并向嵌入式可配置总线发送一条启动报文,从站进入正常的状态机循环;架构在控制局域网路上的高层通讯协定的状态机就是状态管理,负责从节点状态转换,维护着四种状态,分别为初始化状态、预操作状态、操作状态和停止状态;从站的状态机靠接收主站发送的网络管理报文命令报文推动,而且没有应答报文;在预操作状态下,架构在控制局域网路上的高层通讯协定的支持服务数据对象报文、网络管理报文报文和心跳报文的处理;在操作状态下,架构在控制局域网路上的高层通讯协定的支持对服务数据对象报文、过程数据对象报文、同步报文、网络管理报文报文和心跳报文的处理;在停止状态下,架构在控制局域网路上的高层通讯协定的支持网络管理报文报文的接收处理和节点保护机制的发送;当嵌入式可配置控制器监听到有报文接收时,将产生接收报文中断,读报文中断服务程序开始执行,将报文从嵌入式可配置控制器的接收缓冲区中读出,对报文分类并存储到过程数据对象或服务数据对象或网络管理报文或同步报文通讯对象数组中,并设置通讯对象接收数组非空标志;在架构在控制局域网路上的高层通讯协定的状态机中调用接收报文分发处理函数,通过查询通讯对象接收数组非空标志,将通讯对象数组中的报文分发给过程数据对象或服务数据对象或网络管理报文或同步报文处理函数,通讯对象处理函数通过对象字典的接口对对象字典中的对象进行读写操作,完成架构在控制局域网路上的高层通讯协定的报文的处理任务;当从站中需要发送报文时,系统通过通讯对象发送函数调用底层嵌入式可配置驱动发送接口函数,将报文内容写进嵌入式可配置控制器的发送缓冲区中并将其发送到嵌入式可配置总线上;当有任务需要从对象字典读或写对象时,提供给对象字典接口函数该对象的主索引和子索引;首先根据主索引定位到对象所在的功能区,然后在具体的功能区中查找主索引项,如果找到了则返回这个主索引项,如果返回的主索引中的子索引数目不小于要查找的对象的子索引值,并且访问权限正确,就直接在返回的主索引项中定位对象子索引的指针,对该子索引中的对象指针进行读或写操作。
地址 100124 北京市朝阳区平乐园100号