Структура конфигурационного файла tc.cfg системы программирования на языке ТехноСи

Параметры конфигурационного файла

Все параметры, задаваемые в конфигурационном файле tc.cfg, можно разделить на следующие категории:

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

Параметры конфигурационного файла, задающие режим выполнения отладчика:

В состав списка параметров узла входят:

В состав списка параметров контроллера входят:

Все параметры, задаваемые в конфигурационном файле tc.cfg, могут быть заданы как строчными, так и прописными буквами, то есть без учета регистра клавиатуры. Значения строк параметров задаются с учетом регистра. В файле конфигурации допускается использование макрокоманд #define, #if, #else, #ifdef, #ifndef, #endif, аналогично командам препроцессорной обработки в языке ТехноСи.

  #define NAME {<const> | "stroka"}
#if <const>
… #0
#esle
… =0
#endif
#ifdef NAME
… NAME определено
#esle
… NAME не определено
#endif
#infdef NAME
… NAME не определено
#esle
… NAME определено
#endif

Объявление #define NAME задает пустую строку "", при этом NAME определен.

Использование макроподстановок позволяет выделить в файле конфигурации часто изменяемые параметры и менять в начале файла, не осуществляя поиск по всему файлу. С помощью #define, #if, #else, #ifdef, #ifndef, #endif можно создавать в одном файле несколько вариантов конфигураций.

Ниже приведен пример файла конфигурации tc.cfg:

  #define NAME_ INTERFACES "192.168.1.4","localhost"
#define NAME_CFG "c:\\tc\\tc.cfg"
#define NAME_CURENT_PATH "c:\\tc"
#define NAME_CURRENT_PATH_LOG "c:\\tc"
#define DUBLE_CPU
// Имя проекта
PROJECT_NAME="Пример проекта"
// Коды цветов сообщений
COLORS_MESS =
{
    BACK : BLACK
1 - 400 : LIGHTGREEN
401 - 600 : WHITE
601 - 800 : YELLOW
801 - 900 : LIGHTBLUE
901 - 1000 : LIGHTRED
  }

// Приоритет критических сообщений
PRIORITY_CRITICAL = 1000
// Приоритет предупредительных сообщений
PRIORITY_WARNING = 800
// Приоритет информационных сообщений
PRIORITY_INFO = 400
// Приоритет пользовательских сообщений по умолчанию
PRIORITY_USER = 600
  TIME_SYNCHRO = 140
   
  NODE =
  {
    NAME = "firstnode"
     
    CONFIG_IO =
    {
      DRIVER = "tcdll.dll",
      DEVICE_INI = "dev.ini"
DEVICE_STORE="device_store"
FLAG_STORE=1
    }
       
    BUF_MESS = 200
    TIME_IMPORT = 240
    TIME_RECV_BASE = 250
    START_TYPE = "GENERAL"
    DATA_TRANSFER = "GENERAL"
     
    CPU =
    {
      NAME = "first_controller1"
      INTERFACES =NAME_ INTERFACES
      PORT = 4000
      CFG = NAME_CFG
      PATH_LOG= NAME_CURRENT_PATH_LOG
      PATH_RUN = NAME_CURENT_PATH
      PATH_STORE =NAME_CURENT_PATH
      FREE_MEMORY_CRITICAL = 2000
      FREE_MEMORY_WARNING = 8000
      WDT_TIME = 5000
      WDT_DLL = "NAME_CURENT_PATH\\WDT.dll"
    }
    #ifdef DUBLE_CPU
    CPU =
{
      NAME = "first_controller2"
      INTERFACES = "192.168.1.5","192.168.2.6"
      MAX_TIME_CONNECT = 5000,6000
      PORT = 9000
      CFG = "c:/a/ tc.cfg"
      PATH_RUN = "c:\\a"
      PATH_STORE = "c:\\a"
      WDT_TIME = 5000
      WDT_DLL = "c:/a/WDT.dll"
    }
    #endif
    REDUNDANCY =
{
      REDUNDANCY_TYPE = "TCP"
      TIME_CHECK = 490
      TIME_SEND_ACTIVE = 270
      TIME_SEND_STATE = 480
    }
     
    TIME_TEST_ACTIVE = 480
    TIME_TEST_PASSIVE = 480
     
    TASK =
    {
      NAME = "task1_1"
      START_TYPE = "START"
      // Имена файлов включений в исходный текст программы
      INCLUDE="task.h"
      INCLUDE="task.s"
    }
     
    TASK =
    {
      NAME = "task1_2"
      START_TYPE = "STOP"
    }
  }
  NODE =
  {
    NAME = "secondnode"
     
    CONFIG_IO =
    {
      DRIVER = "DriverTC.dll",
      DEVICE_INI= "device.ini"
      DEVICE_STORE="device_store"
    }
     
    BUF_MESS = 400
    MONITORING = 1
    NAME_MESS = 1
    NUMBER_MESS = 1
    TIME_PING = 1000
    START_TYPE = "COM-SERVER"
    DATA_TRANSFER = "OPTIMIZED"
     
    CPU =
    {
      NAME = "second_controller1"
      INTERFACES = "192.168.1.2","localhost"
      PORT= 4000
      CFG = "c:/a/tc.cfg"
      PATH_RUN = "c:\\a"
      PATH_STORE = "c:\\a"
    }
     
    CPU =
    {
      NAME = "second_controller2"
      INTERFACES = "192.168.1.3","192.168.2.3"
      PORT= 9000
      CFG = "c:/tc/tc.cfg"
      PATH_RUN = "c:/tc"
      PATH_STORE = "c:\\tc"
    }
     
    REDUNDANCY =
    {
      TIME_MAX_SEND_STATE = 100
      REDUNDANCY_TYPE = "SERIAL"
      RDN_DLL = "RDN.DLL"
      REDUNDANCY_COMPORT_NAME = "COM3"
      TIME_CHECK = 960
      TIME_SEND_ACTIVE = 270
      TIME_SEND_STATE = 280
    }
     
    TIME_TEST_ACTIVE = 280
    TIME_TEST_PASSIVE = 280
     
    TASK =
    {
      NAME = "task2_1"
      START_TYPE = "START"
    }
     
    TASK =
    {
      NAME = "task2_2"
      START_TYPE = "STOP"
    }
  }
  // IP-адрес(а) сетевых интерфейсов или NETBIOS-имя узла, который имеет право
