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

GETAR_D - чтение 8 байт из массива в DOUBLE


Назначение.
Функциональный блок используется для чтения 8 байт из массива с последующим их преобразованием в вещественное число двойной точности. Содержимое массива не изменяется.
 
Состав структурной переменной.
Переменная со структурным типом GETAR_D будет добавлена в локальный словарь автоматически при добавлении блока в редактор.
Описание алгоритма.
  • На вход INP передается ссылка на массив, из которого будет прочитано 8 байт данных, начиная с элемента INP[OFF].
  • Если параметр SEQ=0 (по умолчанию), порядок следования выбранных в массиве байт не изменяется: байт из элемента INP[OFF] будет скопирован в нулевой (младший) байт параметра OUT, из элемента INP[OFF+1] в первый байт OUT и т.д., как показано на следующем изображении.
  • При необходимости изменения порядка байт в выбранной из массива группе, указывается требуемое значение параметра SEQ:
SEQ
Порядок байт
Замена байт
Замена слов
Замена двойных слов
0
0-1-2-3-4-5-6-7
-
-
-
1
1-0-3-2-5-4-7-6
ДА
-
-
2
2-3-0-1-6-7-4-5
-
Да
-
3
3-2-1-0-7-6-5-4
Да
Да
-
4
4-5-6-7-0-1-2-3
-
-
Да
5
5-4-7-6-1-0-3-2
Да
-
Да
6
6-7-4-5-2-3-0-1
-
Да
Да
7
7-6-5-4-3-2-1-0
Да
Да
Да
Процесс копирования байт с изменением их порядка (SEQ=4) представлен на следующем изображении.
При этом исходных 8 байт данных с учетом смещения OFF должны находиться в границах массива (OFF>=0 и OFF+8<=длине массива), иначе возникнет ошибка.
 
Пример синтаксиса на языке ST.
//вызов функционального блока для массива байт:
//INP=[200, 7, 61, 131, 230, 77, 115, 65]
Block.GETAR_D(INP, 1, 0);
//чтение возвращаемого значения (OUT = 20242024.2024) и кода ошибки
OUT := Block.OUT;
FAULT := Block.FAULT;
Список возможных ошибок на выходе FAULT.
Код ошибки
Краткое описание
1
Некорректные входные параметры (OFF / CNT / SEQ)
2
Некорректный тип массива (должен быть BYTE или INTEGER)
4
Ошибка проверки массива (например, OFF+CNT-1 выходит за границы)
5
Ошибка доступа к массиву (обратитесь к разработчику)