This is topic Обмен по виртуальному COM порту in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001700.html

Posted by Booster0 (Участник № / Member № 8431) on :
 
Добрый день. Есть программа управления установкой. Через виртуальный COM порт поключены 4 модуля, работающие по протоколу Modbus. Когда работают все источники/приемники - по одному из модулей приходит ошибка вида "ERR_RS:COM3 err=9 ch=H22_START[126]", когда подключены источники/приемники только пролемного модуля - он работает нормально, команды и ответы на запросы приходят без проблем.
Подскажите, пожалуйста, в чем может быть засада.

[ 13.08.2020, 11:30: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Справочная Система
"Отладка проекта - Коды диагностируемых ошибок"
9 – превышен таймаут;

За заданное время на посланный запрос не получен ответ.

Со стороны TRACE MODE Вы можете в настройках com-порта увеличить время таймаута.
Но это не устранит причину.

Используйте ПО для перехвата трафика com-порта (например, PortMon). По перехвату можно будет определить что происходит при обмене с устройством.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Увеличение времени таймаута ничего не дало. Для перехвата трафика использовал программу Advanced serial port monitor 4.4.18, все другие либо не работали под десяткой, либо не подключались к виртуальному COM порту (Silicon labs CP210x USB to UART bridge). По обмену видно, что при работе только с проблемным модулем уходит команда и приходит ответ, при работе проблемного модуля хотя бы с еще одним каналом другого модуля команда уходит, ответа нет, происходит очистка буферов чтения и записи.

[ 11.08.2020, 14:54: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
1. Какой таймаут был и какой Вы установили?

2. Виртуальный COM порт (Silicon labs CP210x USB to UART bridge). Какое устройство физически Вы используете для подключения?

3. Как в один USB-порт Вы подключаете четыре разных устройства?

4. Проблема только с одним конкретным устройством?

5. Три остальных устройства могут одновременно работать без проблем?

6. Проверьте на физическом COM-порте и/или на виртуальном COM-порте другого Производителя.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
1. Тайаут был 300 мс, поднимал до 1000 мс.
2. К USB порту подключается преобразователь интерфейса USB - RS485 той же фирмы, чьи модули.
3. Все модули сидят на шине RS485, каждый со своим адресом
4. Да, проблема только с конкретным модулем.
5. Три остальные модули вместе работают без проблем.
6. На физическом COM порту все работает.

[ 11.08.2020, 14:54: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Дополнение к п.6. Именно эти драйвера (Silicon labs CP210x USB to UART bridge) рекомендует производитель модулей и выложил их на своем сайте для свободного скачивания
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Используюса модули Акон (akon.com.ua), модули WAD-RS232-RS485-BUS, 2 WAD-AIK-BUS, WAD-AO-BUS, WAD-DIO4-ECO-2DI-2R. Проблемный WAD-DIO4-ECO-2DI-2R. Физическое подключение сообщу позже.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
В электронном письме Вам были отправлены дополнительные вопросы и рекомендации. Вкратце

В общем случае, ошибка (-9 - таймаут) возникает если на поданную команду не пришел ответ за указанное время.

Ответ может не прийти по ряду причин:
1. Не хватило времени. Решается увеличением времени таймаута.
2. Устройства физически нет в сети либо не работает (выключено, сломано). Дополнительный вариант - ошибка в адресации (т.е., устройство в сети, но стучимся не к нему).
3. помехи. В сети RS между ведущим устройством и ведомым(ыми) искажаются сигналы. До ведомого устройства команда доходит в виде, котором оно не похоже на команду и ведомый не реагирует.

Проверьте сеть.
Топология сетей на основе интерфейса RS-485 определяется необходимостью устранения отражений в линии передачи. Поскольку отражения происходят от любой неоднородности, в том числе ответвлений от линии, то единственно правильной топологией сети будет такая, которая выглядит как единая линия без отводов, к которой не более чем в 32 точках подключены устройства с интерфейсом RS-485. Любые варианты, в которых линия имеет длинные отводы или соединение нескольких кабелей в одной точке, приводят к отражениям и снижению качества передачи.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Я читал письмо.
По поводу пртчин неприхода ответа:
1. Таймаут увеличивал до 1000 мс - не помогло. До какой величины имеет смысл увеличивать дальше?
2. Устройство физически в сети и работает, адресация корректная. Проверено прогаммой-аналогом и самим же трейс модом на железном COM порту.
3. Построение сети не полностью соответствует Вашему описанию (есть один отвол, нет терминаторов), это будет исправлено.

[ 11.08.2020, 14:53: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Booster0:
Используюса модули Акон (akon.com.ua), модули WAD-RS232-RS485-BUS, 2 WAD-AIK-BUS, WAD-AO-BUS, WAD-DIO4-ECO-2DI-2R. Проблемный WAD-DIO4-ECO-2DI-2R. Физическое подключение сообщу позже.

Ждем описания физического подключения.
Скорее всего Вы используете не WAD-RS232-RS485-BUS, а WAD-USB-RS485-BUS. Т.к. именно второй конвертирует USB-RS485.
Модули WAD-AIK-BUS и WAD-AO-BUS поддерживают физическое подключение по USB. Вы их подключаете только по RS485?

Модуль WAD-DIO4-ECO-2DI-2R имеет возможность быть подключенным только по RS485.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Booster0:
1. Таймаут увеличивал до 1000 мс - не помогло. До какой величины имеет смысл увеличивать дальше?

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

quote:
Отправитель / Originally posted by Booster0:
2. Устройство физически в сети и работает, адресация корректная. Проверено прогаммой-аналогом и самим же трейс модом на железном COM порту.

Следовательно, проблема в виртуальном com-порте.
При проверке работы одного модуля WAD-DIO4-ECO-2DI-2R остальные модули подключены в сеть RS485?

quote:
Отправитель / Originally posted by Booster0:
3. Построение сети не полностью соответствует Вашему описанию (есть один отвол, нет терминаторов), это будет исправлено.

Предоставленное нами описание сети соответствует общепринятому принципу построения сети RS485.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Преобразователь интерфейсов WAD-RS232-USB-RS485, модули WAD-AIK-BUS и WAD-AO-BUS сидят на одной шине (DIN рейка), WAD-DIO4-ECO подключен проводами к выходу WAD-RS232-USB-RS485. Терминаторов нет
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
"При проверке работы одного модуля WAD-DIO4-ECO-2DI-2R остальные модули подключены в сеть RS485?
"
Да, модули подключены

[ 11.08.2020, 15:51: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Так как Вы утверждаете, что TRACE MODE подает команды, но модуль не отвечает, то проблема совершенно не в TRACE MODE.
Проблема в отсутствии ответа модуля при работе через виртуальный com-порт.
Вам необходимо предметно выяснить почему модуль не отвечает.

На почту отправлены подробные инструкции и рекомендации.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Добрый день. Единственный монитор COM порта, который работал под Windows 10 64 бита с виртуальным портом, который я нашел это Advanced Serial Port Monitor, но он пишет подряд обмен и служебную информацию, и снять ее можно или в ASCII, или в НЕХ, так что вид но особо читаемый. Ну вроде такого:
F2E03A205258434C4541522C205458434C45415220CEF7E8F1F2EAE020EFEEF0F2E03A205258434C4541522C205458434C45415220020310000006C13B02030C41D76C2341DA7188000000008445CEF7E8F1F2EAE020EFEEF0F2 E03A205258434C4541522C205458434C45415220020303200002C5B602030445F07000F9CCCEF7E8F1F2EAE020EFEEF0F2E03A205258434C4541522C205458434C45415220020310040002813902030400000000C933CEF7E8F1 F2EAE020EFEEF0F2E03A205258434C4541522C205458434C45415220050301100002C5B6CEF7E8F1F2EAE020EFEEF0F2E03A205258434C4541522C205458434C45415220CEF7E8F1F2EAE020EFEEF0F2E03A205258434C454152 2C205458434C45415220050301110001D477CEF7E8F1F2EAE020EFEEF0F2E03A205258434C4541522C205458434C45415220CEF7E8F1F2EAE020EFEEF0F2E03A205258434C4541522C205458434C45415220020310000006C13B 02030C41D79B0A41DA85C00000000036B7CEF7E8F1F2E
и нужно выбирать команды и ответы. Например, запросы и ответы от проблемного модуля начинаются с 0403, остальные с 0203.
Разобрать обмен или прислать, как есть?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Перехват COM-порта должен быть структурирован (время транзакции, направление транзации, вес транзакции, содержание...).
Разбирать перехват, который "пишет подряд обмен и служебную информацию", а тем более отредактированный перехват, мы не будем. Используйте другой перехватчик COM-порта. Надеюсь на Ваше понимание.

В присланном отрывке нет 0403.

Согласно протоколу ModBus, любая команда начинается с номера устройства. Несколько устройств в одной RS485-сети не должны иметь один номер.

quote:
Отправитель / Originally posted by Booster0:
Преобразователь интерфейсов WAD-RS232-USB-RS485, модули WAD-AIK-BUS и WAD-AO-BUS сидят на одной шине (DIN рейка), WAD-DIO4-ECO подключен проводами к выходу WAD-RS232-USB-RS485. Терминаторов нет

У устройства WAD-RS232-USB-RS485 несколько разъемов RS485. Как именно Вы подключили все устройства?

Использование виртуального COM-порта не должно накладывать ограничения для перехватчика COM-порта. Программа перехвата не знает виртуальный COM-порт или реальный. Она должна видеть COM-порт.

Так как проблема при работе с виртуальным COM-портом (в том числе и в подборе программы перехвата), то повторно рекомендую проверить на виртуальном COM-порте другого Производителя.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Добый день. Есть еще один вопрос. В том же проекте есть две кнопки, которые запускают и останавливают двигатель насоса. При нажатии на кнопку (MousePress) изменяются значения двух каналов, при отпускании (MouseReleas) - одного из двух предыдущих. Оба эти канала привязаны и источникам. Перехват обиена по COM порту показал, что примерно при двух третей нажатий проходит только одна команда по нажатию (вместо трех), в остальных случаях две команды, одна по нажатию, одна по отпусканию. Это можно как-то настроить?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
quote:
Отправитель / Originally posted by Booster0:
При нажатии на кнопку (MousePress) изменяются значения двух каналов, при отпускании (MouseReleas) - одного из двух предыдущих.

Данный вопрос не связан с виртуальный COM-портом.
Прошу Вас придерживаться общей темы топика. Новый вопрос, не связанный с данной темой, формулируйте в новом отдельном топике.

Перепроверили. Графический Элемент "Кнопка" с двумя действиями "по нажатию" (прямая передача значения 1 в аргумент шаблона экрана arg001 и прямая передача значения 2 в аргумент шаблона экрана arg002) и одним действием "по отжатию" (прямая передача значения 33 в аргумент шаблона экрана agr002). Значения аргументов шаблона экрана отображаются в двух ГЭ "Текст".

При нажатии ГЭ Кнопка в ГЭ "Текст1" (привязка к arg001) отображается 1, в ГЭ "Текст2" (привязка к аргументу arg002) отображается 2.

При отжатии ГЭ Кнопка в ГЭ "Текст1" отображается 1 (корректно, так как действия с данным аргументом "по отжатию" нет, значение сохраняется), в ГЭ "Текст2" отображается 33.

При повторном нажатии на ГЭ Кнопка в ГЭ "Текст1" отображается 1, в ГЭ "Текст2" отображается 2.


Для локализации описанной проблемы проверьте каждое звено передачи данных. Кнопка - аргументы экрана - каналы - ... - каналы связи с источниками.

Проверка звена "Кнопка - аргументы экрана" описана выше.
Проверка остальных звеньев с помощью Панели МРВ (при запущенном проекте).
При наличии шаблона программ в цепочке связей - проверьте ее дополнительно.
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Рекомендуется, для передачи одному каналу двух разных значений использовать два отдельных Графических Элемента Кнопка.

Не рекомендуется совмещать на одном ГЭ Кнопка действия "по нажатию" и "по отжатию".

Необходимо еще учесть скорость взаимодействия с ГЭ Кнопка. При быстрых кликах быстродействия интерфейса может быть не достаточно.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Сделал отдельные кнопки для каждой команды.По нажатию кнопки команда уходит, ответа на нее нет.
При изменении значения в панели МРВ то же самое - команда уходит, ответа нет.
это только с виртуальным COM портом, с железным портом проблем нет, ушла команда - пришел ответ.
Кстати, пробовал несеолько версий драйвера той же фирмы - результат тот же.
Может есть какие-то дополнительные настройки COM порта?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Уважаемый Booster0!
Все необходимые настройки для работы с COM-портом отображены в настройках COM-порта.

Вам 10.08.2020 рекомендовали проверить на виртуальном com-порте другого Производителя.

11.08.2020 Вам были направлены рекомендации по локализации проблемы. Результаты применения наших рекомендация не были предоставлены.

Без выполнения наших рекомендаций мы не сможем Вам помочь в локализации проблемы и поиска ее решения. Надеюсь на Ваше понимание.
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Для перехвата буду использовать Serial Port Monitor фирмы Eltima Software. Он имеет пять вариантов представления данных (с примерами):
1. Table view
44 00:000 IRP_MJ_WRITE DOWN 01 03 10 04 00 04 01 08 ........ 8 8 COM1
45 00:000 IRP_MJ_WRITE UP STATUS_SUCCESS 01 03 10 04 00 04 01 08 ........ 8 COM1
46 00:000 IRP_MJ_READ DOWN 13 COM1
47 00:330 IRP_MJ_READ UP STATUS_TIMEOUT COM1
48 00:040 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) DOWN 0c 00 00 00 .... 4 COM1
49 00:000 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) UP STATUS_SUCCESS COM1
50 00:000 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) DOWN 0c 00 00 00 .... 4 COM1
51 00:000 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) UP STATUS_SUCCESS COM1
52 00:000 IRP_MJ_WRITE DOWN 01 03 10 06 00 02 20 ca ...... К 8 8 COM1
53 00:000 IRP_MJ_WRITE UP STATUS_SUCCESS 01 03 10 06 00 02 20 ca ...... К 8 COM1
54 00:000 IRP_MJ_READ DOWN 9 COM1
55 00:320 IRP_MJ_READ UP STATUS_TIMEOUT COM1
56 00:040 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) DOWN 0c 00 00 00 .... 4 COM1
57 00:000 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) UP STATUS_SUCCESS COM1
58 00:000 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) DOWN 0c 00 00 00 .... 4 COM1
59 00:000 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_PURGE) UP STATUS_SUCCESS COM1


