Форум 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 professional version » Modbus чтение отрицательного значения из регистра

   
Автор / Author Тема / Topic: Modbus чтение отрицательного значения из регистра
ViktorMaleika
Forum Member / Участник форума
Участник № / Member № 9669


Icon 1 отправлено / posted      Профиль для / Profile for ViktorMaleika           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.
После нового релиза снова поднимаю этот вопрос, надеюсь появилось адекватное решение, а не через канал call. У меня есть регистр modbus, к примеру holding 1, он отображает температуру от - 500 до 500 (что соответствует -50.0 до 50.0 градусов). Соответственно это 16 bit signed (int 16).Как правильно сделать источник, чтобы он отображал отрицательную температуру? Перепробовал все форматы (246). Каналы создавал типа int(16), uint(16), real. Всегда когда температура становится меньше нуля, показания начинаются от 65535 и на уменьшение.

Сообщения / Posts 38 | Из / 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 
канал ANALOG на который заведен источник MODDBUS
c командой(305) R_1HReg или R_1InReg
далее сами масштабируете

Сообщения / Posts 921 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ViktorMaleika
Forum Member / Участник форума
Участник № / Member № 9669


Icon 1 отправлено / posted      Профиль для / Profile for ViktorMaleika           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Не работает. Вычитывается цифра в районе 65000. Если у вас работает, напишите пожалуйста что вы указываете в источниках (какой тип канала у вас выбран) и непосредственно в МРВ в свойствах аналогового канала какой формат выбран
Сообщения / Posts 38 | Из / 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 
Можно сразу читать каналом Analog (см. Справочная Система Источники - Net/RS - Modbus - Команды)

ANALOG INPUT c (56, nBits)=Float или Double – чтение 1 регистра (16 бит). Полученное значение интерпретируется как целое без знака (если нижний предел (27, LL) канала ANALOG неотрицательный) или как целое со знаком (если (27, LL) < 0).

Сообщения / Posts 17426 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ViktorMaleika
Forum Member / Участник форума
Участник № / Member № 9669


Icon 1 отправлено / posted      Профиль для / Profile for ViktorMaleika           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Это не работает для групповых запросов. Например я групповым запросом вычитываю 100 R-1HReg(3), int(16). Некоторые из них имеют отрицательное значение. Канал CALL.CGR который создался при перетаскивании из источников в проект, в своих аргументах отображает отрицательные значения. Но если к такому аргументу привязать аналоговый источник (даже с LL(27)=-100) он всё равно не отображает отрицательное значение.
Сообщения / Posts 38 | Из / 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 
Здравствуйте!
Это не работает для групповых запросов.
Работает.
Групповой запрос можно сделать через Call (грубо говоря, вручную).
Но так же, групповой запрос создается автоматически (если это возможно).

Т.е., Вам достаточно вместо Вашего Call.CGR (допустим на 10 аргументов) сделать 10 числовых каналов. Будет все тот же групповой запрос (если в источниках не стоит флаг 310)

Сообщения / Posts 17426 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ViktorMaleika
Forum Member / Участник форума
Участник № / Member № 9669


Icon 1 отправлено / posted      Профиль для / Profile for ViktorMaleika           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Я в источниках создаю групповой запрос:
R1_HReg(3) адрес (91) = 100, число аргументов (378) = 100, прототип канала (246) = CHGR, перетаскиваю этот запрос в RTM, там создастся Call.CGR на 100 атрибутов. Далее из этих атрибутов я создам 100 каналов.
Это равнозначно тому что:
я в источниках создам 100 источников R1_HReg(3)_1 адрес (91) = 100, R1_HReg(3)_2 адрес (91) = 101...R1_HReg(3)_100 адрес (91) = 200, перетащу их в RTM, из этого создастся 100 каналов, т.е. в итоге эти мои 100 источников будут вычитываться одним групповым запросом?
Ну или не по 100 а по 64 т.к. в инструкции:
quote:
разница адресов переменных в канале и базовом канале не должна превышать максимально допустимую величину (DELTAMAX):
для регистров – 64 (для двойных регистров – 32);
для битов – 64.

И тогда в принципе использовать атрибуты число аргументов (378)>0 и прототип канала (246) = CHGR практически нет необходимости?
Сообщения / Posts 38 | Из / 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 
- да
Сообщения / Posts 921 | Из / 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