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

MB_R_AR - чтение группы данных в массив


Назначение.
Функциональный блок MB_R_AR применяется для чтения группы данных со Slave-устройства по протоколу Modbus с последующим сохранением в массиве.
 
Входные параметры:
Параметр
Тип данных
Описание
RUN
BOOLEAN
  • RUN=TRUE - запуск блока и передача в задачу связи MB_RTU_MST/MB_TCP_MST команды на чтение группы данных со Slave-устройства;
  • RUN=FALSE - остановка блока и задачи связи.
ID_DRV
INTEGER
Идентификатор задачи связи Modbus-RTU MST или Modbus-TCP MST, в рамках которой будет выполняться запрос.
SLAVE
INTEGER
Сетевой адрес Slave-устройства по протоколу Modbus задается целым числом от 1 до 255.
FUNC
INTEGER
Код modbus-функции:
  • 1 (READ COILS) - чтение дискретных выходов;
  • 2 (READ CONTACTS) - чтение дискретных входов;
  • 3 (READ HOLDING REGISTERS) - чтение аналоговых выходов;
  • 4 (READ INPUT REGISTERS) - чтение аналоговых входов.
DATA_TYPE
INTEGER
Тип запрашиваемых данных:
  • 0 - булевский;
  • 1 - 2х байтовое целое без знака;
  • 2 - 2х байтовое целое со знаком;
  • 3 - 4х байтовое целое без знака;
  • 4 - 4х байтовое целое со знаком;
  • 5 - 4х байтовое вещественное;
  • 6 - 8ми байтовое вещественное.
SEQ
INTEGER
Порядок передачи байтов задается целочисленным значением. Допустимые значение описаны далее в настоящем разделе.
ADDRD
INTEGER
Modbus-адрес первой переменной из запрашиваемой группы на Slave-устройстве. Особенности назначения modbus-адресов описаны в разделе 9.9.2.1 "Блок MB_R - Чтение группы данных".
NUMBER
INTEGER
Количество переменных, значения которых будут прочитаны со Slave-устройства. Отсчет начинается с modbus-адреса ADDRD включительно.
ARRAY
Ссылка
Ссылка на массив для сохранения прочитанных данных
ARR_POS
INTEGER
Позиция в массиве, с которой начнется сохранение прочитанных данных, нумерация элементов массива начинается с нуля.
Значение параметра SEQ определяется согласно следующей таблицы:
SEQ
Порядок байт
Замена байт
Замена слов
Замена двойных слов
0
Автоматически выбирается типовое значение в соответствии с размером типа данных:
  • DATA_TYPE=1..2 → SEQ=1;
  • DATA_TYPE=3..5 → SEQ=3;
  • DATA_TYPE=6 → SEQ=7.
1
1-0
Да
-
-
2
0-1
-
-
-
3
1-0-3-2
Да
-
-
4
0-1-2-3
-
-
-
5
2-3-0-1
-
Да
-
6
3-2-1-0
Да
Да
-
7
1-0-3-2-5-4-7-6
Да
-
-
8
0-1-2-3-4-5-6-7
-
-
-
9
2-3-0-1-6-7-4-5
-
Да
-
10
3-2-1-0-7-6-5-4
Да
Да
-
11
5-4-7-6-1-0-3-2
Да
-
Да
12
4-5-6-7-0-1-2-3
-
-
Да
13
6-7-4-5-2-3-0-1
-
Да
Да
14
7-6-5-4-3-2-1-0
Да
Да
Да
 
Выходные параметры:
Параметр
Тип данных
Описание
READY
BOOLEAN
Признак завершения операции:
  • READY=FALSE - когда обнаружена ошибка во входных параметрах блока, запрос не направляется;
  • READY=TRUE - выставляется сразу после направления запроса, независимо от его результатов.
FAULT
INTEGER
Код завершения операции, список возможных кодов описан в конце раздела 9.9.1.1 «MB_RTU_MST - конфигурация связи по протоколу Modbus-RTU Master».
 
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.MB_R_AR(RUN, ID_DRV, SLAVE, FUNC, DATA_TYPE, SEQ, ADDRD, ARRAY, ARR_POS, NUMBER);
//чтение выходных параметров
READY := Block.READY;
FAULT := Block.FAULT;