IEC-61131结构化文本是否允许比较布尔操作数?

时间:2018-08-13 21:31:58

标签: plc relational st

我正在为结构化文本构建解析器和类型检查器。 ST是Pascal的派生词。

很明显,ST允许相等地比较两个声明的实变量X和Y为

 X = Y

很明显你可以写

 X <> Y

 X > Y

如果我有两个声明的布尔变量A和B,则为

 A = B

合法吗?帕斯卡肯定会这样说。我对ST拥有的参考文件(包括2004版的澳大利亚标准以及一些供应商的实现)尚不清楚。

我可以写:

 A > B

什么意思?

[摘要上,我对用于比较字符串的相同问题感兴趣。布朗尼也指出了解决该问题的方法]。

[不,我不能只在真实的控制器上尝试;我实际上没有人,离我最近的人实际上离我有两天了。]

答案是什么,您查阅的参考文献中显示的答案是什么?

1 个答案:

答案 0 :(得分:3)

这个问题的答案实际上取决于IDE。尽管ST有一个标准,但是每个供应商在实现它方面都略有不同。

通常,这是有效的声明。

username=312412&real_name=Dean&phone=13412345678&email=xxx@yahoo.com

这是IEC 61131-3草案中的内容。不幸的是,它不是开放文档,而且要花钱,所以我不能在此处发布或提供链接。

https://webstore.iec.ch/publication/4552

  1. VAR a, b: BOOL; END_VAR IF a = b THEN // Do something END_IF GT降序:>
  2. OUT := (IN1>IN2) & (IN2>IN3) & ... & (INn-1 > INn) GE单调序列:>=
  3. OUT := (IN1>=IN2)&(IN2>=IN3)& ... & (INn-1 >= INn) EQ平等:=
  4. OUT := (IN1=IN2) & (IN2=IN3) & ... & (INn-1 = INn) LE =单调序列:<
  5. OUT := (IN1<=IN2)&(IN2<=IN3)& ... & (INn-1 <= INn) LT递增顺序:<
  6. OUT := (IN1<IN2) & (IN2<IN3) & ... & (INn-1 < INn) NE不等式(不可扩展)<>

这还意味着您可以在某些IDE中使用

OUT := (IN1 <> IN2)

这也应该有效。

  

我可以写:       A> B   这是什么意思?

如果IF EQ(a, b) THEN // Do something END_IF 大于A,则此表达式将返回B,否则返回TRUE