Форум 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 » Редактор проекта TRACE MODE 6 / » Modbus Write Registers (16)

   
Автор / Author Тема / Topic: Modbus Write Registers (16)
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.
Возникла проблема при записи регистра в Slave устройство Modbus TCP.
Подключение идет по протоколу Modbus TCP к панели производства B&R. Чтение ее регистров осуществляется нормально, контроль достоверности канала работает, а вот запись регистров нет. При этом Modbus Poll-у удается записывать данные в регистры командой Write Multiple Registers (16).
Я создал группу MODBUS, в ней компонент W_Word(16)#3, в его свойствах указал направление Output, COM port 0, устройство 0, канал 0 (для записи с первого регистра), формат Analog, тип протокола TCP/IP, задал IP адрес панели 192.168.0.111.
Далее создал канал CALL типа ChGroupReq с параметром 0 направлением Output. Привязал W_Word(16)#3 к созданному каналу. В канале создал 3 аргумента типа INT направлением OUT. В настройках экрана создал 3 аргумента с теми же параметрами, привязал аргументы экрана к аргументам канала. Создал 3 кнопки типа ввести и передать значение, привязанные к соотв. аргументам экрана. При запуске МРВ при вводе значений с кнопок регистры панели не меняют своего значения. Где я допустил ошибку?
Заранее спасибо.

Сообщения / Posts 15 | Из / 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 
Если "ChGroupReq с параметром 0 направлением Output", то он будет отрабатывать только по принудительной команде, например, через передачу "1" в атрибут 39 (EXEC).
Можно компонент W_Word(16)#3 задать с напривлением INPUT и соответствующий "ChGroupReq с параметром 0 направлением INPUT".
Такой канал будет передавать любые изменения значений его аргументов.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Поменял на INPUT, остальное оставил прежним - все равно не работает.
Сообщения / Posts 15 | Из / 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 
Вы изменяли значения аргументов канала "ChGroupReq с параметром 0 направлением INPUT", привязанного к компоненту W_Word(16)?

Надо проводить диагностику.
1. Замените канал ChGroupReg на числовой и проверьте запись индивидуальную.
2. В файле конфигурирования запуска узла задать ключ DEBUGON=400. В протоколе профайлера могут быть сообщения об ошибках сетевого обмена.
3. В атрибуте 240 канала ChGroupReg при неудачной транзакции будет код ошибки.
4. Существует и способ получения расширенной диагностической информации. Для этого надо создать диагностический канал ChGroupReq, привязанный к диагностической переменной @e_TCP_ModBus (см. "Управление и диагностика обмена по встроенным протоколам"). В его аргументах можно увидеть статус обмена с устройством и информацию об ошибках.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Изменение канала ChGroupReq на НЕХ16 ни к чему не привело. Подключил к 240-му атрибуту канала ChGroupReq аргумент экрана, вывел в поле текст и получил код ошибки 8198. Создал канал диагностики как вы сказали, вывел реальное его значение и аргументы (4 штуки) на экран. Получил следующее: R = 2, arg0 = 2, arg1 = 1,39073*e^009, arg2 = 0, arg3 = 1,39073*e^009. Как я понял, т.к. R = 2, соединение установлено. Но что означают другие коды ошибок - я не нашел.
Сообщения / Posts 15 | Из / 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 
Надо задать тип данных у аргументов диагностического канала UDINT.

Ключ диагностики DEBUGON=400 задавали?
Какие сообщения об ошибках имеются в профайлерном протоколе?

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Аргументы экрана и канала установил INPUT формата UDINT, но показания не изменились.
А в какой файл нужно писать ключ? Как он называется?

Сообщения / Posts 15 | Из / 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 
1,39073*e^009 - это формат вещественно числа с плавающей точкой.
Целочисленные аргументы не могут так отображать числа.

Ключ DEBUGON=400 следует ввести в файл TMcom_<ordinal>.cnf, который должен быть размещен в папке узла (см. "Приложения/Задание параметров работы мониторов").
Протокол профайлера также размещается в папке узла. Это текстовый файл с расширением .txt и именем, совпадающим с именем файла .dbb.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Посмотрел лог, нашел там следующее:
INF_TCP:HOST 192.168.0.33:28156 connect to 192.168.0.111:502
(17:49:46) ERR_TCP:recieve wrong command Call_W_out_Words
где Call_W_out_Words - канал ChGroupReq на запись регистров, описанный выше.

Аргументы все поставил целочисленные, и тем не менее выводят они REAL.

Сообщения / Posts 15 | Из / 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 
1. Из Вашего первого поста:
"Я создал группу MODBUS, в ней компонент W_Word(16)#3, в его свойствах указал направление Output, COM port 0, устройство 0, "
Если Вы задаете адрес устройства 0, то по стандарту Modbus соответствующая команда будет считаться широковещательной. Команда записи ожидает подтверждения.
"ERR_TCP:recieve wrong command Call_W_out_Words"
означает, что устройство не вернуло ожидаемый ответ с правильным кодом команды.

Надо задать правильный адрес устройства.

2. Проверьте у ГЭ, отображающих диагностические аргументы, форматы отображения. Они должны соответствовать типам данных в аргументах.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Форматы совпадают. Поменял на адрес устройства 1 (реальный адрес Modbus-Slave), но это тоже не помогло. Могу я прислать свой проект (он достаточно прост), чтобы вы подкорректировали, что нужно? И если да, то на какой адрес?
Сообщения / Posts 15 | Из / 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 
Присылайте проект с подробными комментариями.
Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Отправил на hotline@adastra.ru
Сообщения / Posts 15 | Из / 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 
В проекте выявлены ошибки.
Откорректированный проект возвращен почтой.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Во всем разобрался, спасибо большое.
Сообщения / Posts 15 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Лобастов Сергей
Junior Member / Новичок
Участник № / Member № 6240


Icon 1 отправлено / posted      Профиль для / Profile for Лобастов Сергей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Если кто еще столкнется с подобной проблемой, то чтобы ее устранить надо поставить аргументам канала на запись регистров тип UINT, INPUT, а аргументам экрана, к ним привязанным, поставить тип UINT, OUTPUT, а также задать ненулевой адрес устройства в "Источниках/приемниках".
Сообщения / Posts 15 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
denchik
Junior Member / Новичок
Участник № / Member № 6225


Icon 1 отправлено / posted      Профиль для / Profile for denchik           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Пытаюсь записать число с плавающей точкой в регистр(если быть точным в 2 регистра) контроллера.
Создал в Источниках/приемниках W_Float(16) - указал его как INPUT, затем в узле создал канал Float W_Float(16), привязал в экран, аргумент экрана указал как REAL OUTPUT, хочу чтобы по отжатию кнопки(ввести и передать) записывалось число в указанный регистр.
Все работает, но при просмотре регистров, оказывается, что туда записывается огромное число. Знаю, что где то напутал с типом данных, не могу понять где

Сообщения / Posts 30 | Из / From: Казахстан  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. в Источниках/приемниках W_Float(16) = OUTPUT !
2. FLOAT занимает 2 регистра
3. просмотр регистров чем ?

Сообщения / Posts 806 | Из / 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