一种基于DSP28335的CANopen主站实现方法
【专利摘要】本发明公开一种基于DSP28335的CANopen主站实现方法,包括,CanOpen协议从栈系统,状态机模块、CAN通信管理模块、对象字典管理模块、网络管理模块、计时器管理模块、通信对象管理模块。有益效果是,采用DSP28335平台经过简单配置即可布置成功能完善的CANopen主站的方法,在DSP28335平台上实现了具有针对性优化的CANopen从节点功能可以经过简单修改移植到同系列CPU下;标准C语言编写具有良好的可移植性;代码可裁减、对系统资源占用少、实时性高。C语言编写与其它用户程序契合度高可实现程序间的无缝链接与嵌入;可应用性强,开发成本少,维护与功能扩展方便,利于产品的小型化。
【专利说明】 —种基于DSP28335的CANopen主站实现方法
【技术领域】
[0001]本发明涉及微处理器应用【技术领域】;特别是涉及一种基于DSP28335的CANopen主站实现方法。
【背景技术】
[0002]CANopen是基于CAN_bus规范的高层应用协议,是由生产厂商和用户联合CiA共同开发的,并在2002年成为CENELEC EN 50325-4标准。同时CANopen也是一个子协议系列,其基本的通信机制在通信子协议(CommunicationProfile)中进行描述。CANopen已经在大量的工业通信领域建立了标准,用来实现基于CAN-bus分布式自动化控制设备的工业通信。在每一个CANopen节点下,它不但允许以广播的方式传递讯息,更可以以点对点的方式收发数据。在CANopen网络管理功能中简化了项目的开发。此外,用户可由CANopen的基本装置结构来执行及诊断该网络的开始与错误管理。在相同的局域网络下,任何一项CANopen的设备都能有效的沟通、取得I/O数值状态、及节点状态。由于CANopen是基于CAN总线,因此其也属于总线型网络,网络中由一个主站节点与数个主站节点或网关设备组成,在布线和维护等方面非常方便,可最大限度的节约组网成本,并可以灵活方便的扩展新的主站节点。
[0003]现有技术中的CANopen协议技术,主要由欧洲国家掌握,国内对CANopen协议技术的应用,主要来源于购买国外现有的源代码或嵌入式模块来实现。购买源代一般都基于通用平台,设计代码规模一般较大、占用系统资源相对庞大,由于不对使用者开放核心技术,无法真正与产品达到完美契合。对于产品的优化及新产品的开发都非常不利。
[0004]嵌入式模块一般做为单独的硬件模块方式实现与系统CPU通过UART等内部总线实现。由于系统数据从系统CPU传送到模块及模块内部处理都需要一定的时间,所以会使节点响应速度相应变慢,由于CAN总线通信速度达到1M/S,一般的内部串行总线无法达到相应速度,致使成为速度瓶颈,影响整个CANopen网络信息交换速率。大多数功能模块功能单一无法进行灵活配置,添加新功能只能依靠相应厂商开发新型号,并需要在产品设计中单独考虑其安装空间、单只成本较高,不利于产品的小型化及规模化。
【发明内容】
[0005]本发明所要解决的技术问题是,提供一种在DSP28335平台上经过简单配置即可布置成,功能完善的CANopen主站的方法。
[0006]本发明所米用的技术方案是,一种基于DSP28335的CANopen主站实现方法,包括以下步骤;
步骤一、基于DSP28335的片内自带CAN2.0模块作为底层的物理层与数据链路层,用C语言编写开发的状态机模块、CAN通信管理模块、对象字典管理模块、网络管理模块、计时器管理模块和通信对象管理模块的CanOpen协议从栈系统;
步骤二、状态机模块用来提供整体从节点CANopen模块运行状态的控制功能;主要负责节点启动后的工作状态转换,为其它模块的工作状态提供限定条件;
步骤三、CAN通信管理模块主要用来初始化底层CAN2.0硬件模块,为高层功能提供发送、接收数据及硬件状态管理的通信接口,对底层硬件数据及通信状态进行管理;
步骤四、对象字典管理模块主要用来为高层协议提供物理层与数据链路层的功能;初始化底层CAN2.0硬件模块,为高层功能提供发送、接收数据及硬件状态管理的通信接口,对底层硬件数据及通信状态进行管理;
步骤五、网络管理模块主要用来提供NMT message的产生与处理功能。主要包括NMT模块控制、MNT节点保护、NMT Boot-up。NMT模块控制功能主要为从网络获得NMT命令,为状态机模块提供切换中断源与切换命令。并且在系统需要的情况下提供波特率自动分配功能(LSS);
步骤六、计时器管理模块计时器管理模块主要为CANopen模块提供微秒级别精度的周期性中断与时基。主要负责系统计时器的初始化及管理;CANopen节点的定时中断控制,为每个服务功能提供微秒精度的定时中断服务源;为其它|吴块提供时基查询功能;
步骤七、通信对象管理模块的CanOpen协议从栈系统,通信对象管理模块主要实现roO、SDO、Emergency Object三个主要通信对象处理与产生,实现CIA协议中301协议功能,并可选择性加载401、402等通信子协议功能,CANopen协议的对象字典是通过OD生成工具进行生成,有良好的通用性和灵活性,所实现的对象字典具有良好的扩展能力,主站可动态的通过SDO改变字典中所有R/W数据。
[0007]所述步骤二中工作状态转换主要包括:初始化状态、预操作状态、操作状态、停止状态;状态的切换主要依靠从网络管理模块中获得的NMT命令来驱动。
[0008]数据、访问查找方式为双数组指针定位的方式,每个数据的访问只需对主映射数组与子映射数组进行两次访问即可定位到单独数据条项;访问方式针对DSP283X系列CPU流水线工作方式进行优化,进行数据查找工作时,不打断流水线直接使用数据位置指针访问数据。
[0009]支持多达128个TPDO或RPD0、2路SDO服务器与客户端、完整的Emergency Object对象功能,但随着所使用的服务与功能的增加,代码量与系统资源占用率会随之增加,可随着应用场合不同,增减所使用的功能来达到代码与资源的最优化使用。
[0010]主要实现了 CAN0PEN协议的以下功能:
CIA301协议中的对象字典全部功能;四种报文,即通信对象包括,管理报文、SDO、PDO和预定义报文或者特殊功能对象;节点状态机功能;CIA401通讯子协议,并具有扩展其它标准通讯子协议的能力;计时器模块对CANopen节点操作的支持与管理功能,使节点具备快速反应能力;底层CAN模块对CANopen功能的支持使节点通信速度与通信复杂度达到最优化;对象字典生成UI,使对象字典的生成与管理更加方便;对象字典具有良好的扩展能力,主站可动态的通过SDO改变字典中所有R/W数据,底层CAN2.0系统用于总线上所有底层数据的交换。
[0011]本发明的有益效果是,采用DSP28335平台上经过简单配置即可布置成功能完善的CANopen主站的方法,在DSP28335平台上实现了具有针对性优化的CANopen从节点功能可以经过简单修改移植到同系列CPU下;标准C语言编写具有良好的可移植性,支持子协议扩展可通过新的标准子协议代码编写与嵌入达到实现新功能目的;代码可裁减、对系统资源占用少、实时性高。C语言编写与其它用户程序契合度高可实现程序间的无缝链接与嵌入;可应用性强只需简单配置即可实现不同的节点功能,开发成本少,维护与功能扩展方便,利于产品的小型化。
【专利附图】
【附图说明】
[0012]图1是本发明的程序启动流程图;
图2是本发明的各部分功能配合框图。
【具体实施方式】
[0013]下面结合附图和【具体实施方式】对本发明作进一步详细说明:
如图1、图2所示,本发明一种基于DSP28335的CANopen主站实现方法,包括以下步骤;步骤一、基于DSP28335的片内自带CAN2.0模块作为底层的物理层与数据链路层,用C语言编写开发的状态机模块、CAN通信管理模块、对象字典管理模块、网络管理模块、计时器管理模块和通信对象管理模块的CanOpen协议从栈系统;
步骤二、状态机模块用来提供整体从节点CANopen模块运行状态的控制功能;主要负责节点启动后的工作状态转换,为其它模块的工作状态提供限定条件;
步骤三、CAN通信管理模块主要用来初始化底层CAN2.0硬件模块,为高层功能提供发送、接收数据及硬件状态管理的通信接口,对底层硬件数据及通信状态进行管理;
步骤四、对象字典管理模块主要用来为高层协议提供物理层与数据链路层的功能;初始化底层CAN2.0硬件模块,为高层功能提供发送、接收数据及硬件状态管理的通信接口,对底层硬件数据及通信状态进行管理;
步骤五、网络管理模块主要用来提供NMT message的产生与处理功能。主要包括NMT模块控制、MNT节点保护、NMT Boot-up。NMT模块控制功能主要为从网络获得NMT命令,为状态机模块提供切换中断源与切换命令。并且在系统需要的情况下提供波特率自动分配功能(LSS);
步骤六、计时器管理模块计时器管理模块主要为CANopen模块提供微秒级别精度的周期性中断与时基。主要负责系统计时器的初始化及管理;CANopen节点的定时中断控制,为每个服务功能提供微秒精度的定时中断服务源;为其它|吴块提供时基查询功能;
步骤七、通信对象管理模块的CanOpen协议从栈系统,通信对象管理模块主要实现roO、SDO、Emergency Object三个主要通信对象处理与产生,实现CIA协议中301协议功能,并可选择性加载401、402等通信子协议功能,CANopen协议的对象字典是通过OD生成工具进行生成,有良好的通用性和灵活性,所实现的对象字典具有良好的扩展能力,主站可动态的通过SDO改变字典中所有R/W数据。
[0014]所述步骤二中工作状态转换主要包括:初始化状态、预操作状态、操作状态、停止状态;状态的切换主要依靠从网络管理模块中获得的NMT命令来驱动。
[0015]数据、访问查找方式为双数组指针定位的方式,每个数据的访问只需对主映射数组与子映射数组进行两次访问即可定位到单独数据条项;访问方式针对DSP283X系列CPU流水线工作方式进行优化,进行数据查找工作时,不打断流水线直接使用数据位置指针访问数据。支持多达128个TPDO或RPD0、2路SDO服务器与客户端、完整的Emergency Object对象功能,但随着所使用的服务与功能的增加,代码量与系统资源占用率会随之增加,可随着应用场合不同,增减所使用的功能来达到代码与资源的最优化使用。
[0016]主要实现了 CAN0PEN协议的以下功能:
CIA301协议中的对象字典全部功能;四种报文,即通信对象包括,管理报文、SDO、PDO和预定义报文或者特殊功能对象;节点状态机功能;
CIA401通讯子协议,并具有扩展其它标准通讯子协议的能力;计时器模块对CANopen节点操作的支持与管理功能,使节点具备快速反应能力;底层CAN模块对CANopen功能的支持使节点通信速度与通信复杂度达到最优化;对象字典生成UI,使对象字典的生成与管理更加方便;对象字典具有良好的扩展能力,主站可动态的通过SDO改变字典中所有R/W数据,底层CAN2.0系统用于总线上所有底层数据的交换。
[0017]DSP28335数字信号控制器(DSC)平台,基于C28x+FPU的控制器和TI现有的C28xDSC具有相同的32位定点架构,还包括一个单精度(32位)的IEEE754浮点单元(FPU)。这是一个非常高效的的C/C++引擎,它能使用户用高层次的语言开发他们的系统控制软件。这也使得能够使用C/C++开发算术算法。此器件在处理DSP算术任务时与处理系统控制任务时同样有效而系统控制任务通常由微控制器器件处理。这样的效率在很多系统中省却了对第二个处理器的需要。32x32位MAC64位处理能力使得控制器能够有效地处理更高的数字分辨率问题。添加了带有关键寄存器自动环境保存的快速中断响应,使得一个器件能够用最小的延迟处理很多异步事件。此器件有一个具有流水线式存储器访问的8级深受保护管道。这个流水线式操作使得此器件能够在高速执行而无需求助于昂贵的高速存储器。特别分支超前硬件大大减少了条件不连续而带来的延迟。特别存储条件操作进一步提升了性能。
[0018]本发明为基于TI公司的DSP28335系列32位浮点DSP芯片硬件平台进行开发的。整个协议栈分为:硬件驱动层、CANopen函数处理层、CANopen应用接口层来划分各部分具体工作协同关系。
[0019]硬件驱动层实现了计时器管理模块CAN通信管理模块的绝大部分功能。初始化各部分硬件模块,给协议栈提供正常进行所需的调度时钟,并通过CAN控制器提供到CAN总线的物理层与数据链路层的功能。为整个协议栈的运行提供CPU、RAM等系统资源。
[0020]CANopen函数处理层,实现了 CANopen协议栈所有主要功能,包括:状态机模块、通信对象管理模块、网络管理模块的全部功能,及计时器管理模块中的系统时钟调度功能与对象字典管理模块的对象字典访问管理功能。
[0021]对象字典访问管理功能负责当有其它功能模块需要访问对象字典中的数据时提供访问接口,并对不同的对象的读写权限进行保护。
[0022]系统时钟调度功能负责整个协议栈各函数运行的调度与分配,在不同的时间片调用不同的节点功能来实现SYNC、roo、SD0、网络管理等功能的自动定时调用。
[0023]状态机功能通过NMT命令来切换节点不同的运行状态,并将运行状态分配给SYNC,PD0,SD0,网络管理等模块以指导各模块的运行功能。SYNC功能通过与CAN通信管理模块通信在总线上发送定时的SYNC报文同步整个总线的通信周期。SDO功能通过与CAN通信管理模块通信为主站或其它主站提供SDO服务器与客户端功能。PDO功能通过与CAN通信管理模块通信实现协议栈的TPDO与RPDO功能。[0024]网络管理功能通过NMT message与主站同步子站状态接收主站控制命令。
[0025]在CANopen应用接口层中提供了针对用户访问的各种功能函数用于用户可以在需要的时候对CANopen节点进行启动、停止、管理、数据交互等操作。
[0026]对象字典功能用于保存可掉电保存的数据与参数等,并在系统上电后为状态机、对象字典访问管理、SYNC、PDO, SDO、网络管理等模块提供参数及数据读写功能。
[0027]用户可以通过将对象字典中的相应对象直接映射到系统全局变量等方式实现CANopen节点与用户程序自动交互数据的目的。用户可以通过对象字典生成工具对对象字典的大部分内容进行修改进而设定整个CANopen协议栈的整体功能与属性。
[0028]CANopen模块启动过程:
首先系统上电供电稳定后对系统时钟、中断向量等系统基本模块进行初始化。
[0029]系统初始化完成后,对DSP28335自带的CAN控制器,根据CANopen运行所需参数进行初始化,然后,进行为CANopen模块提供时钟的CPUtimerO进行初始化。
[0030]下一步开始对CANopen模块的核心对象字典中的参数进行初始化,即,将对象字典中所存储的运行关键参数读取到控制运行的变量中等动作。
[0031]对CANopen节点指定一个nodeID,全能全局中断使CPUtimerO的中断可以为CANopen的正常运行提供中断服务。
[0032]使能CANopen模块的状态机初始化状态,CANopen模块进行初始化后,自动进入Pre_Operational状态,向总线上发送Boot-up消息。
[0033]总线上的主站接收到该命令后,通过NMT命令及SOD对该节点进行相应配置工作,配置完成后向其发送Start_Remote_node命令使本节点状态机进行操作状态进入正常的状态机循环。
[0034]本发明采用DSP28335平台上经过简单配置即可布置成功能完善的CANopen主站的方法,在DSP28335平台上实现了具有针对性优化的CANopen从节点功能可以经过简单修改移植到同系列CPU下;标准C语言编写具有良好的可移植性,支持子协议扩展可通过新的标准子协议代码编写与嵌入达到实现新功能目的;代码可裁减、对系统资源占用少、实时性高。C语言编写与其它用户程序契合度高可实现程序间的无缝链接与嵌入;可应用性强只需简单配置即可实现不同的节点功能,开发成本少,维护与功能扩展方便,利于产品的小型化。
【权利要求】
1.一种基于DSP28335的CANopen主站实现方法,其特征在于,包括以下步骤; 步骤一、基于DSP28335的片内自带CAN2.0模块作为底层的物理层与数据链路层,用C语言编写开发的状态机模块、CAN通信管理模块、对象字典管理模块、网络管理模块、计时器管理模块和通信对象管理模块的CanOpen协议从栈系统; 步骤二、状态机模块用来提供整体从节点CANopen模块运行状态的控制功能;主要负责节点启动后的工作状态转换,为其它模块的工作状态提供限定条件; 步骤三、CAN通信管理模块主要用来初始化底层CAN2.0硬件模块,为高层功能提供发送、接收数据及硬件状态管理的通信接口,对底层硬件数据及通信状态进行管理; 步骤四、对象字典管理模块主要用来为高层协议提供物理层与数据链路层的功能;初始化底层CAN2.0硬件模块,为高层功能提供发送、接收数据及硬件状态管理的通信接口,对底层硬件数据及通信状态进行管理; 步骤五、网络管理模块主要用来提供NMT message的产生与处理功能;主要包括NMT模块控制、MNT节点保护、NMT Boot-up ;NMT模块控制功能主要为从网络获得NMT命令,为状态机模块提供切换中断源与切换命令;并且在系统需要的情况下提供波特率自动分配功能(LSS); 步骤六、计时器管理模块计时器管理模块主要为CANopen模块提供微秒级别精度的周期性中断与时基;主要负责系统计时器的初始化及管理;CANopen节点的定时中断控制,为每个服务功能提供微秒精度的定时中断服务源;为其它|吴块提供时基查询功能; 步骤七、通信对象管理模块的CanOpen协议从栈系统,通信对象管理模块主要实现roO、SDO、Emergency Object三个主要通信对象处理与产生,实现CIA协议中301协议功能,并可选择性加载401、402等通信子协议功能,CANopen协议的对象字典是通过OD生成工具进行生成,有良好的通用性和灵活性,所实现的对象字典具有良好的扩展能力,主站可动态的通过SDO改变字典中所有R/W数据。
2.根据权利要求1所述的基于DSP28335的CANopen主站实现方法,其特征在于,所述步骤二中工作状态转换主要包括:初始化状态、预操作状态、操作状态、停止状态;状态的切换主要依靠从网络管理模块中获得的NMT命令来驱动。
3.根据权利要求1所述的基于DSP28335的CANopen主站实现方法,其特征在于,数据、访问查找方式为双数组指针定位的方式,每个数据的访问只需对主映射数组与子映射数组进行两次访问即可定位到单独数据条项;访问方式针对DSP283X系列CPU流水线工作方式进行优化,进行数据查找工作时,不打断流水线直接使用数据位置指针访问数据。
4.根据权利要求1所述的基于DSP28335的CANopen主站实现方法,其特征在于,支持多达128个TPDO或RPD0、2路SDO服务器与客户端、完整的Emergency Object对象功能,但随着所使用的服务与功能的增加,代码量与系统资源占用率会随之增加,可随着应用场合不同,增减所使用的功能来达到代码与资源的最优化使用。
5.根据权利要求1所述的基于DSP28335的CANopen主站实现方法,其特征在于,主要实现了 CAN0PEN协议的以下功能: CIA301协议中的对象字典全部功能;四种报文,即通信对象包括,管理报文、SDO、PDO和预定义报文或者特殊功能对象;节点状态机功能;CIA401通讯子协议,并具有扩展其它标准通讯子协议的能力;计时器模块对CANopen节点操作的支持与管理功能,使节点具备快速反应能力;底层CAN模块对CANopen功能的支持使节点通信速度与通信复杂度达到最优化; 对象字典生成UI,使对象字典的生成与管理更加方便;对象字典具有良好的扩展能力,主站可动态的通过SDO改变字典中所有R/W数据,底层CAN2.0系统用于总线上所有底层数据的交换。
【文档编号】H04L12/40GK103997450SQ201410233898
【公开日】2014年8月20日 申请日期:2014年5月28日 优先权日:2014年5月28日
【发明者】谷兴华, 问虎龙, 陈海彬 申请人:天津瑞能电气有限公司