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

system(21, <аргумент>)


Вызов функции system(21, <аргумент>) возвращает статистику обмена по шинам ST-BUS. В зависимости от значения <аргумента> позволяет получать количество отправленных/принятых пакетов для определенной шины ST-BUS или для определенного модуля ввода-вывода.
Для справки! К мастер-модулю, в зависимости от его аппаратной конфигурации, могут подключать несколько шин ST-BUS, каждая шина может состоять из одной или двух линий (резервированные, на случай, если одна выйдет из строя). К одной шине ST-BUS могут последовательно подключаться несколько модулей ввода-вывода.
В качестве аргумента передается целое число, в битовой маске которого закодированы параметры запроса по правилам:
3 байт
2 байт
1 байт
0 байт
Номер линии BUSXXX
Номер модуля
Номер шины ST-BUS (1.. N)
Код запроса
 
Код запроса.
Обязательная часть аргумента (0 байт), может принимать значения:
Код запроса
Результат вызова функции
0
Сброс всех счетчиков
1
Количество отправленных пакетов по линии 1
2
Количество отправленных пакетов по линии 2
3
Количество успешно принятых ответных пакетов по линии 1
4
Количество успешно принятых ответных пакетов по линии 2
5
Количество ошибок по линии 1
6
Количество ошибок по линии 2
Совместно с кодом запроса обязательно должен быть заполнен один из трех старших байтов, они являются взаимоисключающими с наивысшим приоритетом старшего байта.
Номер шины ST-BUS.
В 1 байте аргумента указывается номер шины ST-BUS:
Модель мастер-модуля
Номер шины
Описание
М501Е
1
Порт ST-BUS
2
Юнит USTB
М1201Е
1
Порт ST-BUS1
2
Порт ST-BUS2
Прочие модели
1
Порт ST-BUS
В результате возвращается количество отправленных/принятых пакетов для всех модулей ввода-вывода, подключенных к указанной шине.
Пример формирования аргумента при необходимости на мастер-модуле M1201E получить количество ошибок по линии 2 (код запроса 6) шины ST-BUS 2:
Примеры вызовов:
//на мастер-модуле М501Е сброс всех счетчиков для шины ST-BUS
Ret_Val:=SYSTEM(21, 16#100);
//на мастер-модуле М501Е сброс всех счетчиков для юнита USTB
Ret_Val:=SYSTEM(21, 16#200);
//на мастер-модуле М1201Е кол-во ошибок по линии 2 шины ST-BUS2
Ret_Val:=SYSTEM(21, 16#206);
Номер модуля.
Во 2 байте аргумента указывается номер модуля ввода-вывода, а в результате возвращается количество отправленных/принятых пакетов для указанного модуля ввода-вывода. Если 2 байт принимает ненулевое значение, номер шины в 1 байте игнорируется.
Пример формирования аргумента при необходимости получения количества успешно принятых пакетов от модуля ввода-вывода №5 по линии 2 (код запроса 6):
Примеры вызовов:
// кол-во успешно принятых ответных пакетов от модуля 5 по линии 1
Ret_Val:=SYSTEM(21, 16#50003);
// кол-во успешно принятых ответных пакетов от модуля 5 по линии 2
Ret_Val:=SYSTEM(21, 16#50004);
Номер линии.
В 3 байте указывается номер линии BUSXXX, а в результате возвращается количество отправленных/принятых пакетов для указанной линии на конкретном модуле ввода-вывода. При этом значения 1 и 2 битов игнорируются.
Пример формирования аргумента при необходимости получения количества ошибок по линии 2 (код запроса 6) линии BUS002:
Примеры вызовов:
Ret_Val:=SYSTEM(21, 16#1000000); //сброс всех счетчиков для шины BUS001
Ret_Val:=SYSTEM(21, 16#2000000); //сброс всех счетчиков для шины BUS002
Ret_Val:=SYSTEM(21, 16#1000006); //кол-во ошибок по линии 2 линии BUS001
Ret_Val:=SYSTEM(21, 16#2000006); //кол-во ошибок по линии 2 линии BUS002
Возможность указать номер линии BUSXXX оставлена для совместимости с ранее реализованными проектами. В настоящее время рекомендуется в 1 байте указывать номер шины ST-BUS, а в 0 байте - код запроса для требуемой линии.