PDA

Просмотр полной версии : Как увеличить скорость опроса большого количества модулей МВ110-8АС



bladerunner
27.01.2016, 09:46
Добрый день!

Есть задача собирать данные от примерно 130 датчиков. Для этого собрано (пока в виде тестового стенда) следующая конфигурация: 16 МВ110-8АС, ПЛК110, АС4. Все устройства стоят вместе и объединены по RS485. Никаких терминаторов нет (они нужны?). У всех МВ110 настроен свой адрес от 1 до 16. Скорость связи 115200. Все входы 0-10В. Подключен только один датчик, остальные показываются как обрыв сети (что правильно). В ПЛК сделана визуализация.

Проблема следующая: время между срабатыванием датчика и отображением в визуалзиации около 10 секунд. Пока был только модуль ввода все работало прекрасно и быстро. В конфигураторе МВ110 опрос входов тоже осуществляется не быстро (визуально) и проскакивает множество ошибок.

Подскажите, пожалуйста, как решить проблему. Нужно сократить время до <1 сек.

Большое спасибо!

Вольд
27.01.2016, 10:27
Черта лысого, а не < 1 секунды тут можно будет получить. ;)

приборист
27.01.2016, 10:51
Если прям очень надо, я бы делал так - максимально разнести все по интерфейсам (+ преобразователи rs232<->rs485)
Опрашивать через Modbus.lib.
Отклик модулей в 0, скорость 38400 и тестить :)

bladerunner
27.01.2016, 11:49
Если прям очень надо, я бы делал так - максимально разнести все по интерфейсам (+ преобразователи rs232<->rs485)
Опрашивать через Modbus.lib.
Отклик модулей в 0, скорость 38400 и тестить :)

Спасибо большое. У ПЛК 2 интерфейса RS-485, RS-232 и RS-232-DEBUG. Разбить все на 4 подсети и подключить к ПЛК по разным интерфейсам? Я правильно понимаю? А сколько одновременно устройств может работать на одной шине? Чтобы быстро было?

приборист
27.01.2016, 11:58
Спасибо большое. У ПЛК 2 интерфейса RS-485, RS-232 и RS-232-DEBUG. Разбить все на 4 подсети и подключить к ПЛК по разным интерфейсам? Я правильно понимаю? А сколько одновременно устройств может работать на одной шине? Чтобы быстро было?
Одновременно можно и 32 подключить.
Вопрос в отклике.
Для начала попробуйте по 8 на каждый RS485 через библиотеки опросить. Может устроит скорость.
Но опрашивать в любом случае через библиотеки, конфигуратор тут не поможет.

bladerunner
27.01.2016, 12:13
Одновременно можно и 32 подключить.
Вопрос в отклике.
Для начала попробуйте по 8 на каждый RS485 через библиотеки опросить. Может устроит скорость.
Но опрашивать в любом случае через библиотеки, конфигуратор тут не поможет.

Ок. Попробую. Еще один вопрос в Конфигураторе есть значение "задержка ответа по rs-485", которое установлено у всех в 45 мс. Это не влияет? Тут что должно стоять?

приборист
27.01.2016, 12:26
Ок. Попробую. Еще один вопрос в Конфигураторе есть значение "задержка ответа по rs-485", которое установлено у всех в 45 мс. Это не влияет? Тут что должно стоять?

В конфигураторе MВ110-8АС видимо?
Обычно там задержка 2мс везде, в руководстве фигурирует цифра 2мс, как заводской параметр.
Я во всех модулях всегда выставляю этот параметр в 0.

Николаев Андрей
27.01.2016, 12:37
Для получения отклика 1 с надо будет очень постараться.
1. Я думаю, что можно ограничиться разнесением на два порта. Опрос 8 модулей * 50 мс на модуль - вполне укладывается в секунду.
2. Опрос вести конечно же с помощью библиотеки.
3. Так как модуль 8АС а не 8А, то критически важным становится опрос сразу всех 8 каналов (группой регистров). И уже потом в ПЛК их разбирать на каждый канал по отдельности.
4. Если канал будет не использован - не забудьте в конфигураторе выбирать соответствующий пункт в типе датчика.
5. В зависимости от длины линий надо подбирать скорость. Если расстояния небольшие - можно пробовать и 115 200.
6. Терминальный резистор я бы обязательно ставил хотя бы на оконечном модуле.
7. Задержки должны быть определены не только модулем. Но и линией связи. Совершенно справедливо заметили коллеги, что Вам надо не забыть и в конфигураторе в самих модулях не забыть время задержки ответа менять, если будете сокращать время ожидания ответа в ПЛК.

