This is topic Программная обработка атрибута 46 (QE) in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000116.html

Posted by ddkel (Участник № / Member № 4120) on :
 
Добрый день! При работе такой программы:
PROGRAM
VAR_INOUT tc : UINT; END_VAR
VAR_INOUT qe : UINT; END_VAR
if (tc) then tc = 0;
if (qe) then qe = 3;
end_if;
end_if;
END_PROGRAM
где к tc привязана ГЭ Кнопка с прямой передачей "1", а к qe привязан атрибут 46 (QE) канала HEX16, атрибут 46 обнуляется без квитирования в ОТ даже при tc = 0. В чем загвоздка?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Перепроверили. Не воспроизвелось.
Пришлите, пожалуйста, проект с пояснениями на hotline@adastra.ru.
 
Posted by ddkel (Участник № / Member № 4120) on :
 
Тестовый проект отправил. Проверил на ТМ607 и ТМ60707. Результаты одинаковы.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Уточнение.
Обнуление атрибута 46 такой программы действительно происходит (без квитирования). Таковы свойства именно этого атрибута. Программа всегда возвращает значение в аргумент OUT. Возврат "1" обнуляет атрибут 46.
Но это никак не сказывается на операции квитирования последней записи в ОТ при последующей передаче tc = 1. Квитирование осуществляется правильно.
Не ясно, зачем передавать сигнал квитирования через программу. Ведь можно напрямую передать его с экрана.
 
Posted by ddkel (Участник № / Member № 4120) on :
 
По-моему "свойство атрибута" здесь не причем; я передаю значение в программу по ссылке, значение в программе не меняется при tc = 0, а при выходе из программы значение атрибута с "особым свойством" изменяется, при этом в каналах с другим типом вызова (Screen) через аргумент типа OUT или INOUT "особое свойство" атрибута не проявляется. Из чего ясно, что это ошибка, а Ваш ответ - отписка. На особые свойства можно списать многое. А зачем использовать квитирование через программу написал в письме с приложенным тестовым проектом.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Особое свойство атрибута 46 проявляется в том, что при подаче в него какого-либо значения он отрабатывает соответствующую функцию. Программа всегда передает какое-то значение в аргумент OUT. А канал CALL.Screen - только при воздействии оператора на управляющий ГЭ.
В этом и разница.
 
Posted by ddkel (Участник № / Member № 4120) on :
 
Теперь понял, согласен что не ошибка, сразу бы так ответили, спасибо. Извиняюсь за "отписку". Попробую через канал вызова программы типа OUTPUT.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Не следует бояться этого "обнуления".
Текст программы можно упростить:
VAR_INOUT tc : UINT; END_VAR
VAR_INOUT qe : UINT; END_VAR
if (tc) then tc = 0;
qe = 3;
end_if;
END_PROGRAM

Квитирование будет выполняться правильно.
 
Posted by ddkel (Участник № / Member № 4120) on :
 
Не в этом дело, как я написал в письме, квитирование в ОТ должно происходить не только по нажатию определенной кнопки, на эту кнопку "заведено" через другую программу несколько каналов, поэтому мне надо в программе выяснить по какому каналу произошло изменение и произвести квитирование, плюс еще надо проконтролировать изменения в приборе, и только после этого производить квитирование в ОТ. Да и команды (tc) разные - две кнопки предают в tc. А это тестовый пример, акцентирующий внимание на сути вопроса, без деталей. В общем все довольно путанно, спасибо за помощь.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2