3.3.1 比较操作指令
1.比较指令
比较指令用来比较数据类型相同的两个数IN1与IN2的大小(见图3-33),IN1和IN2分别在触点的上面和下面。操作数可以是I、Q、M、L、D存储区中的变量或常数。比较两个字符串是否相等时,实际上比较的是它们各对应字符的ASCII码的大小,第一个不相同的字符决定了比较的结果。
可以将比较指令视为一个等效的触点,比较符号可以是“==”(等于)、“<>”(不等于)、“>”“>=”“<”和“<=”。满足比较关系式给出的条件时,等效触点接通。例如当MW8的值等于-24732时,图3-33第一行左边的比较触点接通。
生成比较指令后,双击触点中间比较符号下面的问号,再单击出现的按钮,用下拉式列表设置要比较的数的数据类型。数据类型可以是位字符串、整数、浮点数、字符串、TIME、DATE、TOD和DLT。比较指令的比较符号也可以修改,双击比较符号,再单击出现的按钮,可以用下拉式列表修改比较符号。
图3-33 比较操作指令
2.值在范围内与值超出范围指令
“值在范围内”指令IN_RANGE与“值超出范围”指令OUT_RANGE可以等效为一个触点。如果有能流流入指令方框,执行比较,反之不执行比较。图3-33中IN_RANGE指令的参数VAL满足MIN≤VAL≤MAX(-3752≤MW22≤27535),或OUT_RANGE指令的参数VAL满足VAL<MIN或VAL>MAX(MB20<24或MB20>124)时,等效触点闭合,指令框为绿色。不满足比较条件则等效触点断开,指令框为蓝色的虚线。
这两条指令的MIN、MAX和VAL的数据类型必须相同,可选整数和浮点数,可以是I、Q、M、L、D存储区中的变量或常数。
【例3-3】 用接通延时定时器和比较指令组成占空比可调的脉冲发生器。
T1是接通延时定时器TON的背景数据块DB1的符号地址。"T1".Q是TON的位输出。PLC进入RUN模式时,TON的IN输入端为1状态,定时器的当前值从0开始不断增大。当前值等于预设值时,"T1".Q变为1状态,其常闭触点断开,定时器被复位,"T1".Q变为0状态。下一扫描周期其常闭触点接通,定时器又开始定时。
TON和它的Q输出"T1".Q的常闭触点组成了一个脉冲发生器,使TON的当前时间"T1".ET按图3-34所示的锯齿波形变化。比较指令用来产生脉冲宽度可调的方波,"T1".ET小于1000ms时,Q1.0为0状态,反之为1状态。比较指令上面的操作数"T1".ET的数据类型为Time,输入该操作数后,指令中“>=”符号下面的数据类型自动变为“Time”。
图3-34 占空比可调的脉冲发生器