一种输入输出模块的分时扫描方法
技术领域
本发明属DCS(分散控制系统)技术领域,具体涉及一种应用于大型分散控制系统中央处理器的输入输出模块分时扫描方法。
背景技术
现场控制系统、数据采集与通讯系统、设备监控系统和人机接口单元在各个行业中得到了广泛的应用。
在DCS(分散控制系统)的应用中,系统的中央处理器控制运算芯片往往会用到输入输出模块,进行I/O数据处理。普通的应用中,系统在一个控制周期内只采集一次输入输出数据,输入和输出扫描是放在一起的,这样就导致采集进来的输入信号经过运算后得到的输出数据信号,要到下一个控制周期处理输入输出数据的时候才能输出,数据输出的一个周期延时,降低了系统采集和处理的实时性。
如SUPMAX800大型分散控制系统,中央处理器由两块处理芯片组成,一块是控制运算芯片,另外一块是I/O处理芯片,这两块芯片之间是通过一块扩展的RAM进行数据交换(见图1中央处理器结构)。控制运算芯片主要进行数据处理,I/O处理芯片只负责I/O数据采集输出。两者之间的数据交互是通过扩展的RAM来进行的,输入数据反映到输出数据要晚一个周期。输入输出模块同I/O进行交互的时候输出的是上个周期处理好的数据。一个周期时间延时,在工程现场应用中,对输入→输出时间要求比较高的工况,比如火电应用领域的DEH(数字液电控制)系统的OPC(超速控制)工况,要求从采集PI(转速脉冲输入)信号,经运算到模拟量输出AO信号在在50ms内,并且越快速越好。控制运算周期经过两个周期就无法满足这一要求。
发明内容
本发明要解决的技术问题是:提供一种输入输出模块的分时扫描方法,避免周期性输入输出扫描处理造成的实时信号处理时间上的延误,提高了系统采集和处理的实时性。
为达到上述目的,采用的技术方案是:一种输入输出模块的分时扫描方法,包括控制运算芯片、I/O处理芯片和扩展RAM接口,其特征在于:
1)控制运算芯片中每个周期运行一次的输入输出模块,分成两个模块,一个为输入模块,另外一个是输出模块,进行分时扫描,控制运算芯片通过输入模块从扩展RAM中取出输入数据,运行运算处理模块,再通过输出模块将输出数据放入扩展RAM中,保证了在一个运算控制周期内完成一个从输入→处理→输出的完整过程;
2)I/O处理芯片将输入输出模块分成一个输入模块和一个输出模块,输入模块用于采集输入信号,输出模块用于输出信号;
3)控制运算芯片和I/O处理芯片之间的交互实现分时扫描:控制运算芯片和I/O处理芯片之间硬件上用扩展RAM进行数据交互的,只有一侧芯片可以取到RAM的硬件信号量,在软件上使用了RAM的硬件信号量来协调两侧芯片对扩展RAM的操作,控制运算芯片和I/O处理芯片在数据处理时序交互使用了两个软件标志位来实现。
所述控制运算芯片和I/O处理芯片之间的交互是指:
(1)I/O处理芯片处理输入模块,取到硬件信号量后,从软件标志位判断控制运算芯片是否已处理好上个周期的一个运算控制周期,即是否已经将输出数据放入RAM,如果已经放好,则处理输入信号,并且将取到的输入数据放入RAM中,置相应的软件标志位,释放硬件信号量,完成I/O处理芯片的输入模块处理;
(2)控制运算芯片处理输入模块,取到硬件信号量后,判断软件标志位I/O处理模块是否将输入数据采集好并且放入RAM,如果已放好,则从RAM取输入数据,置软件标志位取走数据,并且释放硬件信号量,完成控制运算芯片输入模块处理;
(3)I/O处理芯片处理输出模块,在完成输入模块的处理后就开始继续输出模块的处理,这是和控制运算芯片处理输入模块和处理运算模块同时进行的,这个模块从RAM中取输出数据,然后进行输出信号处理,置软件标志位取走数据,完成I/O处理芯片的输出模块处理;
(4)控制运算芯片处理输出模块,控制运算芯片在处理运算模块处理后,得到了输出的数据,在取到了硬件信号量后,芯片判断I/O处理芯片是否已经将输出数据取走并且输出,如果是,则把刚算好的输出数据放入RAM中,置软件标志位放入数据,完成控制运算芯片输出模块处理;
在控制运算芯片处理完输出模块后,紧接步骤(1)和(3)I/O处理芯片的输入输出模块处理,完成一个新的循环周期。
本发明的积极效果是:消除了控制运算芯片的输入输出模块中输入数据到输出数据一个周期的延迟时间,使系统的输入输出处理速度显著提高,达到了特殊工况的时间性能要求。
附图说明
下面结合附图与具体实施方法对本发明作进一步描述。
图1是中央处理器结构框图;
图2是现有技术与本发明控制运算芯片流程示意图比较;
图3是现有技术与本发明I/O处理芯片流程示意图比较;
图4是控制运算芯片和I/O处理芯片数据处理流程和交互框图;
图5是本发明性能测试实验最佳情况;
图6是本发明性能测试实验最差情况。
具体实施方式
图1是中央处理器结构框图,图2是一个运算控制周期现有技术与本发明控制运算芯片流程示意图比较,图3是一个扫描处理周期中现有技术与本发明I/O处理芯片流程示意图比较,由图1~3可见,一种输入输出模块的分时扫描方法,其特征在于:一种输入输出模块的分时扫描方法,包括控制运算芯片、I/O处理芯片和扩展RAM接口,其特征在于:
1)控制运算芯片中每个周期运行一次的输入输出模块COM7007,分成两个模块,一个为输入模块COM7007READ,另外一个是输出模块COM7007WRITE,进行分时扫描,控制运算芯片通过输入模块从扩展RAM中取出输入数据,运行运算处理模块,再通过输出模块将输出数据放入扩展RAM中,保证了在一个运算控制周期内完成一个从输入→处理→输出的完整过程;
2)I/O处理芯片将输入输出模块COMIO分成一个输入模块COMIOREAD和一个输出模块COMIOWRITE,输入模块用于采集输入信号,输出模块用于输出信号;
3)控制运算芯片和I/O处理芯片之间的交互实现分时扫描:控制运算芯片和I/O处理芯片之间硬件上是用扩展RAM进行数据交互的,只有一侧芯片可以取到RAM的硬件信号量,在软件上使用了RAM的硬件信号量来协调两侧芯片对扩展RAM的操作,控制运算芯片和I/O处理芯片在数据处理时序交互使用了两个软件标志位来实现。
由图4可见所述控制运算芯片和I/O处理芯片之间的交互是指:
(1)I/O处理芯片处理输入模块,取到硬件信号量后,从软件标志位判断控制运算芯片是否已处理好上个周期的一个运算控制周期,即是否已经将输出数据放入RAM,如果已经放好,则处理输入信号,并且将取到的输入数据放入RAM中,置相应的软件标志位,释放硬件信号量,完成I/O处理芯片的输入模块处理;
(2)控制运算芯片处理输入模块,取到硬件信号量后,判断软件标志位I/O处理模块是否将输入数据采集好并且放入RAM,如果已放好,则从RAM取输入数据,置软件标志位取走数据,并且释放硬件信号量,完成控制运算芯片输入模块处理;
(3)I/O处理芯片处理输出模块,在完成输入模块的处理后就开始继续输出模块的处理,这是和控制运算芯片处理输入模块和处理运算模块同时进行的,这个模块从RAM中取输出数据,然后进行输出信号处理,置软件标志位取走数据,完成I/O处理芯片的输出模块处理;
(4)控制运算芯片处理输出模块,控制运算芯片在处理运算模块处理后,得到了输出的数据,在取到了硬件信号量后,芯片判断I/O处理芯片是否已经将输出数据取走并且输出,如果是,则把刚算好的输出数据放入RAM中,置软件标志位放入数据,完成控制运算芯片输出模块处理;
经过以上四个步骤,就完成了一个周期的分时扫描处理,详细流程见图4。在控制运算芯片处理完输出模块后,紧接步骤(1)和(3)I/O处理芯片的输入输出模块处理,完成一个新的循环周期。
实验验证
对分时扫描输入输出模块的性能进行测试,同原来的模块性能做对比。实验中运用了DEH(数字液电控制)系统的OPC(超速控制)控制方案和逻辑来进行性能改进的验证。实验系统中通过PI(转速脉冲)卡对信号进行采集,通过数据通讯传输到中央控制器,然后中央控制器进行OPC(超速控制)的逻辑运算后,将需要控制的模拟量输出信号发送到AO(模拟量输出)卡上。我们检测从PI转速脉冲信号发生从3000转速提高到3090转速的变化后,到AO模拟量输出改变需要的时间,即为系统处理输入→运算→输出的整个时间。
图5和图6分别表示出了本发明系统性能测试实验的理论最佳情况和最差情况。
设中央处理器的运算控制周期为10ms,PI信号的采集需要10ms的时间,AO的PWM(脉冲宽度调制)输出变化也需要10ms的周期。
图5所示为,如果当PI信号刚巧在10ms结束的时候被PI卡的数据采集芯片采集,发送给I/O处理芯片,并且I/O处理芯片取到信号后刚巧控制运算芯片取数据,并处理完发送给输出卡,则AO输出卡经过10ms的PWM(脉冲宽度调制)输出就可以完成整个数据变化,这个时间为最佳时间20ms。
图6可见,如果当PI信号刚巧在10ms结束的时候错过PI卡件的数据采集芯片的一次扫描,则要晚2.5ms被采集到,然后刚巧又错过I/O处理芯片的一次扫描,则又晚了一个周期10ms,I/O处理芯片取数据刚好错过了控制运算芯片的数据交互,则又晚了10ms,最后到AO卡的PWM输出的整个时间为最差时间42.5ms。
实际得到的测试结果都是介于最佳情况和最差情况之间的数据。与理论值完全一致。满足了DEH(数字液电控制)控制中要求快速扫描信号并且输出控制信号的要求。
由实验结果可知,分时扫描输入输出模块可以将以往输入输出模块中由输入数据采集到输出信号输出的一个周期的延迟消除,大大的提高了系统的I/O处理性能。