Форум 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 7 » TRACE MODE 7 бесплатная базовая версия / TRACE MODE 7 free basic version » Отрицательные значения в 16-разрядном источнике Modbus

   
Автор / Author Тема / Topic: Отрицательные значения в 16-разрядном источнике Modbus
tikotsky
Junior Member / Новичок
Участник № / Member № 4209


Icon 1 отправлено / posted      Профиль для / Profile for tikotsky           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Читаю регистр из сети Modbus в виде 16-разрядного целого числа. Команда - R_1InReg(4), но возможный прототип канала - только ANALOG-32. При привязывании этого источника к аналоговому каналу в случае отрицательного значения на источнике значение в канале интерпретируется как беззнаковое, то есть в районе 65500. Если источник копируется в промежуточный канал, а после этого привязан к входному аргументу программы вида INT (не получается входной аргумент программы привязать непосредственно к источнику), то преобразование из INT в REAL происходит корректно. Можно ли решить данную проблему напрямую, без промежуточного канала и программы?
Сообщения / Posts 1 | Из / From: Russia  |  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 
Возможные привязки к каналам:
из HELPЖ
DISCRETE INPUT с (56, nBits)=16 или 32 – чтение 1 регистра (16 бит); групповой запрос по таким каналам строится автоматически. Если формат канала DISCRETE – 1∼∼F1(%ld,%hd), то полученное значение интерпретируется как целое со знаком.

ANALOG INPUT c (56, nBits)=Float или Double – чтение 1 регистра (16 бит), полученное значение интерпретируется как целое без знака.

Сообщения / Posts 879 | Из / 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 
quote:
Отправитель / Originally posted by tikotsky:
Читаю регистр из сети Modbus в виде 16-разрядного целого числа. Команда - R_1InReg(4), но возможный прототип канала - только ANALOG-32.

Здравствуйте. Прототип канала Вы можете задать самостоятельно. Нажмите на Analog-32 и выберите из списка то, что Вам необходимо.

quote:
Отправитель / Originally posted by tikotsky:
Читаю регистр из сети Modbus ...
При привязывании этого источника к аналоговому каналу в случае отрицательного значения на источнике значение в канале интерпретируется как беззнаковое, то есть в районе 65500...

В протоколе ModBus нет отрицательных чисел. Есть только беззнаковые. Это "источник данных" может знать, что число отрицательное. И это же должен знать "получатель", что бы значение от ModBus интерпретировать как отрицательное. Но сам ModBus будет считать его беззнаковым.

quote:
Отправитель / Originally posted by tikotsky:
Можно ли решить данную проблему напрямую, без промежуточного канала и программы?

Возможно все.
Внимательно читайте ответ от Nico.
Если значение дискретное, то можно сразу получить знаковое число.
Если число аналоговое (с плавающей запятой), то его придется масштабировать (через свойства этого же канала)

[ 18.12.2023, 15:19: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]

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