DOP-110 проверка нескольких условий одной командой

andyth
Сообщения: 11
Зарегистрирован: 19 апр 2021, 19:32

DOP-110 проверка нескольких условий одной командой

Сообщение andyth »

День добрый, как можно сделать проверку на выполнение нескольких условий одновременно?
Попытки добавить даже второе условие оператору IF неизменно заканчивались сообщением об ошибке.
Вариант гнать пачку переменных в контроллер, а результат возвращать в панель привлекательным не кажется.

tvent
Сообщения: 894
Зарегистрирован: 11 янв 2011, 17:02

Re: DOP-110 проверка нескольких условий одной командой

Сообщение tvent »

Как вариант.
IF $1 == 0 then goto label 1
IF $2 == 1 then goto label 1
IF $3 == 2 then goto label 1
$4 = 5
end
label 1
$4 = 6
end

andyth
Сообщения: 11
Зарегистрирован: 19 апр 2021, 19:32

Re: DOP-110 проверка нескольких условий одной командой

Сообщение andyth »

Не, мне нужно что то на подобие

IF (a < b) && (c < d)

На самом деле нужна более сложная конструкция, но её можно свести к нескольким проверкам на равенство и неравенство последовательно.

tvent
Сообщения: 894
Зарегистрирован: 11 янв 2011, 17:02

Re: DOP-110 проверка нескольких условий одной командой

Сообщение tvent »

andyth писал(а):
04 май 2021, 23:10
мне нужно что то на подобие
IF (a < b) && (c < d)
IF $1 > $2
IF $3 < $4
$5 = 6
GOTO LABEL 1
ENDIF
ENDIF
$5 = 7
END
LABEL 1
END
Принцип тот же.
Только учтите, что с длинными Screen cycle macro и/или Clock macro панель начнет ощутимо тупить.
"Логику" лучше оставить для ПЛК.

andyth
Сообщения: 11
Зарегистрирован: 19 апр 2021, 19:32

Re: DOP-110 проверка нескольких условий одной командой

Сообщение andyth »

Спасибо. Я, похоже, не понял как работает ваш первый пример.
Присваивание $4 = 6 выполнится, только если все три условия IF выполнятся?

На подтормаживание панели я обратил внимание. Тут есть над чем подумать в плане меньшего зла.
Либо подтормаживать панель, либо вносить доп. задержку в контроллер из за большего числа переменных, гуляющих по интерфейсу.

tvent
Сообщения: 894
Зарегистрирован: 11 янв 2011, 17:02

Re: DOP-110 проверка нескольких условий одной командой

Сообщение tvent »

andyth писал(а):
05 май 2021, 09:16
Присваивание $4 = 6 выполнится, только если все три условия IF выполнятся?
Нет. $4 = 6 выполнится , если выполнится любое из 3-х условий IF.
GOTO Label 1 работает, как команда CJ в скане. То есть, без выполнения команд до метки Label 1.
andyth писал(а):
05 май 2021, 09:16
На подтормаживание панели я обратил внимание. Тут есть над чем подумать в плане меньшего зла.
Либо подтормаживать панель, либо вносить доп. задержку в контроллер из за большего числа переменных, гуляющих по интерфейсу.
Панель оператора будет читать/писать данные с ПЛК, даже тогда, когда он в состоянии STOP.

andyth
Сообщения: 11
Зарегистрирован: 19 апр 2021, 19:32

Re: DOP-110 проверка нескольких условий одной командой

Сообщение andyth »

tvent писал(а):
05 май 2021, 11:14
Нет. $4 = 6 выполнится , если выполнится любое из 3-х условий IF.
Значит понял правильно. Не, такое не подходит.
Чтобы не ходить долго вокруг да около, суть проблемы такова:
Есть 12 нагревателей, для которых задаются с панели уставки температуры. Эти уставки передаются в контроллер
и он внутри себя старается поддерживать температуру по своему внутреннему алгоритму.
Но есть для каждого нагревателя ещё два значения. Некий минимум и максимум. Они задаются оператором и в пределе могут быть сколько угодно отстоящими от основной уставки. Ну к примеру уставка 100, минимум 10, а максимум 150. А контроллер держит +-1.
Ну как то так.
Суть этих порогов в том, что если по каким то причинам реальная температура выйдет за пределы минимума или максимума, контроллер должен "зажечь лампочку". Оператор должен обратить на это внимание и что то сделать.
Например задать более широкие границы :)
Вот я и думал делать такую проверку в панели, а контроллеру отправлять результат в виде битика 0 или 1.

Понятно, что работа по интерфейсу идёт все время. Но из документации я не совсем понял, интерфейс это задача, выполняющаяся параллельно с основным циклом или последовательно. Если параллельно, то проблем нет. А если последовательно, то передача дополнительных двух десятков регистров несколько замедлит выполнение основной программы. Чего мне бы не хотелось.
Сорри, я начинающий дельтапользователь. Может чего то недопонял или недочитал.

pkl
Сообщения: 1185
Зарегистрирован: 23 ноя 2010, 10:08

Re: DOP-110 проверка нескольких условий одной командой

Сообщение pkl »

Делайте проверку аварийных значений ( Т больше максимума и Т меньше минимума) в контроллере. Там же формируйте сигнал аварии для панели. В панели настройте аварийные сообщения в виде бегущей строки либо всплывающего экрана. Можете даже историю аварий вести. Не изобретайте велосипед. Все придумано до нас.

andyth
Сообщения: 11
Зарегистрирован: 19 апр 2021, 19:32

Re: DOP-110 проверка нескольких условий одной командой

Сообщение andyth »

pkl писал(а):
05 май 2021, 12:07
Делайте проверку аварийных значений ( Т больше максимума и Т меньше минимума) в контроллере. Там же формируйте сигнал аварии для панели. В панели настройте аварийные сообщения в виде бегущей строки либо всплывающего экрана. Можете даже историю аварий вести. Не изобретайте велосипед. Все придумано до нас.
Это всё понятно, но процитирую сам себя

интерфейс это задача, выполняющаяся параллельно с основным циклом или последовательно. Если параллельно, то проблем нет. А если последовательно, то передача дополнительных двух десятков регистров несколько замедлит выполнение основной программы. Чего мне бы не хотелось.

Суть изобретения велосипеда в последнем предложении.

tvent
Сообщения: 894
Зарегистрирован: 11 янв 2011, 17:02

Re: DOP-110 проверка нескольких условий одной командой

Сообщение tvent »

andyth писал(а):
05 май 2021, 11:54
Понятно, что работа по интерфейсу идёт все время. Но из документации я не совсем понял, интерфейс это задача, выполняющаяся параллельно с основным циклом или последовательно.
Панель читает/пишет регистры, триггеры ПЛК практически парарельно/асинхронно с выполнением скана на ПЛК.
Вам правильно советуют использовать в Dopsot. Alarm setup.

Ответить