This is topic Заморозить значение на выходе... in forum Языки программирования (IL/FBD) / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Два входа 1й - 1 или 0 управляет пересылкой значений с 2го(вход) на 3й (выход) при 0 - запомнить последнее значение на выходе и удерживать его на момент поступления нуля не смотря на то что на 1м входе.
2й - даные с этого канала пересылаются на выход при наличии "1" на 1ом.
3й - выход один - результат 1го и 2го...
При этом использовать каналы для времменых работ нельзя
P.S. у нас уже 1023 канала!!
Posted by Wizard (Участник № / Member № 109) on :
Данная задача довольно легко реализуется на языке TechnoIL. Уточните пожалуйста фразу("При этом использовать каналы для времменых работ нельзя").
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Также данная задача может быть решена с помощью одной FBD-программы и одного канала (канал может быть даже уже существующим - можно использовать его границы).
Posted by electropribor (Участник № / Member № 122) on :
Можно написать вот такой вот простенький блочок: #DEFINE I0 KEY #DEFINE I1 VALUE #DEFINE I2 TIN #DEFINE Q0 OUT
IF KEY == 1 THEN OUT = VALUE ELSE OUT = TIN TOUT = TIN END_IF Выход замыкаем на третий вход и всё: при 1 на входе KEY вход VALUE копируется на выход, при 0 на входе KEY выход замораживается. В принципе, здесь можно было бы использовать переменную типа E, но вроде эти переменные не поддерживаются в МикроМРВ
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В последнем предложении задача практически решена. Надо только слегка подкорректировать:
#DEFINE I0 KEY #DEFINE I1 VALUE #DEFINE Q0 OUT
IF KEY == 1 THEN OUT = VALUE END_IF
Ту же задачу легко решает FB MOVE. Если на его вход RUN подать инвертированное значение переменной KEY, на первый вход - переменную VALUE, то с первого выхода можно получить "замораживаемое" значение.