错误4024结构化文本编程

时间:2017-06-12 01:32:43

标签: plc structured-text

IF  IP_emo:=FALSE THEN
    State:= OFF_Mode;
ELSE
    State :=OFF AND  IP_emo:=TRUE AND start_Btn:=TRUE OR start_Btn:=False;
    State:= Monitor_Mode;
END_IF

我不知道为什么我在这个需要a := before "THEN"的代码上收到错误4024。有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

免责声明:不确定您使用的是什么plc或错误4024的含义,但如果您使用典型的IEC 61131 plc语言(大多数plc都是),我可以评论您的代码格式。

首先,:=是一个赋值运算符。 =是比较运算符。因此,在您的if声明中,您将使用

IF IP_emo = FALSE THEN

或者(取决于您使用的是哪个plc。通常所有IEC 61131语言都是相同的)

IF NOT IP_emo THEN

其次,ANDOR用于比较,因此您无法使用assingment运算符。你可以做点什么

ELSE
   State :=OFF;
   IP_emo:=TRUE; 
   start_Btn:=TRUE; 
   start_Btn:=FALSE;
   State:= Monitor_Mode;
END_IF

或者

 ELSE
   State :=OFF;
      IF IP_emo=TRUE AND start_Btn=TRUE AND (start_Btn=TRUE OR start_Btn=FALSE) THEN
          State:= Monitor_Mode;
      END_IF
END_IF

不完全确定你要做什么。

答案 1 :(得分:1)

您没有提及您正在使用的PLC或工具,错误4024的含义以及它来自哪条线。这使得回答你的问题变得有点困难。有些人可能会说这个问题有资格在该帐户上进行下降。

我对你的例子的格式有点困惑。请格式化为代码(如果你使用4个空格缩进,则自动完成),它将更容易阅读和回答。

我尝试了下面的格式化,并对此有一些评论。

  • 第1行:通常你不会使用:=但仅在那之前使用=(可能 取决于编译器,但我对此表示怀疑)
  • 第4行:太多了:=' s。该行和以下内容是否应该分成一些ELSIF或其他嵌套IF?

我希望有所帮助。 : - )

IF IP_emo:=FALSE THEN
  State:= OFF_Mode;
ELSE
  State :=OFF AND IP_emo:=TRUE AND start_Btn:=TRUE OR start_Btn:=FALSE;
  State:= Monitor_Mode;
END_IF