0
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

我不确定为什么我在此代码上收到错误 4024,需要a := before "THEN". 有人能帮我吗?

4

2 回答 2

2

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

首先,:=i 是赋值运算符。是=比较运算符。所以在你的if陈述中你会使用

IF IP_emo = FALSE THEN

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

IF NOT IP_emo THEN

其次,ANDandOR用于比较,因此您不能将它们与 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

不完全确定您要做什么。

于 2017-06-12T13:10:56.830 回答
1

您没有提及您正在使用什么 PLC 或工具,错误 4024 是什么意思以及它来自哪一行。这使得回答你的问题有点困难。有些人可能会说这个问题有资格对该帐户进行贬低。

我对您示例的格式感到有些困惑。请格式化为代码(自动完成,如果您使用 4 个空格缩进),它会更容易阅读和回答。

我尝试在下面进行格式化,并对此提出一些意见。

  • 第 1 行:通常你不会使用 := 而只是在 THEN 之前使用 = (可能取决于编译器,但我对此表示怀疑)
  • 第 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
于 2017-06-12T06:11:58.173 回答