[西门子] 西门子 常用指令 比较指令

[复制链接]
查看123 | 回复0 | 2024-8-16 21:10:56 | 显示全部楼层 |阅读模式
>

1 比较指令
对比较指令的说明如下表所示。

比较指令就像是一把尺子,用来量两个数值(我们叫它们“操作数1”和“操作数2”)谁大谁小。如果“操作数1”比“操作数2”大或者它们相等,那么这个指令就会给我们一个“1”,表示条件满足;如果“操作数1”比“操作数2”小,那么这个指令就会给我们一个“0”,表示条件不满足。
这个比较的过程就像是做数学题,我们把“操作数1”写在指令的上面,把“操作数2”写在指令的下面。
如果我们开启了一个叫做IEC检查的东西,那么这两个操作数必须是同一种类型的数据,就像是苹果和苹果比大小,不能是苹果和橙子比。如果没有开启IEC检查,那么这两个操作数的数据大小必须是一样的,就像是两个一样大的苹果比大小。
最后,这个比较的结果“1”或“0”会和我们整个程序里的其他结果一起,进行逻辑上的计算,就像是一道数学题的答案会影响下一题的解答一样。
1.比较浮点数
比较数据类型REAL或LREAL时可以使用比较指令,建议使用指令“IN_RANGE:值在范围内”。比较浮点数时,待比较的操作数必须具有相同的数据类型,而无须考虑具体的“IEC检查”(IEC Check)设置。对于无效运算的运算结果(如-1的平方根),这些无效浮点数(NaN)的特定位模式不可比较。即如果一个操作数的值为NaN,则指令的结果将为FALSE。
2.比较字符串
在比较字符串时,通过字符的代码比较各字符(如“a”大于“A”),从左到右执行比较。第一个不同的字符决定比较结果。系统无法比较无效定时器、日期和时间的位模式(如DT#2015-13-33-25:62:99.999_999_999)。如果某个操作数的值无效,则指令的结果将为FALSE。并非所有时间类型都可以直接相互比较(如S5TIME),此时需要将其显式转换为其他时间类型(如TIME),然后再进行比较。
如果要比较不同数据类型的日期和时间,则需将较小的日期或时间数据类型显式转换为较大的日期或时间数据类型。例如,比较日期和时间数据类型DATE和DTL时,将基于DTL进行比较。如果显式转换失败,则比较结果为FALSE。WORD数据类型的变量与S5TIME数据类型的变量进行比较时,两种变量都将转换为TIME数据类型。WORD变量将解释为一个S5TIME值。如果两个变量中的某个变量无法转换,则不能进行比较且输出结果FALSE;如果转换成功,则系统将基于所选的比较指令进行比较操作。
3 比较数据
   比较数据可以是变量也可以是常量,数据类型可以多种多样,存储区可以是I、Q、M、L、DB,如下图所示。

4  数值范围检测
  IN_RANGE判别输入值是否在范围值内,满足MIN<=VAL<=MAX条件则功能框输出为1,否则输出为0。OUT_RANGE判别输入值是否在范围值外,满足MIN>VAL或VAL>MAX条件则功能框输出为1,否则输出为0。对数值范围的检测如下图所示。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则