Ошибка 4024 структурированного текстового программирования

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", Кто-нибудь может мне помочь?

2 ответа

Отказ от ответственности: Не уверен, какой plc вы используете или что означает ошибка 4024, но я могу прокомментировать формат вашего кода, если вы используете типичный язык IEC 61131 plc (который является большинством plcs).

Во-первых, := я оператор присваивания. = является оператором сравнения. Так в вашем if Устав вы бы использовали

IF IP_emo = FALSE THEN

или альтернативно (в зависимости от того, какой plc вы используете. Обычно все языки IEC 61131 одинаковы)

IF NOT IP_emo THEN

Во-вторых, AND а также OR для сравнения, поэтому вы не можете иметь их с оператором доставки. Вы можете сделать что-то вроде

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

не совсем уверен, что вы пытаетесь сделать.

Вы не упоминаете, какой ПЛК или инструмент вы используете, что означает ошибка 4024 и из какой строки. Это немного затрудняет ответ на ваш вопрос. Кто-то, вероятно, скажет, что этот вопрос может привести к снижению рейтинга в этом отношении.

Меня немного смущает форматирование вашего примера. Пожалуйста, отформатируйте код (это делается автоматически, если вы используете отступ в 4 пробела), и вам будет легче читать и отвечать.

Я сделал попытку форматирования ниже, и у меня есть некоторые комментарии к этому.

  • Строка 1: Обычно вы не будете использовать:=, но только = до ТО (может зависеть от компилятора, но я сомневаюсь в этом)
  • Строка 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
Другие вопросы по тегам