发明名称 一种实现CANopen主站的方法
摘要 一种实现CANopen主站的方法属于现场总线领域。其特征在于本主站的实现是基于MC9S12DP512硬件平台,在UC/OS-II操作系统之上构建的一个多线程系统,包括调度机线程、写报文线程和读报文中断。调度机用来管理CAN报文接收、CAN报文发送、PDO报文分发、SDO报文分发、NMT报文分发、同步报文生成、PDO处理、SDO处理和NMT处理等CANopen的基本任务。另外,作为CANopen协议核心的对象字典是通过散列表的方式构建的。这种构建对象字典的方式满足了主站对其对象字典必须具有可快速查找、添加、删除对象的特性的要求。本发明的优越性在于将任务调度应用在主站的设计中,使其具有高度的实时性、并发处理能力和动态灵活性;所实现的对象字典能满足网络的灵活扩展能力,可动态的向对象字典中添加对象。
申请公布号 CN101222510A 申请公布日期 2008.07.16
申请号 CN200810056824.5 申请日期 2008.01.25
申请人 北京工业大学 发明人 徐喆;闫士珍;宋威;余春暄;段建民;张明杰
分类号 H04L29/06(2006.01);H04L12/28(2006.01) 主分类号 H04L29/06(2006.01)
代理机构 北京思海天达知识产权代理有限公司 代理人 刘萍
主权项 1.一种实现CANopen主站的方法,其特征在于,包括以下步骤:1)主站开始运行时,首先初始化全局变量,对本协议栈中需要的所有全局变量进行初始化;2)初始化系统时间,该系统时间是通过定时器获得的微秒级时间;3)初始化基本任务,包括给它们分配存储空间,赋初始值;4)初始化对象字典,建立基本的对象字典项;5)添加节点,向主站的对象字典中添加从节点的信息;6)建立发送PDO,在对象字典中添加发送PDO对应的所有信息;7)建立接收PDO,在对象字典中添加接收PDO的所有信息;8)启动网络;9)初始化操作系统;10)创建线程,这里只创建一个开始线程;11)启动操作系统,操作系统开始调度线程:第一个被操作系统调度的线程是开始线程,在这个线程中完成的工作包括硬件的初始化、调度机线程的创建和写报文线程的创建,该线程运行一次之后就将自己销毁;之后写报文线程被调度运行,但是此时没有报文要发送,所以该线程退出运行状态并触发调度机线程;调度机线程完成CANopen内部各任务的调度;在没有更高优先级线程处于就绪态或者出现中断时该线程将会一直处于循环运行状态;当调度机中的任务需要发送报文时触发写报文发送线程,该线程将需要发送的报文写进CAN控制器相应的寄存器中并将其发送到CAN总线上;当CAN控制器收到报文时将产生报文接收中断,读报文中断服务程序开始执行,将报文从CAN控制器中读出,当调度机线程再次获运行时将调度其管理的相应任务处理该报文。
地址 100022北京市朝阳区平乐园100号