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.
|
