This is topic ФУ "Посылка значения в канал" in forum Мониторы Реального Времени / Real Time Monitors at Форум TRACE MODE: техническая поддержка.


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

Posted by Mischa (Участник № / Member № 781) on :
 
В АРМе созданы дискретные каналы ручного управления арматурой. Управление битами каналов осуществляется посылкой значения в канал "прямая" с восстановлением.
Бывает "залипание" команды(после снятия воздействия остается "1" в битах канала);
Самопроизвольное присвоение "1" битам каналов(самопроизвольная подача команд управления арматурой). "1" снимается при записи в бит канала "0" вручную.
В чем может быть проблема?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Посылка на кнопке или на ГЭ?
 
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
 
Если цикл "Нажатие-отпускание кнопки" укладывается в цикл пересчета базы каналов, то залипать обязательно будет. Нажимайте медленно [Улыбка / Smile]
 
Posted by Mischa (Участник № / Member № 781) on :
 
Посылка организована на пороговом цветовом индикаторе(отображение состояния и управление).
Цикл пересчета базы каналов - 500мс.
Разве нажатие-отпускание кнопки должно зависеть от цикла пересчета базы каналов?
А почему происходит сбой(самопроизвольное запись "1" в биты каналов управления) в процессе работы МРВ и отсутствия ручного воздействия?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) Это не от цикла пересчета зависит, а от настроек ОС. Дело в том, что есть три типа событий: нажатие, отжатие и клик. Так вот клик - это нажатие+отжатие за определенное время, настраивается оно в настройках чувствительности мыши в ОС Windows, поэтому если будете быстро нажимать и отжимать, то система будет интерпретировать это не как два события, а как одно - "клик".
2) Причину самопроизвольных 1 в битах ищите либо в алгоритмах, которые ссылаются на этот канал, либо в сетевых послыках, графический интерфейс ну никак не способен самопроизвольно значения в каналы послыать без каких-либо действий оператора.
 
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
 
Прошу прощения за ошибку.
Не нашел такой настройки в системе. Там только скорость двойного клика. [Недоумение / Confused]

Я считаю, что ФО с флажком "Восстанавливать значение" должна интерпретировать клик так же как и пару нажатие-отжатие. [clever / умный]

Я никогда не пользуюсь этой функцией, как потенциально опасной, хоть и приходится заметно усложнять алгоритм.
 
Posted by Mischa (Участник № / Member № 781) on :
 
От цикла пересчета базы каналов залипание ФО зависит(проверял), однако проблемы не решает.
Настройка у мыши скорости двойного клика также мало что дает.
Как все таки решить эту реальную и опасную проблему?
 
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
 
По моему скромному мнению, алгоритм подачи импульсной команды должен отслеживать её прохождение и сам её сбрасывать. Т.е. надо просто записать в канал (или бит) единицу и успокоиться на этом. В этот же канал всунуть FBD, которая его сбросит либо по тайм-ауту, либо по факту его прохождения дальше или исполнения, либо по невозможности того и другого.

Можно использовать потенциальные команды, т.е.хочу, чтоб задвижка была открыта - устанавливаю 1, хочу, чтоб закрыта - 0. (Ну это упрощённо). Очень удобно при этом использовать для посылки единицы в бит или канал функцию XOR с 0х1 (каждое нажатие инвертирует).

Но мнение Адастры мне тоже интересно.
 
Posted by Mischa (Участник № / Member № 781) on :
 
Включать и отключать один и тот же канал(бит канала) от разных источников не получается, если команды висящие.
Если привязать к каналу FBD-программу, она жестко пишет в него либо "0", либо "1" и изменить значение канала от ФО невозможно.
Как можно автоматически сбрасывать висящую команду от ФО?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если у одного приемника есть несколько источников данных, они должны обрабатываться программно и выход этого алгоритм обязательно должен быть один, иначе получается неопределенность в управлении, а от нее и все проблемы.
Относительно восстановления значения - в ОС Windows есть еще одна неприятная особенность в обработчике событий - если удерживая кнопку мыши нажатой, убрать курсор с элемента, то действие будет отменено и функция по отжатию выполнена не будет, а соответственно по нажатию уже будет отработана. Поэтому, если ситуация с "залипанием" значения критична для Вас, то как уже упомянул Станислав Крамаренко: лучшее решение - программное.
 
Posted by Mischa (Участник № / Member № 781) on :
 
А как вообще стандартно реализуется управление запорной арматурой при смешанном управлении(ручном и от программ-пошаговых, логических).В ситуации, когда необходимо повторно подать команду в том же направлении прийдется производить два действия:сначала команду вручную снять, потом снова подать.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Зачем? Для выдачи повторных команд по внешним интерфейсам, можно использовать функцию принудительной отработки Output-каналов. А так - обычно реализуется алгоритм, который подразумевает два режима работы: ручное управление и автоматическое. И в автоматическом режиме нельзя управлять оборудованием вручную до тех пор, пока не переведешь алгоритм в ручной режим. Если же необходимо одновременное смешанное управление - все равно логика алгоритма должна это учитывать и принимать команды ручного управления как корректирующие и согласовать их с текущими алгоритмическими командами, а уж затем выдавать команду на "железо".
 
Posted by Mischa (Участник № / Member № 781) on :
 
Вы меня не поняли.Я имел в виду следующее:
Если подать команду без восстановления на открытие арматуры,она останется висеть в канале(это дальше в алгоритме можно ограничить длительность команды). Далее,по прошествии времени включается программа, которая закрывает эту арматуру.Дальше, если необходимо, вручную открыть эту арматуру(программа может уже и не работать) как это сделать - ведь на ФО(на привязанном к ней канале)висит "1", а это первоисточник. Эту "1" можно сбросить только другой ФО(например на закрытие),но это уже несколько действий,так и запутаться можно.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вам же уже сказали выше, что подобные вещи решаются алгоритмически на уровне программы управления, а не на уровне графических форм - программа должна следить за значениями управляющих каналов и она должна их сбрасывать, а не графический интерфейс оператора.
 
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
 
Пример.
Чтобы послать команду управления Вам надо подать единичный импульс в канал "Open".
Пишете FBD, которая имеет два входа: "Вход" и "Обратная связь" и один выход: "Выход". Внутри RS-триггер, который устанавливается по "Входу" и сбрасывается по "Обратной связи". И "Вход" и "Выход" привязываете к Open.In, а "Обратную связь" к Open.Out.
Теперь в Open.In из графики посылаете 1, которая гарантированно продержится там один цикл пересчета канала, а затем сбросится. Изменяя цикл пересчета канала, можно управлять длительностью импульса.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2