2017-06-12 42 views
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"。有人能帮我吗?错误4024结构化文本编程

回答

1

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

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

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

  • 1号线:一般不要使用:=,但只有前= THEN(可能 取决于编译器,但我对此表示怀疑)
  • 4号线:有太多:=的。这条线和下面的线是否应该分成一些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 
2

免责声明:不知道你使用的是什么PLC或什么错误4024种手段,但如果你使用typcicaly IEC 61131 PLC语言(其中大部分PLC是)我可以在你的代码的格式发表意见。

首先,:=我是一个赋值运算符。 =是比较运算符。因此,在您if statment你会用

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 

不完全知道你正在尝试做的。