Показать сообщение отдельно
Старый 13.08.2014, 10:21   #1
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Помогите с упорядочиванием опроса по RS-485

(вычеркнул написанное было подробное описание задачи - оставил только суть).

1) имеется туева хуча УВВ, подключенных к smh2G по шине RS-485 (их много, даже слишком много: при автоматическом опросе всех - время реакции системы становится больше 6 секунд - при рекомендованных НТД двух секундах).
2) по каждому УВВ программа отрабатывает следующий алгоритм "задание состояния выходов - ожидание установки выходов в самом УВВ - чтение состояния выходов и входов", при этом с контроллера вычитывается реальное состояние выходов (т.е. с заданным оно совпадет только тогда, когда все выходы установятся соответсвующим образом - это занимает до 200-300 мс. А даные со входов становятся достоверными только тогда, когда выходы установились в заданное состояние).
3) В карте памяти, соответственно, имеются три строчки: задание выходов, чтение выходов, чтение входов (запись/чтение выходов разделены на отдельные операции)

Что хочется получить:
а) сперва во всю туеву хучу УВВ только ЗАПИСАТЬ значения выходов (1 запрос - экономим время занятости шины, не формируя запросы чтения)
а') за время записи пройдет, думаю, с полсекунды - т.е. все выходы уже успеют установиться...
б) затем СЧИТАТЬ со всех УВВ состояние выходов и входов (1-2 запроса, в зависимости от того, как расположены их регистры).
б') скорее всего, корректными будут уже все считанные данные. Если какие-то некорректны - цикл ЧТЕНИЯ (и только он!) повторяется еще раз.
в) сравнение считанного состояния выходов с заданным, и, при их совпадении, "защелкивание" выходных данных для дальнейшей обработки.
естественно, после этого цикл повторяется.

Вопрос, собственно, такой:
как заставить выполняться отдельно сперва операции записи (Rout) для всех устройств, и, только после того - операции чтения (Rin) также для всех устройств.
Технически такое вообще возможно? И если да - то как?
ailcat вне форума   Ответить с цитированием