aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Здравствуйте. Пытаюсь подключить модуль ADAM-4051 к TRACE MODE через преобразователь USB-RS485. COM порт по-видимому открывается для обмена (после запуска профайлера он становится не доступен), но передача данных не идёт. Подскажите в чём может быть проблема.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Как Вы убеждаетесь в том, что "передача данных не идёт"? Причин может быть много: - неверное задание номера COM-порта в "Источнике", - неверное "Назначение" COM-порта, - неадекватная настройкам модуля настройка COM-порта, - неверный сетевой номер модуля, - нет связи канала с "Источником" и т.д.
Смотрите решение аналогичной задачи с модулем I-7011 в уроках "Быстрого старта".
Задайте в файле конфигурирования запуска узла TMcom_xx.cnf ("Приложения/Задание параметров работы мониторов") ключ DEBUGON=F0000200 В профайлерном протоколе будут записи по организации и диагностике обмена по последовательному интерфейсу.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Отсутствие передачи данных выявлено с применением монитора com-порта, позволяющего "прослушать" приём/передачу данных. С "Быстрым стартом" я ознакомлен. По настройкам COM-порта: - номер задан верно (у порта номер COM4, у модуля - COM4, в настройках источника 0x03); - "Назначение" порта = Master; - скорость соответствует настройкам модуля (9600 бод); - контроль чётности соответствует настройкам модуля (8-1-n); - управление передачей DTR/RTS; - "Адрес" в настройках источника = 1 (соответствует адресу модуля); - "Канал" в настройках источника = 0; - "Контрольная сумма" в настройках источника = "нет"; - "Тип сигнала" в настройках источника = "..."; - "Направление" в настройках источника = "Input"; - "Формат" в настройках источника = "Дискрет"; Меня интересует назначение полей "Базовый адрес" и "Прерывание". В справке о них информации практически нет. На просторах форума я нашёл что они не должны равняться 0. В профайлерном протоколе никакой информации, связанной с функционированием COM-порта, я не обнаружил.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Номер COM-порта у модуля значения не имеет (хотя у модуля ADAM-4051 1 COM-порт). "Базовый адрес" и "Прерывание" действительно должны быть не равными 0.
Вы задали отладочный ключ, как было рекомендовано? Как выглядит файл TMcom_xx.cnf? Где он размещен?
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Атрибут 4 имеет значение _Т
Файл TMcom_00.chf находится в папке узла RTM_1 и имеет следующее содержание: DEBUGON=F0000200 END_OF_CNF Пустая стока в конце файла присутствует.
"Источник" связан с каналом HEX16 механизмом drag-and-drop. Реальное значение канала HEX16 выводится в ГЭ "текст", а так же связано к ГЭ "Выключатель 6" для индикации состояния.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Переименуйте файл TMcom_00.chf в TMcom_xx.cnf. Измените в нем ключ на DEBUGON=F0004200
Пришлите на адрес техподдержки файл проекта и папку узла после работы с этим конфигурационным файлом.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
В ответ на моё письмо были высланы некоторые рекомендации, не устраняющие проблему. Вчера я отправил по тому же адресу письмо, но ответа так и не получил. Содержание письма приведено ниже.
"Значения параметров "RS-передача", "Включение передатчика" и "Задержка запроса" я задал не нулевыми только потому, что при нулевых значениях данных параметров COM-порт не работал, а значения заданные мной (на сколько я понял из соответствующего раздела справки) не приведут к его неработоспособности. Значение параметра "Управление передачей" было также задано в порядке эксперимента, значение "no" так же проверялось. При работе с проектом выявлена ошибка функционирования интегрированной среды (ИС) разработки, которая заключается в том, что при создании канала в группе "COM-порты" по умолчанию создаётся канал со следующими значениями:
Скорость = 110;
Базовый адрес = 0x0;
Прерывание = 0;
Таймаут = 0;
На сколько я знаю, при нормальном функционировании ИС, значение параметра "Скорость" по умолчанию должно быть равно 9600, а нулевые значения параметров "Базовый адрес" и "Прерывание" вообще (как я выяснил на форуме) приведут к неработоспособности канала. При этом я не нашёл адекватного пояснения назначения параметров "Базовый адрес" и "Прерывание" в соответствующем разделе справки. По поводу нулевого значения параметра "Таймаут" в справке информация так же отсутствует. В связи с этим, я бы порекомендовал вам переработать справочную систему вашего программного продукта вместо того, чтобы рекомендовать пользователям пройти обучающие курсы. При написании конфигурационного файла я действительно допустил ошибку. После её исправления в соответствующем файле появилась информация о канале RS, из которой я понял что в узле не найден канал, соответствующий данным настройкам COM-порта (поправьте меня если я ошибаюсь). Почему канал не найден - мне не понятно. Проект по-прежнему не функционирует. Во вложенном архиве находятся все файлы проекта, исправленные в соответствии с вашими рекомендациями. Прошу пересмотреть данный тестовый проект и дать рекомендации по-существу."
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Файл test.prj, присланный Вами, имеет дату 28.09.2015 9:07, а файл test_0.dbb 28.09.2015 8:32 (время московское). Создается впечатление, что Вы запускали и протоколировали редакцию проекта, более раннюю, чем последняя редакция Вашего проекта.
В Вашем протоколе ... (8:32:32) INF_RS:found channels=0 for COM4 (8:32:32) INF_RS:init string is \\.\COM4: baud=9600 parity=N data=8 stop=1 (8:32:32) INF_RTM:start Host:COM_4[3232] low ... Для связи по COM4 каналы не найдены.
Я скомпилировал Ваш проект в его последней редакции и запустил.
В профайлерном протоколе получил записи (у меня нет COM4) ... (7:46:19) INF_RS:found channels=1 for COM4 (7:46:19) INFO:DCS: DI#1(2)7 - RS=3 ADDR=1 ch=0 (7:46:19) INF_RS:init string is \\.\COM4: baud=9600 parity=N data=8 stop=1 (7:46:19) ERR_RS:create COM Handler error = 2 ... Найден 1 канал для обмена по COM4.
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
В протоколе профайлера наблюдаю следующую запись: ERR_RS:COM4 err=9 ch=DI#1[2] Поясните пожалуйста, что означает err=9
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Это ошибка таймаута - устройство не отвечает за заданное в настройках COM-порта время. Надо проверить физическое соединение с устройством и правильность настроек COM-порта и "Источника".
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Скажите, а где можно найти расшифровки кодов ошибок, связанные с работой COM-порта?
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Раздел "Отладка проекта/Коды диагностируемых ошибок/Коды диагностируемых ошибок".
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Здравствуйте. Никак не могу наладить обмен с ADAM-4051. Вот дамп запросов, формируемых TRACE MODE: $01S66 $016 $016 $016 @01 @01 #01 #01 @01 $01S/6
А это дамп запросов, формируемых утилитой AdamApax фирмы Advantech. $016 $016 $016 $016
Была мысль, что проблема в частоте опроса, но установка значений "Единица измерения" = "сек" и "Период" = 1, 2 и т.д. для частоты пересчёта канала вызова шаблона экрана не дало никаких результатов. Подскажите, пожалуйста, возможные пути решения данной проблемы.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
C помощью PortMon перехватил трафик запросов на присланном Вами проекте и получил точно то же самое, что и приведенное выше от утилиты AdamApax.
Если у Вас 1 канал запроса, то изменение кадра запроса принципиально не может быть.
Сделайте, пожалуйста, перехват при отключенном от ПК внешнем оборудовании, включая и конвертор RS 232/485.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Поскольку меня в конечном счёте интересует использование всех линий модуля удалённого ввода, для целей эксперимента я в тестовом проекте опрашивал все линии модуля. По вашему совету, я удалил привязки каналов экрана, отвечающих за вывод информации и отключил преобразователь USB-RS485. Исходящие данные аналогичны приведённым мной ранее.
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Запросы, которые "посылает Trace Mode 6" в Вашем трафике (кроме $016), относятся к совершенно другим функциям и модулям.
Возьмите тот проект, который Вы присылали нам - с одним "Источником" ADAM-4051 и одним каналом, связанным с этим источником. Перехватывайте трафик запросов от Trace Mode 6 и ответов устройства.
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
С одним каналом и одним источником проблем нет, если я опрашиваю порт DI0 модуля удалённого ввода. Если же я опрашиваю не нулевой порт, а, к примеру 11-й, то исходящий трафик выглядит вот так: $01S26. $01S26. $01S26. и т.д. и ответ от модуля, естественно, не приходит. Но как всё-таки быть, если мне нужно опрашивать 16 каналов?
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Канал HEX16, залинкованный на этот самый "один источник", получает данные сразу по всем 16 битам (портам?) модуля ADAM-4051. Каждый бит канала соответствует своему дискретному входу модуля ADAM-4051. Нет необходимости создавать лишние "Источники" с некорректными настройками.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724
отправлено / posted
Есть какие-то возможности по "разбору" канала на биты, кроме создания отдельной программы специально для этой цели?
Сообщения / Posts 26 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Надо определить, для чего Вам надо "разбирать канал на биты". Индикация на экране каждого бита (от 0-го до 15-го) может быть осуществлена с использованием одного аргумента, привязанного к РЕАЛЬНОМУ_ЗНАЧЕНИЮ канала в ГЭ с типом индикации (см. документацию) "Arg & Конст. – индикация состояния битов значения аргумента, заданных маской Константа. Если хотя бы один такой бит установлен, индицируется ИСТИНА, иначе – ЛОЖЬ (для цветовых и текстовых атрибутов, а также для атрибутов Видимость и Подсказка); " Например, для индикации бита 4 надо задать "Конст"=16 или 0x10.
Для использования битов в программе можно использовать соответствующие операторы языка ST или блоки языка FBD.
Кроме того, можно привязывать любые аргументы любых каналов CALL к битовым атрибутам канала HEX16.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
aoalt
Junior Member / Новичок
Участник № / Member № 6724