ddkel
Active Forum Member / Активный участник форума
Участник № / Member № 4120
отправлено / posted
Добрый день! При работе такой программы: 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. В чем загвоздка?
Сообщения / Posts 82 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Перепроверили. Не воспроизвелось. Пришлите, пожалуйста, проект с пояснениями на hotline@adastra.ru.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ddkel
Active Forum Member / Активный участник форума
Участник № / Member № 4120
отправлено / posted
Тестовый проект отправил. Проверил на ТМ607 и ТМ60707. Результаты одинаковы.
Сообщения / Posts 82 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Уточнение. Обнуление атрибута 46 такой программы действительно происходит (без квитирования). Таковы свойства именно этого атрибута. Программа всегда возвращает значение в аргумент OUT. Возврат "1" обнуляет атрибут 46. Но это никак не сказывается на операции квитирования последней записи в ОТ при последующей передаче tc = 1. Квитирование осуществляется правильно. Не ясно, зачем передавать сигнал квитирования через программу. Ведь можно напрямую передать его с экрана.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ddkel
Active Forum Member / Активный участник форума
Участник № / Member № 4120
отправлено / posted
По-моему "свойство атрибута" здесь не причем; я передаю значение в программу по ссылке, значение в программе не меняется при tc = 0, а при выходе из программы значение атрибута с "особым свойством" изменяется, при этом в каналах с другим типом вызова (Screen) через аргумент типа OUT или INOUT "особое свойство" атрибута не проявляется. Из чего ясно, что это ошибка, а Ваш ответ - отписка. На особые свойства можно списать многое. А зачем использовать квитирование через программу написал в письме с приложенным тестовым проектом.
Сообщения / Posts 82 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Особое свойство атрибута 46 проявляется в том, что при подаче в него какого-либо значения он отрабатывает соответствующую функцию. Программа всегда передает какое-то значение в аргумент OUT. А канал CALL.Screen - только при воздействии оператора на управляющий ГЭ. В этом и разница.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ddkel
Active Forum Member / Активный участник форума
Участник № / Member № 4120
отправлено / posted
Теперь понял, согласен что не ошибка, сразу бы так ответили, спасибо. Извиняюсь за "отписку". Попробую через канал вызова программы типа OUTPUT.
Сообщения / Posts 82 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Не следует бояться этого "обнуления". Текст программы можно упростить: VAR_INOUT tc : UINT; END_VAR VAR_INOUT qe : UINT; END_VAR if (tc) then tc = 0; qe = 3; end_if; END_PROGRAM
ddkel
Active Forum Member / Активный участник форума
Участник № / Member № 4120
отправлено / posted
Не в этом дело, как я написал в письме, квитирование в ОТ должно происходить не только по нажатию определенной кнопки, на эту кнопку "заведено" через другую программу несколько каналов, поэтому мне надо в программе выяснить по какому каналу произошло изменение и произвести квитирование, плюс еще надо проконтролировать изменения в приборе, и только после этого производить квитирование в ОТ. Да и команды (tc) разные - две кнопки предают в tc. А это тестовый пример, акцентирующий внимание на сути вопроса, без деталей. В общем все довольно путанно, спасибо за помощь.
Сообщения / Posts 82 | Из / From: Россия
| IP / IP: IP адрес / IP address |