2. Line view
[00:000]
207 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM1) - 8 bytes of 8
STATUS_SUCCESS
01 03 10 02 00 02 61 0b ......a.
----------------------------------------------------------------------------------
[00:320]
209 IRP_MJ_READ - Transfers data from a COM port to a client (COM1) - 0 bytes of 9
STATUS_TIMEOUT
----------------------------------------------------------------------------------
[00:040]
211 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM1)
STATUS_SUCCESS
IOCTL_SERIAL_PURGE - Request cancels the specified requests and deletes data from the specified buffers
Flags - 0x0000000c
----------------------------------------------------------------------------------
[00:000]
213 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM1)
STATUS_SUCCESS
IOCTL_SERIAL_PURGE - Request cancels the specified requests and deletes data from the specified buffers
Flags - 0x0000000c
----------------------------------------------------------------------------------
[00:000]
215 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM1) - 8 bytes of 8
STATUS_SUCCESS
02 03 10 02 00 04 e1 3a ......б:
----------------------------------------------------------------------------------
[00:330]
217 IRP_MJ_READ - Transfers data from a COM port to a client (COM1) - 0 bytes of 13
STATUS_TIMEOUT
----------------------------------------------------------------------------------
[00:040]
219 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM1)
STATUS_SUCCESS
IOCTL_SERIAL_PURGE - Request cancels the specified requests and deletes data from the specified buffers
Flags - 0x0000000c
----------------------------------------------------------------------------------
[00:000]
221 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM1)
STATUS_SUCCESS
IOCTL_SERIAL_PURGE - Request cancels the specified requests and deletes data from the specified buffers
Flags - 0x0000000c
----------------------------------------------------------------------------------