// выполнять синхронизацию времени; по умолчанию используется “localhost”
NAME_SYNCHRO = "192.168.1.3"

Как видно из примера конфигурационного файла, параметры в файле конфигурации tc.cfg задаются при помощи языка описания. Значение параметра конфигурационного файла, определяемого некоторым ключевым словом, задается после знака равенства. Значение может быть задано либо как положительное или нулевое целое число, либо как символьная строка, заключенная в двойные кавычки.

  <Ключевое слово> = <значение>
  <значение> := <число> | "<строка>"

Параметры, относящиеся к одному списку, определенному ключевым словом и знаком равно, ограничиваются фигурными скобками, открывающая фигурная скобка задается до начала списка параметров, а закрывающаяся задает конец списка. Последовательность следования параметров внутри списка не является строгой. Допускается менять местами отдельные ключи в пределах области их определения, ограниченной фигурными скобками. Фигурные скобки, аналогично языку Си, могут располагаться на одной строке с ключевым словом или в одной строке с последним параметром, главное соблюдение правильности их вложения.

  <Ключевое слово списка параметров> =
  {
    <Ключевое слово1> = <значение1>
   
 

<Ключевое слово2> = <значение2>
  }

Параметр, определяемый ключевым словом INTERFACES, задает IP-адреса или имена хостов, а параметр, определяемый ключевым словом PORT, задает номер порта для обмена по сетевым интерфейсам.

  INTERFACES = <адрес контроллера1> | <адрес контроллера1>, <адрес контроллера2>
  <адрес контроллера> := <IP>
  PORT= <номер порта>
       
где <IP> - IP-адрес удаленного контроллера;
  <номер порта> - задает порт для обмена с удаленными контроллерами.

IP-адрес удаленного контроллера задается в виде 192.168.000.001 или как символьное имя хоста; если в контроллере установлено две интерфейсные карты, то допускается задание параметров второго интерфейса. Параметры первого интерфейса отделяются от параметров второго интерфейса символом запятая. Например,

  INTERFACES ="192.168.1.3","192.168.2.3"
PORT= 9000

Параметр, определяемый ключевым словом NAME_SYNCHRO, задает IP-адрес(а) сетевых интерфейсов или NETBIOS-имя узла, который имеет право выполнять синхронизацию времени аналогично заданию в параметре INTERFACES; по умолчанию используется “localhost”, например:

  NAME_SYNCHRO ="192.168.1.2","192.168.2.2"

Параметры, значения которых задаются строкой, записываются по правилам языка ТехноСи. Строковые константы представляются последовательностью символов, заключенной в кавычки. Например:

  PROJECT_NAME = "\'Установка LK-1\' Литва"
  NAME = "task"
  CFG ="d:\\Project\\tc.cfg"
  INTERFACES ="localhost"

В качестве символов могут задаваться специальные комбинации из двух символов, первый из которых обратная косая черта (обратный слеш). Эти комбинации можно использовать для задания непечатаемых символов или вставки таких спецсимволов, как апострофы и двойные кавычки. Возможные комбинации с обратной косой чертой представлены ниже в таблице. Прямая косая в строке задается одиночным символом.

Наименование символа
Обозначение
Задание в строке
Код символа
Новая строка (перевод строки)
LF
\n
0xa
Горизонтальная табуляция
HT
\t
0x9
Прямая косая
/
/
0x5c
Обратная косая
\
\\
0x2f
Апостроф
'
\'
0x27
Кавычки
"
\"
0x22

Значения логического имени узла и логического имени контроллера задаются по правилам записи идентификаторов в языке ТехноCи, то есть могут начинаться с символа подчеркивания или с любой буквы латинского алфавита (строчной или прописной, причем строчные и прописные буквы различаются). Не первым символом логического имени можно дополнительно задавать десятичную цифру. Длина логического имени ограничена размером 12 символа. Логическое имя не должно совпадать с ключевым словом языка ТехноСи.

Ключевые слова, определяющие параметры, и их назначение приведены ниже в таблице.

Ключевое слово
Назначение
параметра
Допустимые значения
Проект
Узел
Драйвер УСО
Контроллер
Интерфейс режима дублирования
Описатель задачи
1 PROJECT_NAME     Имя проекта Строка символов не более 32, например
"\'Установка LK-1\' Литва"
2 TIME_SYNCHRO     Величина в миллисекундах частоты выдачи запроса синхронизации отсчета времени в станции слежения и отсчета времени в контроллере управления Интервал допустимых значений неотрицательные целые числа, значение по умолчанию, равное 0 значение – синхронизация не выполняется
3 COLORS_MESS     Коды цветов сообщений в окне отладчика Строка символов длиной не более 256, содержащая <n1>[-<n2>] : <color>, где <n1> и <n2> задают диапазон приоритета сообщения, а <color> определяет цвет символов и BACK : <color> задает цвет фона соответственно
4 NAME_SYNCHRO     IP-адрес(а) сетевых интерфейсов или NETBIOS-имя узла, который имеет право выполнять синхронизацию времени IP-адрес записывается в кавычках как последовательность четырех трехзначных номеров разделенных символом точка, например "192.168.100.1"; NETBIOS-имя задается как строка символов не более 128, например “UZEL1”; если в контроллере установлено две интерфейсные карты, то допускается задание параметров второго интерфейса. Параметры первого интерфейса отделяются от параметров второго интерфейса символом запятая, например,   "192.168.1.3"," UZEL1";по умолчанию используется “localhost”
5 PRIORITY_CRITICAL     Приоритет критических сообщений Положительное целое число от 1 до 1000; значение по умолчанию 1000
6 PRIORITY_INFO     Приоритет информационных сообщений Положительное целое число от 1 до 1000; значение по умолчанию 400
7 PRIORITY_WARNING     Приоритет предупредительных сообщений Положительное целое число от 1 до 1000; значение по умолчанию 800
8 PRIORITY_USER     Приоритет пользовательских сообщений Положительное целое число от 1 до 1000; значение по умолчанию 600
9 NODE     Список параметров узла Начало списка параметров, значений не имеет
10   NAME   Если был задан ключ NODE, то логическое имя узла Строка символов не более 128, сформированная по правилам записи идентификаторов в языке ТехноCи, параметр не может быть опущен
11   CONFIG_IO   Параметры драйвера УСО контроллера управления Список параметров с ключевыми словами DRIVER и DEVICE_INI
12     DRIVER Имя динамически загружаемой библиотеки Строка символов не более 512, по умолчанию "DriverTC.dll"
13     DEVICE_INI Имя конфигурационного файла для драйвера УСО контроллера управления
Строка символов не более 512, по умолчанию "device.ini"
14     DEVICE_STORE Имя файла для сохранения состояния каналов устройств ввода/вывода
Строка символов не более 512, по умолчанию "device_store"
15     FLAG_STORE Признак сохранения состояния каналов устройств ввода/вывода 0 – сохранение состояния каналов устройств ввода/вывода отсутствует;
1- cохранять состояния каналов устройств ввода/вывода; по умолчанию равен 1
16   START_TYPE   Режим запуска интерпретатора RunTC в узле "COM-SERVER"- при запуске отладчика DbgTC или OPC-сервера на данном узле будет автоматически запущен интерпретатор RunTC; "GENERAL" - запуск интерпретатора осуществляется вручную; "OTHER"- узел не предполагает наличие интерпретатора; значение по умолчанию, равное "GENERAL"
17   DATA_TRANSFER   Режим передачи переменных от контроллера в OPC-сервер "OPTIMIZED" - передача измененившихся данных из числа назначенных по подписке в OPC-сервере на станции слежения; "GENERAL" - передача всех данных; значение по умолчанию, равное "GENERAL"
18   BUF_MESS   Размер очереди для выдачи технологических сообщений из контроллера управления в станцию отображения Интервал допустимых значений положительные целые числа от 1 до 200, значение по умолчанию 50
19   MONITORING   Частота фиксации времени выполнения задач в интерпретаторе Положительное целое число от 1 до 65355; значение по умолчанию 1;
20   NAME_MESS   Признак печати логического имени контроллера в технологических сообщениях 1 - печать логического имени контроллера в технологических сообщениях, 0 - нет; значение по умолчанию 1
21   NUMBER_MESS   Признак печати номера задачи в технологических сообщениях 1 - печать номера задачи в технологических сообщениях, 0 - нет; значение по умолчанию 1
22   TIME_IMPORT   Частота выполнения обмена по импорту переменных Интервал допустимых значений положительные целые числа, значение по умолчанию 500 миллисекунд
23   TIME_PING   Период с какой частотой библиотека RunTCOPC посылает по сети запрос ping для обновления информации в структуре STR_INFO_NODE Интервал допустимых значений положительные целые числа, значение по умолчанию 1000 миллисекунд
24   TIME_RECV_BASE   Частота периода обновления данных, передаваемых контроллером на станцию
отображения
Интервал допустимых значений положительные целые, значение по умолчанию 500 миллисекунд
25   CPU   Список параметров котроллера, задается если запуск интерпретатора будет осуществляться ( не "OTHER") Начало списка параметров, значений не имеет
26     NAME Если был указан ключ CPU, логическое имя контроллера Строка символов не более 12, сформированная по правилам записи идентификаторов в языке ТехноCи, параметр не может быть опущен
27     PATH_LOG Путь к файлу печати отладочных сообщений интепретатора Строка символов не более 512; значение по умолчанию - отсутствует файл печати
отладочных сообщений
28     INTERFACES IP-адрес или имя
хоста одного или двух сетевых интерфейсов, разделенных запятой.
IP-адрес записывается в кавычках как последовательность четырех трехзначных номеров разделенных символом точка, например "192.168.100.001"; имя хоста задается как строка символов не более 128, например "UZEL1"; если в контроллере установлено две интерфейсные карты, то допускается задание параметров второго интерфейса. Параметры первого интерфейса отделяются от параметров второго интерфейса символом запятая. Например, "192.168.1.3","192.168.2.3"
29     MAX_TIME_CONNECT Максимальное время подключения по сетевому
интерфейсу
Положительное целое число от 1 до 65355; по умолчанию 3000;
Может быть задано одно или два значения через запятую. если в контроллере установлено две интерфейсные карты, то второе значение задает максимальное время подключения второго интерфейса, например, 5000,6000
30     PORT Номер порта для обмена по сетевым интерфейсам Интервал допустимых значений номера порта положительные целые числа от 4000 до 9999, значение по умолчанию 9000
31     PORT_START Номер порта для запуска интерпретатора из отладчика при помощи программы STARTUP.exe Интервал допустимых значений номера порта положительные целые числа от 4000 до 9999, значение по умолчанию 19000
32     CFG Путь доступа к конфигурационному файлу tc.cfg Строка символов не более 512, содержащая путь, по умолчанию путь к текущему каталогу ".\\"
33     PATH_RUN Путь доступа к файлам загрузочных модулей выполняемых в узле задач и файлам с исходными текстами программ Строка символов не более 512, содержащая путь, по умолчанию путь к текущему каталогу ".\\"
34     PATH_STORE Путь доступа к файлам сохранения состояния отлаживаемых программ Строка символов не более 512, содержащая путь, по умолчанию путь к текущему каталогу ".\\"
35     MEMORY_USE_CRITICAL Критическое число килобайт используемой памяти в контролере, если используется памяти больше заданного значения, в этом случае контроллер будет перегружен Положительное целое число от 1 до 2147483647; значение по умолчанию 0, что означает - отсутствует контроль используемой памяти
36     MEMORY_USE_WARNING Допустимое число килобайт используемой памяти в контролере, если используется памяти больше заданного значения, в этом случае будет выведено предупреждение Положительное целое число от 1 до 2147483647; значение по умолчанию 0, что означает - отсутствует контроль используемой памяти
37     WDT_TIME Период контроля работоспособности с использованием таймера "watch-dog" Положительное целое число; интервал допустимых значений номера порта от 2000 до 65535; значение по умолчанию 5000
38     WDT_DLL Путь к файлу с динамически загружаемой библиотекой работы таймера "watch-dog" Строка символов длиной не более 512, содержащая полный путь с именем файла динамически загружаемой библиотеки таймера "watch-dog", по умолчанию ".\\WDT.dll".
39   REDUNDANCY   Свойства обмена для поддержания режима дублирования Начало списка параметров, значений не имеет
40     REDUNDANCY_TYPE Вид интерфейса, по которому по которому выполняется обмен данными о "живучести" между активным и пассивным контроллером "ETHERNET" - обмен по сети Ethernet;
"SERIAL" - обмен по последовательному интерфейсу;
значение по умолчанию, равное "SERIAL"
41     REDUNDANCY_COMPORT_NAME "COM1", …,"COM3" - имя порта последовательного интерфейса, указывается, если задан параметр REDUNDANCY_TYPE, равный "SERIAL" Строка символов не более 32; значение по умолчанию, равное "COM1"
      RDN_DLL Путь к файлу с динамически загружаемой библиотекой арбитра режима дублирования Строка символов не более 512,. содержащая полный путь с именем файла динамически загружаемой библиотеки арбитра; значение по умолчанию отсутствует
