来宝网 2014/1/14点击1446次
前已提到,为便于控制工程师的理解和使用,数字仪表编程采用面向问题的POL语言。为此,预先按控制中需要的运算控制功能,编制好各种功能程序模块,每个模块相当于单元组合式仪表中的一块仪表,所以也称为内部仪表。当然,它仅仅是完成特定功能的一段程序,并不存在物理上的实体。
有了各种运算模块和控制模块之后,就可以像在各种仪表间通过接线组成系统那样,使用POL语言,将内部仪表用程序连接起来,实现所需的功能。这种利用标准功能模块组成系统的工作,在数字控制仪表中称为“组态”。
在SLPC型数字调节器中,为实现一定的运算控制功能,要使用三种基本指令,即信号输入指令((LOAD)、功能指令(FUNCTION,包括各种运算指令、逻辑判断指令及控制指令等)、信号输出指令(STORE)。下面以两个变量相加后输出的运算为例,说明用户程序的构成方法。
①LD X1属于输人指令,读人X1数据;
②LD X2属于输人指令,读人X2数据;
③+ 属于功能指令,对X,,X:求和;
④ST Y1 属于输出指令,将结果送往Y1;
⑤END 结束指令。
初次阅读上面的程序会感到有些问题不清楚,因为这些指令只说明了要进行何种操作,但没有直接说明操作数据来自何处,送往何方。例如,在程序的第③步相加运算中,加数和被加数从哪里取,相加后的和数存到哪里去,似乎没有交代清楚。
要弄明白这些问题必须全面了解指令内容。其实,在SLPC指令中对此都有严格的规定,其所有指令都是以五个运算寄存器S1~S5为中心工作的。这五个运算寄存器实际上是在RAM中指定的一个先进后出的堆栈,当执行前述程序时,数据在寄存器中的移动情况如图2-32所示。
第一步,LD X1:若程序开始前各运算寄存器中分别存有随机数A、B、C、D、E,则程序执行后,输人寄存器X1内的数据(第1路模拟量输人信号X,经A/D变换后的数据)进人运算寄存器S1,根据堆栈原理,其余各运算寄存器中的数据顺序下移,原在S5中的信息被丢失。
第二步,LDX2:与第一步相似,将输人寄存器X2内的数据读人S1,其余各寄存器内容再次下移,原在S5中的数据D被丢失。
第三步,相加:将运算寄存器S1和S2中的数据相加后,和数(X1+X2)存人S1。其余各寄存器内容向上弹起一格,但S5中的数据不变。
第四步,ST Y1:将运算寄存器S1中的数据送到输出通道Y1的数据寄存器,但所有运算寄存器中内容都不变。
从以上的例子中可看出,SLPC中的输入/输出指令都是对运算寄存器S1执行的,其他功能指令也都是围绕运算寄存器S1~S5运转的。显然,要用好这些指令,必须熟悉指令执行时各种数据在运算寄存器中的位置。
下面具体介绍各种指令之前,再说明一下SLPC中的数据格式。如图2-33所示,数据在仪表内是用16位二进制数字表示的,其中第1位表示正负号,第2~4表示整数,从第5位起都表示小数。因此,数据的表示范围时-7.999~+7.999。与模拟量输入信号1~5V或4~20mA对应的内部数据为0.000~1.000。在后面的功能模块参数设定时,必须十分注意内部数据与工程量之间的转换关系。