Здравствуйте! Не получается получить данные с контроллера. Контроллер подключен к компьютеру через порт COM2. Порт контроллера настроен в режиме RTU 9600,8,n,1 Подскажите, в чем может быть проблема?
Когда запускаю RTM, светодиод индикации обмена по порту, на контроллере, никаких признаков жизни не подаёт.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В файле *.cnf введите ключ DEBUGON=200 для регистрации в профайлерном протоколе возможных ошибок в организации обмена по COM-порту. Некоторые из ошибок регистрируются также в файле tm6_log.txt.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Обратите внимание на строки в протоколе (12:42:53) WRN_RS:found channels = 0
(12:43:20) INF_RS:COM2 TRANSACTION=0
Эти сообщения говорят о том, что в проекте нет каналов, настроенных на обращение к инициализированному порту COM2. Поэтому нет обмена.
Надо проверить настройки "Источников" и привязки к ним каналов.
Posted by swimmers (Участник № / Member № 5660) on :
Странно. На первый взгляд всё указано как надо. Источники/приёмники->PLC_1->Delta_Group_1->Delta#1 Параметры: Порт - 1 Номер станции - SN=02h Номер регистра - 9990 Тип регистра - D Направление - Input
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
А какой канал привязан к этому "Источнику"? Какое назначение COM-порта в узле?
Posted by swimmers (Участник № / Member № 5660) on :
Создавал ссылку перетащив компонент Delta#1 в группу Каналы. Delta#1:Значение (Источники/Приемники.PLC_1.Delta_Group_1)
Назначение COM2 Master, т.е. всё стоит по умолчанию.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Прошу прощения за невнимательность. В приведенном Вами примере http://www.adastra.ru/products/drivers/Delta_DVP/ используется "Источник" из группы PLC/Mitsubishi_Group с указанием в строке "Дополнительно" параметра "Delta:". Группа Delta_Group прописана на перспективу (она не документирована). Сейчас эта группа не подключена. Сделайте в Вашем проекте так же, как в примере.
Posted by swimmers (Участник № / Member № 5660) on :
Posted by swimmers (Участник № / Member № 5660) on :
Хотя светодиод мигает, уже лучше
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
По протоколу на каждый запрос получен ответ. Надо посмотреть атрибут "Достоверность" (4) у канала. Если он _F (FALSE), значит, ответ пришел с ошибкой. Возможно, ошибка в заданном Вами номере регистра. Код ошибки можно посмотреть, если перехватить трафик COM-порта, например, PortMon'ом.
Posted by swimmers (Участник № / Member № 5660) on :
Из D0 данные читаются. Думаю это связано с адресацией в памяти контроллера, контроллер всё-таки новый, и думаю отличия от Mitsubishi присутствуют. В регистрах D9990-9999 хранятся данные полученные из модулей расширения контроллера. Надеюсь в следующих версиях программы вам это удастся реализовать.
Спасибо!
Posted by swimmers (Участник № / Member № 5660) on :
Не буду плодить темы, спрошу в этой.
Как в Trace Mode отображать состояние входов, выходов и промежуточных реле PCL?
Как делаю я. Создаю компонент c параметрами:
Имя: Х0-17 Порт: 1 Номер станции: 02h Номер регистра: 0 Тип регистра: X Направление: Input Дополнительно: Delta:
Затем создаю канал HEX16
Имя: X0-17 Привязка: X0-17:Значение (Источники/Приемники.PLC_1.Mitsubishi_Group_1) остальные параметры по умолчанию
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Контроллер возвращает код ошибки:
M_INF:ERR IN: 02 81 02 31 91
По стандарту Modbus это означает, что адрес запрашиваемой переменной некорректный. По описанию системы адресации в контроллере DELTA регистры X адресуются следующим образом: 0x400+<номер регистра>. В запросе функция запроса и адрес регистра сформированы в соответствии с Вашими настройками. Надо разбираться с системой адресации в контроллере.
Posted by swimmers (Участник № / Member № 5660) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Контроллер возвращает код ошибки:
M_INF:ERR IN: 02 81 02 31 91
По стандарту Modbus это означает, что адрес запрашиваемой переменной некорректный. По описанию системы адресации в контроллере DELTA регистры X адресуются следующим образом: 0x400+<номер регистра>. В запросе функция запроса и адрес регистра сформированы в соответствии с Вашими настройками. Надо разбираться с системой адресации в контроллере.
Вот вырезка из руководства по программированию контроллера: Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Мы примем во внимание это функциональное несоответствие для последующего исправления. Видимо, пока придется воcпользоваться напрямую необходимыми функциями Modbus RTU.
Posted by swimmers (Участник № / Member № 5660) on :
да, по Modbus RTU работает, но есть одно НО! данные из D9990-9999 так-же не доступны. Их Modbus адреса A706-A70F
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Надо также, как для типа данных X посмотреть, что возвращает контроллер при запросе регистров D с указанными адресами.
Posted by swimmers (Участник № / Member № 5660) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Надо также, как для типа данных X посмотреть, что возвращает контроллер при запросе регистров D с указанными адресами.
Когда в качестве источника используется Mitsubishi_Group
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В ответе устройства M_INF:ERR IN: 02 84 01 72<r> c0 указывается, что используемая функция 04 Modbus в контроллере не поддерживается. Обращение к регистрам D в контроллере DELTA (в Вашем проекте) с помощью драйвера, предоставляемого Trace Mode 6, осуществляется с функцией 03 Modbus. Кадр запроса выглядит следующим образом 02 03 a7 06 00 01 47 4c
Вы задали в качестве источника Modbus Rin_Word(4), а надо было Rout_Word(3).
Posted by swimmers (Участник № / Member № 5660) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: В ответе устройства M_INF:ERR IN: 02 84 01 72<r> c0 указывается, что используемая функция 04 Modbus в контроллере не поддерживается. Обращение к регистрам D в контроллере DELTA (в Вашем проекте) с помощью драйвера, предоставляемого Trace Mode 6, осуществляется с функцией 03 Modbus. Кадр запроса выглядит следующим образом 02 03 a7 06 00 01 47 4c
Вы задали в качестве источника Modbus Rin_Word(4), а надо было Rout_Word(3).
Ошибок то нет, но значение как и прежде 0.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Для уточнения ответа контроллера придется перехватывать трафик обмена с помощью перехватчика типа PortMon.
Posted by swimmers (Участник № / Member № 5660) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Для уточнения ответа контроллера придется перехватывать трафик обмена с помощью перехватчика типа PortMon.
PortMon у меня не работает. Видимо он не понимает виртуальный ком порт. У меня ноутбук.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
У канала, осуществляющего запрос регистра D, ДОСТОВЕРНОСТЬ (атрибут 4) взведена (F) или сброшена (T)? Если сброшена, значит пришел корректный ответ.
Для проверки интерфейса можно временно использовать другой ПК или другую версию PortMon.
Posted by swimmers (Участник № / Member № 5660) on :
Использовалась программа "Advanced Serial Port Monitor", канал "Rout_Word(3)":
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Advanced Serial Port Monitor должен выдать строки WRITE и READ с их содержимым. В приведенном протоколе транзакции не зарегистрированы.
Posted by swimmers (Участник № / Member № 5660) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Advanced Serial Port Monitor должен выдать строки WRITE и READ с их содержимым. В приведенном протоколе транзакции не зарегистрированы.
По всей видимости WRITE (HEX): 02 03 A7 06 00 01 47 READ (HEX): 02 03 02 00 00 FC 44
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Контроллер с сетевым номером 2 ответил на функцию 03 Modbus двумя байтами 00 00. В запрашивающем канале должен быть 0.
Есть ли у Вас альтернативное средство проверки реального содержимого запрашиваемого регистра по последовательному интерфейсу?
Тогда можно перехватить транзакции этого "альтернативного средства" и сравнить его с транзакциями, реализованными в проекте.
Posted by swimmers (Участник № / Member № 5660) on :
Я прошу прощения за свою невнимательность Регистр не тот пытался считать. С нужным мне регистром всё заработало, как при Modbus так и при использовании Mitsubishi
Posted by AdAstra Technical Support (Участник № / Member № 4) on :