Перетворення REAL у 2 цілі числа - форум з автоматизації

Форум з автоматизації, взаємодопомога та обмін промисловими PLC.

перетворення

Перетворити REAL на 2 цілі числа

Перетворити REAL на 2 цілі числа

Повідомлення від Нікат »28 березня 2019 р., 12:59

У мене є коротке запитання про перетворення РЕАЛЬНОЇ змінної у два цілих числа для перегляду на дисплеї

Приклад: Щоб відобразити 123456 (десятковий) на екрані (або 1110 0010 0100 0000 у двійковому вигляді), я повинен зробити доступними 2 слова:
-1-е: 1 (десяткове) або 1 у двійковому.
-2-е: 57920 або 1110 0010 0100 000 у двійковому вигляді

Потім ці 2 цілі числа збираються, щоб утворити єдиний DINT, причому 1-е слово є найбільш значущим


Моє питання полягає в тому, як перетворити одну зі своїх РЕАЛЬНИХ змінних у 2 цілі числа, щоб мати можливість відображати їх на екрані ?
(Наприклад, я хотів би відобразити 312.1)
Я думав перетворити на DINT, щоб потім розкласти цей DINT на 2 цілі числа, але це не працює, як я хочу.

У вас є невелика ідея ?

Re: Перетворення REAL у 2 цілі числа

Повідомлення від philou77 »28 березня 2019 р., 13:20

Реальний - це мантиса та показник експоненти, він не має нічого спільного з цілими числами, одиничними чи подвійними.

вам потрібно пройти реальну функцію -> Dint, але будьте обережні, ємність підрахунку різна. якщо реальна занадто велика, втрата вартості !

Re: Перетворення REAL у 2 цілі числа

Повідомлення від Брюс33 »28 березня 2019, 13:28

Пояснення плутані.
Що це за дисплей, який не може відображати ні плаваючого слова, ні цілого слова з 32 бітів ?

Щоб відобразити число з комою із цілочисельної змінної, потрібно визначити постійну кількість цифр після коми.
Напр. ціла змінна містить 3121, але ми відображаємо 312.1

Щодо перетворень змінних типів, припускаючи, що ви програмуєте за допомогою Unity Pro (тепер його називають EcoStruxure Control Expert):

  • Функція REAL_TO_DINT перетворює фактичне значення у ціле число. Вам доведеться помножити дійсне значення, якщо ви хочете зберегти цифри після десяткової коми.
  • Функція DINT_AS_WORD дозволяє розбити ціле 32-бітове значення на два 16-бітові слова.
Також необхідно знати, чи може значення бути від’ємним.