42     TIME_CHECK Период проверки обоюдной работоспособности активным и пассивным контроллерами в дублированном варианте работы Интервал допустимых значений положительные целые числа, значение по умолчанию 1100 миллисекунд
      TIME_MAX_SEND_STATE Пауза между посылками состояния арбитру для переключения его состояния Интервал допустимых значений положительные целые числа, значение по умолчанию 1000 миллисекунд
43     TIME_SEND_ACTIVE Период в миллисекундах подтверждения работоспособности активным и пассивным контроллерами друг друга в дублированном варианте работы Интервал допустимых значений положительные целые числа, значение по умолчанию 110 миллисекунд
44     TIME_SEND_STATE Частота передачи базы данных (состояния) от активного контроллера пассивному в дублированном варианте работы Интервал допустимых значений положительные целые числа, значение по умолчанию 0 - состояние передается каждый раз после выполнения очередного цикла задачи
45   TIME_TEST_ACTIVE   Период проверки наличия связи OPC-сервера с активным контроллером Положительные целые числа, значение по умолчанию 2000 миллисекунд
46   TIME_TEST_PASSIVE   Период проверки активным контроллером наличия связи с пассивным контроллером Положительные целые числа, значение по умолчанию 2000 миллисекунд
47   TASK   Описатель задачи, выполняемой узлом Начало списка параметров, значений не имеет
48     INCLUDE Имя файла включения в исходный текст программы Строка символов не более 12, принимающее любое значение имени с расширением *.h, *.s может быть увказан, если в исходном тексте программы присутствуют файлы включения
49     NAME Если был указан ключ TASK, то имя *.run файла загрузочного модуля задачи Строка символов не более 8, принимающее любое значение имени с расширением *.run, параметр не может быть опущено
50     START_TYPE Режим запуска задачи на выполнение "START" - программа TC после запуска интерпретатора сразу же начинает выполняться; "STOP" - в случае ожидания программой TC запуска со стороны отладчика; значение по умолчанию, равное "START"

Рассмотрим подробнее назначение параметров конфигурационного файла.

Параметр, заданный ключевым словом PROJECT_NAME конфигурационного файла, определяет имя проекта, подлежащего выполнению интерпретатором или отладчиком.

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

Параметр, заданный ключевым словом COLORS_MESS конфигурационного файла, определяет коды цветов сообщений. Формат задания параметра:

  COLORS_MESS =
  {
    BACK : <color1>
<n1>[-n2] : <color2>
  },
   
где <n1> - начало диапазона приоритета сообщения в пределах от 1 до 1000;
  <n2> - конец диапазона приоритета сообщения в пределах от 1 до 1000;
  <color1> - цвет фона
  <color2> - цвет символов

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

Код цвета символов
Цвет символов
1 BLACK Черный
2 GREEN Зеленый
3 CYAN Цианистый (ярко-зеленый)
4 RED Красный
5 MAGENTA Малиновый
6 BROWN Коричневый
7 LIGHTGRAY Светло-серый
8 DARKGRAY Темно-серый
9 LIGHTBLUE Светло-голубой
10 LIGHTGREEN Светло-зеленый
11 LIGHTCYAN Светло-цианистый
12 LIGHTRED Светло-красный
13 LIGHTMAGENTA Светло-малиновый
14 YELLOW Желтый
15 WHITE Белый

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

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

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

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

Рассмотрим далее списки параметров конфигурационного файла.

Список параметров, заданный ключевым словом NODE (описатель узла), определяет параметры узла в конфигурационном файле. Таких описателей узлов может быть более одного, в зависимости от описываемой конфигурации. В состав описателя узла NODE могут входить параметры, заданные ключевыми словами NAME, CONFIG_IO, START_TYPE, DATA_TRANSFER, BUF_MESS, TIME_IMPORT, TIME_RECV_BASE, CPU, REDUNDANCY, TIME_TEST_ACTIVE, TIME_TEST_PASSIVE, TASK.
Рассмотрим подробнее назначение параметров описателя узла, заданных ключевым словом NODE.

Параметр, заданный ключевым словом NAME в описателе узла, определяет символьную строку, устанавливающую логическое имя узла. Для обращения к данным базы данных УСО, полученным в контроллере, через ОРС сервер на операторской станции используется механизм привязки переменных, использующий логическое имя узла. Включение поименованных узлов в конфигурационный файл позволяет станции отображения следить за состоянием сети не только для контроллеров управления, но и для любых других компьютеров, непосредственно не связанных с процессом управления.

Параметры драйвера УСО контроллера управления определяются при помощи ключевого слова CONFIG_IO, после которого следует определить значения ключевых слов:

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

Параметр, заданный ключевым словом START_TYPE в описателе узла, определяет режим запуска на выполнение интерпретатора RunTC в узле. Параметр может принимать следующие значения:

Параметр, заданный ключевым словом DATA_TRANSFER в описателе узла, определяет режим передачи данных от интерпретатора на станцию слежения. Параметр может принимать следующие значения:

Параметр, заданный ключевым словом BUF_MESS, определяет размер очереди для выдачи технологических сообщений из контроллера управления в станцию отображения. Этот размер во избежание потери сообщений не должно быть меньше общего числа всех возможных технологических сообщений, порождаемых во всех задачах TехноCи на очередном программном цикле данного контроллера управления. Рекомендуется вместо конкретного числа задавать значение параметра в виде символов "MAX".

Параметр, заданный ключевым словом MONITORING определяет частоту фиксации времени выполнения задач в интерпретаторе в кратности периода выполнения задачи, если равен 1, то фиксируется каждый цикл выполнения задачи, если равен 3, то каждый третий и так далее.

Параметр, заданный ключевым словом NAME_MESS, определяет признак наличия в строке технологического сообщения логического имени контроллера, выполняющего задачу.

Параметр, заданный ключевым словом NUMBER_MESS, определяет признак наличия в строке технологического сообщения номера задачи, выполняющейся в контроллере управления.

Параметр, заданный ключевым словом TIME_IMPORT, определяет частоту в миллисекундах периода выполнения обмена по импорту переменных в контроллере управления.

Параметр, заданный ключевым словом TIME_PING определяет с какой частотой библиотека RunTCOPC посылает по сети запрос ping по протоколу ICMP для обновления информации в структуре STR_INFO_NODE полей _1_StatePing1, _1_StatePing2, _2_StatePing1, _2_StatePing2, _1_TimePing1, _1_TimePing2, __2_TimePing1, _2_TimePing2. В этой структуре узел размещает информацию о своем сетевом состоянии.

Параметр, заданный ключевым словом TIME_RECV_BASE, определяет частоту в миллисекундах периода обновления данных, передаваемых контроллером на станцию отображения.

Параметр, заданный ключевым словом TIME_TEST_ACTIVE определяет частоту в миллисекундах периода проверки наличия связи интерпретатора со станцеий слежения.

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

Список параметров, заданный ключевым словом CPU (описатель контроллера), определяет параметры контроллера в конфигурационном файле. Таких описателей для каждого узла может быть один или два (основной и резервный), в случае дублированной работы. В состав описателя узла могут входить параметры, заданные ключевыми словами NAME, PATH_LOG, INTERFACES, MAX_TIME_CONNECT, PORT, PORT_START, CFG, PATH_RUN, PATH_STORE, WDT_TIME, WDT_DLL, MEMORY_USE_CRITICAL, MEMORY_USE_WARNING. В случае, когда параметр START_TYPE не равен "OTHER", то есть интерпретатор не будет запущен (например, для принт-сервера), описатели контроллера должны отсутствовать в конфигурационном файле. Узел, в котором находится дублированный контроллер, должен содержать два описателя, содержащие параметры основного и резервного контроллеров.

Параметр, заданный ключевым словом NAME в описателе контроллера, определяет символьную строку, устанавливающую логическое имя контроллера в составе узла. Логическое имя контроллера управления не может быть опущено, при печати логическое имя контроллера управления выводится в технологическое сообщение.

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

  runtc-yyyy-mm-dd.log
       
где
yyyy
четыре цифры года, соответствующего дате создания файла;
 
mm
две цифры номера месяца (01 - январь, 02 - февраль и т. д.), соответствующего дате создания файла;
 
dd
день месяца в диапазоне от 1 до 31, соответствующий начальной дате создания файла.

Параметр, заданный ключевым словом INTERFACES, в описателе контроллера, определяет символьную строку, IP-адрес или имя хоста сетевого интерфейса.

Параметр, заданный ключевым словом MAX_TIME_CONNECT, в описателе контроллера, определяет максимальное число миллисекунд времени подключения по сетевому интерфейсу. Может быть задано одно или два значения через запятую. Второе значение задает максимальное время подключения второго интерфейса.

Параметр, заданный ключевым словом PORT, в описателе контроллера, определяет номер порта для обмена по сетевым интерфейсам.

Параметр, заданный ключевым словом PORT_START, в описателе контроллера, определяет номер TCP-порта для запуска интерпретатора из отладчика при помощи программы STARTUP.exe. Программа первоначального запуска STARTUP.exe в операцинонной системе Windows CE осущесвляет запуск интерпретатора с параметрами, заданными в ini-файле STARTUP.ini, например:

"\HardDisk\Project\RunTC.exe" /D"\HardDisk\Project\tc.cfg" /name=K10_1

По инициативе отладчика интерпретатор в контроллере может быть остановлен и запущен заново с использованием сетевого запроса по номеру порта, заданного параметром PORT_START.

Параметр, заданный ключевым словом CFG, в описателе контроллера, определяет путь доступа к конфигурационному файлу tc.cfg для интерпретатора.

Параметр, заданный ключевым словом PATH_RUN, в описателе контроллера, определяет путь доступа к текущему каталогу с файлами загрузочных модулей выполняемых в узле задач для интерпретатора. Файлы загрузочных модулей выполняемых задач имеют имя, совпадающее с именем файла исходной программы, но с расширением *.run. Для работы отладчика на станции отображения необходимы файлы *.s (исходный файл с программой TехноCи) и *.run (результат компиляции программы TC), находящиеся в каталоге, заданном параметром PATH_RUN; для работы интерпретатора в контроллере управления необходимы только файлы *.run.

Параметр, заданный ключевым словом PATH_STORE, в описателе контроллера, определяет путь доступа к файлам сохранения состояния задач и файлов сохранения состояния каналов устройств ввода/вывод. Файлы сохранениясостояния задач имеют имя, совпадающее с именем файла исходной программы, но с расширением *.st0 и *.st1 (таким образом, на каждый исходный файл приходится два файла сохранения состояния и два файла состояния каналов устройств ввода/вывода, чем достигается повышение надежности при сбоях дискового накопителя). Информация из файлов сохранения используется при перезапуске контроллеров управления.

Сохранение состояния каналов устройств ввода/вывода выполняется, если параметр FLAG_STORE равен 1.

Для реализации контроля работоспособности системы с использованием таймера "watch dog" интерпретатором RunTC необходимо в файле конфигурации указать хотя бы один из двух параметров WDT_TIME или WDT_DLL.

Параметр, заданный ключевым словом WDT_TIME, в описателе контроллера, определяет период контроля работоспособности с использованием таймера "watch-dog" и не может быть меньше 2 секунд, по умолчанию он равен 5 секундам.

Параметр, заданный ключевым словом WDT_DLL, в описателе контроллера, определяет путь к файлу с динамически загружаемой библиотекой работы таймера "watch-dog".

Параметр, заданный ключевым словом MEMORY_USE_CRITICAL, в описателе контроллера, определяет предельное значение используемой памяти в контроллере, если используется памяти больше заданного значения, в этом случае контроллер будет перегружен, при этом в область технологических сообщений будет выведено следующее сообщение:

  RUNTC - ДОСТИГНУТ КРИТИЧЕСКИЙ ПРЕДЕЛ ИСПОЛЬЗУЕМОЙ ПАМЯТИ, КОНТРОЛЛЕР ПЕРЕГРУЖАЕТСЯ

Параметр, заданный ключевым словом MEMORY_USE_WARNING, в описателе контроллера, определяет определяет допустимое значение используемой памяти в контролере, если используется памяти больше заданного значения, то в область технологических сообщений будет выведено следующее сообщение:

  RUNTC - ДОСТИГНУТ ПРЕДЕЛ ИСПОЛЬЗУЕМОЙ ПАМЯТИ

В случае наличия в контролере 32 Мб памяти, параметры контроля за состоянием используемой памяти в описателе контроллера рекомендуется указывать в следующих пределах:

  FREE_MEMORY_WARNING = 2000;
FREE_MEMORY_CRITICAL = 8000;

Если параметры контроля за состоянием используемой памяти в описателе контроллера опущены, то это означает, что отсутствует контроль за состоянием используемой памяти в контроллере.

Список параметров, заданный ключевым словом REDUNDANCY (описатель режима дублирования узла), определяет параметры обмена для поддержания режима дублирования в конфигурационном файле. Описатель режима дублирования включается в состав параметров узла только, если предполагается наличие режима дублирования контроллеров управления, должен быть опущен для самостоятельного контроллера. В состав описателя режима дублирования узла могут входить параметры, заданные ключевыми словами REDUNDANCY_TYPE и REDUNDANCY_COMPORT_NAME.

Параметр, заданный ключевым словом RDN_DLL в описателе режима дублирования, определяет путь к файлу с динамически загружаемой библиотекой арбитра режима дублирования. Параметр, заданный ключевым словом REDUNDANCY_TYPE в описателе режима дублирования, определяет режим выполнения сетевого обмена. Если задано значение, равное, "TCP", то обмен между активным и пассивным контроллером для управления режимом дублирования осуществляется по сети Ethernet и сетевому протоколу TCP/IP; если задано значение, равное, "SERIAL", то обмен данными для управления режимом дублирования осуществляется по последовательному интерфейсу. Если выбран режим обмена данными по последовательному интерфейсу, то должен быть определен параметр, заданный ключевым словом REDUNDANCY_COMPORT_NAME, который определяет символьное имя порта последовательного интерфейса в операционной системе, например, для Windows XP символьное имя порта "COM1", …,"COM3". Имя может отличаться для другой операционной среды.

Параметр описателя режима дублирования, заданный ключевым словом TIME_CHECK период в миллисекундах выполнения тестового опроса работоспособности пассивного контроллера со стороны активного контроллера. Параметр описателя режима резервирования, заданный ключевым словом TIME_MAX_SEND_STATE определяет паузу между посылками состояния арбитру для переключения его состояния. Параметр, заданный ключевым словом TIME_SEND_ACTIVE определяет число миллисекунд, задающее периодичность передачи подтверждения активности со стороны активного контроллера пассивному контроллеру. Параметр, заданный ключевым словом TIME_SEND_STATE определяет число миллисекунд периода передачи данных от активного (основного) контроллера к пассивному (резервному) контроллеру.

Список параметров, заданный ключевым словом TASK (описатель задач узла), определяет параметры задачи, выполняемой узлом. В узле может выполняться как единственная задача, так и несколько, в зависимости от конфигурации, то есть таких описателей задач в одном узле может быть несколько. В состав описателя задач узла могут входить параметры, заданные ключевыми словами INCLUDE, NAME и START_TYPE.

Имена файлов включений в исходный текст программы могут быть перечислены параметрами с ключами INCLUDE. Для каждого нового файла включений должен быть задан свой ключ INCLUDE. Например:

       INCLUDE="includ1.h"
       INCLUDE="includ2.s"

Параметр, заданный ключевым словом NAME в описателе задачи, определяет как символьную строку имя задачи, выполняющейся в узле. Это имя совпадает с именем символьного файла программы и ее загрузочного модуля, если опустить расширение файла. Если имя символьного файла программы ТехноСи <имя>.s, то имя загрузочного модуля задачи <имя>.run, тогда имя задачи <имя>.

Параметр, заданный ключевым словом в описателе задачи, определяет режим запуска на выполнение задачи в узле. Значение параметра, равное, "START" означает, что программа TехноCи после запуска интерпретатора сразу же начинает выполняться. Значение параметра, равное, "STOP" означает, что программа TехноCи после запуска интерпретатора не выполняется, а ожидает запуска со стороны отладчика.

