Конфигурация сервера

Файл конфигурации сервер имеет формат фала .config и состоит из списка нескольких erlang-термов, отвечающих за настройки конкретного функционального блока. Параметры конфигурации описываются в терминах языка Erlang.

Пример:

[
    erlang_term,
    erlang_term,
].

Конфигурация ядра сервера

Секция конфигурации ядра сервера имеет имя NET Server TM и выглядит следующим образом:

% Кофигурация tmsServer     
{tmsServer, [
    {tms_port, 9006},
    {port_web_admin, 9008},
    {connections, 8},
    {devproxy_check_period, 1800000},
    {archive_restore_period, 3600000},
    {archive_restore_depth, 15811200},
    {http_session_check_period, 60000},
    {http_session_timeout, 3600000},
    {archive_write_processes, 2},
    {config_reload_period, 30000},

    % Plugin для подключения к MySQL
    {tmsDbPoolWorker,[
        {pool_size, 5},
        {host, "127.0.0.1"},
        {port, 3306},
        {database, "stm_1"},
        {user, "stm"},
        {password, "stmserver"}
    ]},

    {plugins, [
        [
            {name, testPlugin},
            {type, worker},
            {folder, "test"}
        ]
    ]}
]}
Описание параметров секции:

Параметры конфигурации имеют вид {Параметр, Значение}.

  • tms_port – TCP порт для взаимодействия с драйверами опроса. Значение по умолчанию 9006; port_web_admin – TCP порт подсистемы WEB-отображения. Значение по умолчанию 9008;
  • connections – количество обслуживаемых подключений. Значение по умолчанию 8;
  • devproxy_check_period – период проверки файлов DevProxy. Значение задается в миллисекундах. Значение по умолчанию 1800000 (30 минут).
  • archive_restore_period – период проверки «дырок» в архивах. Значение задается в миллисекундах. Значение по умолчанию 3600000, (1 час);
  • archive_restore_depth - глубина восстановления архивов. Значение задается в секундах. Значение по умолчанию 15811200 (6 месяцев);
  • http_session_check_period - период проверки активности HTTP сесии. Значение задается в миллисекундах. Значение по умолчанию 60000 (1 минута);
  • http_session_timeout - время жизни HTTP сесии в милисекундах. Значение задается в миллисекундах. Значение по умолчанию 3600000 (1 час)
  • archive_write_processes - количество процессов для записи архивов. Значение по умолчанию 2;
  • config_reload_period - период перезагрузки файла tmsServer.config. Значение задается в миллисекундах. Значение по умолчанию 30000 (по умолчанию 30 сек)
  • tmsDbPoolWorker – параметры настройки подсистемы базы данных. Описание дано в пп.5.2
  • plugins – параметры настройки модулей расширения. Описание дано в пп.5.4

Конфигурация подсистемы базы данных

Секция конфигурации базы данных входит в состав секции настройки ядра сервера как параметр tmsDbPoolWorker (см. пп.5.1) и содержит список параметров, указанный в квадратных скобках.

Выглядит секция следующим образом:

{tmsDbPoolWorker, [
    {pool_size, 5},
    {host, "127.0.0.1"},
    {port, 3306},
    {database, "stm_1"},
    {user, "stm"},
    {password, "stmserver"}
]},
Описание параметров секции:
  • pool_size – количество подключений к базе данных MySQL. Значение по умолчанию 5;
  • host – ip адрес хоста на котором установлен MySQL. По умолчанию MySQL сервер устанавливается на ту же аппаратную платформу. Значение по умолчанию ”127.0.0.1“;
  • port – номер tcp порта на которм слушает MySQL. Значение по умолчанию 3306;
  • database – имя базы данных. Значение по умолчанию отсутствует. В данном примере значение равно "stm_1". Имя базы данных выбирается администратором на свое усмотрение при установке сервера;
  • user – имя пользователя базы данных. Значение по умолчанию отсутствует. В данном примере значение равно "tms". Имя пользователя выбирается на усмотрение администратора системы во время установки сервера;
  • password – пароль пользователя базы данных. Значение по умолчанию отсутсвует. В данном примере значение равно "tmsserver".

Конфигурация подсистемы логирования

Система логирования сервера построена на библиотеке Lager. Секция настройки логирования включена в файл настройки сервера tmsServedr.config и выглядит следующим образом:

%% Конфигурация подсистемы логирования Lager 
{lager, [
    {colored, true},
    {handlers, [
        {lager_console_backend, [
            debug,  
            {lager_default_formatter, [
                color,
                time, 
                " [",severity,"]", 
                "[",module,":",line,"] ", 
                message, "\n" 
            ]}
        ]},
        {lager_file_backend, [
            {file, "log/error.log"},
            {level, error},
            {date, "$D0"}
        ]},
        {lager_file_backend, [
            {file, "log/console.log"},
            {level, info},
            {date, "$D0"}]}
        ]},
        {error_logger_hwm, 500}
    ]}
]},

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

Подробное описание параметров настройки подсистемы логирования Lager можно найти на сайте производителя: https://github.com/basho/lager

Конфигурация подсистемы расширения

Секция подсистемы расширения выгляди следующим образом:

{plugins, [
    [
        {name, testPlugin},
        {type, worker},
        {folder, "test"}
    ]
]}

В состав сервера входит шаблон модуля расширения. Модуль называется test.

