Все параметры, задаваемые в конфигурационном файле 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 | содержит строку | ЛОКАЛЬНАЯ |