Здравствуйте. До некоторго момента не задавались вопросом как быстро ТМ опрашивает контроллеры. Но т.к. на одном из объектов данные обновляются медленно, то стало интересно как часто шлются посылки в самом простом случае. Создал проект из одного источника/приемника и канала с запросом данных по RS-485 modbus. Таймаут 300мс. Воткнул в ноутбук преобразователь USB/RS-485. На выход преобразователя повесил осциллограф. Получилось что в стандартом цикле пересчета обмен возобновляется каждые 2с. При переключении в цикл fast - каждую секунду. И это при отсутствии какой-либо графики (лишь текстовый блок со значением канала) в проекте. Прошу пояснить почему так происходит. На объекте с другим преобразователем (Modbus TCP/IP) также посылки идут каждые 2с. хотя там >13 слейвов. Что изменить и в чем причина? Ноутбук Win 7 home 64 разарядная
[ 07.12.2011, 10:24: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Частота транзакций асинхронного RS-потока зависит - от периода обработки базы каналов, - от периодов обработки каналов, работающих по RS, - от "Скорости" в настройках COM-порта, - от заданной настройки COM-порта RS-передача – задержка (в миллисекундах) между транзакциями (процедурами ЗАПРОС/КОМАНДА+ОТВЕТ) (по умолчанию равна 0), - от реактивности опрашиваемого устройства, - от величины заданного таймаута ожидания ответа (если устройство не отвечает или отвечает с задержкой), - от свойств драйвера-эмулятора COM-порта и преобразователя USB/RS-485.
Тесты обмена по RS-232 (через USB/RS-232) показали, что предельная частота транзакций на скорости 9600 равна 8 транзакций в сек., на скорости 115200 - 16 транзакций в сек.
Ограничение суммарной интенсивности транзакций по COM-порту мало зависит от количества устройств, которые опрашиваются по этому COM-порту.
Контроль потока осуществлялся перехватчиком COM-порта (например, для Windows 7/64 - Advanced serial port monitor.exe free-serial-port-monitor.exe serial_port_monitor_eltima.exe).
Для Modbus TCP суммарная интенсивность транзакций практически целиком определяется реактивностью слейвов. К этому добавляется фактор управления коннектом - при потере связи с устройством сокет уничтожается и на последующее восстановление связи затрачивается дополнительное время.
Posted by Demus1 (Участник № / Member № 3844) on :
Спасибо за ответ. Уточняю некоторые параметры и прошу совета как найти причину. 1. период обрабоки базы каналов в проекте с одним каналом не может вносить существенного вклада во время. 2. база канлов RS тоже 3. скорость 9600 4. Таймаут 300 мс. Остальные накстройки по умолчанию =0. По идее остается драйвер-эмулятор COM-порта или преобразователь, если рассматривать RS-485. Если рассматривать TCP, то здесь также сомнение вызывает преобразователь из Ethernet в rs-485.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
"период обработки базы каналов в проекте с одним каналом не может вносить существенного вклада во время." Если период обработки базы каналов узла равен по умолчанию 10*0.055 и период пересчета канала Modbus RTU равен 1*"цикл CALC", то, конечно, настройки проекта не могут вызвать такие задержки. Для диагноза надо точно знать не то, что выдается на RS-485, а то, что МРВ выдает в COM-порт. Для этого надо перехватить именно трафик COM-порта. Либо указанной выше утилитой, либо заданием в файле конфигурирования запуска узла *.cnf ключа DEBUG=200. В протоколе профайлера будут сообщения об ошибках по Modbus RTU с временными метками.
Продиагностировать трафик Modbus TCP в релизе 6.07.7 лучше всего с помощью "Управление и диагностика обмена по встроенным протоколам". Для простоты у ChGroup, привязанного к @e_TCP_ModBus, надо в реальном времени задать атрибут 90 (I0) равным 0xFFFF – в этом случае анализируются все устройства.
Posted by Demus1 (Участник № / Member № 3844) on :
Что скажете? Я пока что вижу - обмен идет постоянно по 4 посылки в секунду (нормально, учитывая отсутствие слейва), на осциллограмме же 1 посылка в секунду. Преобразователь Delta IFD 6500. Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Приоритет для RS-потока роли в данном случае не играет. Нужно вернуть обратно. Если по COM-порту посылаются запросы 2-4 раза в сек., а на выходе преобразователя - 1 раз в сек., надо изучать и, если возможно, настраивать преобразователь. У нас такого преобразователя нет, проводить исследования мы не можем.
Posted by Demus1 (Участник № / Member № 3844) on :
Какие преобразователи USB/RS-485 посоветуете для применения вместе с ТМ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :