На прошлой неделе Паскаль Дресселгауз (Pascal Dresselhaus) рассказал и показал сервис, да-да, не сервер, а именно сервис для работы с базами данных: Database Server, Part 1: Database connectivity easily established with TwinCAT. Ссылка на видео вебинара где-то в конце поста.
Функциональная концепция
Все крутится вокруг TwinCAT Database Server | TS6420 (для TwinCAT 2), который представляет из себя сервис TwinCAT. Устанавливается и покупается он отдельно. Затем автоматически встраивается в TwinCAT и "прозрачно" предоставляет всякие удобные средства для работы с базами данных. Впрочем так делают любые другие сервисы TwinCAT, поэтому сам по себе он не сервер, а сервис — удобная прослойка, позволяющая автоматизировать ряд действий с базами данных.
Сервис Database Server | TF6420 для TwinCAT 3 умеет чуть больше. Во первых, он предоставляет объектно-ориентированную (ООП) библиотеку сущностей для доступа к БД, а во вторых, позволяет работать с базами не только из ПЛК-задачи, но и с помощью модулей C++.
Общение с невидимыми сервисами, начинается с конфигуратора: с помощью реактора запросов SQL Query Editor мы готовим запросы, а затем на выходе получаем XML-файл с конфигурацией (настройками) для БД. После этого не составит труда подключиться к базе данных из программы ПЛК-рантайма.
Работать можно тремя разными способами (различной степени сложности):
- Авто-конфигурация (Configure Mode) — мы используем только конфигуратор, а переменные и данные затем курсируют между контроллером и БД автоматически.
- ПЛК-эксперт (PLC Expert Mode) — из программы ПЛК используем специальные функциональные блоки, которые читают/записывают данные, но не требуют знания специальных команд БД (без SQL-команд).
- SQL-эксперт (SQL Expert Mode) — ФБ работающие непосредственно с SQL командами БД.
Существуют несколько различных топологий сети для работы с БД. Не обязательно устанавливать TwinCAT Database Server на каждый ПЛК, можно собирать и компоновать данные различными способами и только затем отправлять в БД. Аналогично и с SQL-сервером — его можно установить как на каждый ПЛК, так и на выделенный сервер, отдельно и в единственном экземпляре.
Конфигуратор
Инструмент интегрируется с Microsoft Visual Studio. Конфигурация интегрируется в решение (solution) как отдельный проект по аналогии с TwinCAT Measurement (цифровой осциллограф). Унификация, интеграция и прочая синергия, проповедуемая отделом маркетинга.
Новый конфигуратор собран из тех же, легко узнаваемых окон, что и более ранние версии из TwinCAT 2. Дерево конфигурации выглядит как ряд вложенных друг в друга настроек, среди которых можно, выбрать тип необходимой базы данных или воспользоваться автоконфигуратором таблиц.
Возможна ситуация когда несколько решений (solution) работают с одинаковыми базами (с одинаковыми настройками). Чтобы не плодить одинаковые настройки, в конфигуратор встроена поддержка коллекций настроек (пул настроек, Database Pool), из которых простым перетаскиванием можно быстро вытащить типовую настройку в новый проект.
SQL Query Editor — великолепный инструмент, позволяющий создать или отладить SQL-команды и сильно упростить работу с таблицами БД. Причем этот же инструмент позволяет работать не только с конфигуратором, но и впоследствии работать с записями базы данных в рабочих условиях. Также впоследствии не составит труда отредактировать структуру таблиц, типы полей, имена и другие свойства таблицы.
Нажатием одной кнопки в SQL Query Editor можно оттранслировать SQL-команды в текст ПЛК-программы, а структуру таблицы в структуры переменных ПЛК-задачи.
Авто-конфигурация
Другое название — группы автологирования (AutoLog Groups); они позволяют работать с БД без программирования. Выглядят как группы символов (переменных, symbols) закрепленные за таблицами и автоматически сохраняемые циклически или только при изменении данных.
Добавляется эта штука кликом правой клавишей мыши и выбором пункта меню Add AutoLogGroup. Все устроено действительно просто. Затем мы можем донастроить автологирование:
- Выбрать тип старта — вручную или автоматически вместе с загрузочным проектом (boot project).
- Задать время цикла опроса — как часто сбрасывать данные в базу.
- Как записывать — добавлять, перезаписывать уже существующие (обновлять) или использовать кольцевой буфер по времени или количеству записей.
- Режим записи — циклический, только при изменении значений.
Затем у нас появляется три ответвления для каждой из подготовленных групп:
- AdsDevice — источник (и только источник) данных. Можно подключаться по именам символов или по индексу группы-смещение.
- Symbols — открывает браузер целевой системы и отображает все символы ADS-устройства. По аналогии с осциллографом, где можно выбирать из каких переменных (а правильнее сказать символов) мы будем считывать данные.
- DBTable — выбираем таблицу в которую будут записаны данные переменных. Нас предупредят, если мы попробуем выбрать неподходящую таблицу. Если же необходимо поступить как-то оригинально, то напротив полей таблицы можно выбрать переменные, подготовленные в пункте Symbols.
Режим автоконфигурации
FB_PLCDBAutoLog
- RunOnce() — выполнить группу один раз. Например, по событию в контроллере.
- Start()
- Stop()
- Status() — контроль ошибок и состояние обмена данными.
ПЛК-эксперт
Читать и записывать данные переменных вручную, но без применения SQL-команд.
FB_PLCDBWrite
- Write()
- WriteBySymbol()
- WriteStruct()
FB_PLCDBRead
- Read()
SQL-эксперт
Совсем низкоуровневый подход: отправляем SQL-команды, работаем с транзакциями, выполняем хранимые процедуры (stored procedures) и другие прямые действия с БД.
FB_SQLStoredProcedure
- Execute()
- ExecuteDataReturn()
- Release()
FB_PLCDBCmd
- Execute()
- ExecuteDataReturn()
FB_SQLResult
- Read()
- Release()
FB_SQLCommand
- Execute()
- ExecuteDataReturn()
Поддерживаемые базы данных
В справочной системе есть список с нюансами:
- Microsoft
- MS SQL database
- MS SQL Compact
- MS Azure SQL
- MS Access
- MS Excel
- ODBC
- PostgreSQL
- DB2
- InterBase
- Firebird
- NET / ODBC — MySQL
- OCI / ODBC — Oracle
- SQLite
- ASCII-файл
- XML базы данных
Вопросы и ответы
Q: Что дальше?
A: TwinCAT Database Server все еще развивается. Активно разрабатывается интерфейс для C++ модулей реального времени. Работают над поддержкой модных NoSQL баз данных.
Q: Какая необходима версия TwinCAT XAE и Visual Studio?
A: XAE build 3.1.4012, VS 2013/2015. Не поддерживается VS 2010.
Q: Поддержка старых файлов конфигурации.
A: Да, поддерживаются. Старые ФБ также работают. Есть односторонняя преемственность.
Q: Влияет ли AutoLog на нагрузку контроллера и насколько?
A: Зависит от количества символов, контроллера и много еще чего. Попробуйте, но вообще это просто подключению к ADS-порту и обычное чтение данных через ADS.
Q: Контроль ошибок?
A: Да, есть. В том числе и через ФБ.
Q: Как дела с логированием оверсамплинг данных?
A: Поддерживаются не только стандартные типы SQL, но и работа с потоками байт (byte streaming). Уже есть рабочие проекты, но конечно же все будет зависеть от производительности и ресурсов конечных систем.
No comments
Post a Comment
Note: Only a member of this blog may post a comment.