Получение текущего состояния задач активного контроллера

В результате выбора из меню дополнительных операций (F10) строки ИНФОРМАЦИЯ О ЧИСЛЕ КАНАЛОВ В/В будет выполнена операция получения текущего соcтояния активного контроллера.
В отладчике имеется возможность получить текущий снимок состояния активного контроллера по нажатию совокупности клавиш ALT+I.

В поле ввода предлагается ввести имя директории для размещения файлов состояний. Если директория для записи файлов состояний отсутствует на диске, то она будет создана.

В указанной директории сохраняются: состояния задач, выполняющихся в активном контроллере; состояния портов устройств и каналов ввода-вывода; параметры настроек функциональных блоков; состояния импорта переменных; последний буфер сообщений; список задач выполняющихся в интерпретаторе, конфигурационные файлы device.ini и tc.cfg.

На каждую выполняющуюся в контроллере задачу приходится файл сохранения состояния задач и файл сохранения состояния каналов устройств ввода/вывода с расширениями .st0.

В файле сохранения состояния задачи фиксируются текущие изменения в переменных и коэффициентах функциональных блоков, имеющиеся при выполнении задач в активном контроллере. Сохраненные файлы состояния задачи имеют имя, совпадающее с именем файла программы задачи, но имеют расширение . blk, .glb, .run, .sav и .st0. В файле с расширением .glb содержится дерево текущих значений глобальных переменных, для просмотра которых будет разработана соответствующая программа. В файле с расширением . blk фиксируется список заблокированных переменных и коэффициентов функциональных блоков.
Одновременно в текстовые файлы сохраняется снимок текущего состояния серийных портов драйвера ввода-вывода (state_driver_info.txt), каналов ввода-вывода (state_channel_info.txt),  параметров настроек функциональных блоков (state_fb_info.txt), состояния импорта переменных (state_import_info.txt), текущих технологических сообщений (state_mess_info.txt) и список задач, выполняющихся в интерпретаторе (state_task_info.txt). Эти файлы предназначены для визуального анализа текущего состояния задачи.

В файле состояния для каждого серийного порта драйвера ввода-вывода содержатся записи следующей структуры:

06/02/2009 11:47:48
ПОРТ ЗАДЕРЖКА ЗАПРОСЫ ОТВЕТЫ ПОТЕРИ MAX MIN ТЕКУЩЕЕ

COM3:

0

0

0

0

0

0

0

  1. дата и время получения состояния серийного порта драйвера ввода-вывода;
  2. ПОРТ - номер серийного порта, с которым работает драйвер ввода-вывода ("COM1:", … "COMn:") ;
  3. ЗАДЕРЖКА - частота опроса модулей ввода-вывода (целое число миллисекунд);
  4. ЗАПРОСЫ - количество запросов, выданных в порт;
  5. ОТВЕТЫ - количество принятых ответов на запросы из порта;
  6. ПОТЕРИ - количество не принятых ответов на запросы;
  7. MIN - максимальное время цикла опроса модулей ввода-вывода драйвером.
  8. MAX - минимальное время цикла опроса модулей ввода-вывода драйвером.
  9. ТЕКУЩЕЕ - текущее время цикла опроса модулей ввода-вывода драйвером.

Аналогичную информацию о серийных портах драйвера ввода-вывода можно получить в результате выбора из меню дополнительных операций (F10) строки НАСТРОЙКИ ДРАЙВЕРА УСО.

  1. В файле текущего состояния каналов ввода-вывода для каждого устройства содержатся записи следующей структуры: дата и время получения состояния каналов ввода-вывода;
  2. информация об устройстве ввода-вывода;
  3. информация о канале ввода-вывода.

Пример текущего состояния каналов ввода-вывода:

ПОРТ АДРЕС ИМЯ/ТИП/МОДУЛЬ I/O СТАТУС КАНАЛ

COM3:

1(1h)#0

КТП-И I-80571#0/I8000/I8057

0/0

FAIL

16

 

ТИП АДРЕС ПЕРЕМЕННАЯ ИСХОДНОЕ ЗНАЧ. ПЕРЕОБРАЗОВАННОЕ СТАТУС

DO

0(oh)

R100.D1.ESH#1

0

0

FAIL

DO

1(1h)

R100.D1.ESL#1

0

0

FAIL

DO

2(2h)

R100.O1.EC#1

0

0

FAIL

DO

3(3h)

R100.O2.EC#1

0