Описание параметров секции:

  • name – имя стартового модуля;
  • type – тип модуля;
  • folder – имя папки в которой расположены файлы расширения;

Изменять параметры этой секции не требуется. Она включена в состав сервера как пример использования расширений. Подробное описание формата и правил создания модулей расширения можно найти в документе «Руководство разработчика».

Конфигурация устройств

Для описания устройств с которых сервер может получать данные и которыми он может управлять (посредством драйверов) используются файлы определений с расширением def. Файлы определений устройств располагаются в подкаталоге devproxy основного каталога сервера.

Файл __main__.def является корневым файлом. В нем задаются ссылки на файлы описаний устройств. В обычной практике управлять файлами определений можно из web-интерфейса администратора, но если есть необходимость файлы можно изменять в ручном режиме. Файлы по сути являются текстовыми.

Формат файла main.def

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

{ “Имя_Устройства”, “Серийный_Номер”, “Файл_описания” }.

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

Параметры:

  • “Имя_Устройства” – имя устройства, например “i7041”, имя должно соответсвовать имени которое задано устройству в драйвере;
  • “Серийный_Номер” – серийный номер устройства. Если устройство не имеет серийного номера, то номер задается произвольно. Номер должен быть уникальным в пределах системы которую обслуживает сервер.
  • “Файл_Описания” – имя файла описания устройства задается без расширения.

Формат файла описания устройства.

Параметры устройства задаются строками в формате:

[ Тип, Имя, Описание, Формат ].

Описание полей:

  • Тип - всегда имеет формат {type, special}; тип может иметь значения ts,tu,tit,special;
  • Имя – задается в формате {name, «Имя параметра»};
  • Описание – задается в формате {comment, “Описание”};
  • Формат – это поле может принимать разные значения. Подробное описание см. ниже.

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

Пример:

[{type,special},{name,"SN"},{comment,"Серийный номер"}]. 
[{type,special},{name,"state"},{comment,"Состояние устройства"},{event_id, 1100}].
Формат поля «Формат»

Пример описания параметра устройства. Поля type, name и comment описаны выше. В данном разделе описан формат поля «Формат». Данное поле может отсутствовать, если не требуется дополнительных операций на данными получаемыми от прибора.

Поле «Значение» имеет формат { тип_поля, значние_поля },

где:

  • тип поля – может иметь значение tu, calc, store.
  • значение_поля – в зависимости от значения тип_поля будет меняться и значение поля. Для типа tu значение задается как строка описывающая условие при котором будет производиться телеуправление. Условие задается в терминах языка erlang. Для поля calc значение задается как строка содержащая функцию для обработки значения. Функция пишется на языке erlang. Для поля store задается список параметров с и периодом.

Пример описания поля с форматом tu:

[
    {type,tu},
    {name,"FC_100_9-Out"},
    {comment,"Выход № 1"},
    {tu,"('FC_100_1-Is'<5000) or ('FC_100_1-Is'>7500)"}
].

В данном примере описан алгоритм телеуправления. Если выполнится условие ('FC_100_1-Is' < 5000) or ('FC_100_1-Is' > 7500), то на выход FC_100_9-Out будет направлен сигнал ВКЛЮЧИТЬ иначе этот выход будет в состоянии ВЫКЛЮЧЕНО.

Пример описания поля с форматом calc и tit:

[
    {type,tit},
    {name,"FC_100_1-Is"},
    {comment,"Вход № 1"},
    {calc,"fun (X) -> ((X/1000)-4)*500/(20-4)+0 end."},
    {tit,"'FC_101_01-Is' == 1."}
].

В данном примере Значение получаемое на входе FC_100_1-Is будет обработано функцией fun (X) -> ((X/1000)-4)*500/(20-4)+0 end., при условии что значение на входе FC_101_01-Is будет равно 1. Иными словами здесь описано измерение значение по условию. В условиях можно использовать скобки и логические операции and, or, not, xor.

Пример описания поля c форматом store:

[
    {type,tit},
    {name,"A0+"},
    {comment,"Расход кВт*ч, тариф 0"},
    {store,{[{"Wp+",1800},{"dp0+",86400},{"mp0+",month}],"Общ.расход.актив"}}
].

В данном примере описано правило хранения данных в архиве. Расход электроэнергии по тарифу 0 будет храниться в трех вариантах:

  • 1800 – получасовые значения с именем Wp+
  • 86400 – суточные значения с именем dp0+
  • month – месячные значения с именем mp0+

Функции и условия описываются в терминах языка erlang.

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

Функции используемые в описании параметров не имеют имен (безымянные или анонимные функции). Функция начинается с выражения fun(X) ->, в скобках идет переменная в которую сервер запишет полученное от драйвера значение, заканчивается заголовок функции двумя символами ->. В теле функции описывается математическое выражение, в котором можно использовать арифметические и логические операции. Заканчивается функция обязательным выражением end., точка после слова end обязательна.

Пример функции: fun (X) -> ((X/1000)-4)*500/(20-4)+0 end.

Подробно с синтаксисом описания функции можно ознакомиться по адресу: http://erlang.org/doc/reference_manual/functions.html#id78194.

Подробно с математическими и логическими операциями можно ознакомиться по адресу: http://erlang.org/doc/reference_manual/expressions.html#id85024.

results matching ""

    No results matching ""