Использование PostgreSQL#

Установка ПО#

Необходимо убедиться, что установлены пакеты доступа к БД для IngortechSCADA:

  • BDE_v5202

Для использования БД PostgreSQL необходимо установить следующее ПО:

Данная документация описана на основе дистрибутива PostgreSQL версии 15.1_64bit и PostgreSQL ODBC драйвера версии 13.02.0.

При установке ПО использовались настройки по умолчанию, при настройке доступа к серверу PostgreSQL использовались имя и пароль postgres для суперпользователя.

../_images/setup1.png

Если параметр Настроить переменные среды был установлен, то установочный файл PostgreSQL добавит каталог установки к переменной PATH.

Настройка доступа и команд#

Указание пароля

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

Для этого, в используемом окне консоли, в ОС Windows можно использовать команду:

set PGPASSWORD=postgres

в ОС Unix, команду:

export PGPASSWORD=postgres

Указание кодовой страницы

К сожалению, информация, которую выводят утилиты PostgreSQL выводится на русском языке, в кодировке Windows-1251.

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

chcp 1251

 или

mode con cp select=1251

При работе с файловыми менеджерами смена кодировки, как правило, не работают, поэтому для выполнения команд необходимо написать командный файл для выполнения нужных утилит PostgreSQL.

Командный файл

Для работы с утилитой psql.exe можно создать командный файл с именем pg.bat, в котором указать нужную кодовую страницу и пользователя:

@echo off
chcp 1251
PATH C:\Program Files\PostgreSQL\15\bin;%PATH%
if not exist "%APPDATA%\postgresql" md "%APPDATA%\postgresql"
set PGPASSWORD=postgres
psql.exe -h localhost -U "postgres" -d postgres -p 5432 %1 %2 %3 %4 %5 %6

Если путь к утилите psql.exe не установлен, то в этом файле необходимо указать полный путь.

После этого, можно использовать команду pg.bat для выполнения команд psql.exe из любого каталога.

Создание БД PostgreSQL#

Для работы с IngortechSCADA в системе PostgreSQL необходимо создать базу данных и пользователя.

  1. Создаем каталог C:\RTSPG, в котором будет размещаться база данных PostgreSQL.

  2. Для настройки базы данных PostgreSQL создаем файл commands.psql с командами по созданию и инциализации.

    DROP DATABASE IF EXISTS rts_database;
    drop tablespace IF EXISTS rts_space;
    drop role IF EXISTS rts;
    
    CREATE ROLE rts
        LOGIN PASSWORD 'rts'
        NOINHERIT CREATEDB;
    
    create tablespace rts_space
        owner rts
        location 'C:\RTSPG';
    
    CREATE DATABASE rts_database
        WITH
        OWNER = rts
        ENCODING = 'WIN1251'
        LC_COLLATE = 'Russian_Russia.1251'
        LC_CTYPE = 'Russian_Russia.1251'
        TABLESPACE = rts_space
        CONNECTION LIMIT = -1
        IS_TEMPLATE = False
        template = template0;
    
    \c rts_database
    
    CREATE SCHEMA rts AUTHORIZATION rts;
    
    Этот файл создает:
    • место для базы, указывающее на каталог C:\RTSPG;

    • базу данных с именем rts_database в этом каталоге;

    • пользователя для работы с именем и паролем rts.

    Предупреждение

    При выполнении этот файл удаляет и заново создает базу данных, поэтому если его применить с существующей базой данных, то все данные будут потеряны!

  3. Запустить файл команд с помощью созданного командного файла.

    Убедиться что все команды выполнены успешно, в соответствии с примером приведенным ниже.

    C:\RTSPG>pg --file=commands.psql
    Текущая кодовая страница: 1251
    DROP DATABASE
    DROP TABLESPACE
    DROP ROLE
    CREATE ROLE
    CREATE TABLESPACE
    CREATE DATABASE
    Вы подключены к базе данных "rts_database" как пользователь "postgres".
    CREATE SCHEMA
    

Настройка доступа к PostgreSQL#

  • Запустить системную утилиту для конфигурации ODBC.

    ../_images/setup2.png
  • В диалоге списка имен ODBC нажать кнопку Добавить и в появившемся окне выбрать драйвер PostgreSQL.

    ../_images/setup3.png

    Если на окне выбора драйвера его нет, это значит что не установлен драйвер ODBC для PostgreSQL. Установите драйвера ODBC и повторите операцию.

  • Настроить драйвер ODBC в соответствии с иллюстрацией.

    ../_images/setup4.png

    В качестве имени пользователя и его пароля указать значение «rts».

  • На окне настройки нажать кнопку Test и убедиться что тест соединения с базой данных прошел успешно.

    ../_images/setup5.png
  • Из каталога IngortechSCADA (по умолчанию каталог C:\RTS), запустить утилиту dbexplor.exe. Убедиться, что имя для созданной базы данных PostgreSQL есть в списке.

    ../_images/setup6.png

    Нажать кнопку «+» и, в окне запроса введя текст rts для имени и пароля пользователя, убедиться, что имя успешно открывается.

    Закрыть утилиту dbexplor.exe

Настройка сервера РТС#

Настройки

Запустить сервер РТС, в диалоге его настроек вызвать диалог настройки доступа к данным:

Данные ‣ Драйвер баз данных ‣ 1

Появившемся диалоге, произвести настройки согласно иллюстрации.

../_images/setup7.png

Необходимо указать:

  • Выбрать имя для доступа к базе данных.

  • Указать имя и пароль пользователя.

  • На закладке Создание таблицы ввести текст SQL запроса для создания таблиц переменных.

    CREATE TABLE if not exists "VAL_%s" (
        measure timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
        val FLOAT NOT NULL,
        rawval FLOAT,
        state INTEGER NOT NULL,
        rawstate INTEGER,
        mcode bigserial, PRIMARY KEY (measure)
    );
    
    CREATE UNIQUE INDEX if not exists "IDX_%s" ON "VAL_%s" (measure ASC);
    
  • На закладке Добавление значения ввести текст SQL запроса для вставки нового значения в таблицу.

    INSERT INTO "VAL_%s" (measure,val,state,rawval,rawstate,mcode) VALUES (%m,%l,%t,%L,%T,%c)
    

Проверка работы

  • Запустить Сервера РТС с измененными настройками.

  • Убедиться что сервер запустился без ошибок доступа к базе данных.

  • Загрузить на сервер любой конфигурацию.

  • С помощью утилиты rtVarEmu.exe начать эмуляцию получения новых измерений.

    ../_images/setup8.png
  • Убедиться, что сервер успешно сохраняет полученные данные в базу.

    ../_images/setup9.png

    О чем свидетельствует число сохраненных данных и нулевое значение количества ошибок.

  • После тестирования, применить