经济型数控系统的软件抗干扰技术

来源:互联网

点击:1362

A+ A-

所属频道:新闻中心

关键词: 数控系统 抗干扰

    0 引言

      经济型数控系统通常追求高的性能/价格比,系统关键功能如插补功能的实现一般都是通过软件来实现的。因此,在设计系统的时候,需要尽量降低硬件的成本。为了保证经济性,不可能选用太好的电源滤波器和开关电源,也不可能采用成本过高的硬件冗余技术,CPU 芯片通常也只是选用商用级或民品级的8位单片机。但是,数控系统多数工作在环境恶劣、干扰严重的场合,窜入系统的干扰,其频谱往往很宽,且具有随机性。采用廉价的硬件抗干扰措施,只能抑制某些高频段的干扰,而频率较低的干扰信号仍会侵入系统。因此,除了采用硬件抗干扰设计以外,还要采取一定的软件抗干扰技术,做到“软硬兼施”。使用软件抗干扰技术的优点在于,不需要增加硬件投资,使用灵活,修改方便。

    1 软件抗干扰常用方法

      软件抗干扰技术所研究的主要内容,其一是采取软件的方法抑制迭加在模拟输入信号上的噪声的影响,如数字滤波技术;其二是由于干扰而使运行程序发生混乱,导致程序“乱飞”或陷入“死循环”时所采取的使程序纳入正轨的措施,如指令冗余、软件陷阱、“看门狗”技术等。在经济型数控系统中,进、出信号多为数字信号,软件抗干扰主要从以下几方面来考虑:指令冗余、软件陷阱、“看门狗”技术、输入信号的重复检测、输出信号的刷新、CPU的睡眠抗干扰、关键数据的恢复以及用户数据的保护等。

    2 经济型数控系统的软件抗干扰技术

      2.1 指令冗余技术

      MCS-51 的指令由操作码和操作数组成。单字节指令仅有操作码;双字节指令第一个字节是操作码,第二个字节是操作数; 3字节指令第一个字节为操作码,后两个字节为操作数。CPU 取指时,先取操作码,后取操作数。如何区别某个数据是操作码还是操作数,这完全由取指的顺序来决定。CPU 复位后,首先取出指令的操作码,然后取出操作数。当一条指令执行完毕,紧接着又去取下一条指令的操作码与操作数。这些操作的时序完全由程序计数器PC 来控制。因此,一旦PC 因干扰而出现错误,程序便脱离正常的运行轨道,出现“乱飞”的现象,导致操作数的数值改变或者将操作数当成操作码的错误产生。当程序“乱飞”到某个单字节指令上时,可以自动纳入正轨;当“乱飞”到某双字节指令上时,若恰恰在取指令的时刻落在操作数上,就会将该操作数当成操作码,程序将出错;当程序“乱飞”到某个3 字节指令上时,因为有两个操作数,误将操作数当成操作码的几率将会更大。用单字节指令,并在关键地方人为地插入一些单字节指令NOP,或将有效的单字节指令重复写几次。这种方式称之为指令冗余。可在双字节指令和3 字节指令之后插入两个NOP,这可保证其后的指令不被拆散。因为“乱飞”的程序即使落到操作数上,由于NOP 的存在,不会将其后的指令当成操作数来执行,从而使程序纳入正轨。对程序流向起决定作用的指令(如RET、RETI、ACALL、LCALL、LJMP、JZ、JNZ、JC、JNC、DJNZ 等)和某些对系统工作状态起重要作用的指令(如SETB EA 等),可在之前插入两个NOP,以保证“乱飞”的程序迅速落入正轨;对于某些子程序必要时可以连续多次重复调用,某些状态的查询也可多次进行。

      采用冗余技术使PC 纳入正轨的条件是:跑飞的PC必须指向程序运行区,并且有可能执行到冗余指令。

      2.2 软件陷阱技术

      当“乱飞”的程序进入非程序区(如EPROM 未使用的空间)或表格区时,采用冗余指令使程序入轨的条件不满足,此时可以设定软件陷阱,拦截“乱飞”的程序,用引导指令强行将捕获到的“乱飞”程序引向复位入口地址0000H,并在此处对出错进行处理,使程序纳入正轨。软件陷阱可采用两种形式。

      形式之一的机器码为:00 00 02 00 00

      形式之二的机器码为:02 02 02 02 00 00

      根据“乱飞”程序落入陷阱区的位置不同,可选择表1 中的一种方式,使程序纳入正轨,指定运行到预定位置。软件陷阱通常安排在未使用的中断区、未使用的EPROM 区、非EPROM 区、运行程序区以及中断服务程序区等。

      2.3 “看门狗”技术

      PC 受到干扰而失控,引起程序“乱飞”,也可能使程序陷入“死循环”。指令冗余技术、软件陷阱技术都不能使失控的程序摆脱“死循环”的困境,本系统采用程序监视技术,又称“看门狗”(Watchdog)技术,使程序脱离“死循环”。数控系统的应用程序通常都采用循环运行的方式,循环周期基本固定。“看门狗”技术就是不断监视程序循环运行的时间,若发现时间超过已知的循环设定时间,则认为系统陷入了“死循环”,然后强迫程序返回到0000H入口,在此处安排一段出错处理程序,使系统纳入运行正轨。本系统设置了一个16 位的监视定时器,定时器启动后,每个机器周期自动加1,当计数器溢出时,复位器MAX708 就把CPU 的RESET 引脚拉成高电平,从而使CPU 复位。需要注意的是,使用监视定时器时,系统软件应在每次定时器溢出前将定时器清0。因此,一旦程序因干扰不能顺利运行或死机时,定时器将会很快产生溢出,从而使得CPU 立即复位,不至于造成事故的发生。

      2.4 输入信号的重复检测技术

      输入信号的干扰是迭加在有效电平信号上的一系列离散的尖脉冲,这些脉冲信号的作用时间很短。当数控系统面临输入干扰,又不能用硬件加以有效抑制时,可以采用软件重复检测的方法,达到“去伪存真”的目的。车床数控系统在工作时,需要接收一些外部的开关量输入信号:如纵、横向拖板的限位信号,自动回转刀架的刀位信号与换刀回答信号,自动卡盘的夹紧回答信号,车床主轴的启、停回答信号,以及数控系统的紧急停止信号等。这些信号有效时,均以低电平形式经过光耦隔离后传递到CPU以及输入接口芯片,有效电平均能保持200ms,甚至更长。而干扰信号多呈毛刺状,作用时间短。利用这一特点,可多次重复采集某一输入的开关量信号,直到连续几次采集结果完全一致时方为有效。若多次采集后,信号总是变化不定的,可停止采集,并给出报警信号。

      本系统中,开关量输入信号的数据采集流程。采集总次数为10,只有连续3 次采集数据相同,才认为结果有效;延时时间可根据需要进行设定,在两次采集之间插入此延时,能够对付较宽的干扰。

      2.5 输出信号的刷新技术

      对于开关量的输出,软件抗干扰主要是采取输出信号的刷新技术,这是一种提高输出接口抗干扰性能的有效措施。对于那些用锁存器输出的控制信号,这些措施很有必要。在条件允许的情况下,重复输出的周期尽可能短一些。当输出端口受到某种干扰而输出错误信号时,外设还未来得及作出有效的反应,正确的信息又输出了,这样,就可以及时避免错误动作的发生。在执行重复输出功能时,对于可编程接口芯片,工作方式控制字与输出状态字一并重复设置,使输出模块可靠地工作。

      经济型车床控制系统的输出均为数字信号,如步进电机的控制信号、电动刀架的驱动信号、主轴电机的启停信号、冷却泵的启停信号、电动卡盘的夹紧信号等。CPU 给出正确的数据输出后,外部干扰有可能使输出装置得到错误的数据。这种错误的输出结果,如果不采取得力措施加以补救,有可能造成不良后果。

      (1)重复输出同一个数据设计软件时,可将I/O 芯片的输出过程安排在系统的监控循环中,监控循环周期短,可以有效地防止输出设备的误动作。但要注意,输出功能是作为一个完整的模块来执行的(比如一个字节)。采取这种方式设计软件时,必须为每个I/O 外部设备建立一个8 位的输出暂存单元,输出功能模块将所有暂存区的数据一一输出,不论这个数据是刚算好的还是原先算好的。

      在对步进电机进行输出控制时,车床数控系统采用软件算法来实现环形分配器的功能,计算机直接输出步进电机各相绕组的通电状态,经过光电隔离后,传送给功率放大器。编制软件时,采用重复输出的方式,对于防止步进电机的失步,具有一定的效果,在一个换相周期内可以重复输出2~3 次。

      (2)输出芯片的重复初始化

      在车床数控系统中,用8255芯片来扩展输出功能,外设通过8255 芯片来获得单片机的控制信息,8255芯片在初始化时应明确规定各端口的职能。为了保证输出正确,输出功能模块每次在执行具体的数据输出之前,应该先执行8255的初始化命令,即,先对8255 写入工作方式控制字,再输出有关数据。

      对于管理LED 显示器的8279 芯片,也采用同样的措施。每当调用显示子程序进行显示器的刷新时,首先对8279 进行一次初始化,重新设定其工作方式,然后再输出新的显示数据。

      2.6 CPU的睡眠抗干扰技术

      当干扰作用到CPU 本身时,CPU 不能按正常状态执行程序,将引起混乱。本系统选用AT89C52 芯片作为CPU,它通过执行ORL PCON,#01 指令可以使得CPU 进入睡眠状态。此时,只有定时/ 计数系统和中断系统处于工作状态,CPU 对系统三总线上的干扰没有反应,大大降低了系统对干扰的敏感性。

      系统工作时,需要用交流接触器去驱动主轴电机和电动刀架电机。由于负载的工作电流大,启动电流更大,因此,在交流接触器动作的瞬间,将会产生很强的电磁干扰,并通过各种途径传到CPU,使计算机不能正常工作。尽管已经把计算机跟外部的连接信号都加了光电隔离,在用示波器观察计算机电源的地线和一些信号线时,仍然发现有干扰信号叠加在上面,持续时间大约在20ms 左右。这些干扰信号常常造成控制系统失灵、机床拖板乱跑、刀架乱转、用户程序丢失或者系统死机等故障。为了解决这一问题,给交流接触器的线圈两端加了RC灭弧阻容,把计算机跟外部的连接线换成了屏蔽线,但是,在电动刀架开始转位或在主轴电机突然启停时,上述的干扰现象仍然出现。最后采用CPU 睡眠抗干扰法解决了此问题。

      2.7 关键数据的恢复技术

      车床控制系统需要接受用户从操作面板键入的ISO 代码,将其转换成HEX 码,并送到外部数据存贮器62256RAM 中存储。每送完一个程序段,最后一个数据字节在62256 中的存贮地址(在此简称STAD),就是一个关键数据。STAD 在系统掉电时,需要进行保护,为此,必须将其也写入62256RAM中,并在硬件上建立一个掉电保护电路,使得62256RAM 中的数据在系统掉电后不会丢失。掉电保护电路虽然比较可靠,但是系统在上电或掉电的瞬间,62256 中的数据仍然有可能遭到破坏,STAD就有可能被改写,那么下次用户再输入程序时,在62256 中存贮数据的起始地址就会改变,原有的程序就有可能被破坏。一旦被写入的地址变成8255芯片的输出口地址的时候,步进电机的选通信号、驱动电源的高压开启信号,均有可能被置成有效,电动刀架和主轴也有可能旋转,将有可能引发事故。因此,在系统上电初始化的时候,需要首先检查一下STAD 有没有遭到破坏,如果遭到破坏,应在数据写入62256 之前,将STAD 尽快恢复。为此,采取以下措施。

      用户每输入完一个程序段,编辑软件将程序数据最后一个字节在62256 中的存贮地址(是一个16位的地址,需要两个字节存放),同时送到外部RAM的(00FAH)(00FBH)、(00FCH)(00FDH)以及(00FEH)(00FFH)三组单元中,即将关键数据STAD建立三重备份数据(数据副本)。系统每次上电进行初始化时,通过表决程序恢复STAD 的原值。若三对存放单元中,有两对不一致,则表决失败;若三对存放单元中,有两对相一致,则表决成功。将S T A D 的三重备份建立在片外R A M ,是因为片外R A M 只有MOVX 指令才能修改,相比之下,片内RAM 中的数据可以被各种M O V 指令、算术指令、逻辑指令所修改,安全性差一些。

      2.8 用户数据区的保护技术

      上面提到,用户设定的参数以及编制的零件加工程序均要存贮在片外RAM62256 中,这些数据的写入均由CPU 通过执行指令“MOVX @DPTR,A”来实现。当CPU 受到干扰而非法执行该指令时,就会改写62256 中的数据,导致用户数据丢失。为了减小用户RAM 中数据丢失的可能性,可在对62256进行写操作之前加入条件陷阱,不满足条件时,不允许写入,并进行报警。程序格式如下:

      2.9 设计软件的其他注意事项

      提高数控系统的可靠性,除了采取上述软件措施以外,还应注意以下两点:①慎重使用堆栈。程序运行中经常与堆栈打交道,但堆栈操作因干扰而出错的几率较大,堆栈操作的次数越多,出错的概率就越大。因此,在使用堆栈操作时,级数不要使用太多,应尽量减少子程序的个数,特别注意不要使子程序嵌套太深。从抗干扰的角度考虑,堆栈区的设置应远离程序区和数据区,最好应单独设置,避免影响程序的其他部分。②数控系统在“自动运行”状态下,CPU的外部中断最好处于关闭状态。至于急停和限位这两个信号,在不影响系统运行速度的前提下,最好采用查询的方式,不用中断。这样,系统在自动运行时,关闭了所有中断,大大降低了外部干扰信号对系统的侵扰。而当系统工作在“编辑”状态或“参数设定”状态时,再将键盘中断放开,用户即可输入数据。

    3 结语

      本文提出的几种软件抗干扰技术,简单易行,不需要硬件投资,修改方便,通用性强,可靠性高。在笔者研制的多种经济型数控系统上使用,抗干扰效果显著。从单轴控制到4 轴联动,多个品种的数控系统,连续多次通过国家技术监督局机床质量监督检验中心的抗干扰测试。目前,3000余台经济型数控系统投入工厂稳定运行已有十年之久。实践证明,本文提出的软件抗干扰技术具有一定的推广应用价值。

    (审核编辑: 智汇胡妮)

    声明:除特别说明之外,新闻内容及图片均来自网络及各大主流媒体。版权归原作者所有。如认为内容侵权,请联系我们删除。