Просмотр полной версии : Как увеличить скорость опроса большого количества модулей МВ110-8АС
bladerunner
27.01.2016, 09:46
Добрый день!
Есть задача собирать данные от примерно 130 датчиков. Для этого собрано (пока в виде тестового стенда) следующая конфигурация: 16 МВ110-8АС, ПЛК110, АС4. Все устройства стоят вместе и объединены по RS485. Никаких терминаторов нет (они нужны?). У всех МВ110 настроен свой адрес от 1 до 16. Скорость связи 115200. Все входы 0-10В. Подключен только один датчик, остальные показываются как обрыв сети (что правильно). В ПЛК сделана визуализация.
Проблема следующая: время между срабатыванием датчика и отображением в визуалзиации около 10 секунд. Пока был только модуль ввода все работало прекрасно и быстро. В конфигураторе МВ110 опрос входов тоже осуществляется не быстро (визуально) и проскакивает множество ошибок.
Подскажите, пожалуйста, как решить проблему. Нужно сократить время до <1 сек.
Большое спасибо!
Черта лысого, а не < 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
В качестве морковки (для копания библиотек) :
8x 8AC. Опрос всех 64 каналов в полном наборе для каждого (значение,статус,время) - около 250..300мс. Причем на 38400. Реальность.
п.7. Всё кроме 0 - чушь. Доп.задержки нафик нужны. Или это не модбас.
приборист
27.01.2016, 23:19
В качестве морковки (для копания библиотек) :
8x 8AC. Опрос всех 64 каналов в полном наборе для каждого (значение,статус,время) - около 250..300мс. Причем на 38400. Реальность.
п.7. Всё кроме 0 - чушь. Доп.задержки нафик нужны. Или это не модбас.
Т.е. есть возможность увидеть 16х8АС и до 1с.
Неплохо :)
А тут 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
Огромное всем спасибо за помощь.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot