Ошибка 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