0

FAIL

DO

4(4h)

R101.D1.ESH#1

0

0

FAIL

DO

5(5h)

R101.D1.ESL#1

0

0

FAIL

DO

6(6h)

R101.O1.EC#1

0

0

FAIL

DO

7(7h)

R101.O2.EC#1

0

0

FAIL

DO

8(8h)

R104.D1.ESL#1

0

0

FAIL

DO

9(9h)

R104.D1.EC#1

0

0

FAIL

DO

10(ah)

R104.O1.EC#1

0

0

FAIL

DO

11(bh)

R104.O2.EC#1

0

0

FAIL

DO

12(ch)

R106.D1.ESH#1

0

0

FAIL

DO

13(dh)

R106.D1.ESL#1

0

0

FAIL

DO

14(eh)

R106.O1.EC#1

0

0

FAIL

DO

15(fh)

R106.O2.EC#1

0

0

FAIL

Информация об устройстве включает:

  1. ПОРТ - номер серийного порта, с которым работает драйвер ввода-вывода ("COM1:", … "COMn:");
  2. АДРЕС - адрес устройства и, если необходимо, дополнительно после символа '#' может быть указан субадрес устройства - целые числа; адреса устройствам, как правило, устанавливаются с помощью DIP-переключателей в устройстве или с помощью специальных конфигурационных утилит, которыми комплектуется устройство; субадрес необходимо определять для устройств, к каналам которых подключены другие устройства, которые также могут иметь адреса (например, к каналу HART мультиплексора может быть подключено до 15 интеллектуальных устройств, доступ к которым выполняется через субадрес);
  3. ТИП - тип (серия) устройства: ADAM4000, ADAM5000, ADAM6000, I7000, I8000, MODBUSRTU, MODBUSASCII, FIELDPOINT, HID3000, HART, STAHL_IS1, PKP1, USERDEF;
  4. МОДУЛЬ - идентификатор модуля устройства, указывающий конкретную модель устройства в пределах серии, например ADAM4015, AIM8;
    I  - значение статуса устройства по вводу: 0 - устройство включено, 1 - устройство отключено;
    O  - значение статуса устройства по выводу: 0 - устройство включено, 1 - устройство отключено;
  5. СТАТУС - состояние устройства: FAIL - неработоспособно; OK - работоспособно; UNDEF - отсутствует;
  6. КАНАЛ - количество каналов в данном устройстве.

Информация о канале включает:

  1. ТИП  - тип канала - одна из предопределенных символьных констант: AI (аналоговый вход), AO (аналоговый выход), DI (дискретный вход), DO (дискретный выход), CTR (счетчик), PG (генератор импульсов);
  2. АДРЕС  -  номер канала или его адрес в адресном пространстве устройства, целое число; параметр всегда указывается первым в списке;
  3. ПЕРЕМЕННАЯ  -  идентификатор канала, который будет выводиться в сообщениях о неисправности работы данного канала; после # - номер задачи;
  4. ИСХОДНОЕ ЗНАЧ.  -   "сырое" значение канала, принятое из устройства для входных каналов и передаваемое в устройство для выходных каналов;
  5. ПРЕОБРАЗОВАННОЕ  -   значение канала, полученное из "сырого" значения канала при помощи функции преобразования;
  6. СТАТУС  -  состояние канала: FAIL - неработоспособен; OK - работоспособен.

Аналогичную информацию о каналах ввода-вывода можно получить в результате выбора из меню дополнительных операций (F10) строки СОСТОЯНИЕ УСТРОЙСТВ В/В И КАНАЛОВ.
Пример окна сведений об устройствах:

Пример окна состояния каналов представлен на рисунке.

В файле параметров настроек функциональных блоков для каждого функционального блока задачи содержатся записи следующей структуры:

<номер>) “<метка блока>”.<имя блока> <файл> <номер строки> <тип блока>

<список коэффициентов>,

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

Пример параметров настроек функциональных блоков:

17) “TV15-КЛАПАН”.FB_VALVE “K1_ctrls.s”[47] СТАТИЧЕСКИЙ
T                      :           1m
Basklash          :           3

118) “TV15-ПИ-КОНТР”.FB_PI_CHECK “K1_ctrls.s”[415] СТАТИЧЕСКИЙ
Kp        :           1.5
Ti         :           1m
Vt         :           100
Tt         :           10s
Vc        :           5
Tc        :           5m

