本次将重点介绍用户程序的编写方法,并通过大家的动手实践掌握好该项技能。
为了对SLPC可编程调节器有一正确而较全面的理解,从而科学地掌握其操作及程序的编制,我们首先介绍其工作节拍与程序运行原理。
1、SLPC*E的工作节拍
SLPC*E是按100 ms或200ms的定周期节拍工作的,图1是其常用的200ms工作时序图。从图1可以看出,在控制周期内,控制器依靠内部的定时器,每隔10ms向CPU发出一次中断申请,启动相应程序顺序执行。CPU累计定时器中断申请次数,每20次,即200ms完成一个控制循环。
在每个控制周期的开始,首先判断是否编程工作状态。若是,则转入编程处理程序;若不是,则进入自检状态——检查RAM、ROM、D/A、A/D工作是否正常。如果这些检查都正常,则读入状态寄存器的数据,以判明控制器处于自动、手动还是串级工作状态。并对输出回路的连接状态及RAM备用电源的电压进行检查。
在定周期节拍的最初10ms内完成上述自检工作后,在第二、第三两个10ms定时中断的作用下,由输入程序自动对各路模拟量输入进行两次A/D转换,取其平均值存入RAM的输入寄存器Xn中。
在A/D转换结束后,CPU就从用户ROM中取出用户程序,按编制好的程序顺序执行,直到最后一句END为止。
在执行完用户程序的各项操作之后,调用输出处理程序进行输出处理,依次用10ms的时间对PV、SV、Y1、Y2、Y3进行D/A转换,向外输出模拟信号。
在完成上述程序后,系统转入等待状态,直到200ms的固定控制周期结束,再进入下一个新的控制周期。SLPC*E单回路控制器就是按照这样的工作节拍反复循环着。
从图1中还可看到一项D/A刷新操作,这是为了保持输出值稳定而采取的软件措施。从前面的系统原理图可以得知,控制器的模拟量输出采用输出电容进行保持,为了尽量减小电容的放电电流,CPU每隔20ms对输出电容进行0.1ms的短暂充电,以补充放电损失的电荷量,对输出保持的质量大大提高。
为了保障定周期工作节拍的正常进行,系统中还设有专门的监视器WTD(软件狗),实时地监视控制周期的时间进程。如果CPU因故障等原因经过200ms不能完成工作循环,就发出报警信号,并采取以下应急处理措施:保持输出状态不变,控制方式自动切换到手动方式,指示表及操作电流输出切换到后备电路,以避免事故的发生或进一步扩大。
2、用户程序运算原理
SLPC*E的用户程序采用面向对象的程序设计语言编制,结构类似于一般的计算机高级语言。只要根据控制流程图的各项功能,选用相应的功能模块指令进行顺序排列,即可组成一个用户程序。这种利用功能模块组成控制系统的方法,在数字控制仪表中称为“组态”。
下面以一个2输入变量相加的运算为例,说明用户程序的运算原理。假设运算前各运算寄存器内的数据分别为A、B、C、D、E。
表1 输入加法运算
第一步:LD X1 输入寄存器X1内的数据
在用户程序执行前,SLPC的输入处理程序已将各路模拟量输入信号,经A/D转换后存入寄存器X1~X5中。执行程序LD X1后,X1中的数据就进入运算寄存器S1中,根据堆栈原理,其它各运算寄存器内的数据顺序下移,原S5中的数据被丢失。
第二步:LD X2 输入寄存器X2内的数据
执行LD X2后,X2中的数据进入运算寄存器S1,其余各寄存器内的数据再次下移,原S5中的数据D被丢失。
第三步:+ 加法运算,对X1、X2求和。
将S2中的数据加上S1中的数据,和数(X2 +X1)存入S1中。其它各寄存器中的数据上移一格,但S5中的数据不变。
第四步:ST Y1 将S1中的数据送到输出寄存器Y1中,运算寄存器中的数据不变。送入Y1中的数据由输出处理程序转换成模拟电信号。
第五步:END 程序结束。
至此,一个控制周期的运算结束,等到下一个控制周期再重新开始执行用户程序。
从这个实例可以看出:
(1)运算过程的三个基本动作
① 取数存入运算寄存器 LD指令
② 数据运算 运算指令
③ 输出结果 ST指令
(2)S寄存器的作用
用户程序的执行都是通过运算寄存器进行的,输入输出指令只对S1操作,其它指令则围拢着S1~S5进行。因此,在设计用户程序时必须熟悉指令执行时各种数据在运算寄存器中的正确位置。
评论
查看更多