Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

TO_EUHI - преобразование из REAL в формат EUHI


Назначение.
Функция TO_EUHI() преобразовывает 32-разрядное вещественное значение в целочисленное значение формата EUHI.
 
Входные параметры.
  • in1 - тип данных REAL (32-битное вещественное число).
  • in2 - тип данных INTEGER (возвращаемое значение в случае ошибки).
     
Выходной параметр.
  • out - тип данных INTEGER (целое число в формате EUHI).
 
Алгоритм преобразования.
Рассмотрим алгоритм преобразования в формат EUHI на примере вещественного числа 20.24:
  • Структура итогового 16-битного формата состоит из старшего бита для определения знака, 6 бит экспоненты и 9 младших бит мантиссы:
  • Первый знаковый бит заполняется 0 при положительном числе и 1 при отрицательном:
  • Определяется значение экспоненты: единица в двоичном формате смещается влево на количество разрядов, при которых полученное после смещения число максимально близко к исходному значению, но не превышает его. Для числа 20.24 экспонента равна 4, так как при смещении на 4 разряда влево получаем значение 16 - максимальное не превышающее 20.24.
  • Осуществляется смещение экспоненты на десятичное число 31 и ее запись в битовую маску:
  • Определяется значение мантиссы по формуле (<исходное значение> - 2exp) * 512 / 2exp, с отбрасыванием дробной части. После чего двоичное представление результата записывается в битовую маску.
  • Итоговая 16-битная маска преобразовывается в целочисленное значение: 01000110100001112 = 1805510.
 
Описание синтаксиса.
На языке ST
На языках FBD/LD
out := TO_EUHI(in1, in2)
Примеры:
//out = 18055
TO_EUHI(20.24, 3);  
//out = 50823
TO_EUHI(-20.24, 3);
//out = 3, т.к. неверное значение
TO_EUHI(2e+26, 3); 
Примеры: