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

<< 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 сек отображается диагностическое сообщение со статистикой по всем задачам:

M14/04 20:28:39.771 N=880550(1,71) N2=34707 A=0 O0=41552(0,e0) U0=167423(100,100,422)(90,83,115)(,0,42,46)13797Kb U1=16746(1000,1000,1454)(1,1,1454)(,0,0,1)525Kb S0=314891,e0/0(53,49,57)(2,1,27)368Kb HR=16603(6) R=828487(0,0,e1) M=110060Kb

где:

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

дата - время

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

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

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

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

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

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

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"