设为首页 | 成都一卡通
当前位置: 首页 > 一 卡 通 > 校园一卡通 >
校园一卡通
基于CAN一卡通系统总线调度策略建模与仿真
发布时间:2013-05-15 来源:未知
基于控制器局域网(CAN)的测控系统需要采用恰当的总线调度策略以满足数据传输的实时性要求,其建模与仿真能对网络设计进行评估和优化。在设计一卡通系统线性混合总线调度算法的基础上,运用网络仿真系统OPNET设计了一种改进的CAN CSMA/CA模型。应用该模型对所设计的总线调度算法的效率和稳定性进行了仿真分析和比较。结果表明,该算法能够有效地满足一卡通系统数据传输的实时性要求。 控制器局域网(CAN,control area network)是基于事件触发机制的多主系统,需要根据实际系统的要求采用恰当的总线调度策略以满足数据传输的实时性要求。 在CAN总线调度策略的建模与仿真研究方面,Tindell和Wellings将固定优先级排队理论拓展到CAN上,建立了CAN数学模型,并逐步改善了CAN响应时间模型。目前国内在该领域的研究集中于模型的理论分析,且多基于CSMA协议,未能反映CAN CSMA/CA总线调度策略本质。笔者运用OPNET设计了一种改进的CSMA/CA模型,该模型能够有效支持CAN总线调度策略仿真分析和比较。在此基础上,对一卡通系统线性混合总线调度算法进行了仿真分析。结果表明该算法能够很好地满足一卡通系统数据传输的实时性要求。 1 基于CAN的一卡通系统 1.1 CAN总线调度策略 CAN总线的介质访问控制方式为带冲突避免的载波侦听多址访问(CSMA/CA)。在非破坏性总线逐位仲裁规则下,帧ID值越小,优先级越高。因此,总线调度策略的实现依赖于帧ID的设计。 1.2 CAN帧ID设计 系统采用扩展帧,ID长度为29位。各域分配如图1所示。图1 CAN帧ID D23~D16为POS机号域,系统中每个节点都有一个的地址号,使用8位二进制数表示,还不错多容纳256个终端POS机。优先级还不错高的地址(全0)作为广播地址,其他地址依次分配给各POS机。机号可以在POS机上设定,初始值为0,是系统中的编号。 D15~Dl为帧号域。一条应用层命令必须拆分成多个帧进行传输,较好的帧的帧号为命令流水号,其后帧的帧号是前一帧的帧号加1。 帧号域占15位,在联机情况下,POS机在发送一帧后,会在其后的1024个帧间隔内得到数据中心响应。根据系统应用层协议,一条应用层命令还不错多被拆分成23帧,为了避免属于不同命令的两个帧的帧号相同,规定每一命令流水号是前一命令流水号加32。 D0为第1帧信息域,标识该帧是否为第l帧。若为第1帧,帧数据段第1字节为应用层命令字。D0为1表示第l帧;为0表示不是第l帧。 1.3混合总线调度算法 在1.2节描述的帧ID中,对于每一个帧,D23~DO是固定不变的,D28~D24根据帧已等待发送时间动态变化。据此设计了一种动态和静态相结合的混合总线调度算法。 根据实时性要求的不同,系统中不同POS机分配不同的初始发送优先级PRI_INITi,i为节点编号。为不失一般性,设PD域占用的位数为n,则必须满足PRI_INITi≤2n-1.分配PRI_INITi时,考虑POS机所属的不同类型。系统由充值机和消费机构成,充值机实时性要求高于消费机,其PRI_INITi取较小值。 节点开始发送帧时,把数值PRI_INITi复制到PD域,此时总线的状态存在下面3种情况: ①若此时只有该节点侦听到总线空闲,则成功发送; ②若此时有多个节点同时侦听到总线空闲,根据仲裁规则,仲裁获胜的节点继续发送,仲裁失利的节点调整自身的发送优先级,将欲发送的帧置入其发送等待队列,同时转入接收状态; ③若此时该节点侦听到总线忙,则直接将欲发送的帧置人发送等待队列,同时转入接收状态。 情况②中节点在仲裁失利后,采用下述策略调整发送优先级。i为节点编号;M为在成功发送一帧过程中节点参与总线竞争总次数;m为次数编号;J为所发送帧类型对应的调节比。帧类型与优先级调节比的对应关系如表1所示。表1 帧类型与优先级调节比对应表 式(3)为一种抽象表达式,可选择如下具体函数形式 式(4)为线性混合总线调度算法,式(5)为常量混合总线调度算法。为比较混合调度策略与静态调度策略,式(6)为静态总线调度算法。 2 CAN网络建模 2.1 CAN子网模型 CAN子网有2个充值机节点,编号为1和2;28个消费机节点,编号从3到30;各节点编号用i表示,其初始发送优先级为i-1。为了统计总线流量和吞吐率,增加一个统计节点,它只接收不发送帧。CAN子网拓扑结构如图2所示。图2 CAN子网拓扑结构模型 基于总线调度策略,图2中充值机节点和消费机节点模型只考虑发送部分,如图3所示。图3 CAN子网节点模型 图3中,gen为节点信源模块,根据扩展帧格式,帧还不错长128 b。因此packet size设置成constant(128)。 2.2处理机模型 在CSMA基础上,引入总线调度策略,设计如图4所示的改进的CSMA/CA处理机模型。图4改进的CSMA/CA处理机模型 图4中状态间的转换条件在Head Block中定义,PKT_ARVL为是否有要发送的帧到达;FREE为总线是否处于空闲状态;PKTS—QUEUED为节点的发送等待队列是否有帧在等待发送;CH—GOES—FREE为总线是否由忙状态变为空闲状态[1]。 当节点有要发送的帧到达且侦听到总线空闲时,进入pre—tx—pkt状态,其Enter Executives功能块通过以下定义的工程全局变量完成总线仲裁,工作流程如图5所示。 如果节点在pre_tx_pkt状态中,总线仲裁获胜,则Tx_flag置1,进入tx_pkt状态,由Enter Executives功能块完成发送帧和仿真结束条件的判断。其中,当发送完一帧后,应将tx_success重置为1,当节点下一次进入pre_tx_pkt时,能够获知上一次发送已成功完成。 如果节点在pre_tx_pkt状态中,总线仲裁失利,则tx_flag置0,进入adapt_PRI状态,根据式(3)调整其发送优先级,保存到变量pre_pri中,以便下一次进入pre_tx_pkt状态时能够恢复到经过调整后的发送优先级。 3仿真和结果分析 基于上述CAN网络模型,对1.3节描述的总线调度算法进行了仿真分析和比较。在仿真过程中,为了观察在节点发送帧间隔逐步缩小、总线流量逐步增大的情况下总线吞吐率的变化趋势,构造了包含45次实验的仿真序列,节点发送帧间隔从exp(1000)逐步缩小到exp(1.5)。 设置仿真时间为100 h,得到的仿真结果如图6所示。图6总线吞吐量随总线流量变化趋势比较图 根据CAN协议高速标准IS011898,网络还不错大带宽为1 Mb/s。从图6可以看出,在总线流量向l Mb/s逼近的过程中,采用线性混合调度算法能够保持总线吞吐率的平稳增长,其他两种算法均出现了不同程度的波动;采用静态调度算法时,总线吞吐率还不错大只能达到30%,常量混合调度算法还不错大也只能达到39%,而线性混合调度算法还不错大能够达到51%,采用线性混合调度算法较大地提高了网络性能。 4 结束语 以上针对一卡通系统的特点,构造了一种线性混合总线调度算法,建立了改进的CAN CSMA/CA模型。对算法的效率和稳定性进行了仿真分析和比较,结果表明该算法能够很好地满足一卡通系统数据传输实时性要求。