Від датчика до графіка (RS-485, OPC, SCADA), Архангельський Олексій (блог)
Необхідність збору даних, ведення статистики та аналізу цієї статистики трапляється на кожному кроці. У промисловості це зазвичай показання різних датчиків (наприклад, температура, тиск тощо). Але як же можна організувати начебто такий не складний процес? Тут треба зрозуміти що необхідно зробити для того, щоб все запрацювало. Якщо коротко описати весь процес, то він буде таким: ставимо датчик, підключаємо його приладу, далі тягнемо від цього приладу провід в комп'ютер і дивимося на комп'ютері показання з приладу. Все, нічого складного немає, залишилося тільки розібратися, як це робиться. Розгляну як створити на прикладі приладів OWEN, мережі RS-485 і програми MasterScada. Ось зазвичай ті питання, які виникають при проектуванні такої системи: 1) Що робити, коли підключаємо датчик у прилад (наприклад, ТРМ202 фірми OWEN). 2) Що робити з пристроєм, підключеним до мережі RS-485. 3) Що відбувається на перетворювачі AC4. 4) Як дані з'являються на комп'ютері і хто їх забирає з мережі RS-485. 5) Як ці дані переповзають у програму збору даних (наприклад, MasterScada). 6) Як вони малюються на графіках? 7) Звідки беруться в мережі графіки та ще й розсортовані за датою?
Почнемо, картинки в коротко показують схему коли інформація з датчика прилітає в MasterScada і відображається на екрані


