1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Преобразование типов данных

Модератор: Глоб.модераторы

Ответить

Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 41
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Преобразование типов данных

Сообщение Stasyllius_83 »

Добрый день! В мануалах написано о преобразовании типов данных, что при преобразовании с real на int происходит округление дробной части до ближайшей четной цифры, с int в real без потери, а с dint в real при значении в dint больше 24 бит данные теряются.
1.Есть задача передать данные с аналогового входного модуля, который дает real (5069-IY) по modbus соответственно int. Просто запихнуть тэг с модуля в регистр модбаса(Add_on скачан на сайте rockwellautomation) и он преобразуется контроллером с погрешностью в виде округления.
2. Задача масштабировать инструкцией Scale (SCL). На входе Scale (SCL) real стоит значение с типом dint, которое вряд ли потянет на все 24 бита.
Может кто-нибудь сталкивался с подобными ограничениями и что-то дельное придумал или накопал? Буду благодарен за ответы!

Sergy6661
специалист
специалист
Сообщения: 655
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 20 раз
Поблагодарили: 89 раз

Преобразование типов данных

Сообщение Sergy6661 »

Stasyllius_83 писал(а): 06 окт 2021, 12:10 Есть задача передать данные с аналогового входного модуля, который дает real (5069-IY) по modbus соответственно int.
Прям вот точно что и как именно этот модуль отдает, но у Роквелла прямо в конфигурации модуля настраивается масштабирование и тогда, не принимая во внимание кол-во бит, а ориентируясь на числовую размерность делаем преобразование. Причем если умножить Real *10...*100, то при преобразовании в INT пойдет и необходимая дробная часть. Например: на аналоговом входе датчик 4..20 ма, модуль отдает Value Real = 20.005 ма, Real_to_Int(Real*1000) отдаст INT= 20005, что вполне помещается в диапазон 32767. Какой там Add_on вы используете я не знаю, только у них на все описаловки есть.
Stasyllius_83 писал(а): 06 окт 2021, 12:10 2. Задача масштабировать инструкцией Scale (SCL). На входе Scale (SCL) real стоит значение с типом dint, которое вряд ли потянет на все 24 бита.
DINT потянет на все 32 бита, поэтому при преобразовании REAL_TO_DINT вообще все просто. А вот обратно можно потерять...

Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 41
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Преобразование типов данных

Сообщение Stasyllius_83 »

Sergy6661 писал(а): 07 окт 2021, 08:41 Причем если умножить Real *10...*100, то при преобразовании в INT пойдет и необходимая дробная часть. Например: на аналоговом входе датчик 4..20 ма, модуль отдает Value Real = 20.005 ма, Real_to_Int(Real*1000) отдаст INT= 20005, что вполне помещается в диапазон 32767. Какой там Add_on вы используете я не знаю, только у них на все описаловки есть.
Такая же идея была умножить на 10. Просто придется предупредить заказчика об этом.
В описаловке чего-то особого нет. Только известно , что регистры INT и контроллер по идее должен автоматически сделать преобразование с вышеописанным округлением. Не давно работаю с Allen Bradley. Вопрос больше для тех, кто встречал какие-нибудь подходящие для этого add-on-ы. Благодарю за ответ!

Sergy6661
специалист
специалист
Сообщения: 655
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 20 раз
Поблагодарили: 89 раз

Преобразование типов данных

Сообщение Sergy6661 »

Stasyllius_83 писал(а): 08 окт 2021, 09:42 Просто придется предупредить заказчика об этом.
Вы должны передать заказчику так называемый "Модбас лист" или "Перечень и описание регистров модбас сервера устройства такого-то" с указанием адреса устройства и параметров соединения.

Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 41
Зарегистрирован: 08 сен 2021, 09:02
Имя: Стас
Страна: РФ
город/регион: Краснодар

Преобразование типов данных

Сообщение Stasyllius_83 »

Sergy6661 писал(а): 11 окт 2021, 09:07
Stasyllius_83 писал(а): 08 окт 2021, 09:42 Просто придется предупредить заказчика об этом.
Вы должны передать заказчику так называемый "Модбас лист" или "Перечень и описание регистров модбас сервера устройства такого-то" с указанием адреса устройства и параметров соединения.
Благодарю за ответы.
Ответить

Вернуться в «ПЛК»