3. Dump view
[01:440] Written data (COM1)
01 03 10 04 00 04 01 08 ........
[00:370] Written data (COM1)
01 03 10 06 00 02 20 ca ...... К
[00:360] Written data (COM1)
03 10 20 05 00 02 04 00 00 40 00 90 29 .. ......@.ђ)
[00:362] Written data (COM1)
02 03 10 00 00 06 c1 3b ......Б;


4. Terminal view
.............. К.. ......@.ђ)......Б;.. ......@..р......@Й.. ......@.........a.......б:......Ѓ9... ..Е¶......Дg......Х¦.............. К.. ......@.ђ)......Б;.. ......@..р......@Й.. ......@.........a.......б:......Ѓ9... ..Е¶......Дg......Х¦.............. К......Б;......@Й......a.......б:......Ѓ9... ..Е¶......Дg......Х¦.............. К......Б;......@Й......a.......б:

5. Modbus view
[00:000]
Modbus Request (COM1)
Address: 1
Function: 3 (0x03) - Read Holding Registers
Starting Address: 4100
Quantity: 4
Checksum: 264(OK)
----------------------------------------------------------------------------------
[00:370]
Modbus Request (COM1)
Address: 1
Function: 3 (0x03) - Read Holding Registers
Starting Address: 4102
Quantity: 2
Checksum: 8394(OK)
----------------------------------------------------------------------------------
[00:360]
Modbus Request (COM1)
Address: 3
Function: 16 (0x10) - Write Multiple Registers
Starting Address: 8197
Quantity: 2
Byte Count: 4
Values: 00 00 40 00
Register8197: 0
Register8198: 16384
Checksum: 36905(OK)
----------------------------------------------------------------------------------