В файле состояния импорта переменных содержатся записи следующей структуры:

  1. дата и время получения состояния импорта переменных;
  2. информация о контроллере;
  3. информация о состоянии импорта переменных для всех задач, выполняющихся в контроллере.

Пример файла состояния импорта переменных в случае отсутствия импорта переменных контроллера:

06/02/2009 11:47:48
[K1_1]
ПрП = 1, импортируемых переменных нет

Пример файла состояния импорта переменных в случае наличия ошибок импорта переменных контроллера:

06/02/2009 11:17:46
[K1_2]
ПрП = 10, число импортируемых переменных = 2
T62_1 <= "192.168.100.31:9000,"192.168.100.32:9000" STATE = нет связи с контроллером DATE = {Value= 0 Blk=0 Usr=0 Fault=0}
TNN61 <= "192.168.100.31:9000,"192.168.100.32:9000" STATE = нет связи с контроллером DATE = 0
[K2_1]
ПрП = 20, число импортируемых переменных = 2
T62_2 <= "192.168.100.31:9000,"192.168.100.32:9000" STATE = нет связи с контроллером DATE = {Value= 0  Blk=0 Usr=0 Fault=0}
TNN61 <= "192.168.100.31:9000,"192.168.100.32:9000" STATE = нет связи с контроллером DATE = 0

В файле сообщений содержатся записи следующей структуры:

  1. дата и время вывода текущих технологических сообщений;
  2. список сообщений в порядке их вывода.

В списке технологических сообщений выводится приоритет сообщения, время возникновения сообщения, источник и текст сообщения:

<приоритет> < время> <контроллер> <текст сообщения>

где <приоритет> - приоритет важности сообщения;
  < время> - дата и время вывода сообщения;
  <контроллер>   источник вывода сообщения;
  <текст сообщения> - информационная часть сообщения.

В файл текущих технологических сообщений выводятся последние на момент времени сохранения выведенные сообщения, число которых определяется размером буфера сообщений в конфигурационном файле tc.cfg (параметр BUF_MESS). Приоритет сообщений кодируется числом:

  Аварийные (901-1000)
Предаварийные (701-800)
Действия оператора (501-600)
Информационные (201-400)
Неисправности оборудования (801-900)

Пример текущих технологических сообщений:

06/02/2009 11:47:48
400  06.02.2009 11:47:34.613 K1_1 RUNTC - НАЧАЛО РАБОТЫ ИНТЕРПРЕТАТОРА; КОНФИГУРАЦИЯ 'Release', НАЦИОНАЛЬНЫЙ ЯЗЫК 'РУССКИЙ'
400  06.02.2009 11:47:36.105 K1_1 RUNTC - ПЕРЕХОД В СОСТОЯНИЕ ACTIVE
1000 06.02.2009 11:47:36.116 K1_1 (IO) (32) : ";" : Невозможно открыть порт 'COM3:'
900  06.02.2009 11:47:36.126 K1_1 (IO) Нарушена связь с устройством (порт=COM3:, адрес=1#0, тип=I8057)
900  06.02.2009 11:47:36.126 K1_1 (IO) Нарушена связь с устройством (порт=COM3:, адрес=1#1, тип=I8053)
900  06.02.2009 11:47:36.126 K1_1 (IO) Нарушена связь с устройством (порт=COM3:, адрес=1#3, тип=I8024)
900  06.02.2009 11:47:36.126 K1_1 (IO) Нарушена связь с устройством (порт=COM3:, адрес=2#5, тип=I87017)
1000 06.02.2009 11:47:36.326 K1_1 T2           0.0 град НАГ  260.0
1000 06.02.2009 11:47:36.326 K1_1 P1         0.000 мПа НАГ  0.400
1000 06.02.2009 11:47:36.326 K1_1 L1           0.0 % НАГ   35.0
400  06.02.2009 11:47:36.326 K1_1 EIRAH11          0.00 A НОРМА
900  06.02.2009 11:47:36.326 K1_1 O-11 НЕИСПРАВНОСТЬ ДАТЧИКОВ
900  06.02.2009 11:47:36.326 K1_1 O-12 НЕИСПРАВНОСТЬ ДАТЧИКОВ
400  06.02.2009 11:47:36.326 K1_1 Д-11 ОТКЛЮЧЕН
400  06.02.2009 11:47:36.606 K1_1 P1         0.630 мПа НОРМА
400  06.02.2009 11:47:36.606 K1_1 O-11 ЗАКРЫТ
400  06.02.2009 11:47:36.606 K1_1 O-12 ЗАКРЫТ
600  06.02.2009 11:47:48.433 K1_1 RUNTC - BEKETOV\Administrator ЗАПРОСИЛ СОСТОЯНИЕ КОНТРОЛЛЕРА

В файле состояния задач для каждого контроллера содержатся записи следующей структуры:

  1. дата и время получения списка задач выполняющихся в контроллере;
  2. путь к проекту ТехноСи;
  3. информация о задачах, выполняющихся в контроллере.

Информация о контроллере начинается с имени контроллера (узла) в квадратных скобках, например [K1_1]. Далее выводятся следующие сведения:

  1. Сведения об одном или двух сетевых интерфейсах данного контроллера
  2. Информация о загрузке памяти контроллера
  3. Информация о номере выполняющейся задачи и наличии записи st-файла.
  4. Информация о наличии установленных остановов в программе, выполняемой в контроллере.
  5. Блок информации о данных структуры SYS.
  6. Информация о версии интерпретатора.
  7. Информация о самом контроллере.
  8. Информация о сетевом обмене с контроллером.
  9. Для активного контроллера выводится список клиентов, подключенных через отладчик к контроллеру по сети.

Аналогичную информацию о серийных портах драйвера ввода-вывода можно получить в результате выбора из меню дополнительных операций (F10) строки СОСТОЯНИЕ КОНТРОЛЛЕРОВ.
Пример файла состояния задач:

06/02/2009 11:47:48
ПУТЬ К ПРОЕКТУ TC50: 'D:\АСУТП Лак\PROGS\tc.cfg'
[K1_1]
IP1 = localhost state_ping = 1 time_ping = 0
LoadSystemCPU = 3% 
MemoryLoad    = 45%
TotalPhys     =  785904KB
AvailPhys     =  429264KB
TotalPageFile = 1137048KB
AvailPageFile =  775388KB
TotalVirtual  = 2097024KB
AvailVirtual  = 2028292KB
MemoryUse     =  356640KB
PRP1 K1       ПУСК CNT_STORE=0 MISFIRE_GAP=10 CUR_PULSE=0 TAGS=66920;

ЗАПИСЬ ST-ФАЙЛА НЕ ЗАДАНА
НЕТ НИ ОДНОГО ОСТАНОВА
СТРУКТУРА SYS:
PRP              1
RUN_TIME         0ms
LOOP             26
INTERVAL         500ms
REAL_INTERVAL    500ms
TIME_OF_LIFE     0 00:00:13
TIME_BEGIN       11h47m36s
DATE_BEGIN       06/02/2009
TIME             11h47m48s613ms
YEAR             2009
DAY_OF_YEAR      37
DAY              6
MONTH            2
DAY_OF_WEEK      5
TIME_UTC         9h47m48s613ms
YEAR_UTC         2009
DAY_OF_YEAR_UTC  37
DAY_UTC          6
MONTH_UTC        2
DAY_OF_WEEK_UTC  5
GLBCC            0
NEW_PROG         0
CNT_NEW_PROG     0
TIME_NEW         0s
DATE_NEW         00/00/0000
CNT_START        1
DOUBLE_TYPE      1
DOUBLE_CONNECT   1
RUNTC_ERROR      0
TICK_COUNT       13536204
ИНТЕРПРЕТАТОР TC (ВЕРСИЯ 2.1.3, НОЯБРЬ 2008) NAME = K1_1 ID=3112
PORT = 9011, PORT_START = 19000
КОНФИГУРАЦИОННЫЙ ФАЙЛ D:\АСУТП Лак\PROGS\tc.cfg
ТЕКУЩАЯ КОНФИГУРАЦИЯ 'Debug2', НАЦИОНАЛЬНЫЙ ЯЗЫК 'РУССКИЙ'
CLIENT=4 FALSE=0M/0, TRUE=3M/971470, V=288819, STATE=122855
КЛИЕНТЫ:
06.02.2009 11:47:36 DBG\BEKETOV\Administrator
Prp=1   РАЗРЕШЕНИЕ(0)/ЗАПРЕТ(1) ЗАПИСИ:
R100_recipe=0
R101_recipe=0
R104_recipe=0
R106_recipe=0
КОНТРОЛЛЕР "К1_1"
RUNTC - Связь с драйвером DriverTC.dll (V.M = 2.1.3) установлена...
ACTIVE