Тема / Topic: передача значений канала в контроллер по OPC
serg5raz
Junior Member / Новичок
Участник № / Member № 4267
отправлено / posted
ДАНО: на экране 2 кнопки и 1 аргумент кнопка SET передает аргументу значение 1 кнопка RESET передает аргументу значение 0 с аргументом связан канал, к каналу привязан источник (бит памяти контроллера через OPC сервер, направление - выход) и все замечательно работает: при нажатии SET бит памяти устанавливается в 1, при RESET - сбрасывается в 0, но...
ПРОБЛЕМА все работает только если нажимать на кнопки последовательно не торопясь. Если же, например, RESET нажать очень быстро после SET (интервал - доля секунда, как только можно щелкнуть мышкой), то бит памяти контроллера не сбрасывается, но канал при этом (смотрю в разделе компоненты профайлера) показывает значение 0, как и должно быть
ВОПРОС откуда берется зависимость от скорости переключения? источник OPC привязан же только к каналу, а канал-то сбросился в 0, значит и бит должен установиться в 0. Приходиться, чтобы сбросить-таки бит, снова жать SET, а потом не так быстро RESET Повторяю - некорректная работа проявляется только при высокой скорости переключения
отправлено / posted
Такая ситуация возникает из-за асинхронности потоков.
Если упрощенно, то происходит все примерно так:
Вы посылаете 1. 1 отсылается в контроллер. Посылаете 0. Приходит подтверждение о приеме 1 и в канале сбрасывается битик отправки.
Т.е. 0 из канала не успевает отправиться в контроллер, т.к. его отправку сбрасывает подтверждение о установке 1.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Svasl
Forum Member / Участник форума
Участник № / Member № 4229
отправлено / posted
Задача - есть кнопка, при нажатии на которую во входное значение (2,In) канала float-output связанным с OPC-OUT посылается 1. Первый раз это отрабатывается,на контроллере соответствующая переменная меняет значение на true и после обработки на false. Повторные нажатия уже не влияют на значение в контроллере. Понятно, что необходимо, чтобы поменялось значение в канале, делаю отправку в канал последовательности 1-0, но из-за вышеописанной ситуции результат тот же. Что и куда посылать, чтобы была возможность повторной отправки и изменения значения на контроллере, т.е на нажатие кнопки первое - прямая передача 1 во входное значение, а вот что вторым пунктом в свойствах кнопки, отправка нуля не влияет.
Сообщения / Posts 42 | Из / From: Россия
| IP / IP: IP адрес / IP address |