一种基于can的运动控制系统建立及其仿真建模方法
【技术领域】
[0001 ]本发明涉及CAN通讯系统,尤其涉及一种基于CAN的运动控制系统建立及其仿真建 模方法。
【背景技术】
[0002] CAN(Controller Area Network),即控制器局域网。CAN总线传输方式能够有效解 决传统数据交换方法(即点对点的传输方式)无法满足现代汽车中所使用的大量电子控制 系统和通讯系统的通信要求的问题。
[0003] CANopen是基于CAN总线的应用层的网络协议,是由CAL协议扩展而来的。自从发布 以来就得到广泛的认可。这个协议的两种传输机制为CAN传输8字节以上数据提供了一套解 决方案。通过CANopen协议及其设备子协议,例如数字和模拟输入输出模块子协议,驱动子 协议,操作设备子协议,控制器,编码器子协议等。这使得多家制造商的产品能够用于任何 CANopen网络,解决一致性、互用性及互换性问题。最初CANopen主要是用于嵌入式工业控制 系统中,因为它的协议精炼、透明、便于理解,又具有较高的实时性和可靠性、数据传输的速 率高,组网成本低等优点[5],近年来,被应用到各个行业。CAN总线在我国的应用已经比较 广泛,但还停留在较低层次的应用上,并且都是自己定义的一些简单的应用层的协议,没有 和国际标准的CAN总线的高层协议兼容。
【发明内容】
[0004] 本发明所要解决的技术问题是提供一种基于CAN总线的运动控制系统及基于EDF 动态优先级调度算法建立CAN总线仿真模型的方法,解决目前运动系统中CAN总线的通信能 力差,吞吐能力低,实时性能差的问题。
[0005] 本发明解决上述技术问题的技术方案如下,一种基于CAN总线的运动控制系统,其 特征在于:包括控制单元,整流单元,逆变单元、执行电机、工控机、CAN卡、物理层模块、数据 链路层模块、应用层模块及硬件接口模块;所述物理层模块包括CAN物理通信介质及CAN收 发器,所述CAN物理通信介质用于完成信号传输,所述CAN收发器提供对总线的差动发送和 接收功能;所述数据链路层模块包括CAN核心控制器,所述CAN核心控制器包括发送模块、接 收模块、仲裁模块及验收滤波模块,所述发送模块用于将信息帧发往物理层,所述接收模块 用于从物理层获取信息帧,所述仲裁模块用于对发送出的与接收到的信息帧进行仲裁,所 述验收滤波模块从数据链路层接收帧信息,通过验收屏蔽码和验收码过滤本节点需要的数 据;所述应用层模块包括模拟中心计算机,用于模拟节点设备仿真模型,应用层协议采用 CANopen协议;所述硬件接口模块用于硬件与物理层之间的通信。
[0006] 进一步,所述控制单元采用⑶320-2DP控制单元;所述整流单元采用智能型电源模 块,所述智能型电源模块将三相交流电整流成直流电,并将直流电回馈到电网,所述智能型 电源模块和所述控制单元通过Dr ive-CLiQ保持通信;所述逆变单元和控制单元之间通过 Drive-CLiQ接口,进行快速数据交换;所述逆变单元的编码器通过Drive-CLiQ电缆连接,将 编码器的反馈信号反馈给控制单元;所述工控机包括主机、显示器、鼠标和键盘;所述CAN卡 采用XJA1000CAN控制器作为主控芯片。
[0007] 进一步,所述发送模块包括组帧模块、信号发送模块和发送控制器,发送控制器通 过总线与组帧模块和信号发送模块连接;当接收到相应信号时,组帧模块将完整的信息帧 传输给信号发送模块,信号发送模块将当前数据位发送给CAN总线。
[0008] 进一步,所述应用层模块还包括模拟执行设备。
[0009] 进一步,所述应用层模块采用C语言作为开发工具,通过在Bor land C++2.0编译环 境下编译构建。
[0010] 一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:首 先在Stateflow环境下使用状态、迀移和条件建立涉及通信活动部分的节点模型;所述节点 模型包括节点发送部分、数据缓冲部分和数据产生部分;将时间基准、输入输出变量、 Statef low环境下的16个节点子模块及总线仲裁子模块组成仿真模型母模块。
[0011] 进一步,所述总线仲裁子模块在通信过程中,具有空闲状态、忙状态和帧间隔状态 三种状态;当总线没有信号传输时,总线处于空闲状态状态;当有节点发送的信号时,经过 仲裁函数的仲裁,仲裁结束后,总线开始传输节点的信息,总线处于忙状态;当节点信息传 送完成后,总线再经过一个帧间隔状态之后在回到空闲状态;在仿真过程中,总线的仲裁是 由仲裁函数实现,且各个节点的优先级为节点1优先级高,节点16最低;所述仲裁函数通过 判断节点号当前状态是否是1而决定是否仲裁成功,若为1则仲裁成功。
[0012] 进一步,所述节点发送部分包括无任务状态、等待仲裁状态、传输状态、帧间隔状 态和状态迀移线;其状态转换的流程是节点首先处于无任务状态,等待数据进入缓冲区,退 出这个状态进入等待仲裁状态,这时候开始监测总线是否是空闲状态,如果是则参加总线 的竞争,如果在总线竞争中获胜,则将采集到的数据发送出去,发送完成则重新回到无任务 状态;所述帧间隔状态和部分所述状态迀移线完成系统各个任务优先级的分配工作;所述 节点发送部分还包括重发机制,通过判断截止期为小于〇的数来确定总线上的数据是否重 发;
[0013] 所述数据缓冲部分包括缓冲器空和非空两个状态,容量设置为1,当有新数据进入 缓冲器时旧的数据丢失;信息量设为固定值lOObits,采用bl记录节点每次运行完成后向总 线上成功发送的总帧数;
[0014] 所述数据产生部分包括数据的产生和组帧两个状态,其中数据来自所述仿真模型 母模块的随机函数部分,采用Pi来记录节点每次运行产生的帧的个数。
[0015] 进一步,所述节点子模块、总线仲裁子模块都为并行结构。
[0016] 本发明的有益效果是:本发明提供硬件接口模块,将待测节点的物理设备直接接 入本发明,即可实现在无需完整物理系统的环境下对接入节点设备的性能测试;应用层模 块还包括模拟执行设备,模拟执行设备用来代替其他未生产出硬件设备的节点,构成完整 的CAN通信系统,此时CAN通信系统为软硬件联合仿真系统;本发明对CAN通信系统的设计和 分析提供了有用的工具,可以有效地降低总线节点的设计、开发和测试成本,缩短研发周 期。EDF动态优先级调度算法更能改善总线的通信能力,提高总线的吞吐能力,进而可以改 善总线系统的实时性能。
【附图说明】
[0017] 图1为本发明智能型电源模块的结构框图;
[0018] 图2为本发明SD0读写对象字典操作流程框图;
[0019] 图3是本发明roo报文的发送和接收流程框图;
[0020] 图4是本发明CAN总线仿真模型母模块示意图;
[0021 ]图5为本发明仲裁判断函数的结构示意图;
[0022]图6为本发明节点模块的结构框图;
[0023]图7为发明采用EDF调度算法总线仿真模型示意图;
[0024] 图8为本发明采用固定优先级算法的实验仿真结果图;
[0025] 图9为本发明采用EDF调度算法的实验仿真结果图;
[0026]图10为本发明采用固定优先级算法与采用EDF调度算法的实验仿真结果对比图。
[0027] 图中1,节点发送部分;2,数据缓冲部分;3,数据产生部分;4,空闲状态;5,忙状态; 6,帧间隔状态。
【具体实施方式】
[0028] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并 非用于限定本发明的范围。
[0029]本发明的实施例以Sinamics S120系统为例进行说明。
[0030] -种基于CAN总线的运动控制系统,其特征在于:包括控制单元,整流单元,逆变单 元、执行电机、工控机、CAN卡、物理层模块、数据链路层模块、应用层模块及硬件接口模块; 所述物理层模块包括CAN物理通信介质及CAN收发器,所述CAN物理通信介质用于完成信号 传输,所述CAN收发器提供对总线的差动发送和接收功能;所述数据链路层模块包括CAN核 心控制器,所述CAN核心控制器包括发送模块、接收模块、仲裁模块及验收滤波模块,所述发 送模块用于将信息帧发往物理层,所述接收模块用于从物理层获取信息帧,所述仲裁模块 用于对发送出的与接收到的信息帧进行仲裁,所述验收滤波模块从数据链路层接收帧信 息,通过验收屏蔽码和验收码过滤本节点需要的数据;所述应用层模块包括模拟中心计算 机,用于模拟节点设备
仿真模型,应用层协议采用CANopen协议;所述硬件接口模块用于硬 件与物理层之间的通信。
[0031] Sinamics S120驱动系统的控制单元使用⑶320,它是驱动系统的大脑,负责控制 和协调整个驱动系统中的所有模块,完成各个轴的电流环、速度环甚至位置环的控制,并且 同一块CU320控制的各个轴之间能互相交换数据,即任意一根轴能够读取控制单元上其它 轴的数据。根据连接的外围I/O模块的数量、轴控制模式、所需的功能以及CF卡的不同,1块 CU320能够控制轴的数量也不同。本系统采用⑶320-2DP控制单元,它是⑶320的升级版本, 在相同的外围部件下,能控制轴的数量更多;所述整流单元将三相交流电整流成直流电,并 将直流电回馈到电网,但直流母线电压不能调节。所述整流单元即为智能型电源模块,其对 产品的应用场合不同,根据功率的不同分为几种等级,功率的不同采取的能量回馈方式也 有所不同,通讯方式也有所不同。低功率的电源模块采用端子进行控制,而大功率的电源模 块通过Drive-CLiQ接口来控制,通过该接口和主控单元进行数据交换。智能型电源模块和 控制单元通过Drive-CLiQ保持通信,SLM结构图模型如图1所示;所述逆变单元和控制单元 之间通过Drive-CLiQ接口,进行快速数据交换;所述逆变单元的编码器通过Drive-CLiQ电 缆连接,将编码器的反馈信号反馈给控制单元;所述工控机包括主机、显示器、鼠标和键盘; 所述CAN卡采用XJA1000CAN控制器作为主控芯片。
[0032] 所述发送模块包括组帧模块、信号发送模块和发送控制器,发送控制器通过总线 与组帧模块和信号发送模块连接;当接收到相应信号时,组帧模块将完整的信息帧传输给 信号发送模块,信号发送模块将当前数据位发送给CAN总线。
[0033] 所述应用层模块还包括模拟执行设备。
[0034]所述应用层模块采用C语言作为开发工具,通过在Bor land C++2.0编译环境下编 译构建。
[0035] 一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方法,其特征在于:首 先在Stateflow环境下使用状态、迀移和条件建立涉及通信活动部分的节点模型;所述节点 模型包括节点发送部分、数据缓冲部分和数据产生部分;将时间基准、输入输出变量、 Statef low环境下的16个节点子模块及总线仲裁子模块组成仿真模型母模块。
[0036] 所述总线仲裁子模块在通信过程中,具有空闲状态、忙状态和帧间隔状态三种状 态;当总线没有信号传输时,总线处于空闲状态状态;当有节点发送的信号时,经过仲裁函 数的仲裁,仲裁结束后,总线开始传输节点的信息,总线处于忙状态;当节点信息传送完成 后,总线再经过一个帧间隔状态之后在回到空闲状态;在仿真过程中,总线的仲裁是由仲裁 函数实现,且各个节点的优先级为节点1优先级高,节点16最低;所述仲裁函数通过判断节 点号当前状态是否是1而决定是否仲裁成功,若为1则仲裁成功。
[0037] 所述节点发送部分包括无任务状态、等待仲裁状态、传输状态、帧间隔状态和状态 迀移线;其状态转换的流程是节点首先处于无任务状态,等待数据进入缓冲区,退出这个状 态进入等待仲裁状态,这时候开始监测总线是否是空闲状态,如果是则参加总线的竞争,如 果在总线竞争中获胜,则将采集到的数据发送出去,发送完成则重新回到无任务状态;所述 帧间隔状态和部分所述状态迀移线完成系统各个任务优先级的分配工作;所述节点发送部 分还包括重发机制,通过判断截止期为小于0的数来确定总线上的数据是否重发;
[0038] 所述数据缓冲部分包括缓冲器空和非空两个状态,容量设置为1,当有新数据进入 缓冲器时旧的数据丢失;信息量设为固定值lOObits,采用bl记录节点每次运行完成后向总 线上成功发送的总帧数;
[0039] 所述数据产生部分包括数据的产生和组帧两个状态,其中数据来自所述仿真模型 母模块的随机函数部分,采用Pi来记录节点每次运行产生的帧的个数。
[0040]所述节点子模块、总线仲裁子模块都为并行结构。
[0041] CANopen协议的核心设计就是对象字典,因为在对象字典中定义了各种数据类型 和通讯对象。对象字典也为应用程序的编写提供了接口;在以Sinamics S120作为从机的基 础上,CBC10通讯板集成了 CANopen应用层协议,对象字典在从机中也被建立。SD0是起到配 置作用的对象,一般我们使SD0在预操作状态下对对象字典中的对象进行具体配置。例如设 备型号的读取、对PD0映射的改写等参数。通过SD0写协议改写对象参数,SD0读协议读取对 象的状态值;本系统开发的SD0管理对象的流程如图2所示。
[0042]用SD0服务进行对通信对象的读写时,如果发生错误的,SD0会发送撤销SD0协议 帧,在这个帧中会携带错误信息。这个有助于我们分析SDO的读写命令帧格式中具体的错误 来源。在程序中我们通过读操作读取设备类型对象l〇〇〇h,发送的帧数据格式和应答的帧数 据格式如下表所示。
[0043] 表1对象1000h SD0帧格式
[0045] 在CANopen协议中从节点在从初始化状态转换到预操作状态之前会向主节点发送 启动报文,通知主节点从初始化状态转换到了预操作状态。通过NMT boot-up帧格式我们可 以检测到启动报文的C0B-ID,由启动报文的C0B-ID通知程序系统已经进入到了预操作状 态。这里存在一个问题就是在主从设备先后启动时,会产生检测不到启动报文,所以为了确 保主从设备相对同步这里我们采用SD0读系统当前状态的办法来进行主机状态的更新。在 从节点进入到预操作状态后,在这个状态下我们不能进行传送实时性的数据对象roo,为此 我们需要使节点进入到操作状态才能进行正常roo对象数据的收发。通过NMT状态转换协议 将从机由预操作状态转到操作状态。
[0046] 如图3所示roo发送和接收的流程图,系统进入到操作模式后,此时进行通信的主 要对象就是roo。在si2〇系统中我们主要使用roo对象来进行对电机的控制。在pdo对象中通 过子索引可以找到使用的传输模式、禁止时间、事件定时器等子对象。在这里我们使用 RPD02和TPD02、TPD04对象。通过前面的分析我们知道RPD02中映射了控制字和速度设定值, TPD02和TPD04映射了实际速度值和实际的位置值。在状态转换的操作状态后,我们就可以 发送RPD0启动电机,并且送给电机指定的速度。当S120成功介绍RPD02对象后就会控制电机 会按照设定的速度运行。并且通过参数TPD02和TPD04把当前的状态字和实际的速度值和位 置值发送到主机方,主机侧通过接收缓冲寄存器把接收到的数据保留,然后再通过报文的 解析将十六进制的数值变成我们直观可以看懂的十进制的数值。这里描述的接收和发送都 是以下位机为参考对象的,所以RPD0和TPD0是下位机S120接收和发送HX)对象。这里的RPD0 的管理相对来说很容易,只是按照发送的帧格式将控制字和设定的速度组装发送给S120。 在设定速度时,S120系统需要按照下面的公式进行计算:
[0048]上式中p8798是CBC速度转换因子,p408为脉冲数,p418为分辨率参数。为了解析报 文我们也要将上述公式做反变换得到11_8的[1?^]参数值。
[0049]对于TPD0的接收采用异步接收方式。在异步传送过程中我们可以设置TPD0传送的 禁止时间,使得我们对TPD0的报文管理更加容易。在这里我们可以通过Starter软件进行离 线设置好禁止时间保存编译后在下载到CF卡,
[0050] 也可以通过写SD0的通信方式在预操作状态下进行参数的配置。
[0051] CAN总线的竞争机制是从CSMA/CA通讯模型基础上发展而来的。其局限性是网络的 负载直接影响总线上报文的延时。在总线上负载较小的情况下,报文的传输延时非常小或 者可以忽略不计。但随着负载的增加,竞争总线的报文队列增加,网络的吞吐量和利用率增 加。这样当网络的吞吐量小于负载的增加速度时,最终会使有的总线上的节点处于堵塞的 状态,在高优先级的报文先获得仲裁的机会的情况下会导致具有低优先级报文发送经过一 段很长时间或者甚至丢失。这样最终致使CAN总线的实时性严重下降。
[0052] 对于应用层协议CANopen来说,它主要负责管理NMT、SYNC、SD0、TOO通信对象。因为 它需要完成的任务很多,所以需要较高的实时通信能力。由于各个对象的优先级不同竞争 总线的能力也会不同。但我们知道匪T、SD0等都是在其他的状态下能够操作的,真正需要实 时性操作的对象就只有HX),因此对这个
对象的实时性要求是最高的。对于CANopen网络来 说,系统需要的节点比较多,每个节点需要传输的数据量比较大,进而使得CAN总线上的网 络负载较高。这样使得具有的低优先级的PD0竞争总线的能力弱,产生的报文传输延时会比 较大。
[0053]实时的调度算法主要是为了在约束的时间内完成系统资源的实时调度。关于对实 时调度算法的研究主要分为两类:静态(固态)的优先级调度算法和动态的优先级调度算 法。关于静态的调度算法是指任务的优先级由开始定义之后保持固定不变,我们有时也称 它为固定的优先级调度算法。动态优先级调度,是指执行过程中任务的优先级相对其它任 务的优先级是变化的。为了充分分析CAN总线的实时性,下面详细的介绍了两种调度算法并 弓丨入到CAN总线中。
[0054]固定优先级调度算法在CAN总线系统设计过程经常被采用[29],主要是针对周期 任务进行实时的调度。在具有固定优先级调度算法的总线系统中,系统的任务的优先级是 固定的,每个任务的优先级在系统运行之前就是确定的,并在系统运行过程中保持不变。在 固定优先级调度算法中比率单调(RM)算法[30]有着广泛的应用。
[0055] RM算法主要应用到周期任务的调度上,这种算法简单,实现方便,在对实时系统的 任务调度中产生了很大的作用。RM调度算法任务的优先级是通过任务周期来决定的。RM算 法分配任务的优先级别很容易理解,任务的周期越短,反映的任务的优先级别则越高,反 之,则越低。如果将系统的任务周期的关系表示为= = 那么通过此调度 算法可确定任务的优先级排列为P1>=P2> = ... >=Pn。该调度算法要求系统的任务总应 该在下一个周期到来之前完成当前这个周期,否则就会使得任务错过时限,具有较短周期 任务应该尽量先调度先完成,以免错过任务时限。
[0056]实时RM调度算法中,每个调度任务都是由一个3元组,每组都是由周期、执行时间、 截止时限组成,可以用符号表示为:S=(T,C,D) AM实时调度算法的实质是:被调度任务集S 二⑶及,...,Sn),周期分别为m,…,?η,执行时间为(^,(:2,···,(: η,截止时限为D^Dh···, Dn〇
[0057] EDF作为动态调度算法中一种很重要的调度理论,它是周期任务组最佳的调度算 法。EDF[33] [34]是根据任务距离截止期的长短来分配任务的优先级的,距离截止期越近的 任务优先级越高,反而任务的优先级则越低。在EDF调度算法中,任务优先级分配公式定义 如下:
[0058] di(t)-t
[0059] 在上述公式中cU(t)代表t时刻的任务截止期,由此公式决定了下一时刻所应调度 的任务。
[0060] 例如,假定在实时系统中有3个调度任务组:T1 = (1,3,3,0)、T2=(1,4,4,0)、T3 = (1,5,5,0)。三个任务都在t = 0时刻释放,通过优先级分配公式计算,得出Τ1的时限最近,任 务的优先级最高,此时系统调度T1任务。t = l时刻,当前只有T2和T3处于待调度激活状态, 通过计算这个两个任务的优先级,得出T2优先级高于T3,因此T2任务被调度执行。在t = 3 时,任务T1被释放,当前处于等待调度激活状态的是T1和T3,通过计算优先级,得出T3优先 级高于T1,T3任务被调度,如此反复的调度。通过上面的分析可知,EDF调度算法在每个时刻 都要计算处于等待调度状态的任务优先级,工作量比较大,系统下个时刻调度的任务是不 确定的,与系统中其它等待调度的任务有关系,这种方法,使得系统适应性比较好。
[0061] 对于CAN总线的通信方式属于事件驱动机制,当系统中有通信报文传输时,通信节 点和总线的状态会因消息的出现和接收或发送等事件而发生状态的改变,所以CAN总线的 通信仿真采用FSM理论作为基础是合适的。
[0062] CAN总线仿真模型如图4所示,基于FSM理论,使用Statef low工具箱可以有效对CAN 总线通信模型进行系统建模仿真。为了明确分析总线在大负载下系统实时性,我们使用 Sateflow工具箱建立了如下系统的仿真模型。通过Sinamics S120系统设备了解到,如果按 预定义来定义HX)的个数,那么在控制单元CU320-2DP控制下一套S120设备可以带六个伺服 轴,即总线上有6个节点,系统中总共使用了 18个PD0对象。因为这些PD0对象不一定同时在 总线上活动,为了分析我们只取16个roo对象来进行分析,并假设16个PD0都在总线上活动 竞争总线这样一种情况。为了方便,这里我们只建立了部分的总线模型,这样已能达到我们 要求。因为我们知道对于roo的发送就是把数据组装成CAN的基本数据帧格式然后进行发送 的,实际的报文还是在CAN总线上的通信介质上传输,而且PD0的标识符不同所以优先级不 同在仿真中我们可以把一个PD0当做单独的节点来进行仿真,以下所说的节点都代表一个 PD0。所以我们只建立了最简单在操作状态下的模型来分析通信的实时性。因为CAN总线采 用多主工作方式,各个节点地位平等,不分主次,所以每个节点在任意时刻主动向网络上其 他节点发送信息。这里用随机函数发生器代表发送的数据。在如图4所示的这个母模块中, 主要是提供时间基准和输入输出变量。这个模块中还有包含了 Stateflow环境下的16个节 点子模块和总线仲裁子模块,在母模块下所有子模块都是并行结构。
[0063]总线上具有三种状态:idle、busy和space。当总线上没有信号传输时,总线处于空 闲状态(idle)状态。当总线上有节点发送的信号时,经过仲裁函数的仲裁,仲裁结束后,总 线开始传输节点的信息,总线处于忙(busy)的状态。当节点信息传送完成后,总线再经过一 个帧间隔(space)状态之后在回到空闲状态。在仿真过程中,总线的仲裁是由仲裁函数来实 现的,如图5所示,且各个节点的优先级为节点1优先级高,节点16最低。
[0064]节点模型中包含了三大部分:节点发送部分(Send)、数据缓冲部分(Buffer)、数据 产生部分(Period_data_put)。
[0065]节点的发送部分包含了无任务状态(sleep)、等待仲裁(wait)、传输 (transmission)三个状态。其状态转换的流程是节点首先处于sleep状态,等待数据进入缓 冲区,退出这个状态进入wait状态,这时候开始监测总线是否是idle状态如果是那么就参 加总线的竞争,如果在总线竞争中获胜,那么就开始将采集到的数据发送出去,发送完成则 重新回到s 1 eep状态。
[0066] 数据缓冲部分包含了缓冲器空(null)和非空(nonnull)两个状态。容量设置为1, 因此如果有新数据进入缓冲器时旧的数据就要丢失。另外为了方便仿真和比较,信息量设 为固定值lOObits。这里我们用bl记录节点每次运行完成后向总线上成功发送的总帧数。 [0067]数据产生部分包含了数据的产生(nodata)和组帧(datain)两个状态。数据来自母 模块的随机函数部分,模拟一种动态的采集数据。这里我们用Pi来记录节点每次运行产生 的帧的个数。
[0068] 因为EDF调度算法分配给每个任务的优先级是动态的,是伴随着时间的变化而变 化的。所以,基于EDF算法建立的仿真模型和基于固定优先级算法的CAN总线模型相比要复 杂的多。在EDF调度算法中,与固定优先级算法的最大不同之处是任务优先级的计算,各个 任务的优先级定义为cU(t)-t。并且在非抢占式网络CAN中EDF算法描述可以描述为:
[0069] (l)CAN报文任务的优先级固定不变,且随时间而变;
[0070] (2)CAN报文任务的优先级按截止期长短分配。
[0071 ]基于固定优先级算法仿真模型的基础上,在Statef low仿真环境下采用EDF算法建 立的总线仿真模型如图7所示。
[0072] EDF调度算法CAN总线仿真模型中因为数据产生部分和数据产生部分的模型和固 定优先级的节点模型相同,所以在这里我们只给出了部分节点模型。CAN总线仿真模型的工 作原理和固定优先级调度算法仿真模型原理基本上相同,只是在图7中,我们通过在发送部 分中加入帧间隔(prior)状态和部分状态迀移线来完成系统各个任务优先级的分配工作。 并在发送模块中加入了,重发机制,通过判断截止期为小于〇的数来确定总线上消息的是否 重发。CAN总线的总线模型也做了相应的改变,仲裁只需判断节点号当前状态是否是1而决 定是否仲裁成功。
[0073] 本发明是在基于对CAN总线上具有多个节点和传输的报文帧个数多的情况下会带 来总线网络负载的增
大,会导致系统报文的延时,为了保证总线上消息的实时传输,引入两 种调度算法进行仿真实验,通过对仿真结果的分析,比较两种方法的优异。在设计仿真过程 中,我们设计125Kbit/s波特率由母级模块输入,系统总的运行时间2s,为了方便分析,我们 设计每帧报文的数据长度为l〇〇bit。设计系统各个节点发送周期与总线负载的关系如表2 所示。
[0074] 表2各节点发送周期与负载大小的关系表
[0076] 为了方便分析与统计,我们选取节点1、节点4、节点7、节点10、节点13、节点16来分 析在不同负载下总线通信的实时性。有前面仿真模型可知,pl~P16表示16个节点每次发送 的报文帧的个数,bl~bl6表示成功接收报文帧的个数。由此可知,报文发送的成功率可以 通过下式来计算:
[0077] Si = bi/pi
[0078] 依照表2的关系建立系统通信得到系统在负载为19.2%、50.4%、80%、103.2%的 情况下的仿真结果,如下表3、4所示。
[0079]表3固定优先级算法仿真实验结果
[0082]为了更清晰的分析实验结果,我们将获得的实验数据绘制成图形,如图8、9所示, 从数据和图8、9分析,在固定优先级调度算法中,高优先级的信息无论是在低负载或者是高 负载情况下能够保证通信的实时传输。但是随着网络负载的加大,低优先级的信息通信的 实时性下降,从图8可以看到,随着总线负载的加大,从节点7开始总线上开始出现数据丢 失。尤其是到后来的节点13和16通信性能出现大幅度的下滑。和固定优先级调度算法相比, 在总线网络低负载情况下,可以保证消息的正常传输。但是随着网络负载的增大,调度性能 也会出现下降的趋势。从节点10开始我们可以发现发送成功率的下降趋势变缓。为了更清 楚的对比,我们将节点1〇、13、16的两种调度算法所得的仿真结果放在一起对比分析,如图 10所示。经过对比分析可知,虽然,在随着负载的加大会出现调度性能的下降,但是H)F调度 算法在调度性能比固定优先级算法的调度性能要好。
[0083]经过实验验证,两种调度算法在网络负载较低的情况下,都能很好的保证消息报 文传输的实时性能。但是在负载加大的情况下,动态优先级调度算法H)F要比固定的优先级 调度算法可调度性能更强。尤其在,多节点和多报文即大负载的网络传输过程中,固定优先 级调度算法,会出现低优先级报文竞争不到总线而导致数据的丢失,对系统产生不利的后 果。通过引入动态的优先级调度算法可以有效的改善这种情况,提高系统的通信能力,降低 总线负载率,系统实时性能变好。在运动控制系统中,我们要求数据传输的速度很快,并且 要求能保证可靠的传输。为了保持这种要求,动态优先级调度算法EDF为我们提供了一种很 好解决办法。
[0084]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
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,当有新数据进入缓冲 器时旧的数据丢失;信息量设为固定值lOObits,采用bl记录节点每次运行完成后向总线上 成功发送的总帧数; 所述数据产生部分包括数据的产生和组帧两个状态,其中数据来自所述仿真模型母模 块的随机函数部分,采用pi来记录节点每次运行产生的帧的个数。9.根据权利要求8所述的一种基于EDF动态优先级调度算法建立CAN总线仿真模型的方 法,其特征在于:所述节点子模块、总线仲裁子模块都为并行结构。
【专利摘要】本发明涉及一种基于CAN总线的运动控制系统,包括控制单元,整流单元,逆变单元、执行电机、工控机、CAN卡、物理层模块、数据链路层模块、应用层模块及硬件接口模块;物理层模块包括CAN物理通信介质及CAN收发器,CAN核心控制器包括发送模块、接收模块、仲裁模块及验收滤波模块,应用层模块包括模拟中心计算机,应用层协议采用CANopen协议;本发明的有益效果是:本发明提供硬件接口模块,将待测节点的物理设备直接接入本发明,即可实现在无需完整物理系统的环境下对接入节点设备的性能测试;EDF动态优先级调度算法更能改善总线的通信能力,提高总线的吞吐能力,进而可以改善总线系统的实时性能。
【IPC分类】G05B17/02
【公开号】CN105487403
【申请号】CN201510731859
【发明人】邓忠华, 陈智华, 李曦, 邓中立, 邓忠富, 李伟河, 王丹, 张涛, 蒋建华
【申请人】武汉华茂工业自动化有限公司
【公开日】2016年4月13日
【申请日】2015年10月30日