<< 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 клиента, то все сообщения об ошибках клиента визуализации будут записываться в лог исполнительной системы.
Пример лога с предупреждением:
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"