bladerunner
27.01.2016, 12:50
Большое спасибо!


Для получения отклика 1 с надо будет очень постараться.
1. Я думаю, что можно ограничиться разнесением на два порта. Опрос 8 модулей * 50 мс на модуль - вполне укладывается в секунду.


Ок. Это проще всего сделать.



2. Опрос вести конечно же с помощью библиотеки.


С билиотекой не приходилось работать, но думаю разберемся.



3. Так как модуль 8АС а не 8А, то критически важным становится опрос сразу всех 8 каналов (группой регистров). И уже потом в ПЛК их разбирать на каждый канал по отдельности.


Что значит опрос сразу всех каналов? Где-нибудь есть примеры как это реализовать?



4. Если канал будет не использован - не забудьте в конфигураторе выбирать соответствующий пункт в типе датчика.


Сейчас используется только один к***** но будут использоваться все или почти все. Поэтому для правильности эксперимента активированы все каналы.



5. В зависимости от длины линий надо подбирать скорость. Если расстояния небольшие - можно пробовать и 115 200.


Максимальная длина линий будет где-то 50 метров.



6. Терминальный резистор я бы обязательно ставил хотя бы на оконечном модуле.


Ок. Сейчас у нас с одного конца стоит AC4, а с другого ПЛК110. Резистор ставить? Где?



7. Задержки должны быть определены не только модулем. Но и линией связи. Совершенно справедливо заметили коллеги, что Вам надо не забыть и в конфигураторе в самих модулях не забыть время задержки ответа менять, если будете сокращать время ожидания ответа в ПЛК.

Можно чуть поподробнее: в конфигураторе МВ везде проставить 0? а в ПЛК где время ожидания задается?

Еще раз большое спасибо!

Николаев Андрей
27.01.2016, 13:15
Большое спасибо!
Что значит опрос сразу всех каналов? Где-нибудь есть примеры как это реализовать?

http://www.owen.ru/uploads/re_mv110-8as_1821.pdf
Стр. 51 и ниже.
Это значит что соответствующей командой ModBus можно опрашивать значение не каждого отдельного регистра, а группы регистров за одну транзакцию. И уже в ПЛК разобрать.


Максимальная длина линий будет где-то 50 метров.
Ок. Сейчас у нас с одного конца стоит AC4, а с другого ПЛК110. Резистор ставить? Где?

оконечный на самом дальнем от ПЛК устройстве. Плюс, если есть ошибки на линии - возможно понадобится ставить и на нескольких промежуточных модулях.


Можно чуть поподробнее: в конфигураторе МВ везде проставить 0? а в ПЛК где время ожидания задается?

Ну ноль не знаю, никогда не использовал - поставил бы хотя бы 5 мс. Но, к сожалению, однозначного рецепта нет. Слишком многофакторный вопрос - нужны будут эксперименты.
При использовании библиотеки Вам самому надо будет организовывать таймер, который будет взводится после посылки запроса мастером (на ПЛК).
Примеры работы с библиотекой можно глянуть тут:
http://www.owen.ru/forum/forumdisplay.php?f=49

Валенок
27.01.2016, 23:14
В качестве морковки (для копания библиотек) :
8x 8AC. Опрос всех 64 каналов в полном наборе для каждого (значение,статус,время) - около 250..300мс. Причем на 38400. Реальность.
п.7. Всё кроме 0 - чушь. Доп.задержки нафик нужны. Или это не модбас.

приборист
27.01.2016, 23:19
В качестве морковки (для копания библиотек) :
8x 8AC. Опрос всех 64 каналов в полном наборе для каждого (значение,статус,время) - около 250..300мс. Причем на 38400. Реальность.
п.7. Всё кроме 0 - чушь. Доп.задержки нафик нужны. Или это не модбас.

Т.е. есть возможность увидеть 16х8АС и до 1с.
Неплохо :)

Валенок
27.01.2016, 23:26
А тут 16 модулей на одном интерфейсе ? Да. Ошибся. 0.5-0.6сек.

bladerunner
28.01.2016, 09:59
Итак. Первые результаты.
По наводке коллег из ОВЕНа я поменял адресацию блоков с 1, 2, 3...16 на 8, 16, ... 128. Заодно уменьшил задержку с 45 ms до 2.
Скорость значительно улучшилась и исчезли ошибки. Наверное, правильнее сказать так - исчезли ошибки и скорость значительно улучшилась.
Не замерял, но визуально сейчас это где-то 2-4 секунды. Далее планирую разделить на 2 подсети и подключить их к 2-м портам RS-485.

PS
Огромное всем спасибо за помощь.