Форум 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 TCP/IP

   
Автор / Author Тема / Topic: Modbus TCP/IP
Андрей Мельников
Active Forum Member / Активный участник форума
Участник № / Member № 3046


Icon 1 отправлено / posted      Профиль для / Profile for Андрей Мельников           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Добрый день,

Есть ли проблема по выдаче по Modbus TCP/IP на ADAM-6066 при записи “W_SingleCoil(5) – передать значение одного дискретного сигнала”? У нас используется Trace Mode версии 6.06.

С уважением,
Андрей Мельников

Сообщения / Posts 72 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Проблем быть не должно. Эта функция во встроенном драйвере не изменялась.
Сообщения / Posts 15563 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Андрей Мельников
Active Forum Member / Активный участник форума
Участник № / Member № 3046


Icon 1 отправлено / posted      Профиль для / Profile for Андрей Мельников           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
У нас в версии 6.06 на Output канале выходит ошибка,
а версии 6.08 работает нормально.

Сообщения / Posts 72 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
У нас нет возможности анализировать конкретные проекты в старых релизах.
По кодам встроенного драйвера эта функция не модифицировалась.
Вы можете перехватить сетевой Modbus-трафик снифером и проследить различия прохождения соответствующих транзакций в разных релизах.
При этом Вы должны быть абсолютно уверены в идентичности проектных реализаций этой функции в проектах разных релизов.

Сообщения / Posts 15563 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Андрей Мельников
Active Forum Member / Активный участник форума
Участник № / Member № 3046


Icon 1 отправлено / posted      Профиль для / Profile for Андрей Мельников           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Если в 6.08 всё работает, то Modbus трафик проходит. Для чего снифер?
Сообщения / Posts 72 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Для того чтобы понять, почему в 6.06 та же Modbus-команда не проходит.
Сличите 2 перехвата и посмотрите, в чем разница.
У нас нет возможности анализировать Ваш проект релиза 6.06.

Сообщения / Posts 15563 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Андрей Мельников
Active Forum Member / Активный участник форума
Участник № / Member № 3046


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


Icon 1 отправлено / posted      Профиль для / Profile for TatFed           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте!
Хочу выполнить обмен данными между Trace Mode 6.09 и arduino uno по Мodbus rtu через СОМ порт. Предварительно написан скетч для ардуино, собрана схема с кнопкой, лампой и термометром и проверена связь arduino с компьютером. Далее сделан экран управления на Trace Mode с кнопкой, лампой и окошком с текстом для визуализации температуры. Для начала пытаюсь настроить обмен дискретными сигналами, чтобы по нажатию кнопки на схеме с arduino на экране управления загоралась лампа, а при нажатии кнопки на экране управления на схеме с arduino загорался светодиод. Настроила COM порт: -
- СОМ3
- Master
- 9600
- 0x1
- 8-1-n
- no
- 300
- 0
- 0
- 0
в узле RTM cоздала два канала НЕХ16 inp и out, в узле источники/приемники создала группу MODBUS и два компонента Rin_Byte(2)(для чтения дискретного сигнала) и W_Byte (для записи). Связала каналы узла RTM c компонентами MODBUS.
После запуска профайлера на микросхеме arduino мигает одна лампочка - значит какая-то связь есть, но при нажатии кнопок, обмена не происходит! Как понять в чем проблема? Может быть есть подобный пример проекта, где связывают arduino с TraceMode? Возможно неправильно выполняю настройку компонентов MODBUS (Rin_Byte(2): Номер порта-0х2; Адрес-0х0; Канал-0х4(здесь имею ввиду что читать нужно 4-й регистр); Тип протокола-ModBus; Направление-Input; Формат-Дискретный.)

Сообщения / Posts 2 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. Об использовании в практике проектирования на Trace Mode 6 устройства arduino не встречались.

2. Функция Rin_Byte(2) реализует опрос не регистров, а битовых входов в объеме 8 битов (1 байт).
Адресация битов в массиве Slave начинается с 0 (по стандарту протокола Modbus). Начальный адрес запроса равен значению настройки "Канал".

3. Адрес 0 в протоколе Modbus является широковещательным. Modbus-Slave на такой запрос не отвечает. Modbus-Master на такой запрос не ожидает ответа.

4. Проконтролировать установление связи и трафик обмена можно с помощью любого перехватчика типа Portmon.

