仿真模型,应用层协议采用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),因此对这个