Розроблення людино-машинних інтерфейсів та систем збирання даних з використанням програмних засобів SCADA/HMI
Головна > 7.Розроблення підсистеми трендів
Функція збереження зводиться до формування запису в базі даних, що відповідає за тренд. Під трендовим записом (trend record) будемо розуміти структурований об’єкт у базі даних трендів (див. рис. 7.1), що відповідає за відмітку значення та інших властивостей тегу або інших об’єктів SCADA із зазначенням часу, коли створився цей запис (або відбулося вимірювання), а також додатковими статусними відмітками, зокрема якістю значення.
Для означення серверної частини у більшості SCADA/HMI необхідно виконати такі дії:
1) сконфігурувати серверний компонент, якщо він виділений як окрема підсистема;
2) вказати базу даних, куди буде записуватися тренд;
3) вказати періодичність або подію, при якій буде відбуватися записування;
4) вказати змінну або вираз, значення якого буде використовуватися для записування;
5) означити структуру (перелік полів) запису;
6) вказати глибину збереження.
У SCADA-програмах, з явно виділеним серверними компонентами (трендовий сервер) для трендів потрібно вказати їхні параметри. Оскільки в такому випадку трендовий сервер є окремим застосунком, до якого можуть підключатися клієнти, що знаходяться на інших пристроях, то при налаштуванні вказують:
назву сервера;
мережну адресу (як правило, IP);
TCP/UDP-порт.
SCADA-програми можуть працювати як з пропрієтарними (власними) форматами баз даних, так і з відкритими з використанням сторонніх СКБД. У першому випадку постачальник SCADA-програми сам означує формат бази даних, забезпечує записування у файли, вибірку, індексацію і т. п. і вирішує проблеми швидкості операцій та оптимізацію. Враховуючи, що трендовий сервер є частиною SCADA, це дає можливість постачальникові максимально оптимізувати роботу сервера. Для добре оптимізованих трендових серверів пропрієтарний формат має, мабуть, лиш одну незручність – неможливість безпосереднього підключення до БД сторонніх клієнтів. Однак, якщо SCADA має засоби експорту даних або відкритий інтерфейс доступу, ця особливість не є проблемою. Обговорення переваг і недоліків форматів збереження наведено також у підрозділі 9.3.
У випадку використання відкритих форматів БД трендовий сервер по суті є клієнтом для сторонніх СКБД, які забезпечують роботу з базою даних. У цьому разі на моделі, що представлена на рис. 7.1 треба було б БД показати в складі окремої СКБД. У такій ситуації розробник проекту для SCADA повинен означити базу даних, таблиці в ній, а також налаштувати доступ. При доступі до сторонніх СКБД часто використовуються відкриті стандарти, типу ODBC, OLEDB, ADO.NET. Це дає можливість використовувати практично будь-які СКБД сторонніх постачальників. Цей спосіб потребує інсталяції додаткового ПЗ, його налаштування, а для платних СКБД – також його закупівлі. Серед можливих проблем, які можуть виникнути при цьому, – погана оптимізація доступу через особливості СКБД або інтерфейсу. Додатково про відкриті стандарти доступу до БД можна почитати в підрозділі 8.3 посібника.
Тренди потрібні для відслідковування зміни значення змінної (тегу) від часу. В ідеалі зацікавленій особі необхідні дані з якнайменшою періодичністю, однак фактично є кілька чинників, які потребують означення періодичності записування:
дані не має сенсу записувати частіше ніж вони зчитуються із джерела;
одні змінні змінюються в проекті відносно дуже часто, інші дуже рідко;
значення, як правило, не змінюється, і при періодичному записуванні вони будуть повторюватися;
періодичність записування впливає на об’єм даних, які необхідно зберігати і оброблювати;
для порційних виробництв (Batch) величина змінної має значення тільки тоді, коли в обладнанні проходить приготування продукту або інша операція.
У багатьох SCADA-програмах є можливість вказати подію, при якій буде відбуватися формування запису. Як правило, доступні такі варіанти:
періодично (циклічно): запис створюється з указаною періодичністю незалежно від того, чи відбулися якісь зміни в джерелі даних;
спорадично, за зміни значення: записування відбувається тільки при зміні стану змінної:
зміна якості змінної;
для дискретних і цілочисельних змінних – це зміна значення;
для змінних з плаваючою комою – це зміна значення з урахуванням зони нечутливості;
за подією: записування відбувається при виникненні події, наприклад, за виконання певної умови;
комбіновано: комбінацією наведених вище умов.
У всіх програмах SCADA/HMI є можливість вести записування значення змінної (тегу), у деяких можна також проводити записування результату певного виразу або результату виконання функції чи скрипту.
У багатьох системах існують вимоги до формування в трендових записах відмітки часу. Більшість SCADA формують її рівною часу, коли відбувалося збереження. Хоч відмітку часу можна записувати з точністю до мілісекунд, що б мало точно відображати, коли відбулися зміни, фактично це не відповідає дійсності. Це добре видно на моделі контуру, що показана на рис. 7.1. Спочатку відбувається зміна на об’єкті, потім є певне запізнення в каналі вимірювання і зміна відбувається в ПЛК (або засобі введення/виведення), після чого з певним запізненням значення буде прочитано підсистемою введення/виведення SCADA. Після оброблення в БДРЧ дані будуть доступні підсистемі трендів. Якщо архівування відбувається через СКБД і використовується відмітка часу формування запису, то значення буде ще старішим. При проектуванні, виборі рішення та засобів автоматизації цю особливість треба чітко розуміти. Деякі SCADA дають змогу формувати в записі відмітку часу, рівною отриманою з підсистеми введення/виведення. Є рішення, де відмітка часу зчитується з ПЛК, а там формується безпосередньо в модулі вимірювання. Якщо необхідні відмітки часу з точністю до мілісекунд, то очевидно потрібні рішення, що ґрунтуються на веденні архівних записів безпосередньо в засобі вимірювання.
Деякі SCADA/HMI програми дають можливість також означувати поля, які можна записувати, тобто формувати структуру трендового запису. Це дає можливість оптимізувати базу даних, налаштувавши її під конкретне завдання.
Глибина збереження може задаватися як через налаштування часу максимально старих даних, так і через значення максимального об’єму (наприклад, через кількість записів або максимальний розмір пам’яті). У цьому випадку вказують, що необхідно робити зі старими записами.