Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Общие вопросы / Common questions » Частота обмена по RS-485 modbus

   
Автор / Author Тема / Topic: Частота обмена по RS-485 modbus
Demus1
Active Forum Member / Активный участник форума
Участник № / Member № 3844


Icon 1 отправлено / posted      Профиль для / Profile for Demus1           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.
До некоторго момента не задавались вопросом как быстро ТМ опрашивает контроллеры. Но т.к. на одном из объектов данные обновляются медленно, то стало интересно как часто шлются посылки в самом простом случае.
Создал проект из одного источника/приемника и канала с запросом данных по 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 ]

Сообщения / Posts 92 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Частота транзакций асинхронного 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 суммарная интенсивность транзакций практически целиком определяется реактивностью слейвов. К этому добавляется фактор управления коннектом - при потере связи с устройством сокет уничтожается и на последующее восстановление связи затрачивается дополнительное время.

Сообщения / Posts 17320 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Demus1
Active Forum Member / Активный участник форума
Участник № / Member № 3844


Icon 1 отправлено / posted      Профиль для / Profile for Demus1           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за ответ. Уточняю некоторые параметры и прошу совета как найти причину.
1. период обрабоки базы каналов в проекте с одним каналом не может вносить существенного вклада во время.
2. база канлов RS тоже
3. скорость 9600
4. Таймаут 300 мс. Остальные накстройки по умолчанию =0.
По идее остается драйвер-эмулятор COM-порта или преобразователь, если рассматривать RS-485.
Если рассматривать TCP, то здесь также сомнение вызывает преобразователь из Ethernet в rs-485.

Сообщения / Posts 92 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
"период обработки базы каналов в проекте с одним каналом не может вносить существенного вклада во время."
Если период обработки базы каналов узла равен по умолчанию 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 – в этом случае анализируются все устройства.

Сообщения / Posts 17320 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Demus1
Active Forum Member / Активный участник форума
Участник № / Member № 3844


Icon 1 отправлено / posted      Профиль для / Profile for Demus1           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Установил большую скорость и приоритет для потока RS и протоколорование. Что получилось:
(18:0:20) INF_RS:init string is \\.\COM6: baud=115200 parity=N data=8 stop=1
(18:0:20) WRN_RS:found channels = 1
(18:0:32) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:32) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:32) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:33) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:33) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:33) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:34) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:34) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:35) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:36) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:36) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:37) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:37) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:38) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:38) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:38) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:39) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:39) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:40) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:41) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:41) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:42) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:42) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:42) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:43) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:43) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:43) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:45) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:45) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:45) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:46) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:46) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:47) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:47) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:48) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:48) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:49) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:49) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:50) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:50) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:51) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:51) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:52) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:52) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:52) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:53) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:54) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:54) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:55) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:55) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:55) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:56) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:56) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:57) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:57) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:58) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:58) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:59) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:0:59) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:0) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:0) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:1) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:1) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:2) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:2) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:3) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:3) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:4) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:4) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:5) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:5) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:5) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:6) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:6) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:7) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:8) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:8) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:8) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:9) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:9) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:10) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:10) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:11) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:11) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:12) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:13) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:13) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:14) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:14) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:14) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:15) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:15) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:15) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:17) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:17) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:17) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:18) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:18) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:18) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:19) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:19) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:20) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:20) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:21) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:22) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:22) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:23) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:23) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:24) ERR_RS:COM:6 Read 0 symbol(err=9 ch=Rout_Word(3)#1[1])
(18:1:24) INF_RS:COM6 TRANSACTION=109 ERROR=109 TIME=55.365
(18:1:24) INF_RS: TOTAL_BYTE=872 AVR_RESPONSE=-37.408 MAX_RESPONSE=0.344

Что скажете? Я пока что вижу - обмен идет постоянно по 4 посылки в секунду (нормально, учитывая отсутствие слейва), на осциллограмме же 1 посылка в секунду.
Преобразователь Delta IFD 6500.
 -

Сообщения / Posts 92 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Приоритет для RS-потока роли в данном случае не играет. Нужно вернуть обратно.
Если по COM-порту посылаются запросы 2-4 раза в сек., а на выходе преобразователя - 1 раз в сек., надо изучать и, если возможно, настраивать преобразователь.
У нас такого преобразователя нет, проводить исследования мы не можем.

Сообщения / Posts 17320 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Demus1
Active Forum Member / Активный участник форума
Участник № / Member № 3844


Icon 1 отправлено / posted      Профиль для / Profile for Demus1           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Какие преобразователи USB/RS-485 посоветуете для применения вместе с ТМ?
Сообщения / Posts 92 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В Адастре испытывались модемы
- MOXA UPort 1110 (COM232)
- MOXA UPort 2410 (COM232)
- MOXA UPort 1150I (RS 485)

Пользователи часто предпочитают преобразователи фирмы MOXA (по критериям надежности и стоимости).

Сообщения / Posts 17320 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2