Определите несколько переменных в условии в ST
В настоящее время я программирую / моделирую небольшой завод в CODESYS. У меня есть несколько выходов (которые соответствуют двигателям), которые мне нужно протестировать несколько раз, поэтому я хочу создать условие, которое включает этот тест, поэтому мне не нужно писать полное условие. Например, у меня есть условие, которое проверяет, если
A= ИСТИНА И B= ИСТИНА И C= ИСТИНА И D= ИСТИНА
Могу ли я создать условие, подобное "проверять двигатель", чтобы использовать его каждый раз?
Спасибо
1 ответ
Есть много способов сделать это (если я вас правильно понял).
Вот два способа, например:
1. Создайте переменную, которая имеет результат условия, и используйте переменную. Вы должны назначить переменную в начале, а затем вы можете использовать переменную вместо этого длинного кода.
VAR
EnginesOK : BOOL;
END_VAR
//Check engines
EnginesOK := (A = TRUE AND B = TRUE AND C = TRUE AND D = TRUE);
//.. Later ..
IF EnginesOK THEN
//Do something
END_IF
2. Создайте функцию, например F_VerifyEngines
который содержит проверки и возвращает состояние как BOOL
, Примечание. В этом примере A,B,C и D должны быть глобальными переменными. Вы также можете передать их в качестве параметров для функции.
FUNCTION F_VerifyEngines : BOOL
VAR_INPUT
//Add A,B,C,D here if needed
END_VAR
VAR
END_VAR
//Return the result
F_VerifyEngines := (A = TRUE AND B = TRUE AND C = TRUE AND D = TRUE);
Тогда вы можете использовать функцию в коде:
IF F_VerifyEngines() THEN
//Do something
END_IF
Второй способ, вероятно, тот, о котором вы думали.
Кстати, писать не нужно A = TRUE AND B = TRUE AND C = TRUE AND D = TRUE
по-моему, понятнее читать при использовании A AND B AND C AND D
вместо.