Показать сообщение отдельно
Старый 02.08.2010, 15:25   #10
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Быстрые входы

Цитата:
Сообщение от ZPavel
Хорошо, попытаюсь объяснить.
Например, с центрального мастер контроллера выставлено для частоника 50 гц и соответственно приходит уставка по сети, число 50 Int. На месте подошел человек и добавил на слэйве кнопкой больше до 60 Гц. Через некоторое время с центрального решили вернуть опять на 50 Гц и соответственно отправили число по сети 50 Int.
Как мне засечь, что центральный контроллер опять хочет 50 Гц, если у меня на входном регистре по прежнему висит старое 50 Гц. Ну, перезаписалось оно опять на 50 Гц, как мне это увидеть? Вот я и говорю, нет признака пришедшего байта.

Что бы это обойти, я должен, отслеживать центральным мастеров уставку с клавиатуры слэйва, а также, в программе слэйва, следить за изменением значения сетевой уставки. Мастер должен увидеть местную уставку слэйва в 60 Гц, но чтобы слейв понял, что уставка меняется через сеть, отправить ему, например 51, а потом 50. Получается, только по изменению сетевой уставки слэйв сможет понять, что нужно принять ее на выполнение.
Описанный вами сценарий: диспетчер следит за объектом и изменяет его текущее состояние - абсолютно верен. Проблему вижу лишь в том, как вы его интерпретируете.

Объясню. Во всех скада-системах есть понятие "обратная связь" для переменной. Она помогает в простой форме отследить ошибку передачи уставки, выход уставки за разрешённый диапазон и прочее подобное. Таким образом, записав в переменную число "50" скада через некоторое время читает переменную обратной связи (это может быть и эта же переменная) и при расхождении данных выставляет визуальный элемент на своей мнемосхеме в то положение (значение, размер и т.д.), которое соответствует фактическому. Например, "45". Заодно это значение уходит и в уставку, т.к. иначе возникнет коллизия, описываемая вами во второй части сообщения.

Таким образом, человек, задавший руками "30" автоматически вызовет реакцию скады, которая по обратной связи узнает о новой уставке, сместит показания визуального элемента и пропишет в "свою" переменную действующее значение, т.е. "30". И если кто-то со скады будет опять устанавливать "50" или "45", то проблемы это не вызовет.

Если говорить не о скадах, то вы должны знать понятие "строб", оно же "синхросигнал", т.е. вводится служебная переменная "данные обновлены", посредством которой контроллер-"слейв" оповещается об обновлении данных.

.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием