Отладочные сообщения

<< Click to Display Table of Contents >>

Navigation:  Работа в режиме исполнения > Отладка проекта > Как получить диагностическую информацию среды исполнения >

Отладочные сообщения

Логи состоят из 5 уровней сообщений:

INF - информационные сообщений;

TRA - трассировка (обмен с оборудованием);

WAR - предупреждения. Для того чтобы предупреждения записывались в логи исполнительной системы, необходимо, чтобы в свойстве узла Параметры запуска RT был установлен ключ /w;

SYS - системные сообщения;

ERR - ошибки.

Сообщения формируются в следующем формате: Time: |Thread| [level] Message.

Например:

8876153: |11680| [INF] (10.30.6.96:5000) <Mitsubishi SLMP> Received 13 bytes

8876153: |11680| [TRA] (10.30.6.96:5000) Tx: [21] 50 00 00 FF FF 03 00 0C 00 00 00 01 04 00 00 90 01 00 A8 02 00

8879193: |11680| [TRA] (10.30.6.96:5000) Rx: [12] D0 00 00 FF FF 03 00 03 00 00 00 00

8879193: |11680| [TRA] (10.30.6.96:5000) Tx: [21] 50 00 00 FF FF 03 00 0C 00 00 00 01 04 01 00 01 00 00 C1 01 00

8879251: |11680| [TRA] (10.30.6.96:5000) Rx: [13] D0 00 00 FF FF 03 00 04 00 00 00 00 00

8879251: |11680| [INF] (10.30.6.96:5000) <Mitsubishi SLMP> Read done

Выделенное жирным - информация, сформированная макросом, остальное - пользовательское сообщение.

В круглых скобках выводится информацию о подсистеме. Например, для драйвера - параметры подключения к устройству, для архивной системы - параметры подключения БД.

В треугольных скобках выводится статичное название подсистемы - название драйвера, подсистемы архивации и т.д.

Периоды выполнения задач

Каждые 10 сек отображается диагностическое сообщение со статистикой по всем задачам:

MN=0(0,0) N2=0 A=0 U0=4834,e0,m0(100,89,109)(0,0,1)(,0,0,0)533Kb U1=4513,e0,m0(107,103,110)(0,0,1)(,0,0,0)369Kb HR=1(1) M=592504Kb

где:

В начале строки признак M - Master, S - Slave.

N - количество обработанных запросов UDP (за исключением отдельных типов, которые считаются в N2). В скобках указывается: <максимальное время обработки запроса, N функции протокола, по которой была самая долгая обработка>.

N2 - количество обработанных запросов UDP, которые используются для взаимодействия со средой разработки при отладке программ при указанной опции /udp2, а также при синхронизации архивов (данные запросы обрабатываются в отдельном потоке).

M=<кол-во обработанных запросов> - в случае Modbus RTU Slave задачи.

A=<количество обработанных запросов от HMI клиентов>.

O<индекс контроллера>=<кол-во циклов>(<время последнего цикла опроса>,<общее кол-во ошибок>) - статистика задачи межузловой связи (для связи с каждым контроллером отдельная задача).

U<индекс задачи>=<кол-во циклов>,e<общее кол-во ошибок>,m<кол-во пропущенных циклов>(<среднее цикла>,<мин цикла>,<макс цикла>)(<среднее реального выполнения>,<мин>,<макс>)(,<время чтения входных данных в последнем цикле>,<время выполнения задачи в последнем цикле>,<время записи выходных данных в последнем цикле>)<объем памяти виртуальной машины>Kb - статистика задачи объектов.
m<кол-во пропущенных циклов> - счетчик циклов, которые не были запущены вовремя. Цикл считается пропущенным, если суммарная задержка (включая время выполнения задачи и погрешность планировщика ОС) превышает один период задачи. Значение m0 означает, что все циклы выполняются вовремя. Рост значения, например m62, указывает на то, что задача не укладывается в заданный период.

S<индекс задачи>=<кол-во циклов>,e<общее кол-во ошибок>/<кол-во ошибок в последнем цикле>(<среднее цикла>,<мин цикла>,<макс цикла>)(<среднее реального выполнения>,<мин>,<макс>)<объем памяти виртуальной машины>Kb - статистика задачи протоколов.

HR=<кол-во сохранений горячего рестарта>(<время, затраченное на последнее сохранение>).

