Показать сообщение отдельно
Старый 13.12.2018, 03:05   #3
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Циклический опрос по RS485 одинаковых устройств

Цитата:
Сообщение от LordN Посмотреть сообщение
я бы это сделал битовыми масками. маски положил бы в мультиплексор и гонял бы его по кругу.
Не совсем вас понял.
Если речь о порядке опроса - так адреса приборов не подряд (живое устройство, 6 приборов. Адреса - 101,202, 107,208, 113,214), поэтому мультиплексор в любом случае есть - он адреса подставляет.
Если же речь идет об "инициации вычитки" - тут мне сложно сказать. Вроде, элементы без проблем размещаются на поляне так, что нужная последовательность сохраняется (как только считались все переменные слейва - происходит запись соответствующего набора регистров, в следующем тике - инкремент счетчика, смена входа мультиплексора адреса, запись обновленного адреса в SlaveX, ожидание тика на новый цикл чтения). Может, имеет где добавить элементы Raise (или и так будет работать?) - но причин заморачиваться с "бегущей единицей", размазывая простое действие на 5 тиков - вот в упор не вижу!
Проблема, которая режет глаз - состоит в том, что прибор может не ответить (ну фиг знает... завис с перепугу, например). И тогда на выходах rdy никогда не появятся единицы и "именованная связь" будет висеть в вечном нуле - т.е. переход к вычитке следующего прибора не произойдет до перезапуска Пикселя...

P.S.
Решение сейчас хочется сделать качественно, ибо на горизонте маячит ВРУ с 42 приборами (там, правда, можно прикрутить SMH4 и забыть об ограниченном ОЗУ пикселя - но, тем не менее)...
ailcat вне форума   Ответить с цитированием