Сообщения / Posts 15563 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
TatFed
Junior Member / Новичок
Участник № / Member № 6076


Icon 1 отправлено / posted      Профиль для / Profile for TatFed           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте! Спасибо за предыдущий ответ!
Установила связь Arduino Uno c Trace Mode через виртуальный COM-порт по протоколу Motbus RTU и настроила обмен дискретными данными вход/выход (кнопка/LED). Настройку выполнила следующим образом:
– в узле RTM_1 создала группу «Каналы», в которой создала два канала HEX16, один на вход (кнопка с микроконтроллера, которая зажигает лампу на экране скады), второй на выход (LED-лампа, которая загорается по нажатию кнопки на экране скады).
– в узле «Источники/Приемники» создала группу MODBUS, в котором создала два компонента: Rout_Word(3) для кнопки, сигнал Input, дискретный; W_word(6) для LED-лампы сигнал Output, дискретный;
– Связала каналы и компоненты «Источников/Приемников», а также каналы и аргументы экрана, запустила профайлер – все работает.
Но возникла сложность с сигналом типа float. Задача состоит в том, что я хочу посылать с экрана скады при помощи ползунка управляющий сигнал на Arduino Uno. Для контроля я отсылаю управляющий сигнал со скады и присылаю его обратно из Arduino (т.к. там нет возможности отладки). Настройку выполнила следующим образом:
– в узле RTM_1 в группе каналы создала два канала FLOAT (один типа output для посылки управляющего сигнала, второй типа input для приема (контроля) сигнала;
– в узле «Источники/Приемники» в группе MODBUS создала два компонента : Rout_Word(3) типа Input, аналоговый; W_word(6) типа Output, аналоговый;

– Связала каналы и компоненты.
При запуске профайлера по движению ползунка в выходном канале цифровое значение меняется, а во входном канале сначала отображается новое значение, но оно не соответствует истинному, а потом оно сбрасывается в «257». В ответной программе Arduino я сначала принимаю параметр типа float от TraceMode в 6, 7-ой регистры и присваиваю их в 0, 1-ый регистры для контроля параметра в TraceMode.
Правильно ли я выбираю компоненты «Источников/Приемников»? Может правильней использовать в «Источниках/Приемниках» компонент типа W_Float(16) для выдачи, и Rout_float(3) или Rin_float(4) для приема? При попытке использовать эти компоненты наблюдалось зависание Arduino. Напишите пожалуйста как правильно настроить все компоненты чтобы все работало или пришлите пример.

Сообщения / Posts 2 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. По стандарту Modbus HOLDING-регистры поддерживают функции записи (6, 16) и чтения (3).
Поэтому писать и читать Вы можете по одному адресу регистра.
Операцию "В ответной программе Arduino я сначала принимаю параметр типа float от TraceMode в 6, 7-ой регистры и присваиваю их в 0, 1-ый регистры для контроля параметра в TraceMode." ПРОВОДИТЬ НЕТ НЕОБХОДМОСТИ.

2. Действительно, если обрабатываемый параметр в контроллере размещается в двух регистрах и имеет стандартный формат FLOAT, Вам необходимо использовать в слое «Источники/Приемники» компонент типа W_Float(16) для выдачи и Rout_float(3) для приема по одному адресу регистра.
Надо только строго знать порядок передачи байтов 4-байтового числа (в этом нет единообразия). Если Вы сами писали программу для контроллера, Вы должны знать этот порядок.
Согласно нашей документации (см. раздел "Обмен по MODBUS")в релизе 6.09 для выбора порядка следования байтов нужно вручную создать текстовый файл modbus.set в папке узла. Файл содержит целое число от 0 до 3, указывающее следующий порядок байтов (байт 0 – младший байт мантиссы, байт 3 – байт знака и порядка):
i. 0 – 3-2-1-0 (данный порядок следования байтов соответствует ModSim32-Float(Swapped), устанавливается в отсутствие файла modbus.set);
ii. 1 – 0-1-2-3;
iii. 2 – 1-0-3-2 (данный порядок следования байтов соответствует ModSim32-FloatingPoint);
iv. 3 – 2-3-0-1.

Надо иметь в виду, что в актуальном релизе Trace Mode 6.10.2 используется более гибкий механизм настройки порядка байтов в Modbus. Поэтому при переходе на другой регистр Вам надо будет изменить эти настройки.
что при переходе на

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

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2