Образцы делал дома, поэтому во всех примерах только запровы, ответов нет.
Какие варианты вам присылать?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Для анализа перехвата подходит Table view. Кадры перехвата должны быть полными, без многоточий. Режимы Line view и Dump view так же устроят.

Так как Вы утверждаете, что TRACE MODE подает команды на физическом и виртуальном com-портах, но модуль не отвечает при работе с виртуальным com-портом, то проблема в отсутствии ответа модуля при работе через виртуальный com-порт.

Для анализа ситуации необходимо провести четыре проверки с перехватом:

1. Создайте проект с опросом ОДНОГО проблемного модуля. В папку проекта добавите cnf-файл с ключом DEBUGON=200. Подключение по физическому com-порту. Запустите перехватчик com-порта, запустите проект, проведите информационный обмен с модулем в течение 5 минут, штатно остановите проект. Заархивируйте prj-файл, папку проекта и перехват.
2. Используйте тот же проект. Измените проект, что бы подключение было по виртуальному com-порту. Действия аналогичны.
3. Создайте проект с опросом ЧЕТЫРЕХ модулей. Подключение по физическому com-порту. В папку проекта добавите cnf-файл с ключом DEBUGON=200. Запустите перехватчик com-порта, запустите проект, проведите информационный обмен с модулем в течение 5 минут, штатно остановите проект. Заархивируйте prj-файл, папку проекта и перехват.
4. Используйте проект с опросом четырех модулей. Измените проект, что бы подключение было по виртуальному com-порту.

