CN105487403A - 一种基于can的运动控制***建立及其仿真建模方法 - Google Patents
一种基于can的运动控制***建立及其仿真建模方法 Download PDFInfo
- Publication number
- CN105487403A CN105487403A CN201510731859.4A CN201510731859A CN105487403A CN 105487403 A CN105487403 A CN 105487403A CN 201510731859 A CN201510731859 A CN 201510731859A CN 105487403 A CN105487403 A CN 105487403A
- Authority
- CN
- China
- Prior art keywords
- module
- bus
- node
- data
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于CAN总线的运动控制***,包括控制单元,整流单元,逆变单元、执行电机、工控机、CAN卡、物理层模块、数据链路层模块、应用层模块及硬件接口模块;物理层模块包括CAN物理通信介质及CAN收发器,CAN核心控制器包括发送模块、接收模块、仲裁模块及验收滤波模块,应用层模块包括模拟中心计算机,应用层协议采用CANopen协议;本发明的有益效果是:本发明提供硬件接口模块,将待测节点的物理设备直接接入本发明,即可实现在无需完整物理***的环境下对接入节点设备的性能测试;EDF动态优先级调度算法更能改善总线的通信能力,提高总线的吞吐能力,进而可以改善总线***的实时性能。
Description
技术领域
本发明涉及CAN通讯***,尤其涉及一种基于CAN的运动控制***建立及其仿真建模方法。
背景技术
CAN(ControllerAreaNetwork),即控制器局域网。CAN总线传输方式能够有效解决传统数据交换方法(即点对点的传输方式)无法满足现代汽车中所使用的大量电子控制***和通讯***的通信要求的问题。
CANopen是基于CAN总线的应用层的网络协议,是由CAL协议扩展而来的。自从发布以来就得到广泛的认可。这个协议的两种传输机制为CAN传输8字节以上数据提供了一套解决方案。通过CANopen协议及其设备子协议,例如数字和模拟输入输出模块子协议,驱动子协议,操作设备子协议,控制器,编码器子协议等。这使得多家制造商的产品能够用于任何CANopen网络,解决一致性、互用性及互换性问题。最初CANopen主要是用于嵌入式工业控制***中,因为它的协议精炼、透明、便于理解,又具有较高的实时性和可靠性、数据传输的速率高,组网成本低等优点[5],近年来,被应用到各个行业。CAN总线在我国的应用已经比较广泛,但还停留在较低层次的应用上,并且都是自己定义的一些简单的应用层的协议,没有和国际标准的CAN总线的高层协议兼容。
发明内容
本发明所要解决的技术问题是提供一种基于CAN总线的运动控制***及基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,解决目前运动***中CAN总线的通信能力差,吞吐能力低,实时性能差的问题。
本发明解决上述技术问题的技术方案如下,一种基于CAN总线的运动控制***,其特征在于:包括控制单元,整流单元,逆变单元、执行电机、工控机、CAN卡、物理层模块、数据链路层模块、应用层模块及硬件接口模块;所述物理层模块包括CAN物理通信介质及CAN收发器,所述CAN物理通信介质用于完成信号传输,所述CAN收发器提供对总线的差动发送和接收功能;所述数据链路层模块包括CAN核心控制器,所述CAN核心控制器包括发送模块、接收模块、仲裁模块及验收滤波模块,所述发送模块用于将信息帧发往物理层,所述接收模块用于从物理层获取信息帧,所述仲裁模块用于对发送出的与接收到的信息帧进行仲裁,所述验收滤波模块从数据链路层接收帧信息,通过验收屏蔽码和验收码过滤本节点需要的数据;所述应用层模块包括模拟中心计算机,用于模拟节点设备仿真模型,应用层协议采用CANopen协议;所述硬件接口模块用于硬件与物理层之间的通信。
进一步,所述控制单元采用CU320-2DP控制单元;所述整流单元采用智能型电源模块,所述智能型电源模块将三相交流电整流成直流电,并将直流电回馈到电网,所述智能型电源模块和所述控制单元通过Drive-CLiQ保持通信;所述逆变单元和控制单元之间通过Drive-CLiQ接口,进行快速数据交换;所述逆变单元的编码器通过Drive-CLiQ电缆连接,将编码器的反馈信号反馈给控制单元;所述工控机包括主机、显示器、鼠标和键盘;所述CAN卡采用XJA1000CAN控制器作为主控芯片。
进一步,所述发送模块包括组帧模块、信号发送模块和发送控制器,发送控制器通过总线与组帧模块和信号发送模块连接;当接收到相应信号时,组帧模块将完整的信息帧传输给信号发送模块,信号发送模块将当前数据位发送给CAN总线。
进一步,所述应用层模块还包括模拟执行设备。
进一步,所述应用层模块采用C语言作为开发工具,通过在BorlandC++2.0编译环境下编译构建。
一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:首先在Stateflow环境下使用状态、迁移和条件建立涉及通信活动部分的节点模型;所述节点模型包括节点发送部分、数据缓冲部分和数据产生部分;将时间基准、输入输出变量、Stateflow环境下的16个节点子模块及总线仲裁子模块组成仿真模型母模块。
进一步,所述总线仲裁子模块在通信过程中,具有空闲状态、忙状态和帧间隔状态三种状态;当总线没有信号传输时,总线处于空闲状态状态;当有节点发送的信号时,经过仲裁函数的仲裁,仲裁结束后,总线开始传输节点的信息,总线处于忙状态;当节点信息传送完成后,总线再经过一个帧间隔状态之后在回到空闲状态;在仿真过程中,总线的仲裁是由仲裁函数实现,且各个节点的优先级为节点1优先级高,节点16最低;所述仲裁函数通过判断节点号当前状态是否是1而决定是否仲裁成功,若为1则仲裁成功。
进一步,所述节点发送部分包括无任务状态、等待仲裁状态、传输状态、帧间隔状态和状态迁移线;其状态转换的流程是节点首先处于无任务状态,等待数据进入缓冲区,退出这个状态进入等待仲裁状态,这时候开始监测总线是否是空闲状态,如果是则参加总线的竞争,如果在总线竞争中获胜,则将采集到的数据发送出去,发送完成则重新回到无任务状态;所述帧间隔状态和部分所述状态迁移线完成***各个任务优先级的分配工作;所述节点发送部分还包括重发机制,通过判断截止期为小于0的数来确定总线上的数据是否重发;
所述数据缓冲部分包括缓冲器空和非空两个状态,容量设置为1,当有新数据进入缓冲器时旧的数据丢失;信息量设为固定值100bits,采用b1记录节点每次运行完成后向总线上成功发送的总帧数;
所述数据产生部分包括数据的产生和组帧两个状态,其中数据来自所述仿真模型母模块的随机函数部分,采用p1来记录节点每次运行产生的帧的个数。
进一步,所述节点子模块、总线仲裁子模块都为并行结构。
本发明的有益效果是:本发明提供硬件接口模块,将待测节点的物理设备直接接入本发明,即可实现在无需完整物理***的环境下对接入节点设备的性能测试;应用层模块还包括模拟执行设备,模拟执行设备用来代替其他未生产出硬件设备的节点,构成完整的CAN通信***,此时CAN通信***为软硬件联合仿真***;本发明对CAN通信***的设计和分析提供了有用的工具,可以有效地降低总线节点的设计、开发和测试成本,缩短研发周期。EDF动态优先级调度算法更能改善总线的通信能力,提高总线的吞吐能力,进而可以改善总线***的实时性能。
附图说明
图1为本发明智能型电源模块的结构框图;
图2为本发明SDO读写对象字典操作流程框图;
图3是本发明PDO报文的发送和接收流程框图;
图4是本发明CAN总线仿真模型母模块示意图;
图5为本发明仲裁判断函数的结构示意图;
图6为本发明节点模块的结构框图;
图7为发明采用EDF调度算法总线仿真模型示意图;
图8为本发明采用固定优先级算法的实验仿真结果图;
图9为本发明采用EDF调度算法的实验仿真结果图;
图10为本发明采用固定优先级算法与采用EDF调度算法的实验仿真结果对比图。
图中1,节点发送部分;2,数据缓冲部分;3,数据产生部分;4,空闲状态;5,忙状态;6,帧间隔状态。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
本发明的实施例以SinamicsS120***为例进行说明。
一种基于CAN总线的运动控制***,其特征在于:包括控制单元,整流单元,逆变单元、执行电机、工控机、CAN卡、物理层模块、数据链路层模块、应用层模块及硬件接口模块;所述物理层模块包括CAN物理通信介质及CAN收发器,所述CAN物理通信介质用于完成信号传输,所述CAN收发器提供对总线的差动发送和接收功能;所述数据链路层模块包括CAN核心控制器,所述CAN核心控制器包括发送模块、接收模块、仲裁模块及验收滤波模块,所述发送模块用于将信息帧发往物理层,所述接收模块用于从物理层获取信息帧,所述仲裁模块用于对发送出的与接收到的信息帧进行仲裁,所述验收滤波模块从数据链路层接收帧信息,通过验收屏蔽码和验收码过滤本节点需要的数据;所述应用层模块包括模拟中心计算机,用于模拟节点设备仿真模型,应用层协议采用CANopen协议;所述硬件接口模块用于硬件与物理层之间的通信。
SinamicsS120驱动***的控制单元使用CU320,它是驱动***的大脑,负责控制和协调整个驱动***中的所有模块,完成各个轴的电流环、速度环甚至位置环的控制,并且同一块CU320控制的各个轴之间能互相交换数据,即任意一根轴能够读取控制单元上其它轴的数据。根据连接的***I/O模块的数量、轴控制模式、所需的功能以及CF卡的不同,1块CU320能够控制轴的数量也不同。本***采用CU320-2DP控制单元,它是CU320的升级版本,在相同的***部件下,能控制轴的数量更多;所述整流单元将三相交流电整流成直流电,并将直流电回馈到电网,但直流母线电压不能调节。所述整流单元即为智能型电源模块,其对产品的应用场合不同,根据功率的不同分为几种等级,功率的不同采取的能量回馈方式也有所不同,通讯方式也有所不同。低功率的电源模块采用端子进行控制,而大功率的电源模块通过Drive-CLiQ接口来控制,通过该接口和主控单元进行数据交换。智能型电源模块和控制单元通过Drive-CLiQ保持通信,SLM结构图模型如图1所示;所述逆变单元和控制单元之间通过Drive-CLiQ接口,进行快速数据交换;所述逆变单元的编码器通过Drive-CLiQ电缆连接,将编码器的反馈信号反馈给控制单元;所述工控机包括主机、显示器、鼠标和键盘;所述CAN卡采用XJA1000CAN控制器作为主控芯片。
所述发送模块包括组帧模块、信号发送模块和发送控制器,发送控制器通过总线与组帧模块和信号发送模块连接;当接收到相应信号时,组帧模块将完整的信息帧传输给信号发送模块,信号发送模块将当前数据位发送给CAN总线。
所述应用层模块还包括模拟执行设备。
所述应用层模块采用C语言作为开发工具,通过在BorlandC++2.0编译环境下编译构建。
一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:首先在Stateflow环境下使用状态、迁移和条件建立涉及通信活动部分的节点模型;所述节点模型包括节点发送部分、数据缓冲部分和数据产生部分;将时间基准、输入输出变量、Stateflow环境下的16个节点子模块及总线仲裁子模块组成仿真模型母模块。
所述总线仲裁子模块在通信过程中,具有空闲状态、忙状态和帧间隔状态三种状态;当总线没有信号传输时,总线处于空闲状态状态;当有节点发送的信号时,经过仲裁函数的仲裁,仲裁结束后,总线开始传输节点的信息,总线处于忙状态;当节点信息传送完成后,总线再经过一个帧间隔状态之后在回到空闲状态;在仿真过程中,总线的仲裁是由仲裁函数实现,且各个节点的优先级为节点1优先级高,节点16最低;所述仲裁函数通过判断节点号当前状态是否是1而决定是否仲裁成功,若为1则仲裁成功。
所述节点发送部分包括无任务状态、等待仲裁状态、传输状态、帧间隔状态和状态迁移线;其状态转换的流程是节点首先处于无任务状态,等待数据进入缓冲区,退出这个状态进入等待仲裁状态,这时候开始监测总线是否是空闲状态,如果是则参加总线的竞争,如果在总线竞争中获胜,则将采集到的数据发送出去,发送完成则重新回到无任务状态;所述帧间隔状态和部分所述状态迁移线完成***各个任务优先级的分配工作;所述节点发送部分还包括重发机制,通过判断截止期为小于0的数来确定总线上的数据是否重发;
所述数据缓冲部分包括缓冲器空和非空两个状态,容量设置为1,当有新数据进入缓冲器时旧的数据丢失;信息量设为固定值100bits,采用b1记录节点每次运行完成后向总线上成功发送的总帧数;
所述数据产生部分包括数据的产生和组帧两个状态,其中数据来自所述仿真模型母模块的随机函数部分,采用p1来记录节点每次运行产生的帧的个数。
所述节点子模块、总线仲裁子模块都为并行结构。
CANopen协议的核心设计就是对象字典,因为在对象字典中定义了各种数据类型和通讯对象。对象字典也为应用程序的编写提供了接口;在以SinamicsS120作为从机的基础上,CBC10通讯板集成了CANopen应用层协议,对象字典在从机中也被建立。SDO是起到配置作用的对象,一般我们使SDO在预操作状态下对对象字典中的对象进行具体配置。例如设备型号的读取、对PDO映射的改写等参数。通过SDO写协议改写对象参数,SDO读协议读取对象的状态值;本***开发的SDO管理对象的流程如图2所示。
用SDO服务进行对通信对象的读写时,如果发生错误的,SDO会发送撤销SDO协议帧,在这个帧中会携带错误信息。这个有助于我们分析SDO的读写命令帧格式中具体的错误来源。在程序中我们通过读操作读取设备类型对象1000h,发送的帧数据格式和应答的帧数据格式如下表所示。
表1对象1000hSDO帧格式
在CANopen协议中从节点在从初始化状态转换到预操作状态之前会向主节点发送启动报文,通知主节点从初始化状态转换到了预操作状态。通过NMTboot-up帧格式我们可以检测到启动报文的COB-ID,由启动报文的COB-ID通知程序***已经进入到了预操作状态。这里存在一个问题就是在主从设备先后启动时,会产生检测不到启动报文,所以为了确保主从设备相对同步这里我们采用SDO读***当前状态的办法来进行主机状态的更新。在从节点进入到预操作状态后,在这个状态下我们不能进行传送实时性的数据对象PDO,为此我们需要使节点进入到操作状态才能进行正常PDO对象数据的收发。通过NMT状态转换协议将从机由预操作状态转到操作状态。
如图3所示PDO发送和接收的流程图,***进入到操作模式后,此时进行通信的主要对象就是PDO。在S120***中我们主要使用PDO对象来进行对电机的控制。在PDO对象中通过子索引可以找到使用的传输模式、禁止时间、事件定时器等子对象。在这里我们使用RPDO2和TPDO2、TPDO4对象。通过前面的分析我们知道RPDO2中映射了控制字和速度设定值,TPDO2和TPDO4映射了实际速度值和实际的位置值。在状态转换的操作状态后,我们就可以发送RPDO启动电机,并且送给电机指定的速度。当S120成功介绍RPDO2对象后就会控制电机会按照设定的速度运行。并且通过参数TPDO2和TPDO4把当前的状态字和实际的速度值和位置值发送到主机方,主机侧通过接收缓冲寄存器把接收到的数据保留,然后再通过报文的解析将十六进制的数值变成我们直观可以看懂的十进制的数值。这里描述的接收和发送都是以下位机为参考对象的,所以RPDO和TPDO是下位机S120接收和发送PDO对象。这里的RPDO的管理相对来说很容易,只是按照发送的帧格式将控制字和设定的速度组装发送给S120。在设定速度时,S120***需要按照下面的公式进行计算:
上式中p8798是CBC速度转换因子,p408为脉冲数,p418为分辨率参数。为了解析报文我们也要将上述公式做反变换得到n_set[RPM]参数值。
对于TPDO的接收采用异步接收方式。在异步传送过程中我们可以设置TPDO传送的禁止时间,使得我们对TPDO的报文管理更加容易。在这里我们可以通过Starter软件进行离线设置好禁止时间保存编译后在下载到CF卡,
也可以通过写SDO的通信方式在预操作状态下进行参数的配置。
CAN总线的竞争机制是从CSMA/CA通讯模型基础上发展而来的。其局限性是网络的负载直接影响总线上报文的延时。在总线上负载较小的情况下,报文的传输延时非常小或者可以忽略不计。但随着负载的增加,竞争总线的报文队列增加,网络的吞吐量和利用率增加。这样当网络的吞吐量小于负载的增加速度时,最终会使有的总线上的节点处于堵塞的状态,在高优先级的报文先获得仲裁的机会的情况下会导致具有低优先级报文发送经过一段很长时间或者甚至丢失。这样最终致使CAN总线的实时性严重下降。
对于应用层协议CANopen来说,它主要负责管理NMT、SYNC、SDO、PDO通信对象。因为它需要完成的任务很多,所以需要较高的实时通信能力。由于各个对象的优先级不同竞争总线的能力也会不同。但我们知道NMT、SDO等都是在其他的状态下能够操作的,真正需要实时性操作的对象就只有PDO,因此对这个对象的实时性要求是最高的。对于CANopen网络来说,***需要的节点比较多,每个节点需要传输的数据量比较大,进而使得CAN总线上的网络负载较高。这样使得具有的低优先级的PDO竞争总线的能力弱,产生的报文传输延时会比较大。
实时的调度算法主要是为了在约束的时间内完成***资源的实时调度。关于对实时调度算法的研究主要分为两类:静态(固态)的优先级调度算法和动态的优先级调度算法。关于静态的调度算法是指任务的优先级由开始定义之后保持固定不变,我们有时也称它为固定的优先级调度算法。动态优先级调度,是指执行过程中任务的优先级相对其它任务的优先级是变化的。为了充分分析CAN总线的实时性,下面详细的介绍了两种调度算法并引入到CAN总线中。
固定优先级调度算法在CAN总线***设计过程经常被采用[29],主要是针对周期任务进行实时的调度。在具有固定优先级调度算法的总线***中,***的任务的优先级是固定的,每个任务的优先级在***运行之前就是确定的,并在***运行过程中保持不变。在固定优先级调度算法中比率单调(RM)算法[30]有着广泛的应用。
RM算法主要应用到周期任务的调度上,这种算法简单,实现方便,在对实时***的任务调度中产生了很大的作用。RM调度算法任务的优先级是通过任务周期来决定的。RM算法分配任务的优先级别很容易理解,任务的周期越短,反映的任务的优先级别则越高,反之,则越低。如果将***的任务周期的关系表示为T1<=T2<=...<=Tn,那么通过此调度算法可确定任务的优先级排列为P1>=P2>=...>=Pn。该调度算法要求***的任务总应该在下一个周期到来之前完成当前这个周期,否则就会使得任务错过时限,具有较短周期任务应该尽量先调度先完成,以免错过任务时限。
实时RM调度算法中,每个调度任务都是由一个3元组,每组都是由周期、执行时间、截止时限组成,可以用符号表示为:S=(T,C,D)。RM实时调度算法的实质是:被调度任务集S=(S1,S2,...,Sn),周期分别为T1,T2,…,Tn,执行时间为C1,C2,…,Cn,截止时限为D1,D2,…,Dn。
EDF作为动态调度算法中一种很重要的调度理论,它是周期任务组最佳的调度算法。EDF[33][34]是根据任务距离截止期的长短来分配任务的优先级的,距离截止期越近的任务优先级越高,反而任务的优先级则越低。在EDF调度算法中,任务优先级分配公式定义如下:
di(t)-t
在上述公式中di(t)代表t时刻的任务截止期,由此公式决定了下一时刻所应调度的任务。
例如,假定在实时***中有3个调度任务组:T1=(1,3,3,0)、T2=(1,4,4,0)、T3=(1,5,5,0)。三个任务都在t=0时刻释放,通过优先级分配公式计算,得出T1的时限最近,任务的优先级最高,此时***调度T1任务。t=1时刻,当前只有T2和T3处于待调度激活状态,通过计算这个两个任务的优先级,得出T2优先级高于T3,因此T2任务被调度执行。在t=3时,任务T1被释放,当前处于等待调度激活状态的是T1和T3,通过计算优先级,得出T3优先级高于T1,T3任务被调度,如此反复的调度。通过上面的分析可知,EDF调度算法在每个时刻都要计算处于等待调度状态的任务优先级,工作量比较大,***下个时刻调度的任务是不确定的,与***中其它等待调度的任务有关系,这种方法,使得***适应性比较好。
对于CAN总线的通信方式属于事件驱动机制,当***中有通信报文传输时,通信节点和总线的状态会因消息的出现和接收或发送等事件而发生状态的改变,所以CAN总线的通信仿真采用FSM理论作为基础是合适的。
CAN总线仿真模型如图4所示,基于FSM理论,使用Stateflow工具箱可以有效对CAN总线通信模型进行***建模仿真。为了明确分析总线在大负载下***实时性,我们使用Sateflow工具箱建立了如下***的仿真模型。通过SinamicsS120***设备了解到,如果按预定义来定义PDO的个数,那么在控制单元CU320-2DP控制下一套S120设备可以带六个伺服轴,即总线上有6个节点,***中总共使用了18个PDO对象。因为这些PDO对象不一定同时在总线上活动,为了分析我们只取16个PDO对象来进行分析,并假设16个PDO都在总线上活动竞争总线这样一种情况。为了方便,这里我们只建立了部分的总线模型,这样已能达到我们要求。因为我们知道对于PDO的发送就是把数据组装成CAN的基本数据帧格式然后进行发送的,实际的报文还是在CAN总线上的通信介质上传输,而且PDO的标识符不同所以优先级不同在仿真中我们可以把一个PDO当做单独的节点来进行仿真,以下所说的节点都代表一个PDO。所以我们只建立了最简单在操作状态下的模型来分析通信的实时性。因为CAN总线采用多主工作方式,各个节点地位平等,不分主次,所以每个节点在任意时刻主动向网络上其他节点发送信息。这里用随机函数发生器代表发送的数据。在如图4所示的这个母模块中,主要是提供时间基准和输入输出变量。这个模块中还有包含了Stateflow环境下的16个节点子模块和总线仲裁子模块,在母模块下所有子模块都是并行结构。
总线上具有三种状态:idle、busy和space。当总线上没有信号传输时,总线处于空闲状态(idle)状态。当总线上有节点发送的信号时,经过仲裁函数的仲裁,仲裁结束后,总线开始传输节点的信息,总线处于忙(busy)的状态。当节点信息传送完成后,总线再经过一个帧间隔(space)状态之后在回到空闲状态。在仿真过程中,总线的仲裁是由仲裁函数来实现的,如图5所示,且各个节点的优先级为节点1优先级高,节点16最低。
节点模型中包含了三大部分:节点发送部分(Send)、数据缓冲部分(Buffer)、数据产生部分(Period_data_put)。
节点的发送部分包含了无任务状态(sleep)、等待仲裁(wait)、传输(transmission)三个状态。其状态转换的流程是节点首先处于sleep状态,等待数据进入缓冲区,退出这个状态进入wait状态,这时候开始监测总线是否是idle状态如果是那么就参加总线的竞争,如果在总线竞争中获胜,那么就开始将采集到的数据发送出去,发送完成则重新回到sleep状态。
数据缓冲部分包含了缓冲器空(null)和非空(nonnull)两个状态。容量设置为1,因此如果有新数据进入缓冲器时旧的数据就要丢失。另外为了方便仿真和比较,信息量设为固定值100bits。这里我们用b1记录节点每次运行完成后向总线上成功发送的总帧数。
数据产生部分包含了数据的产生(nodata)和组帧(datain)两个状态。数据来自母模块的随机函数部分,模拟一种动态的采集数据。这里我们用p1来记录节点每次运行产生的帧的个数。
因为EDF调度算法分配给每个任务的优先级是动态的,是伴随着时间的变化而变化的。所以,基于EDF算法建立的仿真模型和基于固定优先级算法的CAN总线模型相比要复杂的多。在EDF调度算法中,与固定优先级算法的最大不同之处是任务优先级的计算,各个任务的优先级定义为di(t)-t。并且在非抢占式网络CAN中EDF算法描述可以描述为:
(1)CAN报文任务的优先级固定不变,且随时间而变;
(2)CAN报文任务的优先级按截止期长短分配。
基于固定优先级算法仿真模型的基础上,在Stateflow仿真环境下采用EDF算法建立的总线仿真模型如图7所示。
EDF调度算法CAN总线仿真模型中因为数据产生部分和数据产生部分的模型和固定优先级的节点模型相同,所以在这里我们只给出了部分节点模型。CAN总线仿真模型的工作原理和固定优先级调度算法仿真模型原理基本上相同,只是在图7中,我们通过在发送部分中加入帧间隔(prior)状态和部分状态迁移线来完成***各个任务优先级的分配工作。并在发送模块中加入了,重发机制,通过判断截止期为小于0的数来确定总线上消息的是否重发。CAN总线的总线模型也做了相应的改变,仲裁只需判断节点号当前状态是否是1而决定是否仲裁成功。
本发明是在基于对CAN总线上具有多个节点和传输的报文帧个数多的情况下会带来总线网络负载的增大,会导致***报文的延时,为了保证总线上消息的实时传输,引入两种调度算法进行仿真实验,通过对仿真结果的分析,比较两种方法的优异。在设计仿真过程中,我们设计125Kbit/s波特率由母级模块输入,***总的运行时间2s,为了方便分析,我们设计每帧报文的数据长度为100bit。设计***各个节点发送周期与总线负载的关系如表2所示。
表2各节点发送周期与负载大小的关系表
负载 | Node1 | Node2 | Node3 | Node4 | Node5 | Node6 | Node7 | Node8 |
19.2% | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 |
50.4% | 0.1 | 0.1 | 0.05 | 0.05 | 0.025 | 0.025 | 0.05 | 0.05 |
80% | 0.05 | 0.05 | 0.025 | 0.025 | 0.025 | 0.025 | 0.02 | 0.02 |
103.2% | 0.025 | 0.025 | 0.025 | 0.025 | 0.025 | 0.025 | 0.02 | 0.02 |
负载 | Node9 | Node10 | Node11 | Node12 | Node13 | Node14 | Node15 | Node16 |
19.2% | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 | 0.05 |
50.4% | 0.05 | 0.02 | 0.025 | 0.025 | 0.02 | 0.02 | 0.01 | 0.01 |
80% | 0.01 | 0.02 | 0.02 | 0.01 | 0.01 | 0.01 | 0.01 | 0.01 |
103.2% | 0.01 | 0.02 | 0.01 | 0.01 | 0.01 | 0.01 | 0.005 | 0.005 |
为了方便分析与统计,我们选取节点1、节点4、节点7、节点10、节点13、节点16来分析在不同负载下总线通信的实时性。有前面仿真模型可知,p1~p16表示16个节点每次发送的报文帧的个数,b1~b16表示成功接收报文帧的个数。由此可知,报文发送的成功率可以通过下式来计算:
Si=bi/pi
依照表2的关系建立***通信得到***在负载为19.2%、50.4%、80%、103.2%的情况下的仿真结果,如下表3、4所示。
表3固定优先级算法仿真实验结果
为了更清晰的分析实验结果,我们将获得的实验数据绘制成图形,如图8、9所示,从数据和图8、9分析,在固定优先级调度算法中,高优先级的信息无论是在低负载或者是高负载情况下能够保证通信的实时传输。但是随着网络负载的加大,低优先级的信息通信的实时性下降,从图8可以看到,随着总线负载的加大,从节点7开始总线上开始出现数据丢失。尤其是到后来的节点13和16通信性能出现大幅度的下滑。和固定优先级调度算法相比,在总线网络低负载情况下,可以保证消息的正常传输。但是随着网络负载的增大,调度性能也会出现下降的趋势。从节点10开始我们可以发现发送成功率的下降趋势变缓。为了更清楚的对比,我们将节点10、13、16的两种调度算法所得的仿真结果放在一起对比分析,如图10所示。经过对比分析可知,虽然,在随着负载的加大会出现调度性能的下降,但是EDF调度算法在调度性能比固定优先级算法的调度性能要好。
经过实验验证,两种调度算法在网络负载较低的情况下,都能很好的保证消息报文传输的实时性能。但是在负载加大的情况下,动态优先级调度算法EDF要比固定的优先级调度算法可调度性能更强。尤其在,多节点和多报文即大负载的网络传输过程中,固定优先级调度算法,会出现低优先级报文竞争不到总线而导致数据的丢失,对***产生不利的后果。通过引入动态的优先级调度算法可以有效的改善这种情况,提高***的通信能力,降低总线负载率,***实时性能变好。在运动控制***中,我们要求数据传输的速度很快,并且要求能保证可靠的传输。为了保持这种要求,动态优先级调度算法EDF为我们提供了一种很好解决办法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于CAN总线的运动控制***,其特征在于:包括控制单元,整流单元,逆变单元、执行电机、工控机、CAN卡、物理层模块、数据链路层模块、应用层模块及硬件接口模块;所述物理层模块包括CAN物理通信介质及CAN收发器,所述CAN物理通信介质用于完成信号传输,所述CAN收发器提供对总线的差动发送和接收功能;所述数据链路层模块包括CAN核心控制器,所述CAN核心控制器包括发送模块、接收模块、仲裁模块及验收滤波模块,所述发送模块用于将信息帧发往物理层,所述接收模块用于从物理层获取信息帧,所述仲裁模块用于对发送出的与接收到的信息帧进行仲裁,所述验收滤波模块从数据链路层接收帧信息,通过验收屏蔽码和验收码过滤本节点需要的数据;所述应用层模块包括模拟中心计算机,用于模拟节点设备仿真模型,应用层协议采用CANopen协议;所述硬件接口模块用于硬件与物理层之间的通信。
2.根据权利要求1所述的一种基于CAN总线的运动控制***,其特征在于:所述控制单元采用CU320-2DP控制单元;所述整流单元采用智能型电源模块,所述智能型电源模块将三相交流电整流成直流电,并将直流电回馈到电网,所述智能型电源模块和所述控制单元通过Drive-CLiQ保持通信;所述逆变单元和控制单元之间通过Drive-CLiQ接口,进行快速数据交换;所述逆变单元的编码器通过Drive-CLiQ电缆连接,将编码器的反馈信号反馈给控制单元;所述工控机包括主机、显示器、鼠标和键盘;所述CAN卡采用XJA1000CAN控制器作为主控芯片。
3.根据权利要求1所述的一种基于CAN总线的运动控制***,其特征在于:所述发送模块包括组帧模块、信号发送模块和发送控制器,发送控制器通过总线与组帧模块和信号发送模块连接;当接收到相应信号时,组帧模块将完整的信息帧传输给信号发送模块,信号发送模块将当前数据位发送给CAN总线。
4.根据权利要求1所述的一种基于CAN总线的运动控制***,其特征在于:所述应用层模块还包括模拟执行设备。
5.根据权利要求1所述的一种基于CAN总线的运动控制***,其特征在于:所述应用层模块采用C语言作为开发工具,通过在BorlandC++2.0编译环境下编译构建。
6.一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:首先在Stateflow环境下使用状态、迁移和条件建立涉及通信活动部分的节点模型;所述节点模型包括节点发送部分、数据缓冲部分和数据产生部分;将时间基准、输入输出变量、Stateflow环境下的16个节点子模块及总线仲裁子模块组成仿真模型母模块。
7.根据权利要求6所述的一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:所述总线仲裁子模块在通信过程中,具有空闲状态、忙状态和帧间隔状态三种状态;当总线没有信号传输时,总线处于空闲状态状态;当有节点发送的信号时,经过仲裁函数的仲裁,仲裁结束后,总线开始传输节点的信息,总线处于忙状态;当节点信息传送完成后,总线再经过一个帧间隔状态之后在回到空闲状态;在仿真过程中,总线的仲裁是由仲裁函数实现,且各个节点的优先级为节点1优先级高,节点16最低;所述仲裁函数通过判断节点号当前状态是否是1而决定是否仲裁成功,若为1则仲裁成功。
8.根据权利要求7所述的一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:所述节点发送部分包括无任务状态、等待仲裁状态、传输状态、帧间隔状态和状态迁移线;其状态转换的流程是节点首先处于无任务状态,等待数据进入缓冲区,退出这个状态进入等待仲裁状态,这时候开始监测总线是否是空闲状态,如果是则参加总线的竞争,如果在总线竞争中获胜,则将采集到的数据发送出去,发送完成则重新回到无任务状态;所述帧间隔状态和部分所述状态迁移线完成***各个任务优先级的分配工作;所述节点发送部分还包括重发机制,通过判断截止期为小于0的数来确定总线上的数据是否重发;
所述数据缓冲部分包括缓冲器空和非空两个状态,容量设置为1,当有新数据进入缓冲器时旧的数据丢失;信息量设为固定值100bits,采用b1记录节点每次运行完成后向总线上成功发送的总帧数;
所述数据产生部分包括数据的产生和组帧两个状态,其中数据来自所述仿真模型母模块的随机函数部分,采用p1来记录节点每次运行产生的帧的个数。
9.根据权利要求8所述的一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:所述节点子模块、总线仲裁子模块都为并行结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510731859.4A CN105487403A (zh) | 2015-10-30 | 2015-10-30 | 一种基于can的运动控制***建立及其仿真建模方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510731859.4A CN105487403A (zh) | 2015-10-30 | 2015-10-30 | 一种基于can的运动控制***建立及其仿真建模方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105487403A true CN105487403A (zh) | 2016-04-13 |
Family
ID=55674451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510731859.4A Pending CN105487403A (zh) | 2015-10-30 | 2015-10-30 | 一种基于can的运动控制***建立及其仿真建模方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105487403A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110798390A (zh) * | 2019-11-13 | 2020-02-14 | 无锡欧特海洋科技有限公司 | 一种用于海底观测网供配电***的通讯***及通讯方法 |
CN112527708A (zh) * | 2020-12-07 | 2021-03-19 | 上海智能制造功能平台有限公司 | 一种通用伺服驱动总线接口的实现装置及方法 |
CN112702411A (zh) * | 2020-12-21 | 2021-04-23 | 上汽大通汽车有限公司 | 一种解决cantp多帧丢包重传的方法 |
CN115314338A (zh) * | 2022-07-27 | 2022-11-08 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及*** |
CN116886350A (zh) * | 2023-06-30 | 2023-10-13 | 中汽院新能源科技有限公司 | 一种新能源汽车控制工作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626333A (zh) * | 2009-08-07 | 2010-01-13 | 北京和利时电机技术有限公司 | 一种can总线***及其中的应用层通讯方法 |
CN102833141A (zh) * | 2012-08-23 | 2012-12-19 | 天津瑞能电气有限公司 | 一种基于DSP28335的CANopen从站*** |
CN103997450A (zh) * | 2014-05-28 | 2014-08-20 | 天津瑞能电气有限公司 | 一种基于DSP28335的CANopen主站实现方法 |
-
2015
- 2015-10-30 CN CN201510731859.4A patent/CN105487403A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626333A (zh) * | 2009-08-07 | 2010-01-13 | 北京和利时电机技术有限公司 | 一种can总线***及其中的应用层通讯方法 |
CN102833141A (zh) * | 2012-08-23 | 2012-12-19 | 天津瑞能电气有限公司 | 一种基于DSP28335的CANopen从站*** |
CN103997450A (zh) * | 2014-05-28 | 2014-08-20 | 天津瑞能电气有限公司 | 一种基于DSP28335的CANopen主站实现方法 |
Non-Patent Citations (1)
Title |
---|
《中国优秀硕士学位论文全文数据库》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110798390A (zh) * | 2019-11-13 | 2020-02-14 | 无锡欧特海洋科技有限公司 | 一种用于海底观测网供配电***的通讯***及通讯方法 |
CN110798390B (zh) * | 2019-11-13 | 2023-11-07 | 深圳欧特海洋科技有限公司 | 一种用于海底观测网供配电***的通讯***及通讯方法 |
CN112527708A (zh) * | 2020-12-07 | 2021-03-19 | 上海智能制造功能平台有限公司 | 一种通用伺服驱动总线接口的实现装置及方法 |
CN112527708B (zh) * | 2020-12-07 | 2023-03-31 | 上海智能制造功能平台有限公司 | 一种通用伺服驱动总线接口的实现装置及方法 |
CN112702411A (zh) * | 2020-12-21 | 2021-04-23 | 上汽大通汽车有限公司 | 一种解决cantp多帧丢包重传的方法 |
CN115314338A (zh) * | 2022-07-27 | 2022-11-08 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及*** |
CN115314338B (zh) * | 2022-07-27 | 2024-03-12 | 湖南航天机电设备与特种材料研究所 | 一种实时性运动控制方法及*** |
CN116886350A (zh) * | 2023-06-30 | 2023-10-13 | 中汽院新能源科技有限公司 | 一种新能源汽车控制工作方法 |
CN116886350B (zh) * | 2023-06-30 | 2024-04-23 | 中汽院新能源科技有限公司 | 一种新能源汽车控制工作方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105487403A (zh) | 一种基于can的运动控制***建立及其仿真建模方法 | |
Erwinski et al. | Application of ethernet powerlink for communication in a linux rtai open cnc system | |
CN106814657B (zh) | 基于ARM的嵌入式实时EtherCAT主站构建方法 | |
CN103713940B (zh) | 一种基于rtx‑hla‑反射内存卡的可重构分布式实时仿真方法 | |
CN110519138B (zh) | 一种Profibus-DP主站协议的实现方法及*** | |
CN101178666A (zh) | 一种异构多核间协调调度的方法及异构多核*** | |
Theiss et al. | Software agents in industry: A customized framework in theory and praxis | |
CN101630343B (zh) | 仿真方法及*** | |
CN110991040A (zh) | 一种复杂产品协同仿真环境构建方法 | |
CN110177146A (zh) | 一种基于异步事件驱动的非阻塞Restful通信方法、装置和设备 | |
CN105677605A (zh) | 一种高效的可配置片上互联***及其实现方法、装置 | |
CN115827168B (zh) | 一种二进制仿真环境下虚拟机通信的优化方法 | |
CN103677983A (zh) | 应用的调度方法及装置 | |
CN204733178U (zh) | 一种基于FPGA的EtherCAT主站装置 | |
CN105843995A (zh) | 一种基于模型驱动的ima***时间资源配置验证方法 | |
CN117032812B (zh) | 服务器的管理方法、设备、装置、存储介质和电子设备 | |
CN109426643A (zh) | Usb接口请求调度方法、装置及设备 | |
CN105592492A (zh) | 高层协议栈一致性测试平台及测试方法 | |
CN115827285B (zh) | 一种跨平台通信方法、***、装置、设备及介质 | |
CN103149909A (zh) | 基于fpga的can仿真节点*** | |
CN109361653B (zh) | 一种powerlink主站 | |
US9866501B2 (en) | Virtual switch enabling communication between external objects and simulation objects | |
CN108055186B (zh) | 一种主从处理器通信方法及装置 | |
CN114095303B (zh) | 通信设备、数据传输方法及电子设备 | |
CN114780143A (zh) | 基于uvm的can控制器激励序列生成方法、装置和验证平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160413 |
|
WD01 | Invention patent application deemed withdrawn after publication |