10.2.1 Состав модульных структур
Все переменные модульных структур сгруппированы в логические блоки. Данные блоки можно разделить на три группы: «Рабочие», «Служебные» и «Контроль обмена».
Рабочие данные. В блоке «in» содержаться рабочие данные на чтение, а в блоке «out» рабочие данные на запись. В блоке «in» содержатся текущие значения каналов ввода-вывода, флаги текущего состояния модуля и поканальная диагностика. В блок «out» записываются значения, которые должны быть установлены на каналах ввода-вывода. Чтение и запись рабочих данных выполняется мастер-модулем автоматически в каждом цикле.
Количество блоков с рабочими данными и их состав зависит от выбранной модульной структуры. Описание рабочих данных и допустимых значений приведено в руководстве по эксплуатации на соответствующий модуль ввода-вывода.

Служебные данные. Служебные данные содержатся в блоках «statistic», «param» и вложенных в них блоках. В блоке «statistic» содержатся статистические данные о работе модуля ввода-вывода, а в блоке «param» – настройки модуля ввода-вывода и его отдельных каналов. При этом значения переменных, содержащихся в блоке «param» и его подблоках, однократно автоматически записываются на модуль ввода-вывода сразу после старта мастер-модуля. После успешной записи блока «param», мастер-модуль переходит в режим обмена рабочими данными с модулем ввода-вывода. Поэтому, для первоначального задания настроек модулю ввода-вывода и его отдельным каналам, необходимо в глобальном словаре для переменной с типом модульной структуры в блоке «param» указать требуемые значения. Для изменения настроек модуля ввода-вывода в процессе обмена рабочими данными, необходимо использовать управляющие переменные из группы «control». Для уменьшения времени цикла мастер-модуля чтение и запись служебных блоков выполняется не в каждом цикле, а по необходимости (с использованием управляющих переменных группы «control»).
Количество блоков со служебными данными и их состав зависит от выбранной модульной структуры. Описание служебных данных и допустимых значений приведено в руководстве по эксплуатации на соответствующий модуль ввода-вывода.
Контроль обмена. Значения переменных из группы «control» одинаковы для всех типов модулей и используются для управления чтением и записью служебных блоков «statistic» и «param», диагностики ошибок обмена с модулем ввода-вывода и управления блокировкой обмена (переменная «block_poll»).
Значения первой части переменных не участвуют в обмене с модулем ввода-вывода, а устанавливаются и анализируются мастер-модулем. Также эти переменные доступны для чтения и записи по внешним коммуникациям.

| | Описание параметров первой части:
|
Переменная
|
Тип данных
|
Описание
|
|
not_valid
|
Логический
|
Наличие ошибки обмена с модулем ввода-вывода:
|
|
err_cfg
|
Целый
|
Код ошибки обмена с модулем ввода-вывода:
-
-
1 – несоответствие типа подключенного модуля и добавленного в приложении (название модели физического модуля должно совпадать с именем модульной структуры в проекте);
-
2 – несоответствие версии аппаратной конфигурации подключенного модуля и добавленного в приложении, версия конфигурации указывается в конце имени модульной структуры ( );
-
3 – несоответствие описания аппаратной конфигурации на модуле и в проекте, обратитесь к разработчикам;
-
4 – не удалось определить тип модуля;
-
5 – ошибка записи блока «param» (блок №3 – Параметры) на модуль;
-
6 – ошибка чтения уникального идентификатора модуля;
-
7 – модуль находится в режиме загрузчика (в процессе обновления программного обеспечения);
-
8 – выполняется инициализация модуля;
-
9 – несовпадение параметров;
-
10 – несовпадение счетчиков пакетов ST-BUS;
-
11 – произошла замена модуля.
|
|
err_line1,
err_line2
|
Целый
|
Код транспортной ошибки обмена с модулем ввода-вывода по конкретной линии, представляет собой целое число, соответствующее битовой маске , где:
-
0 бит – нет ошибки, широковещательный запрос;
-
1 бит – ошибка переполнения UART;
-
-
3 бит – адрес ответа не совпадает с адресом запроса;
-
4 бит – ошибочное количество байт данных;
-
5 бит – повторная стартовая комбинация;
-
6 бит – ошибка контрольной суммы;
-
7 бит – срабатывание таймаута при ожидании очередного байта на приеме.
|
|
block_poll
|
Логический
|
Блокировка обмена с модулем ввода-вывода:
-
true – обмен с модулем заблокирован;
-
false – осуществляется обмен.
|
|
command
|
Целый
|
Зарезервирован, не используется.
|
|
Вторая часть переменных блока «control» позволяет управлять чтением и записью переменных служебных блоков. Состав второй части переменных зависит от типа модуля ввода-вывода и состава его служебных блоков.

| | Описание параметров второй части:
|
Переменная
|
Тип данных
|
Описание
|
|
read_statistic
|
Логический
|
Отвечает за чтение с модуля ввода-вывода статистических данных из блока «statistic»:
-
true – чтение статистики в каждом цикле мастер-модуля;
-
false – чтение не производится (по умолчанию).
|
|
read_param
|
Логический
|
Отвечает за чтение параметров модуля ввода-вывода из блока «param»:
-
true – чтение параметров в каждом цикле мастер-модуля;
-
false – чтение параметров не производится (по умолчанию).
|
|
write_param
|
Логический
|
Запись значений на модуль в служебный блок «param» осуществляется однократно, только при изменении данного значения с false на true. Для новой записи значений в служебные блоки требуется вернуть для данного параметра значение false и снова изменить его на true.
|
|
err_rw_statistic
|
Целый
|
Код завершения последнего асинхронного чтения/записи блока «statistic»:
-
0 – безошибочные чтение или запись;
-
1 – неверный код команды, команда не поддерживается модулем;
-
2 – неверные данные в запросе, неверный формат запроса;
-
3 – выполнение запроса недопустимо в текущем режиме работы модуля;
-
255 – модуль занят обработкой полученного запроса.
|
|
err_rw_param
|
Целый
|
Код завершения последнего асинхронного чтения/записи блока «param»:
-
0 – безошибочные чтение или запись;
-
1 – неверный код команды, команда не поддерживается модулем;
-
2 – неверные данные в запросе, неверный формат запроса;
-
3 – выполнение запроса недопустимо в текущем режиме работы модуля;
-
255 – модуль занят обработкой полученного запроса.
|
|