ktecasu
Junior Member / Новичок
Участник № / Member № 2878
отправлено / posted
Здравствуйте!!! Управляю исполнительным механизмом при помощи контроллера WinPac – 8841, MicroTM 6.07.7,TM IDE 6.07.7. При нажатии на кнопку (на экране оператора) ИМ должен включаться при отпускании кнопки останавливаться. Реализую данную задачу при помощи ГЭ Кнопка. При событии MousePress тип передачи XOR в канал управление дискретным модулем записывается то 1 то 0 в зависимости от состояния канала. При событии кнопки MouseReleas тип передачи Прямая записываю 0. Проблема заключается в следующем , при событии кнопки MouseReleas не всегда в канал передаётся ноль и как следствие ИМ запускается и не останавливается. Как гарантированно передавать значение при событии MouseReleas в канал. Пробовал сделать так, создал канал в узле RTM не привязанный к каналам контроллера. С другой кнопки передавал значение в созданный канал при нажатии 1 при отжатии кнопки 0. После запуска проекта нажимал на кнопку и наблюдал за состоянием канала в окне Просмотра компонентов, не всегда при отжатии кнопки канал принимал 0, а так и оставался со значением 1. Подскажите как правильно реализовать данную задачу!!!!
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В цепочке "Кнопка - передача в канал - передача в контроллер - передача на исполнительный орган - исполнение команды" присутствует несколько асинхронных процедур со своими приоритетами, очередями и циклами отработки. Поэтому здесь невозможно синхронизировать управление по двум фронтам кнопки без проверки реального прохождения сигнала до исполнительного органа.
Строго эту задачу можно реализовать только в том случае, если команда выключения будет подаваться только после получения обратной связи о том, что команда включения уже реально выполнена.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ktecasu
Junior Member / Новичок
Участник № / Member № 2878
отправлено / posted
"Пробовал сделать так, создал канал в узле RTM не привязанный к каналам контроллера. С другой кнопки передавал значение в созданный канал при нажатии 1 при отжатии кнопки 0. После запуска проекта нажимал на кнопку и наблюдал за состоянием канала в окне Просмотра компонентов, не всегда при отжатии кнопки канал принимал 0, а так и оставался со значением 1." Цепочка "Кнопка - передача в канал" уже на этом этапе нет гарантированной передачи значения в канал!!!!Что даст обратная связь о том, что команда включения уже реально выполнена. Дайте пожалуйста подробные рекомендации решения данной задачи !!!
[ 12.07.2011, 11:26: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ktecasu
Junior Member / Новичок
Участник № / Member № 2878
отправлено / posted
От времени нажатия не зависит. Отправил тестовый проект на forum@adastra.ru тема - WinPac-button .
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ktecasu
Junior Member / Новичок
Участник № / Member № 2878
отправлено / posted
Отправил еще один вариант проекта на forum@adastra.ru тема - WinPac-button - 2.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Получил Ваш проект с файлом WinPac.~prj. Проверил на двух ПК под ОС Windows 7 и Windows XP (по 30-40 раз действий кнопкой Button с разной длительностью нажатия). Не удалось ни одного раза воспроизвести ситуацию, в которой бы в канале Demo_button после отпускания кнопки осталась "1". При коротком нажатии кнопки иногда не проходило значение "1", что вполне объяснимо.
отправлено / posted
Передача "0" в контроллер будет надежной, если будут соблюдены указанные выше условия по синхронизации и контролю прохождения команд.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ktecasu
Junior Member / Новичок
Участник № / Member № 2878
отправлено / posted
В проекте WinPac-button - 2 контроль прохождения команд осуществлен, тем не менее как "1" так и "0" проходят не всегда.Подскажите пожалуйста на примере проекта WinPac-button - 2 какие действия необходимо предпринять для гарантировонного прохождения команд. Или это не возможно реализовать? "При коротком нажатии кнопки иногда не проходило значение "1", что вполне объяснимо." Получается что и значение "0" не всегда может проходить.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В проекте WinPac-button - 2 за счет принятого Вами способа "контроля прохождения команд" вероятность непрохождения значения "0" при коротких нажатиях кнопки существенно повысилась.
Имелось в виду, что в RTM будет осуществлен программный контроль реальных состояний управляемых переменных непосредственно в контроллере. Сигнал с экрана должен передаваться в программу, которая должна удерживать его до тех пор, пока не получит подтверждение из контроллера, что переданный сигнал прошел.
Поскольку в топике идет речь об организации связи с узлом EmbeddedRTM, топик перенесен в соответствующий раздел.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |