首页 理论教育 比较器操作指令解析

比较器操作指令解析

时间:2023-06-30 理论教育 版权反馈
【摘要】:不满足比较条件则等效触点断开,指令框为蓝色的虚线。 用接通延时定时器和比较指令组成占空比可调的脉冲发生器。比较指令上面的操作数“T1”.ET的数据类型为Time,输入该操作数后,指令中“>=”符号下面的数据类型自动变为“Time”。图3-36 OK指令与NOT_OK指令图3-37 OK指令的应用4.变量类型检查指令在指令列表的“\比较器操作\变量”文件夹中,还有下列指令。

比较器操作指令解析

1.比较指令

比较指令用来比较数据类型相同的两个数IN1与IN2的大小(见图3-34),IN1和IN2分别在触点的上面和下面。操作数可以是I、Q、M、D、L、P存储区中的变量或常数。比较两个字符串是否相等时,实际上比较的是它们各对应字符的ASCⅡ码的大小,第一个不相同的字符决定了比较的结果。

可以将比较指令视为一个等效的触点,比较符号可以是“==”(等于)、“<>”(不等于)、“>”“>=”“<”和“<=”。满足比较关系式给出的条件时,等效触点接通。例如当MW8的值等于-24732时,图3-34第一行左边的比较触点接通。

生成比较指令后,双击触点中间比较符号下面的问号,单击出现的978-7-111-58719-4-Chapter03-46.jpg按钮,用下拉式列表设置要比较的数的数据类型。比较指令的比较符号也可以修改,双击比较符号,单击出现的978-7-111-58719-4-Chapter03-47.jpg按钮,可以用下拉式列表修改比较符号。

S7-1200的比较指令的数据类型可以是位字符串、整数、浮点数、字符串、TIME、DATE、TOD和DLT。S7-1500还可以是LTIME、LTOD、DT和LDT。

978-7-111-58719-4-Chapter03-48.jpg

图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”。

978-7-111-58719-4-Chapter03-49.jpg

图3-35 占空比可调的脉冲发生器(www.xing528.com)

3.检查有效性与检查无效性指令

“检查有效性”指令978-7-111-58719-4-Chapter03-50.jpg和“检查无效性”指令978-7-111-58719-4-Chapter03-51.jpg(见图3-36)用来检测输入数据是否是有效的实数(即浮点数)。如果是有效的实数,OK触点接通,反之NOT_OK触点接通。触点上面的变量的数据类型为Real。

执行图3-37中的乘法指令MUL之前,首先用“OK”指令检查MUL指令的两个操作数是否是实数,如果不是,OK触点断开,没有能流流入MUL指令的使能输入端EN,不会执行乘法指令。

978-7-111-58719-4-Chapter03-52.jpg

图3-36 OK指令与NOT_OK指令

978-7-111-58719-4-Chapter03-53.jpg

图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数据类型的变量,等效的触点闭合。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