Добрый день! В мануалах написано о преобразовании типов данных, что при преобразовании с 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 бита.
Может кто-нибудь сталкивался с подобными ограничениями и что-то дельное придумал или накопал? Буду благодарен за ответы!
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Преобразование типов данных
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Преобразование типов данных
Прям вот точно что и как именно этот модуль отдает, но у Роквелла прямо в конфигурации модуля настраивается масштабирование и тогда, не принимая во внимание кол-во бит, а ориентируясь на числовую размерность делаем преобразование. Причем если умножить 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 Есть задача передать данные с аналогового входного модуля, который дает real (5069-IY) по modbus соответственно int.
DINT потянет на все 32 бита, поэтому при преобразовании REAL_TO_DINT вообще все просто. А вот обратно можно потерять...Stasyllius_83 писал(а): ↑06 окт 2021, 12:10 2. Задача масштабировать инструкцией Scale (SCL). На входе Scale (SCL) real стоит значение с типом dint, которое вряд ли потянет на все 24 бита.
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Преобразование типов данных
Такая же идея была умножить на 10. Просто придется предупредить заказчика об этом.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 вы используете я не знаю, только у них на все описаловки есть.
В описаловке чего-то особого нет. Только известно , что регистры INT и контроллер по идее должен автоматически сделать преобразование с вышеописанным округлением. Не давно работаю с Allen Bradley. Вопрос больше для тех, кто встречал какие-нибудь подходящие для этого add-on-ы. Благодарю за ответ!
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Преобразование типов данных
Вы должны передать заказчику так называемый "Модбас лист" или "Перечень и описание регистров модбас сервера устройства такого-то" с указанием адреса устройства и параметров соединения.
-
- здесь недавно
- Сообщения: 41
- Зарегистрирован: 08 сен 2021, 09:02
- Имя: Стас
- Страна: РФ
- город/регион: Краснодар
Преобразование типов данных
Благодарю за ответы.