
Сообщение от
pro100nik
Просьба обратить внимание что требуется "Оператор MOVE в owen logic" а не Codesys.
Условно задача:
Есть переменная SetPoint. Необходимо реализовать её запись из трёх разных мест:
1. Значение SetPoint может принимать значение "А" или "Б" при включении/установке дефолтного значения (тут изменение из кода ПЛК fSel на 4 входа с "возвратом" выходного значения на один из входов и переключателем "если не 1/2/3" то "возврат")
2. Значение SetPoint может меняться со SCADA (тут изменение по Модбасу - тут костыль с дополнительным битом актуальности переменной)
3. Значение SetPoint может меняться из поля ввода экрана (тут изменение с экрана - в целом "кто последний тот и папа" пришлось реализовать изменением последовательности операций присвоения)
ПС: не надо писать про "отказ от задачи" и про деньги - это выставляет вас в не очень хорошем свете. За деньги можно и фигню впарить: работает=плати.
ПСПС: "записать старое значение(else GetEquip := 0)" я это понял прекрасно. Но это не работает, если нужно "поймать" момент когда GetEquip == 0
ПСПСПС: задача решена костылями, без которых можно было обойтись при наличии MOVE/MEMSET и т.п.
ПСПСПСПС: в техподдержке ОВЕН признали, что оператора MOVE нет, что создание костылей вместо этой этой операции создаёт дополнительные накладные расходы процессорного времени. но не могут помочь с "условной" записью в переменную (переменная будет обновляться в каждом цикле программы тем или иным значением если она помещена на выход какого-либо блока).
была конечно надежда, что создан профессиональный функциональный блок "обновить переменную" "значением на входе блока" только если активен "вход EN", но вижу, что сообществу это не интересно, а интересно раскритиковать того, кто реально видит необходимость(смысл) в этом.