На зображенні показаний цей довгий шлях від звичайного датчика до повноцінного графіка. Починається з того, що датчик береться кудись вставляється і проводами приєднується до приладу, який зазвичай стоїть неподалік. Думаю, тут не складе проблем взяти потрібний датчик і правильно, дивлячись очима в інструкцію, думаю мізками здогадатися як він підключається. =) Найголовніше відкопати в налаштуваннях приладуі виставити правильний тип датчик і трохи повозитися, щоб прибрати похибку показань. Зазвичай похибка забирається налаштуваннями прямою, треба лише підкоригувати її значення для цього датчика, якщо його показання не вірні.
Тепер кілька слів про мережу, як показала практика, вона досить стабільна якщо правильно підібрати резистори з обох кінців проводів. Один перед входом до перетворювача, інший на протилежному кінці дроту біля останнього приладу. Найголовніше правильно підключати прилади, вони повинні бути послідовно включені і розпаралелювати їх не варто. Можна (а може краще сказати потрібно) скласти міні-схемку або планчик, де розташовуються прилади і як до них йдуть дроти, дуже допомагає визначати в чому може бути проблема з передачею даних, просто відстежуючи звідки дані доходять, а звідки ні.
Перетворювач штука звичайна та не цікава, це остання точка мережі RS-485. Зазвичай резистор стоїть вже в перетворювачі, наприклад, у АС-4 від OWEN, можна вибрати 3 резистори або взагалі без нього. Робиться це перемикачами з боку, що йде до мережі RS-485. З іншого боку, у нього йде юсб-порт. У комп'ютері як було написано після установки драйверів він визначається як ком-порт. Робота з ним не відрізняється від роботи з іншим, тільки якщо зависне, можна висмикнути шнур і всунути назад, іноді допомагає. =) Правда такого не було з цим перетворювачем, це траплялося з перехідником юсб-ком порт, яким я підрубався до вінчестера для його реанімації. Але це вже не на тему.
Закінчивши з апаратною частиною, можна переходити до програмної. Це програма для отримання даних із приладів OPC-сервер. Який зазвичай використовується програмами типу MasterScada, OPM та купою інших для отримання через нього даних із приладів. OPC-сервервстановлюється як стандартна програма. OPC-сервер OWEN працює так, якщо ми хочемо його налаштувати, то запускаємо по окремому ярлику через пуск-програми. А якщо він запущений якоюсь програмою та забирає дані, то нічого з ним зробити не можна, доведеться зупинити та вимкнути програму, яка його запустила.
Підбираємось ближче до фінішу. Залишилося налаштувати програму збору даних. Я розгляну окремий випадок на прикладі MasterScada, в інших програмах все робиться також або аналогічно. Щоправда вона мені сподобалася тим, що видалася мені найрозвиненішою системою. А потім я просто переконався в цьому, мало якісь подібні продукти дають таку свободу в налаштуваннях, гнучкість та й купу можливостей. MasterScada є таким середовищем проектування, яке можна починати розробляти проект як з апаратної частини (які прилади підключені) так і з боку самого об'єкта (наприклад, якийсь завод із цехами). Я зазвичай розробляю спочатку одну, потім іншу далі починаю з'єднувати датчики з їхніми «Значеннями». Значення - термін MasterScada, "Значення" може підключатися до одного з параметрів приладу або краще з'єднатися з ним. Проектую апаратну частину нам необхідно додати до неї «Комп'ютер». MasterScada може бути мережевий, тобто ставите її на різні комп'ютери, робите єдиний проект і показує в ньому перелік всіх комп'ютерів. Далі до кожного комп'ютера додаєте всі використовувані ним OPC-сервера. Далі глибше… ліземо за параметрами\змінними\значеннями\показаннями (загалом називайте як хочете) у кожен OPC-сервер, тикаємо галкою за тими параметрами, які нам потрібні і тиснемо «ОК». Параметри додаються до свого OPC-сервера. Власне думаю, нічого складного виникнути не повинно, в інструкції все докладно написано. До речі, це називається «дерево Системи».
Тепер "дерево Об'єктів". З другою половиною теж досить просто якщо нічого складного вам не треба… Наприклад, просто бачити на екрані значення з приладів. =) Так, можливості MasterScada величезні. Я б навіть сказав це цілий фреймворк =). Достатньо заглянути у довідку та скільки класів та методів надає сама MasterScada. Але! Це все працює під .NetFramework 2.0, якщо я не помиляюся цифрою. Втім без нього сама MasterScada як мені пам'ятається і не працює, перед інсталяцією вона спочатку встановити всі необхідні їй пакети. Блін, відволікшись, знову в прогерство потягнуло… Так, будуємо «дерево Об'єктів», а саме пишемо назву головного об'єкту в самому вгорі наприклад «СпиртЗавод» і підключаємо до нього об'єкти з іменами «Цех Лікеро-горілчаний мій коханий» «Цех лікеро-горілчаний тут не пригощають» =) і підключаємо до них «Значення». Тобто параметри, які ми хочемо дивитися з приладу. Робиться це натисканням правої кнопки миші на об'єкті, та там взагалі все можна мишкою зробити. І підключати параметри з OPC-серверів до відповідних "Значень" робиться мишкою: у дереві системи параметр хапається лівою кнопкою мишки і відпускається тільки на його значенні в дереві об'єктів. А потім "Запустити". Всі! Якщо все зроблено та налаштовано правильно, то через деякий час або відразу (як налаштували) з'являться всі параметри значень з приладів.
Графіки налаштовуються індивідуально кожного об'єкта. У MasterScada вони називаються тренди, видно через те, що вони крутіші ніж просто графіки, куримо опис тренда у вікіпеді: тренд. Треба створити тренд і мишкою перенести в нього значення, за яким необхідно спостерігати. Налаштувати можна все від кольору лінії до обробки даних. Ці тренди можна зберігати автоматично в будь-який час, для цього MasterScada має налаштування розкладу. Але! Трендинікуди не скидаються самі, а дуже шкода ... Довелося включити VisualStudio і написати програму яка бере ці збережені графіки і кидає в мережу ... Складного нічого немає, беремо файл і кидаємо його, наприклад, в мережевий диск, звідки він буде доступний всім. Ось і все, нічого складного. Прогу не викладаю тут, тому що вона суто специфічна під певну сітку і під певний проект у MasterScada, так вже вийшло що треба було швидше і часу робити її універсальною не було, так вона і залишилася «чисто вузькоспеціалізованою». =) Удачі!