This is topic Обмен по виртуальному COM порту in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Добрый день. Есть программа управления установкой. Через виртуальный 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 :
Ждем описания физического подключения. Скорее всего Вы используете не 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 ......Б;
Образцы делал дома, поэтому во всех примерах только запровы, ответов нет. Какие варианты вам присылать?
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 формате, а потом в символьном. точки - это непечатные символы