多CPU+双端口RAM结构数控系统的研究
- 格式:doc
- 大小:67.00 KB
- 文档页数:10
多CPU+双端口RAM结构数控系统的研究摘要:研究多CPU和双端口RAM结构的数控系统,与单CPU 结构的系统相比,多CPU访问双端口RAM将产生额外的时间开销。
通过研究这些额外时间开销产生的原因,合理安排处理数控系统信号的时序从而对双端口RAM进行顺序访问,和对数控功能进行分类实现,有效地减少这些额外的时间开销。
关键词:多CPU 双口RAM 数控系统顺序访问功能分类单个CPU结构的数控系统不仅价格低廉,而且结构简单,但是能实现的功能也比较简单,早期的数控系统和现在的一些经济型数控系统多采用单CPU结构。
随着市场对数控系统的在功能上要求越来越多和复杂,加工的速度和精度的要求越来越高,要在单个CPU里实现高精高速的插补、译码、宏指令、PLC逻辑运算、3D图形模拟仿真、和网络通讯就显得比较困难,因而多CPU结构数控系统已经成为数控系统的发展方向[1]。
目前多CPU在硬软件上多采用双端口RAM进行通信,但是双端口RAM在两个CPU同时访问时存在冲突,为了保证数据的正确性,采用一些控制策略对其进行访问,但额外的控制策略将产生额外的时间开销,影响系统的实时性和整体性能,针对这一个问题,文章对这些额外的时间开销的产生过程进行阐述,并找到减少这些额外时间开销的方法。
1 硬件结构多CPU+ARM结构的数控系统的硬件结构采用3个ARM7系列的芯片作为系统的工作CPU,按照其实现的功能分成主CPU,插补CPU和PLCCPU。
主CPU负责整个系统的事务管理,连接多个扩展模块,包括通信接口、存储器、人机界面接口、电源及实时时钟等。
其中通信接口有普通以太网、RS-232和USB-HOST。
存储器包括SDRAM、FLASH和大容量铁电存储器。
人机界面接口为800×600的液晶屏和8×8矩阵键盘接口。
另外两个ARM的扩展只连接SDRAM,用于存储程序和数据。
各个ARM之间使用双端口SRAM进行连接,用于ARM之间的数据通信。
主ARM端的以太网接口为普通以太网,用于上层的监控和管理,和对系统的远程升级和维护等。
由于铁电存储器兼有SRAM存储器存储速度快的优点,另外还具有数据掉电不丢失的特点,可以用于保存CNC系统一些重要的参数,如螺距补偿数据,参数等。
FLASH用于保存系统的执行代码、默认系统数据和加工程序等。
系统上电时,引导代码将执行代码装载到SDRAM,并且将另外两个ARM的执行代码通过双端口RAM装载到各自的SDRAM中。
串口和USBHOST 接口则可以方便进行系统升级和传输CNC加工代码。
插补ARM用于进行实时插补运算和运动控制,通过将FPGA反馈的电机信号如转速,零点信号进行处理,形成半闭环系统,提高加工精度和保证螺纹加工和回零的准确性。
PLCARM用于运行梯形图和逻辑控制,用户通过修改梯形图以适应不同用途的机床。
FPGA为3个CPU提供准确的中断信号,协调3个CPU工作,另外负责扫描机床的IO信号并传送给PLC和将PLC输出的IO信号反馈给机床。
同时提供接口信号和电机驱动器进行通信,包括发送脉冲和读取电机的转速和反馈信号并传送给插补CPU。
FPGA由于其可以配置引脚和在线编程的特点,可以根据不同的机床更改引脚,灵活方便。
多CPU+ARM结构的数控系统硬件结构如图1所示。
三个CPU之间用双端口RAM连接,由于在同一时刻,连接双端口RAM两边的CPU可能对RAM的同一地址进行写操作,这样就会发生冲突,导致数据错误。
双端口RAM自身不具备对这样的冲突进行仲裁的功能,因而用户需要自己设计仲裁逻辑来避免两侧竞争现象和确保数据的完整性。
两个CPU之间对双端口RAM的读写一般有硬件仲裁,中断仲裁,令牌环仲裁这三种办法[2],硬件仲裁需要在CPU的访问的总线的时钟周期里插入等待的时序,而中断仲裁的办法会破坏原来的CPU的程序执行的流程,令牌环仲裁需要左右两边的CPU执行访问协议才能够进行访问。
但不管用那种办法,两个CPU之间的数据交换都存在额外的时间开销,过多的数据交换将会影响整个系统的性能,如何避免这种情况呢,这是多CPU结构的数控系统需要解决的问题。
2 软件结构和单CPU结构的数控一样,多CPU+ARM结构的数控系统软件部分大致分为:实时操作系统、底层驱动、文件系统、通讯接口、人机界面交互、3D实体模拟、译码、插补、运动控制、PLC等模块。
其中插补和运动控制,PLC模块是实时性要求最高的模块,这3个模块决定了整个数控系统的加工精度和速度,和对外界IO信号的响应的速度,因而这些功能分别单独在一个CPU里运行。
在单个CPU硬件结构的数控系统里,这些模块之间的数据交换不存在多CPU的存取访问冲突问题,但是由于在多CPU的硬件框架里,数控系统的各个模块可能在不同的CPU里运行,每个模块得到CPU的资源会增加,单独模块完成的速度得到提高,但是处于不同CPU里的模块之间的数据交换将会产生额外的时间开销,这些时间的开销将影响整个数控系统的整体性能和系统的实时性。
那么在多CPU架构的硬件体系里,如何充分利用多CPU的优点和保证系统的实时性呢?2.1 多模块协调工作为了便于说明问题,假设多系统里3个CPU的工作频率一致,在和单个CPU对比时,运行的外设环境和工作频率也一致。
分析数控系统的功能,可以发现有些功能可以在某个模块里单独完成,而有些功能需要多个模块协作完成。
对于需要多个模块协作完成的功能,其完成时间TN=mTI+nTX,其中TI表示模块完成的独立时间,m表示模块的个数;TX表示两个模块的交互时间,n表示模块之间交互的次数。
如果是多CPU系统,这些模块有可能在不同的CPU里实现,CPU之间交互的次数假设为p,那么多CPU完成这个功能需要的时间TM=mTI+(n-p)TX+pTX’,TX’是不同CPU之间的交互时间,由上面分析双端口RAM读写数据的方式可以知道TX’>TX。
但是在多CPU结构的系统里,某一个CPU在等待另一个协同处理的功能时,可以处理其他功能。
对于多任务调度的操作系统,任务之间的切换存在时间问题。
对于某一个只在单一模块完成的功能,假设单个CPU处理的时间是TS,那么多任务处理的就是TQ=TS+pTC,TC表示任务切换时间,是固定的;p表示被其他任务打断的次数。
为了保证数控系统的实时性,有些比较重要的功能要在数控的某一个插补周期完成,例如急停,复位,硬限位检测等这些功能和状态都要在一个插补周期的开始要确定,然后根据这些状态决定是否驱动电机运动。
假设在一个周期内有I个独立模块的功能和J个需要多个模块协作功能需要完成,对于单个CPU而言,其完成的时间是:TTN=∑TSi+∑TNj=∑TSi+∑(mjTI+njTX),其中i=1…I,j=1…J。
而对于多CPU而言,其完成的时间是:TTM=max(TQa,TQb,TQc)+∑TMj=max(TSa+paTC,TSb+pbTC,TSc+pcTC)+∑(mjTI+(nj-pj)TX+pjTX ’),其中a,b,c分别表示在3个CPU里实现的功能,TSa+TSb+TSc=∑TSi,pa+pb+pc=∑pj,其中i=1…I,j=1…J。
对比TTN和TTM可以定性分析,如果J=0且TSa=TSb=TSc,那么多CPU系统处理这些功能的所消耗的时间是单CPU的1/3,这是多CPU结构系统最理想的情况,也是最优的选择;如果I=0,且nj=pj,即所有的功能都需要多个模块在多个CPU里协同完成,对比单CPU系统增加了∑(njTX’-njTX)的时间开销,这是最差的结果。
很明显,对于插补周期是1毫秒的数控系统而言,增加的时间开销极大地影响了整个系统的实时性。
所以要提高多CPU数控系统的性能,要从下面几个方面入手:1.减少TX’,即提高双端口RAM的存取速度;2.减少系统任务的切换时间TC;3.在软件方面,尽量减少实现的功能在多个CPU之间的耦合,简化实现流程,也就是减少变量p。
由于受到硬件和系统软件的限制,前两点要得到明显的改善会比较困难。
就目前而言,参考当前流行的数控系统如法兰克,西门子等,数控系统实现的基本功能都是比较固定的。
对这些功能合理整体考虑合理安排其实现的过程,可以减少这些功能在多CPU上的耦合,以达到缩短其完成时间的目的。
2.2 信号处理流程在数控系统里,当系统处于加工、轴移动等状态时,其状态的改变一般由信号控制,这些信号分为成输入信号X、输出信号Y、和GF信号[3]。
GF信号是PLC与CNC系统的交互使用的,这些信号得关系如图2。
其控制过程是:X信号为输入信号,经过PLC的逻辑运算以G信号通知CNC系统进行处理,CNC对这些G信号调用相对应的功能,然后通过F信号通知PLC,PLC经过相关的梯形图逻辑运算,以Y信号输出到机床。
对于G信号,PLC具有读写权限,而CNC只有读权限;F信号CNC具有读写权限,而PLC只有读权限;X信号PLC具有读权限,Y信号具有读写权限。
信号处理的流程是单向,这些信号都存放在双端口RAM里,双端口RAM两边的CPU 对它们的读写有明确的权限,另外由FPGA产生的中断信号通知PLC、插补CPU、主CPU,当这些中断信号存在一定的时间差时,双端口两边的CPU对其进行按一定时间顺序访问,对那么对双端口RAM读写冲突的几率就减少,那么所消耗的时间就减少了。
2.3 功能分类另外从功能方面来看,可以分成实时功能和非实时功能,实时功能一般与轴的控制和运动相关,和一些特殊信号如急停,复位等;而非实时功能一般与轴控制和运动无关的。
轴相关的功能在CNC的插补模块里进行,只有PLC和插补两个CPU进行交互,这些功能要求的响应比较快,通常在一个插补周期内完成。
而与轴无关的信号如数据管理的设置,系统数据的存储读取,或者显示需要使用的数据等主要是在主CPU完成,如刀具寿命管理这部分功能由PLC和主CPU 协同完成,这些信号的要求在系统的空闲时间完成,实时性要求不高。
还有一些信号如复位,急停是要三个模块按照一定的顺序完成执行的,实时性要求也高。
依照这种分类可以按照下面的原则设计完成这些功能:1)对于实时性要求高的功能,例如与轴的控制和运动相关的功能,可以运行于系统优先级高的任务;而与轴无关的功能运行于优先级比较低的任务。
2)与轴相关的,对于CPU之间有比较多交互的功能优先处理从,利用等待时间处理只在一个CPU里完成的功能。
3)对于运行于多个CPU轴相关功能,可以依照各个CPU实现部分的紧迫程度,优先处理,然后将结果传递给其它CPU。
例如急停功能,当用户按下急停键,不管机床是否处于运动状态,都要立即停止下来。
然后插补CPU将轴的信息传递给PLCCPU,PLCCPU将机床的其他状态如冷却,排屑等功能停止,然后PLCCPU将IO信息传递给主CPU,主CPU将急停报警,机床状态显示出来,这样可以优化急停功能的实现流程。