|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме | Опции просмотра |
12.12.2018, 16:59 | #1 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Циклический опрос по RS485 одинаковых устройств
Не нашел в темах ранее, прошу помочь правильно сделать.
Есть задача опрашивать пикселем 9 одинаковых приборов (амперметры с DI), цикл не особо критичен, но чем меньше - тем лучше. Одновременно пиксель опрашивает несколько УСО с минимально возможным циклом. Идеальный цикл опроса должен выглядеть примерно так: Код:
УСО1 - УСО2 - УСО3 Прибор1 УСО1 - УСО2 - УСО3 Прибор2 УСО1 - УСО2 - УСО3 Прибор3 и т.д. Накидал по-быстрому схемку (вход "READ" предназначен для активации вычитки следующего входа - дергается таймером, скажем, каждые 2 секунды)... И тут меня настиг ступор: 1) а корректно ли я использовал единственный сигнал для синхронизации всей схемы (он оформлен в именованную связь)? 2) как бы заставить схемку переходить к вычитке следующего прибора, если запрашиваемый не отвечает? |
12.12.2018, 18:16 | #2 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили:
161 раз(а) в 153 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
я бы это сделал битовыми масками. маски положил бы в мультиплексор и гонял бы его по кругу.
|
13.12.2018, 03:05 | #3 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
Если речь о порядке опроса - так адреса приборов не подряд (живое устройство, 6 приборов. Адреса - 101,202, 107,208, 113,214), поэтому мультиплексор в любом случае есть - он адреса подставляет. Если же речь идет об "инициации вычитки" - тут мне сложно сказать. Вроде, элементы без проблем размещаются на поляне так, что нужная последовательность сохраняется (как только считались все переменные слейва - происходит запись соответствующего набора регистров, в следующем тике - инкремент счетчика, смена входа мультиплексора адреса, запись обновленного адреса в SlaveX, ожидание тика на новый цикл чтения). Может, имеет где добавить элементы Raise (или и так будет работать?) - но причин заморачиваться с "бегущей единицей", размазывая простое действие на 5 тиков - вот в упор не вижу! Проблема, которая режет глаз - состоит в том, что прибор может не ответить (ну фиг знает... завис с перепугу, например). И тогда на выходах rdy никогда не появятся единицы и "именованная связь" будет висеть в вечном нуле - т.е. переход к вычитке следующего прибора не произойдет до перезапуска Пикселя... P.S. Решение сейчас хочется сделать качественно, ибо на горизонте маячит ВРУ с 42 приборами (там, правда, можно прикрутить SMH4 и забыть об ограниченном ОЗУ пикселя - но, тем не менее)... |
13.12.2018, 11:05 | #4 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
Этот вариант равнозначен с вашим, но позволяет не задумываться о том, отвечает устройство или нет. Заодно избавляет от мультиплексирования данных - на переменных всегда висят последние реально считанные данные с конкретных устройств. При таком подходе для 42 устройств Пикселя будет уже впритык, но SMH4 расщёлкает эту задачу не напрягаясь. Вам словесного описания достаточно или нарисовать пояснение? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
13.12.2018, 20:12 | #5 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили:
161 раз(а) в 153 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
Добавлено через 2 минуты |
14.12.2018, 13:14 | #6 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
Насколько я помню, у пикселя ОЗУ всего 256 байт, при этом данные приборы - далеко не единственное, что обрабатывается (там еще 2 навороченных приборчика есть - 24 real и 2 long с каждого читается и частично используется в вычислениях), плюс две ГГУ (12 real, 4 long, 22 int читается и частично используется в вычислениях, 2 real и 3 int записываются по необходимости). В идеале надо бы, чтобы все вычитанные и несколько рассчитанных величин транслировались на верхний уровень через Modbus/TCP (и если с изначально планировавшимся SMH2 это не было проблемой, то с Пикселем, имеющим очень мало ОЗУ - я как-то опасаюсь: не пришлось бы сокращать число транслируемых регистров Modbus) Так что уход от мультиплексирования не дает ровно ничего, скорее даже немного усложнит задачу (потому что мультиплексировать придется не 1 адрес, а 4 вычитанные переменных). Добавлено через 5 минут Вопрос лишь в том, как определить, что прибор не вычитался. Ступор-с... |
14.12.2018, 13:57 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.12.2018, 10:29 | #8 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
(а нафига счетчик? можно же просто инкрементировать сигналом READ имеющийся счетчик, а оставшийся в нуле сигнал and(4*rdy) использовать для установки флага "данные устарели"!) Потянулся за пеплом второй раз... |
17.12.2018, 11:11 | #9 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.12.2018, 17:16 | #10 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: Циклический опрос по RS485 одинаковых устройств
Подсчет ошибочек имеет хоть какой-то смысл исключительно на этапе наладки. В процессе работы 1 ошибка или 100 - не имеет значения, "байпасс" активируется в момент установки флага "данные устарели". Ну и - псевдосинхронный вариант дает больше информации для алгоритма (даже если часть приборов не вычитается), нежели полностью асинхронный (когда время реакции зависит от "вычитываемости" всех приборов). |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Опрос устройств через adam 4561 | white | Связь с внешним миром | 12 | 12.12.2018 22:10 |
Правильная разводка сетей RS-485 | Arsie | Библиотека | 30 | 28.02.2014 13:52 |
Использование USB-хаба | Varnak | Вопросы о SMH-2G(i) | 8 | 01.03.2013 12:20 |