Пришлите на четыре архива (в каждом prj-файл проекта, папку узла с cnf-файлом, перехват com-порта).

Ранее Вы указали:
«Преобразователь интерфейсов WAD-RS232-USB-RS485, модули WAD-AIK-BUS и WAD-AO-BUS сидят на одной шине (DIN рейка), WAD-DIO4-ECO подключен проводами к выходу WAD-RS232-USB-RS485.»

Согласно документации Модуль WAD-LAN/RS232/USB/RS485-BUS имеет 4 типа разъемов: LAN, USB, DB-9F, X2/X3/X4 и один системный 5-ти контактный разъѐм (Х5).

К каким именно разъемам подключен каждый из модулей и через какой разъем Модуль WAD-LAN/RS232/USB/RS485-BUS подключен к ПК при работе на физическом и виртуальном com-портах?
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
Модуль WAD-LAN/RS232/USB/RS485-BUS подключается к ПК:
при работе на физическом порту - RS232 (DB-9F)
при работе на виртуальном порту - USB

все рабочие модули подключаются через разъем Х5.

Проекты с перехватом вышлю завтра
 
Posted by Booster0 (Участник № / Member № 8431) on :
 
а кадры полные, там сначала идут данные в HEX формате, а потом в символьном. точки - это непечатные символы
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2