Параметр, заданный ключевым словом TIME_SYNCHRO конфигурационного файла, определяет величину периода выдачи OPC-сервером запроса синхронизации времени в контроллерах для поддержания единого времени в сети. Параметр задается в миллисекундах. Если значение параметра равно нулю, то синхронизация выполняться не будет.

Параметр, определяемый ключевым словом NAME_SYNCHRO, задает IP-адрес(а) сетевых интерфейсов или NETBIOS-имя узла, который имеет право выполнять синхронизацию времени аналогично заданию в параметре INTERFACES; по умолчанию используется “localhost”, например:

     NAME_SYNCHRO = "Node1","Node2"

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

  RUNTC – ДУБЛИКАТ СИНХРОНИЗАТОРА ВРЕМЕНИ: <имя узла>
МНОЖЕСТВЕННЫЙ КОНФИГУРАЦИОННЫЙ ФАЙЛ

При совместной работе с проектом нескольких разработчиков возникает необходимость отслеживания нескольких вариантов конфигураций одного проекта, например для проверки различных режимов дублирования или же последовательной отладки разных задач. Эту проблему решает конфигурационный файл с множественной конфигурацией. При этом каждый разработчик работет только с одним конкретным экземпляром конфигурации, который актуален в данный момент времени. Имя этой текущей конфигурации сохраняется в символьном файле tc.cur на его компьютере в той же директории проекта, где расположен соответствующий файл tc.cfg. Множественный конфигурационный файл содержит список конфигураций, где каждая новая конфигурация предваряется строкой следующего формата:

CONFIGURATION = “‹имя конфигурации›”

Структура каждой отдельной конфигурации из множества вариантов аналогична обычному конфигурационному файлу с одной конфигурацией. Одно из имен, заданных параметром ‹имя конфигурации›, должно быть помещено в файл текущей конфигурайии tc.cur. Если файл tc.cur отсутствует, то текущей считается первая конфигурация из заданного списка. Файл текущей конфигурации может содержать пробельные строки или однострочные комментарии, начинающиеся с двух косых символов "//". Первая, отличная от комментария строка, считается значением текущей конфигурации.

Ниже приведен пример конфигурационного файла, содержащего три конфигурации: для дублированной, локальной работы и выполнения тестового примера.

  CONFIGURATION = "РЕЗЕРВНАЯ"

PROJECT_NAME = "Резервная ЗАО Якол АСУТП 'Бензин'"
NODE =
{
    NAME = "K1"
DATA_TRANSFER = "OPTIMIZED"
CPU =
{
      NAME = "K1_1"
INTERFACES = "localhost"
MAX_TIME_CONNECT = 3000
PORT = 9011
CFG = ".\\tc.cfg"
PATH_RUN = ".\\"
PATH_STORE = ".\\ST1_1\\"
PATH_LOG = ".\\LOG1_1\\"
    }
CPU =
{
      NAME = "K1_2"
INTERFACES = "localhost"
MAX_TIME_CONNECT = 3000
PORT = 9012
CFG = ".\\tc.cfg"
PATH_RUN = ".\\"
PATH_STORE = ".\\ST1_2\\"
PATH_LOG = ".\\LOG1_2\\"
    }
TIME_RECV_BASE = 200
NUMBER_MESS = 0
REDUNDANCY =
{
      REDUNDANCY_TYPE = "ETHERNET"
TIME_SEND_STATE = 1100
    }
TASK=
{
      NAME = "k1"
START_TYPE = "START"
INCLUDE = "K1.s"
    }
CONFIG_IO=
{
      DEVICE_INI = "K1_device.ini"
DRIVER = "DriverTC.dll"
DEVICE_STORE = "driver_store"
FLAG_STORE = 1
    }  
  }    
 
CONFIGURATION = "ЛОКАЛЬНАЯ"

PROJECT_NAME = "Локальная ЗАО Якол АСУТП 'Бензин'"
NODE =
{
    NAME = "K1"
DATA_TRANSFER = "OPTIMIZED"
CPU =
{
      NAME = "K1_1"
INTERFACES = "localhost"
MAX_TIME_CONNECT = 3000
PORT = 9011
CFG = ".\\tc.cfg"
PATH_RUN = ".\\"
PATH_STORE = ".\\ST1\\"
PATH_LOG = ".\\LOG1\\"
    }
TASK=
{
      NAME = "k1"
START_TYPE = "START"
INCLUDE = "K1.s"
    }
CONFIG_IO=
{
      DEVICE_INI = "K1_device.ini"
DRIVER = "DriverTC.dll"
DEVICE_STORE = "driver_store"
    }  
  }    
 
CONFIGURATION = "ТЕСТОВАЯ"

PROJECT_NAME = "Тестирование ЗАО Якол АСУТП 'Бензин'"
NODE =
{
    NAME = "K1"
DATA_TRANSFER = "OPTIMIZED"
CPU =
{
      NAME = "K1_1"
INTERFACES = "localhost"
CFG = ".\\tc.cfg"
PATH_RUN = ".\\"
PATH_STORE = ".\\ST1T\\"
PATH_LOG = ".\\LOG1T\\"
    }
TASK=
{
      NAME = "k1-test"
START_TYPE = "STOP"
    }  
  }    

  tc.cur содержит строку ЛОКАЛЬНАЯ