DOP-110 проверка нескольких условий одной командой
DOP-110 проверка нескольких условий одной командой
День добрый, как можно сделать проверку на выполнение нескольких условий одновременно?
Попытки добавить даже второе условие оператору IF неизменно заканчивались сообщением об ошибке.
Вариант гнать пачку переменных в контроллер, а результат возвращать в панель привлекательным не кажется.
Попытки добавить даже второе условие оператору IF неизменно заканчивались сообщением об ошибке.
Вариант гнать пачку переменных в контроллер, а результат возвращать в панель привлекательным не кажется.
Re: DOP-110 проверка нескольких условий одной командой
Как вариант.
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
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
Re: DOP-110 проверка нескольких условий одной командой
Не, мне нужно что то на подобие
IF (a < b) && (c < d)
На самом деле нужна более сложная конструкция, но её можно свести к нескольким проверкам на равенство и неравенство последовательно.
IF (a < b) && (c < d)
На самом деле нужна более сложная конструкция, но её можно свести к нескольким проверкам на равенство и неравенство последовательно.
Re: DOP-110 проверка нескольких условий одной командой
IF $1 > $2
IF $3 < $4
$5 = 6
GOTO LABEL 1
ENDIF
ENDIF
$5 = 7
END
LABEL 1
END
Принцип тот же.
Только учтите, что с длинными Screen cycle macro и/или Clock macro панель начнет ощутимо тупить.
"Логику" лучше оставить для ПЛК.
Re: DOP-110 проверка нескольких условий одной командой
Спасибо. Я, похоже, не понял как работает ваш первый пример.
Присваивание $4 = 6 выполнится, только если все три условия IF выполнятся?
На подтормаживание панели я обратил внимание. Тут есть над чем подумать в плане меньшего зла.
Либо подтормаживать панель, либо вносить доп. задержку в контроллер из за большего числа переменных, гуляющих по интерфейсу.
Присваивание $4 = 6 выполнится, только если все три условия IF выполнятся?
На подтормаживание панели я обратил внимание. Тут есть над чем подумать в плане меньшего зла.
Либо подтормаживать панель, либо вносить доп. задержку в контроллер из за большего числа переменных, гуляющих по интерфейсу.
Re: DOP-110 проверка нескольких условий одной командой
Нет. $4 = 6 выполнится , если выполнится любое из 3-х условий IF.
GOTO Label 1 работает, как команда CJ в скане. То есть, без выполнения команд до метки Label 1.
Панель оператора будет читать/писать данные с ПЛК, даже тогда, когда он в состоянии STOP.
Re: DOP-110 проверка нескольких условий одной командой
Значит понял правильно. Не, такое не подходит.
Чтобы не ходить долго вокруг да около, суть проблемы такова:
Есть 12 нагревателей, для которых задаются с панели уставки температуры. Эти уставки передаются в контроллер
и он внутри себя старается поддерживать температуру по своему внутреннему алгоритму.
Но есть для каждого нагревателя ещё два значения. Некий минимум и максимум. Они задаются оператором и в пределе могут быть сколько угодно отстоящими от основной уставки. Ну к примеру уставка 100, минимум 10, а максимум 150. А контроллер держит +-1.
Ну как то так.
Суть этих порогов в том, что если по каким то причинам реальная температура выйдет за пределы минимума или максимума, контроллер должен "зажечь лампочку". Оператор должен обратить на это внимание и что то сделать.
Например задать более широкие границы
Вот я и думал делать такую проверку в панели, а контроллеру отправлять результат в виде битика 0 или 1.
Понятно, что работа по интерфейсу идёт все время. Но из документации я не совсем понял, интерфейс это задача, выполняющаяся параллельно с основным циклом или последовательно. Если параллельно, то проблем нет. А если последовательно, то передача дополнительных двух десятков регистров несколько замедлит выполнение основной программы. Чего мне бы не хотелось.
Сорри, я начинающий дельтапользователь. Может чего то недопонял или недочитал.
Re: DOP-110 проверка нескольких условий одной командой
Делайте проверку аварийных значений ( Т больше максимума и Т меньше минимума) в контроллере. Там же формируйте сигнал аварии для панели. В панели настройте аварийные сообщения в виде бегущей строки либо всплывающего экрана. Можете даже историю аварий вести. Не изобретайте велосипед. Все придумано до нас.
Re: DOP-110 проверка нескольких условий одной командой
Это всё понятно, но процитирую сам себяpkl писал(а): ↑05 май 2021, 12:07Делайте проверку аварийных значений ( Т больше максимума и Т меньше минимума) в контроллере. Там же формируйте сигнал аварии для панели. В панели настройте аварийные сообщения в виде бегущей строки либо всплывающего экрана. Можете даже историю аварий вести. Не изобретайте велосипед. Все придумано до нас.
интерфейс это задача, выполняющаяся параллельно с основным циклом или последовательно. Если параллельно, то проблем нет. А если последовательно, то передача дополнительных двух десятков регистров несколько замедлит выполнение основной программы. Чего мне бы не хотелось.
Суть изобретения велосипеда в последнем предложении.
Re: DOP-110 проверка нескольких условий одной командой
Панель читает/пишет регистры, триггеры ПЛК практически парарельно/асинхронно с выполнением скана на ПЛК.
Вам правильно советуют использовать в Dopsot. Alarm setup.