2017-06-12 53 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 

不完全知道你正在嘗試做的。