• Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  • Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже предостаточно - придумайте что-то пооригинальнее.
  • Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  • За поиск и предложение пиратского ПО - бан без предупреждения.
  • Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  • Перед тем как что-то написать - читать здесь и здесь.

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

Ответить

Автор темы
Stasyllius_83
здесь недавно
здесь недавно
Сообщения: 14
Зарегистрирован: 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
освоился
освоился
Сообщения: 242
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 3 раза
Поблагодарили: 22 раза

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

Сообщение 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
здесь недавно
здесь недавно
Сообщения: 14
Зарегистрирован: 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
освоился
освоился
Сообщения: 242
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 3 раза
Поблагодарили: 22 раза

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

Сообщение Sergy6661 »

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


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

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

Сообщение Stasyllius_83 »

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

Ответить

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