R =<кол-во циклов задачи резервирования>(<время последнего цикла>,<время последней синхронизации данных>,<макс время ответа от другого контроллера>,<кол-во ошибочных ответов>). В режиме SLAVE на каждом цикле выполняется проверка состояния второго контроллера, а также получение данных, если с прошлого получения прошел заданный период задачи. В конце каждого цикла дополнительно пауза 20 мс.

M=<используемый объем памяти процессом>Kb.

Статистика архивирования

Статистика архивирования выдается один раз в минуту. Строка с информацией имеет вид:

Stat: {Archive Info}
R(Tm:float, Ct:int, Av:int, Rc:int, Rq:int) W(Tm:float, Ct:int, Av:int, Wt:int, Ps: int, Ls:int) D(Tm:float, Ct:int, Av:int)

Где:

R - Чтение;

W - Запись;

D - Удаление;

Tm - Число секунд, затраченных на обработку R/W/D;

Сt - Количество записей обработанных за последнюю минуту R/W/D;

Av - Cредняя скорость в секунду процессорного времени R/W/D;

Wt - Количество записей в очереди на запись в БД;

Ps: - Количество записей в секунду реального времени;

Ls: - Количество удаленных записей в результате прореживания (по переполнению очереди записи);

Rc: - Количество выполненных запросов чтения;

Rq: - Количество запросов чтения в очереди.

Статистика передачи архивов между узлами

RemoteData(<индекс> ip=<адрес>) cycle=<кол-во полных циклов опроса> period=<период последнего цикла в мс> last_err=<кол-во ошибок на последнем цикле>/<кол-во опрашиваемых параметров> all_err=<кол-во ошибок всего> values=<кол-во значений на последнем цикле>/<кол-во значений всего> iteration=<кол-во проходов на последнем цикле> more=<на последнем цикле не все данные прочитаны>

Записи о начале и завершении сессии пользователем

Информация о начале и завершении сессии пользователем фиксируется в лог-файлы. В таких отладочных сообщениях выводится хешированное значение SessionID.

Начало сессии:

Session created 'хешированный SessionID' by login 'Имя пользователя'

Login source:127.0.0.1 login:'Имя пользователя' code:0 out_msg:Вход в систему

Завершение сессии:

Logout 'Имя пользователя' (session 'хешированный SessionID')

Вывод логов в драйверах

Для вывода отладочных сообщений о драйверах необходимо сформировать расширенный лог.

Лог имеет вид: Время: |Task| [Level] Message.

Строки с информацией о чтении и отправки данных с устройства имеют уровень TRA (трассировки):

77581943: |12304| [TRA] (127.0.0.1:502) Tx: [0012] 04 00 00 00 00 06 01 03 00 00 00 01

77581953: |12304| [TRA] (127.0.0.1:502) Rx: [0011] 04 00 00 00 00 05 01 03 02 00 00

77581943: |12304| [TRA] (COM1) Tx: [0012] 04 00 00 00 00 06 01 03 00 00 00 01

77581953: |12304| [TRA] (COM1) Rx: [0011] 04 00 00 00 00 05 01 03 02 00 00

В круглых скобках выводятся параметры подключения к устройству (IP-адрес, порт).

Логи HMI клиента

Если в настройках среды на вкладке Лог установлен флаг Передача на сервер лога HMI клиента, то все сообщения об ошибках клиента визуализации будут записываться в лог исполнительной системы.

Пример лога с предупреждением:

30551875: |24868| [WAR] 2024-08-09T15:31:52.381Z In file F:\azure-agents\MS4\SRV-BUILD-1\_work\3\s\ms4-src\Source\MasterPLC\addins\\mplc_data

\data_request_processor.cpp at line 407 2024 -08-09 15:31:52.381 (from @127.0.0.1) : 09.08.2024, 18:31:52 convert warning FROM id="491154" TO

id="491126":<br> Значение "Это текст" не может быть преобразовано в тип "DATE AND TIME"

30551875: |24868| [WAR] 2024-08-09T15:31:52.382Z In file F:\azure-agents\MS4\SRV-BUILD-1\_work\3\s\ms4-src\Source\MasterPLC\addins\mplc_data

\data_request_processor.cpp at line 407 2024 -08-09 15:31:52.382 (from @127.0.0.1) : 09.08.2024, 18:31:52 convert warning FROM id="491154" TO

id="491140":<br> Значение "Это текст" не может быть преобразовано в тип "TIME_OF_DAY"