1.比较指令
比较指令用来比较数据类型相同的两个数IN1与IN2的大小(见图3-34),IN1和IN2分别在触点的上面和下面。操作数可以是I、Q、M、D、L、P存储区中的变量或常数。比较两个字符串是否相等时,实际上比较的是它们各对应字符的ASCⅡ码的大小,第一个不相同的字符决定了比较的结果。
可以将比较指令视为一个等效的触点,比较符号可以是“==”(等于)、“<>”(不等于)、“>”“>=”“<”和“<=”。满足比较关系式给出的条件时,等效触点接通。例如当MW8的值等于-24732时,图3-34第一行左边的比较触点接通。
生成比较指令后,双击触点中间比较符号下面的问号,单击出现的按钮,用下拉式列表设置要比较的数的数据类型。比较指令的比较符号也可以修改,双击比较符号,单击出现的按钮,可以用下拉式列表修改比较符号。
S7-1200的比较指令的数据类型可以是位字符串、整数、浮点数、字符串、TIME、DATE、TOD和DLT。S7-1500还可以是LTIME、LTOD、DT和LDT。
图3-34 比较指令
2.值在范围内与值超出范围指令
“值在范围内”指令IN_RANGE与“值超出范围”指令OUT_RANGE可以等效为一个触点。如果有能流流入指令方框,执行比较,反之不执行比较。图3-34中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、D、L存储区中的变量或常数。
【例3-4】 用接通延时定时器和比较指令组成占空比可调的脉冲发生器。
解:T1是接通延时定时器TON的背景数据块的符号地址。“T1”.Q是TON的位输出。PLC进入RUN模式时,TON的IN输入端为1状态,定时器的当前值从0开始不断增大。当前值等于预设值时,“T1”.Q变为1状态,其常闭触点断开,定时器被复位,“T1”.Q变为0状态。下一扫描周期其常闭触点接通,定时器又开始定时。TON和它的Q输出“T1”.Q的常闭触点组成了一个脉冲发生器,使TON的当前时间“T1”.ET按图3-35所示的锯齿波形变化。比较指令用来产生脉冲宽度可调的方波,“T1”.ET小于1000ms时,Q1.0为0状态,反之为1状态。
比较指令上面的操作数“T1”.ET的数据类型为Time,输入该操作数后,指令中“>=”符号下面的数据类型自动变为“Time”。
图3-35 占空比可调的脉冲发生器(www.xing528.com)
3.检查有效性与检查无效性指令
“检查有效性”指令和“检查无效性”指令(见图3-36)用来检测输入数据是否是有效的实数(即浮点数)。如果是有效的实数,OK触点接通,反之NOT_OK触点接通。触点上面的变量的数据类型为Real。
执行图3-37中的乘法指令MUL之前,首先用“OK”指令检查MUL指令的两个操作数是否是实数,如果不是,OK触点断开,没有能流流入MUL指令的使能输入端EN,不会执行乘法指令。
图3-36 OK指令与NOT_OK指令
图3-37 OK指令的应用
4.变量类型检查指令
在指令列表的“\比较器操作\变量”文件夹中,还有下列指令。
EQ_Type和NE_Type指令用于比较两个变量的数据类型相等或不相等,操作数1的数据类型为Variant。
EQ_ElemType和NE_ElemType指令用于比较在块接口中声明的操作数1的数据类型与操作数2的数据类型相等或不相等,操作数1的数据类型为Variant。如果操作数1的数据类型为Array,将比较Array元素的数据类型。
如果IS_NULL指令查询到Variant变量指向NULL指针而没有指向对象,等效的触点闭合。如果NOT_NULL指令查询到Variant变量不指向NULL指针而是指向对象,等效的触点闭合。
如果检查数组指令IS_ARRAY查询到Variant操作数指向Array数据类型的变量,等效的触点闭合。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。