Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » TRACE MODE 5 бесплатная версия / TRACE MODE 5 Free version » ModbusRTU and float

   
Автор / Author Тема / Topic: ModbusRTU and float
Савинцев Евгений
Forum Member / Участник форума
Участник № / Member № 611


Icon 1 отправлено / posted      Профиль для / Profile for Савинцев Евгений           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте, у меня возникло затруднение [cry / плачь]
При попытке считать данные из контроллера Quantum CPU11302 (Schneider Electric) по протоколу Modbus RTU не получается считывать числа с плавающей точкой (код команды Rout Float(3)), целочисленные данные (код команды Rout Word(3)) считываются нормально.
Суть проблемы.
В память контроллера я записываю число с плавающей точкой, например 243.2438 (длина 4 байта в контроллере оно имеет тип REAL) по адресу 400001. при считывании числа с помощью команды Rout Float(3) из контроллера в ТМ я получаю следующее:
1. СН=0000 - в канал ТМ записывается число 0.228773
2. СН=0001 - в канал ТМ записывается число 243.0 (равенство с целой частью контрольного числа, скорее всего совпадение)
Похоже я чего то не понимаю [duno / незнайка] , помогите пожалуйста.

Сообщения / Posts 55 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1) Насколько я понимаю - адрес 400001 в запросе должен иметь значение адреса на 1 меньше, т.е. - CH=0000.
2) Необходимо посмотреть в документации на ModBus этого контроллера в каком порядке он принимает и отвечает байтами Float-значения в пакетах ModBus. Дело в том, что практика показывает, что здесь бывают несоответсвия стандарту Modicon'овского ModBus'а - кто-то в формате Motorola, кто-то в формате Intel работает, а кто-то и вообще может в произвольном порядке байты в ответе по Float'ам выдавать.

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Савинцев Евгений
Forum Member / Участник форума
Участник № / Member № 611


Icon 5 отправлено / posted      Профиль для / Profile for Савинцев Евгений           Редактировать/удалить сообщение / Edit/Delete Post 
Спасибо. [beer / пиво]
Я провел небольшой эксперимент [clever / умный]
С помощью Rout Word(3) я произвел чтение байтов по адресу 400001(СН=0000)и 400002(СН=0001)и получил следующий результат:
400001 = 3Е6А НЕХ и 400002 = 4373 НЕХ
т.о. по адресу 400001 хранятся 2 младших байта моего числа (243.2438), а по адресу 400002 2 старших байта. Но в канале ТМ значение по адресу 400001 считается старшими байтами, а по адресу 400002 младшими. В результате в канале ТМ я имею число 0.228773 (смотри предыдущее письмо).
Выводы: Что мне делать я понял. Но остался вопрос.
1. При использовании ТСР/IP и Modbus plus я столкнусь с тем же эффектом?
2. У кого не согласован порядок обработки байтов у ТМ [attention / внимание] или у контроллера.
Еще раз спасибо.

Сообщения / Posts 55 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
[attention / внимание] У нас то как раз все правильно (согласно Modicon'овскому стандарту), а вот многие производители аппаратного обеспечения, к сожалению, этим пренебрегают. [Вращающиеся глаза / Roll Eyes]
В последней библиотеке modbus.dll мы ввели возможность произвольного конфигурирования расположения байтов в ответе (приходится подстраиваться [Улыбка / Smile] ). Модуль я выслал Вам по E-mail.
Данная возможность будет работать как для ModBus RTU, так и TCP\IP.
Для ModBus plus это работать не будет. [Неодобрение / Frown]

Для настройки нужной последовательности необходимо сделать следующее:
В директории, где находится modbus.dll необходимо создать файл modbus.set, а в нем указать число от 0 до 3, которое задает соответствующую комбинацию "выворачивания" Float'а: [Спокойствие / Cool]
  • 0
    0-3
    1-2
    2-1
    3-0
  • 1
    0-0
    1-1
    2-2
    3-3
  • 2
    0-1
    1-0
    2-3
    3-2
  • 3
    0-2
    1-3
    2-0
    3-1

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Савинцев Евгений
Forum Member / Участник форума
Участник № / Member № 611


Icon 6 отправлено / posted      Профиль для / Profile for Савинцев Евгений           Редактировать/удалить сообщение / Edit/Delete Post 
Cпасибо [fun / веселый] письмо уже получил.
[prey / молящийся]
[prey / молящийся] [prey / молящийся]
[prey / молящийся] [prey / молящийся] [prey / молящийся]

Сообщения / Posts 55 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Савинцев Евгений
Forum Member / Участник форума
Участник № / Member № 611


Icon 1 отправлено / posted      Профиль для / Profile for Савинцев Евгений           Редактировать/удалить сообщение / Edit/Delete Post 
В общем все заработало.
Вспомнил про один вопрос может ли ТМ в сети Modbus выступать как ведомый узел?

Сообщения / Posts 55 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Нет - у нас реализован только Master режим, как Slave TM работать не умеет.
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
aglks
Junior Member / Новичок
Участник № / Member № 1010


Icon 5 отправлено / posted      Профиль для / Profile for aglks           Редактировать/удалить сообщение / Edit/Delete Post 
У меня аналогичная проблема с перекручиванием Float при связи TM 5.10 через Modbus с Rosemount 3095FB
Пришлите пожалуйста Modbus.dll -> aglks@front.ru
Заранее благодарен

Сообщения / Posts 1 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Для 5.10 одной Dll обойтись будет нельзя, потому как там по части ModBus еще и сам Drawserv был модифицирован. Вам надо скачать обновление 5.15.
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / 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