OpenSCADAWiki: Home Page Uk/Using/PLC
 
English (1 Kb) English
Russian (1 Kb) Российский

 (2 Kb) Сторінку заморожено, актуальна тут та її пристрої тут.

56711


OpenSCADA у програмованому логічному контролері (ПЛК)

Ім'я: ПЛК
Засновано: жовтень 2008р
Учасники: Роман Савоченко
Опис: Проект присвячено створенню: середовища виконання ПЛК, прошивки ПЛК та апаратних конфігурацій спеціалізованих ПЛК. Розглянуто вбудовані системи на основі архітектур x86 та ARM, а також окреме обладнання вбудованих рішень:


Contents

Вступ

Сучасні системи автоматизованого керування технологічними процесами (АСУ ТП) є достатньо складними. Умовно ієрархію АСУ ТП можна поділити на два рівня: нижній та верхній рівень. Нижній рівень АСК ТП містить польове обладнання (датчики та виконавчі механізми), а також програмовані логічні контролери (ПЛК). Верхній рівень представляє із себе систему оперативної візуалізації та контролю за технологічним процесом — SCADA-система. ПЛК становить відповідальну частину АСК ТП, яка виконує функцію збору даних польового обладнання, обчислення та видачу керуючих, блокуючих та інших дій на керувальні органи польового обладнання.

OpenSCADA є відкритою реалізацією SCADA-системи, яку засновано на модульній архітектурі, що дозволяє будувати кінцеві рішення під різноманітні вимоги. Цільовим призначення OpenSCADA є системи верхнього рівня, однак висока ступінь модульності, і як наслідок масштабованість, дозволяють вирішувати широке коло задач суміжних областей.

Програмовані логічні контролери

Ринок ПЛК насичено широким спектром виробів різної архітектури та конструкції. Архітектурно ПЛК можна поділити на три умовні групи:

Жорстко-програмовані ПЛК за звичай будуються на основі одно-кристальних мікроЕОМ або мікросхемах програмованої логіки. Програма таких контролерів або прошивається одноразово, надаючи можливість програмної параметризації, або ж формується спеціалізованими засобами, які наділено функціями компіляції бінарної прошивки середовища виконання з програмою користувача, наприклад ISaGRAF або LabView. У якості представника такого ПЛК можна у приклад навести модулі розподіленого ППО фірми Advantech.

Високоінтелектуальні комерційні ПЛК за звичай будуються на базі більш потужного обладнання з архітектурою, близькою до повноцінного ПК. Основною відмінністю від стандартного ПК-сумісного ПЛК є закрита програмна, а часто і апаратна архітектури. Програмне оточення таких контролерів за звичай базується на операційній системі реального часу, яка планує декілька потоків користувача з поділом їх за пріоритетом. Користувацьке програмування таких ПЛК здійснюється роботою у фірмовому програмному оточенні, яке формує у якості результату бінарний код потоку ПЛК. У якості представника такого обладнання можна навести ПЛК серії S7 фірми Siemens.

ПК-сумісні ПЛК з відкритим доступом — це група скоріше не ПЛК, прямо сумісних з ПК, а ПЛК, які не містять інтегрованого середовища виконання і часто постачаються без операційної системи. Архітектура таких ПЛК може бути різною, починаючи від економічних рішень архітектури x86 та закінчуючи архітектурними рішеннями ARM та MIPS. Середовище виконання таких ПЛК за звичай формують з ПЗ того ж класу, що і у випадку з жорстко програмованими ПЛК, у вигляді бінарного файлу для виконання під одну з розповсюджених, масштабованих або спеціалізованих ОС (DOS, QNX, Linux, WinCE, VxWorks). Часто зустрічаються і спеціалізовані під задачу рішення. У якості представників цього класу можна розглядати ПЛК формфактору PC/104.

Варіанти конструктивного виконання ПЛК можна умовно поділити на моно-блокові та модульні. Моно-блокові ПЛК надають фіксовану конфігурацію ППО, спеціалізовану під обмежене коло завдань. Модульні конструкції надають можливість легкого розширення конфігурації ППО під потрібне завдання. Існують також і гібридні конструкції, які представляють із себе моно-блок, спроможний розширювати своє ППО за рахунок зовнішніх блоків ППО, які підключаються по одному з стандартних інтерфейсів, наприклад, за RS-485.

OpenSCADA як середовище виконання ПЛК

Архітектура системи OpenSCADA дозволяє створювати кінцеві рішення під різні вимоги та ресурси шляхом модульного розширення. Ця можливість виявляється корисною у світлі обмеженості ресурсів ПЛК. Крім того, враховуючи постійний розвиток апаратного забезпечення, а також безперервне підвищення інтеграції та економічності сучасних мікропроцесорних рішень, OpenSCADA дозволяє послідовно розширювати функціональність ПЛК, зберігаючи наступність зі старими рішеннями. Наприклад, на основі системи OpenSCADA можна будувати рішення з мінімальними вимогами на рівні: CPU 100 МГц, пам'ять та флеш-диск по 30 Мб.

Як було зазначено вище ресурси сучасних ПЛК можуть коливатися у достатньо великих межах, причому ПЛК фіксованого типу, побудовані на однокристальних мікроЕОМ, все далі витискаються у вузько-спеціалізовані галузі розвиненими ПК-архітектурами. Така тенденція робить все більш цікавою можливість створення уніфікованої відкритої платформи для реалізації середовища виконання ПЛК на основі уніфікованих ПК-платформ.

OpenSCADA дозволяє реалізувати ідею створення відкритої платформи для реалізації середовища виконання ПЛК. Вже зараз можна реалізовувати оточення ПЛК, які нічим не поступаються комерційним інтелектуальним контролерам, а багато у чому і перевершують їх за рахунок можливості інтегрування функцій, характерних для SCADA систем, у оточення ПЛК, розширюючи функціональні та користувацькі характеристики ПЛК та приводячи його на єдину зі SCADA кодову базу, а також оптимізуючи вартість кінцевого рішення.

Перелічимо функції, які вирішуються OpenSCADA у межах оточення ПЛК:

Прошивка та створення програмного оточення ПЛК архітектури x86

Архітектура x86 порівняно недавно стала позиціюватися як вбудована та реальні рішення на її основі, у цій галузі, рідко мають ресурси (< i386), яких недостатньо для виконання повноцінної ОС та розвинутого оточення. З цієї причини, а також з причини більшої уніфікації архітектури, індивідуальні збірки ядра Linux та базових програм оточення ОС здійснюються достатньо рідко, що за звичай характерно для архітектури ARM. Більш цікавим та практичним для x86, для широкого кола обладнання, є збірка прошивок зі стисненою кореневою файловою системою (КФС). Однак все ще можлива індивідуальна збірка прошивок за допомогою систем складання на кшталт "BuildRoot" або "PTXDist", нижче. Також можлива і пряма установка дистрибутиву Linux.

Інструменти та збірка робочих оточень прошивок зі стиснутою КФС, на основі дистрибутиву ALTLinux

Перед реалізацією прошивки ПЛК, даного розділу, ставились наступні вимоги:


Враховуючи вищенаведені вимоги для створення прошивки було обрано інструмент створення дистрибутивів mkimage ALTLinux. mkimage — інструмент для складання штампів Sisyphus-based системи за шаблоном. У якості вихідного набору шаблонів було взято набір шаблонів формування дистрибутивів ALTLinux за адресою git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop, командою:

За основу формування PLC шаблону було взято стандартний "rescue", як найбільш компактний та близький до цільової задачі ПЛК.


Первинне складання здійснювалось на основі пакетної бази дистрибутиву ALTLinux 5.1, де присутнє ядро реального часу від XENOMAI. Для отримання низки специфічних пакетів потрібно підключити репозиторій "ALTLinux 5.1" від проекту OpenSCADA:

rpm ftp://ftp.oscada.org/ALTLinux/5.1 openscada main

Складання

У першу чергу створювалась конфігурація ПЛК без локального дисплею, у зв'язку з наявністю обладнання такого типу та відсутності обладнання для Touch-панелей.


Новий шаблон ПЛК було названо "plc" та він тестувався на платах формфактору PC/104 MOPSlcdLX фірми Kontron, ATH400-128 фірми Diamond Systems та модульного ПЛК LP-8781 фірми ICP DAS. Архів результуючого дерева mkimage з шаблоном "plc" можна завантажити тут ftp://ftp.oscada.org/OpenSCADA/PLC (шаблони та матеріали окремих контролерів розташовано у власних теках).


Ключовим моментом конфігурації нового шаблону стало написання скрипту ініціалізації (rc.sysinit), скрипту після-інсталяційної конфігурації штампу прошивки та переліку пакетів у штампі прошивки. Перший скрипт оформлено у вигляді пакету "startup-plc". Другий скрипт вкладено до шаблону "plc" за шляхом: profiles/plс/image-scripts.d/01system. Перелік пакетів вкладено до шаблону "plc" за шляхом: profiles/pkg/lists/plс.in.


Процедура створення прошивки з шаблону наступна:


У результаті отримаємо вихідну теку у "profiles/out/" з виглядом:

Інсталяція

Завантажувати прошивку можна на: USB-flash, IDE-flash та HDD. Однак, у випадку із USB-flash можуть бути проблеми з очікуванням ініціалізації USB-підсистеми та потрібно буде трохи "побігати" по діалогам завантажувача.


Файлова система може бути FAT або EXT2/3. У випадку з EXT3 монтування ФС відбувається як EXT2, через проблеми у ініціалізаторі. У випадку із EXT2/EXT3 потрібно буде використовувати не завантажувач syslinux, а extlinux, конфігурація якого власне майже нічим не відрізняється.


Надалі монтуємо носій та розміщуємо на ньому файли з вихідної теки, наступним чином.
У випадку із FAT та syslinux:

У випадку із EXT2/3 та extlinux:


Для забезпечення надійного функціонування робочі дані розміщуються у файлі "work" з файловою системою EXT3. Файлова система цього файлу перевіряється на цілісність під час ініціалізації. Створюється цей файл наступним чином:


У випадку з файловою системою EXT2/3 на цільовому диску можна файл "work" не створювати. Тоді робочі дані будуть розміщуватися безпосередньо у директорії "root" цільового диску.

 (2 Kb) Це ненадійне рішення, оскільки файлова система цільового диску становиться нестатичною, а перевірити її немає можливості, у зв'язку з раннім монтуванням у "ro" та потенційною ненадійністю перевірки ФС, змонтованої у "ro", а також неможливості перемонтування як EXT3.

Наступним етапом є конфігурація та ініціалізація завантажувача. Для конфігурації завантажувача потрібно відредагувати файл "syslinux/syslinux.cfg" або "extlinux/extlinux.conf" наступним чином:


У випадку вибору ідентифікації завантажувального розділу за ідентифікатором дізнатися його для нашого розділу можна командою: blkid.


У випадку з міткою це завдання дещо складніше оскільки робиться це для різних файлових систем по різному.


Для файлових систем EXT2/3 це робиться утилітою e2label. Наприклад, так: $ e2label /dev/sdb1 PLС


Для файлової системи FAT це робиться низкою утиліт із комплекту mtools або за допомогою parted, що простіше. За допомогою mtools це робиться наступним чином:


Тепер можемо ініціювати завантажувач:


На цьому з завантаженням та ініціюванням прошивки все. Якщо отриманий диск не завантажується тоді:

Результат

У результаті отримаємо прошивку розміром від 30 до 100Мб, яка задовольняє фактично всім заявленим вимогам та забезпечує:

OpenSCADA

У якості середовища виконання ПЛК використано систему OpenSCADA. Для цього випадку візьмемо збірку з окремими пакетами на кожний модуль та вкажемо для встановлення віртуальний пакет openscada-plc, який містить залежності на всі пакети OpenSCADA, які за звичай використовуються для даної конфігурації. Пакет графічної бібліотеки gd2 було перезібрано без підтримки формату графічного файлу xpm та який отримав назву libgd2-noxpm. Перезбирання робилася для того щоб виключити тяжкі залежності на бібліотеки графічного інтерфейсу XOrg.


У результаті отримано середовище виконання ПЛК з підтримкою:


Конфігурація OpenSCADA запускається у режимі демону та у локалі "en_US.UTF-8" (ще доступні локалі "ru_RU.UTF-8" та "uk_UA.UTF-8"), з використанням локальної БД SQLite, надаючи по замовченню мережеві сервіси:

Деталі реалізації

У цьому розділі розглянемо деталі дерева ОС прошивки, скрипт ініціалізації rc.sysinit.plc та скрипт приготування дерева ОС прошивки.


Для побудови прошивки ПЛК було використано наступний перелік пакетів:


Перелік модулів ядра Linux, стадії попередньої ініціалізації, з метою зменшення розміру штампу ініціалізації було зменшено до переліку:


До скрипту приготування дерева було додано функції:


Скрипт ініціалізації (rc.sysinit.plc) було наділено функціями:


У результаті цих дій таблиця монтування кінцевого дерева ПЛК набула вигляду:

Налаштування графічного інтерфейсу

Один із варіантів прошивки складається із графічним інтерфейсом, який, однак, потрібно налаштувати для отримання автоматичного запуску з середовищем візуалізації OpenSCADA. Крім того потрібно відзначити, що прошивка з графічним інтерфейсом не містить всіх драйверів та може потребувати її перебудови під потрібне обладнання.


Після завантаження та входу до консолі потрібно сконфігурувати XServer, автоматичний графічний вхід, запуск графічного оточення та автоматичний запуск OpenSCADA із оточення IceWM:

Пакетна база ALTLinux T6

Наступним етапом у створені прошивок став перехід на пакетну базу дистрибутиву ALTLinux T6. В цілому процедуру створення прошивки було збережено, з низкою змін, але при цьому було додано деякі покращення та розширення:


Оскільки з'явилася можливість легко довстановлювати потрібні пакети безпосередньо із репозиторія то відпала потреба у окремій збірці прошивок із GUI. Тобто можна легко довстановити потрібний менеджер вікон (WM) або оточення робочого столу із потрібними драйверами, чим створювати окрему прошивку із обмеженим переліком драйверів.


Скрипт "startup-plc" виявився непотрібним у нових прошивках оскільки перемонтування на запис кореневої ФС "root" здійснюється раніше, на стадії первинної ініціації. Скрипт "profiles/plс/image-scripts.d/01system" перейменовано у "profiles/plс/image-scripts.d/init1-PLC", оскільки змінено та розширено. Перелік пакетів прошивки залишився у "profiles/pkg/lists/plс.in" та дещо змінено.


Для отримання низки специфічних пакетів потрібно під'єднати репозитірий "ALTLinux T6" від проекту OpenSCADA:

rpm ftp://ftp.oscada.org/ALTLinux/t6 openscada main

Процедура створення прошивки із шаблону фактично не змінилась:

# Створення скрипту конфігурації "configure"
$ ./autoconf
# Конфігурація складальника для генерації штампів дисків. Ключ "--with-imagetype" можна встановити у "iso", або опустити,
# для створення комбінованого ISO-штампу
$ ./configure --with-distro=kdesktop --with-branding=altlinux-kdesktop --with-version=6.0 --with-language=en_US --with-imagetype=flash
# Збірка штампу
$ make plc.cd


Вміст вихідної теки із штампом та встановлення прошивки на файлову систему FAT та EXT2/3/4 відрізняється тільки перейменуванням файлу архіву ФС із "plc" у "live". Встановлення ISO-штампу на USB-flash, HDD, SSD виконується командою dd:

$ dd if=LP8x81-ALTLinuxT6-OpenSCADA_0.8.0.6-i586-plc.iso of=/dev/sd{x} bs=4096

Замість файлу "work" потрібно створити розділ EXT3 з міткою "alt-live-storage", якщо це не ISO-штамп. Створювати новий розділ можна за допомогою fdisk, якщо FAT розділ було створено не на всьому доступному просторі диску, або за допомогою parted, де розділ FAT можна зменшити. За деталями створення розділу відішлемо до документації на fdisk або parted.


Конфігурація файлів "syslinux/syslinux.cfg" та "extlinux/extlinux.conf" не змінилася, окрім зміни ім'я архіву ФС із "plc" на "live".


У результаті отримуємо прошивку розміром від яка забезпечує:


Для побудови прошивки ПЛК використовувався наступний перелік пакетів:


Перелік модулів ядра Linux, стадії попередньої ініціалізації, був дещо змінений та склав:


Скрипт підготовки дерева "profiles/plс/image-scripts.d/init1-PLC" виконує функції:

Ядро реального часу

Для низки задач ПЛК важливим, часто і критичним, критерієм оточення є його рівень забезпечення реального часу (RealTime), тобто можливість роботи задач згідно із пріоритетами реального часу та забезпечення реакції на повідомлення згідно цим приорітетам.


Ядро Linux само по собі надає POSIX політики планування в реальним часом "SCHED_FIFO" та "SCHED_RR" із діапазоном пріоритетів (0...100). Однак важливий критерій "Частота таймеру та час реакції на нього" до версий ядер Linux 2.6.24 були дуже низькими, за мірками систем реального часу. У сучасних ядрах Linux (> 2.6.24) забезпечено підтримку таймерів високої роздільної здатності (HPET), що зменшило час реакції на таймер до рівня 100 мікросекунд, однак стабільність цього часу реакції не забезпечено. Для забезпечення стабільності реакції на таймер на рівні 60 мікросекунд, а також низки інших критеріїв реального часу, на цей день, потрібно ядро складати з одним із розширень реального часу.


У дистрибутивах ALTLinux помічено ядро 2.6.29-rt-up, яке зібрано із розширенням реального часу XENOMAI. У інших дистрибутивах, наприклад OpenSuSE помічено навіть продукти з такими розширеннями.


На цей час більш високі показники реального часу забезпечує розширення The Real Time Preempt Patch, при увімкнені повної підтримки (CONFIG_PREEMPT_RT), процес складання та результати роботи Linux ядер з якими будуть відстежуватися у цьому розділі.


Для тестування рівня реального часу тих або інших ядер будемо користуватися утилітою "Cyclictest", типовий рядок виклику та аргументи будуть такими: "$ cyclictest -t1 -c1 -p 80 -n -i 200 -l 100000". Де:


Пара вимірів для ядер Linux загального призначення:

kernel-image-rt-up-2.6.29

Це ядро міститься у дистрибутиві ALTLinux 5.1, а також перенесено у локальний репозиторій проекту OpenSCADA, для ALTLinux T6. Це ядро зібрано із розширенням XENOMAI та AUFS, що дозволяє використовувати його у прошивках із упакованою КФС, що і зроблено для ПЛК LP-8x81.


Результати тестів цього ядра:


Як видно із результатів тесту, патч XENOMAI не забезпечує пристойного рівня реального часу при використані стандартних механізмів планування реального часу POSIX, в той час як ядра версії 3 навіть без наявності особливих розширень реального часу забезпечують помітно кращий результат.


Потреба складання саме цього ядра із патчем/параметром CONFIG_PREEMPT_RT стоїть через наявність низки бінарних модулів від ICP_DAS, для "LP8x81". Також стоїть питання збірки ядра 2.6.33 з тієї-ж причини, але для "LP8x81 Atom". Попередні збірки ядер 2.6.29 та 2.6.33 виявили низку проблем, які будуть тут описані. Розглядається також варіант збірки сучасного ядра із CONFIG_PREEMPT_RT, а потім запит на збірку бінарних модулів у "ICP DAS".


Процес складання та тестування:

  1. Патчі CONFIG_PREEMPT_RT та AUFS часів 2.6.29 конфліктують на функції "debug_mutex_set_owner()", у CONFIG_PREEMPT_RT видалена — замінено на "mutex_set_owner()".
  2. При складанні виявлено низку проблем із "# typedef void irqreturn_t;" — замінено на "#include <linux/irqreturn.h>".
  3. Перший запуск із CONFIG_PREEMPT_RT, але без AUFS, пройшов вдало — результат вище.
  4. Запуск із AUFS виявив проблему виділення пам'яті AUFS у "aufs_mmap()" — робочий код AUFS взято цілком із попередньої збірки "rt-up-2.6.29.alt2".
  5. Запуск із AUFS виявив проблему зависання на корінні ФС у AUFS, схоже через можливість зациклювання/блокування RT-задачі — встановлено CONFIG_PREEMPT_NONE, на LP8781 та "AMD Turion" проблем не виявлено (можливо ця проблема через відсутність HPET на PLX8).
  6. На перший погляд ядро працює нормально, але помічено зісковзування на безперервне нарощування часу запізнення.
  7. Виконано адаптацію ядра для бінарної сумісності із модулями "slot" та "icp" від ICP_DAS. Модуль "8250_linpac" падає при завантажені, а "icpdas_8250" має безліч нерозв'язаних символів — потрібно ці модулі перескладати або пробувати інтерфейси > COM2 ініціювати через setserial — модулі перескладено, завдяки Golden Wang (тех. підтримка ICPDAS).
  8. Нове ядро встановлено під високе навантаження, конфігурацією проекту САУ кульових барабанних млинів:
    • Збій мережі із драйвером "via_rhine", після 4 діб роботи — збій очікуваний, зібрано драйвер "rhinefet", випробування продовжено.
    • На драйвері "rhinefet" система під навантаженням пропрацювала три тижні. Однак помічено, що переривання 11, на якому висить майже все стандартне обладнання (USB, Ethernet та може ще чогось), вимикається та мережа працює у режимі "Pool", що повільніше. Можливо вимкнення цього переривання відбувається і з "via_rhine", а він не може працювати у режимі "Pool", чому і пакети у/із мережі не ходять. Проблема пов'язана із відмовою та генерацією необроблених переривань одним із обладнань на переривані 11.
    • Виправлено виключенням вимкнення переривань за допомогою параметра ядра Linux "noirqdebug".
    • Адаптацію вдало завершено та прошивки на основі цього ядра готові до промислової експлуатації!
    • 01.03.2015: Замість функції EnableWDT() використано EnableSysWDT(), у зв'язку із обмеженням до 30 секунд та циклічних перевантажень якщо не завантажується за 30 секунд (до трьох перевантажень).
    • 17.03.2015: При участі служби підтримки ICP_DAS виправлено проблему драйверу послідовних інтерфейсів більш за COM2, яка призводила до "замерзання" ядра Linux (схоже у зв'язку із блокуванням переривань) після закриття одного порту та активності на хоча-б одному іншому.
    • 29.07.2015: Виявлено ще одну проблему із мережею із схожими симптомами вимкнення переривання 11, але: переривання 11 не вимикається та всі інші пристрої на ньому працюють, відтворюється тільки на конфігураціях із використанням обох інтерфейсів мережі, причому можливе "гальмування" тільки одного із них. Проблема вирішується тільки перевантаженням "загальмованого" мережевого інтерфейсу, командою: ifdown eth0; ifup eth0. Для виявлення та перезапуску рекомендується на рівні OpenSCADA додавати контроль трафіку та безпосереднє перевантаження інтерфейсу за його відсутністю.
    • 21.11.2016: Драйвер "rhinefet" адаптовано на предмет запобігання блокування переривань та вимкнення вектору переривань оскільки режим SHARE використовується. Наразі драйвер працює однак 19.12.2016 також було помічено гальмування мережі із двома цими адаптерами після біля двох тижнів роботи.
     (2 Kb) Відтак це обладнання зламане для роботи двох адаптерів та у цьому ПЛК ви можете використовувати лише один, для стабільної роботи!

 (2 Kb) Отримане ядро, перейменовано у "kernel-image-rt1-up-2.6.29.alt1", можна використовувати для PLC із HPET або таймером високої роздільної здатності, а також у "LP-8x81" та "LP-8x81 Atom" (тільки одне ядро)!

kernel-image-rt-up-2.6.33

Складання ядра версії 2.6.33 потрібне для контролерів фірми "ICP DAS" LP-8x81 та LP-8x81 Atom з причини наявності саме для нього, із патчем CONFIG_PREEMPT_RT, бінарних драйверів "ICP DAS", для LP-8x81 Atom.


Результати тестів цього ядра:


Процес складання та тестування:

  1. Збірка ядра із вихідних "ICP DAS" (2.6.33.7) та конфігурацією, успадкованою з ядра 2.6.29 (вихідні тексти містять підозріло багато *.rej файлів, а також "staging/comedi" не може бути складений) — вантажиться та в цілому працює; модулі "ipic" та "slot" вантажаться; модуль "8250_linpac" падає у функції "platform_device_add"; низка програм зависає на операціях із ФС, з повідомленням: "task openscada:2153 blocked for more than 120 seconds".
  2. Заміна AUFS на версію із 2.6.29-rt1 — падає у rtmutex прямо на завантажені; заміна на офіційну із git показала такий-же результат, від початку використано патч "aufs+sqfs4lzma-2.6.33.patch" від DLink.
  3. Збірка оригінального ядра з патчами CONFIG_PREEMPT та AUFS — проблема знову з AUFS, але тепер він "/sbin/mingetty" у кінці знайти не може.
  4. Збірка оригінального 2.6.33.9 ядра з патчами CONFIG_PREEMPT та AUFS — проблеми ті-ж.
  5. Збірка із вихідних "ICP DAS" (2.6.33.7) для SMP — модуль OpenSCADA DAQ.JavaLikeCalc падає за незрозумілою причиною.
  6. Збірка оригінального ядра з патчами CONFIG_PREEMPT та AUFS для SMP — та-ж проблема, що і без SMP, хіба-що тільки не одразу, а на приблизно п'ятому потоці.

 (2 Kb) На цей момент ядро 2.6.33 у зв'язці із CONFIG_PREEMPT_RT та AUFS неробоче. Відповідно якщо потрібна буде робота на "LP-8x81 Atom" то рекомендується використовувати оригінальне Linux оточення, зібравши та встановивши OpenSCADA туди.

Diamond Systems ATH400, DMM32

Плати від "Diamond Systems" стали першими на яких тестувалась та стабілізувалась OpenSCADA. Першою платою став одно-платний комп'ютер PDF DocumentATH400 формфактору PC/104, наведені на рисунку нижче. На цьому комп'ютері оточення ОС, на початку, встановлювалося традиційним методом, а надалі згідно викладеній вище концепції створення прошивки.


Апаратні характеристики плати:

Центральний процесор: VIA Eden 400-660MHz
Оперативна пам'ять: 128MB, запаяно на плату
Постійна пам'ять: IDE (44) порт с UDMA-33
Відео підсистема: S3 Savage 4 Chipset з розширеним 3D/2D відео; підтримуються плоскі панелі, CRT та LCD
Аудіо підсистема: присутня
Інтерфейси/порти: 10/100Mbps Ethernet; 4 RS-232 послідовні порти; 4 USB 1.1 порти; PS/2 клавіатура та миша
Джерело живлення: +5VDC ±10% @ 2A
Робочі умови: -40 ... +85°C
DAQ: 16AI (16 біт, 100 кГц), 4AO, 24DIO, 2CNTR

Першим завданням цієї плати та OpenSCADA була реалізація функції високочастотного (10 КГц * 8 каналів) архіватору сигналів газового компресору для вивчення явища помпажу на Анастасіївській ГЛКС.


Другим завданням став прототип ПЛК вузлів електропідстанцій. Вже для цієї задачі прошивка збиралась на основі нової пакетної бази. У межах цієї задачі модуль опитування даних плат "Diamon Boards" було уніфіковано для підтримки всіх плат виробника.


Diamond ATH400–128 (181 Кб)

Другою платою стала плата ППО PDF DocumentDMM32-AT, представлена на рисунку нижче. Плата використовувалась для створення макетів та емуляторів поля технологічного ПЗ. Плата має характеристики:

Джерело живлення: +5VDC ±10% @ 200mA
Робочі умови: -40 to +85°C
DAQ: 32AI (16 біт, 200 кГц), 4AO, 24DIO, 2CNTR

Diamond DMM-32X-AT (153 Кб)

Дослідження шумових властивостей високо-імпедансних входів плат від Diamond Systems у різних умовах зведено до таблиці нижче:

Умови Зовнішній БЖ: Рівень шуму, мВ [Гц] Внутрішній БЖ: Рівень шуму, мВ [Гц] Зауваження
(10 кГц, ±0.625 В, 20 мкс), Заземлено-32 0.08 [-]
(10 кГц, ±5 В, 20 мкс), Заземлено-32 0.5 [-] 0.35 [-]
(10 кГц, ±5 В, 20 мкс), Заземлено-31, Навантаження ∞ 5 [50, 270] 18 [50, 150]
(10 кГц, ±5 В, 20 мкс), Заземлено-31, Навантаження 1мОм 10 [50, 270]
(10 кГц, ±5 В, 20 мкс), Заземлено-31, Навантаження 100кОм 7 [150, 50, 270] 7 [-]
(10 кГц, ±5 В, 20 мкс), Заземлено-31, Навантаження 10кОм 4.5 [100] 6 [-]
(10 кГц, ±5 В, 20 мкс), Заземлено-31, Навантаження 1кОм 0.9 [150] 1 [-]
(10 кГц, ±5 В, 20 мкс), Заземлено-31, Навантаження 100Ом 0.5 [-] 0.5 [-]

Kontron MOPSlcdLX

MOPSlcdLX представляє собою одно-платний комп'ютер формфактору PC/104, представлено на рисунку нижче. Цей комп'ютер привабив увагу з причини порівняно невеликої вартості, за рахунок звичайного діапазону експлуатації та меншого енергоспоживання та як наслідок меншого нагріву.


Апаратні характеристики плати:

Центральний процесор: AMD LX800™ 500 MHz, безвентиляторний
Оперативна пам'ять: DDR-RAM-SODIMM сокет
Постійна пам'ять: IDE (44) порт
Відео підсистема: вбудована графіка із підтримкою виводу на плоскі панелі, CRT та LCD
Аудіо підсистема: немає
Інтерфейси/порти: 10/100Mbps Ethernet (Intel® 82551ER); 2 RS-232 послідовних порти; 2x USB 2.0; PS/2 клавіатура та миша, Floppy, LPT
Джерело живлення: +5VDC ±10% @ 1A
Робочі умови: 0 ... 60°C

Плата використовувалася для опробування створення станцій/панелей оператора з OpenSCADA, у подібному оточені. Згодом виплила низка проблем з цією платою:


На цей час, на основі цієї плати, готується "Програмний осцилограф", для чого на нього з успіхом завантажено сучасну прошивку із ядром "std-def" та довстановлено плату DMM-32X-AT, про яку вище.


PLC (90 Кб)

Tri-M VSX104

VSX104 представляє собою одно-платний комп'ютер формфактору PC/104, представлено на рисунку нижче. Цей комп'ютер привабив увагу з причини невеликої ціни та низького енергоспоживання (< 2Вт) та як наслідок меншого нагріву. Однак у зв'язку використання на ньому процесору "Vortex86SX-300 МГц" вимагається особливий підхід до формування оточення ОС, оскільки використано набір інструкцій i486 та відсутній математичний сопроцесор.


Апаратні характеристики плати:

Центральний процесор: DM&P SoC Vortex86SX-300 МГц
Оперативна пам'ять: 128 МБ DDR2 RAM розпаяна на платі
Постійна пам'ять: слот CompactFlash Type I, microSD та 2 порти EIDE (Ultra DMA 100)
Відео підсистема: немає
Аудіо підсистема: немає
Інтерфейси/порти: 10/100Mbps Ethernet; 4 RS-232 послідовних портів; 2x USB 2.0; PS/2 клавіатура та миша, LPT, Резервування, SPI
Джерело живлення: +5VDC ±10% @ 370mA
Робочі умови: -40 ... 85°C
DAQ: 1 порт 16-бітного GPIO

На цей час рішень на цій платі немає, однак планується зібрати для неї оточення, можливо для автономної системи обліку.


VSX104 (225 Кб)

 (2 Kb) Перенаправлення інтерфейсу BIOS на COM-порт можна примусово включити заземленням 10 піну COM-порту.

ICOP VDX-6354D

VDX-6354D представляє собою одно-платний комп'ютер формфактору PC/104, представлено на рисунку нижче. Цей комп'ютер побудовано на процесорі "DM&P SoC CPU Vortex86DX- 800MHz", який продуктивніше "Vortex86SX-300 МГц" у попередньому розділі, однак і енергоспоживання цієї плати вже не 2, а 4 Вата більше на сторінці проекту (RU)


 (23 Кб)

ICP DAS LP-8x81

Промислові контролери сімейства LP-8x81 фірми ICP DAS є першим продуктом із серії LinPAC, який побудовано на x86 сумісному процесорі, попередні контролери цього сімейства основані на процесорі сімейства ARM. Крім x86 процесору ці контролери мають значні ресурси оперативної пам'яті та дискового простору. Все це дозволило розглядати цей контролер як першого кандидата із продукції ICP DAS для адаптації OpenSCADA у якості середовища виконання більше на сторінці проекту (RU).


ПЛК серии LP-8x81. (84 Кб)

Avalue Сенсорна панель FPC-1701

Фірма Avalue, сумісно з її дистриб'ютором у Росії фірмою ElTech, надає широкий спектр панельних ПК, які можуть використовуватися починаючи із звичних офісних моноблоків та закінчуючи промисловими сенсорними панелями у фронтальному виконанні класу IP65. У зв'язку використання стандартного обладнання запуск та робота OpenSCADA на них не викликає проблем більше на сторінці проекту (RU).


 (214 Кб)

iROBO-3000a

iROBO-3000a представляє із себе безвентиляторний промисловий комп'ютер з встановленим Intel Atom D425 1.8 GHz із VGA, 2xGb LAN, 4xCOM, 4xUSB, 1GB RAM, 1x2.5" SATA HDD 120GB, Mini-PCIe, 4x4 DIO, CF слот, SIM Card слот, Audio, WDT, робочий діапазон температур -5...+55°C. Продуктивності даного комп'ютера достатньо для виконання як функцій серверу збору, контролю та керування, так і функцій станції візуалізації. Однак у зв'язку із використанням непродуктивного процесору родини Atom виконання математичних моделей технологічних процесів потребує всіх ресурсів процесору. Наприклад, при виконанні математичної моделі АГЛКС процесор навантажується на 86%. Контролер має сертифікат "УкрСЕПРО", що може бути важливим для багатьох користувачів на території України.


iROBO-3000a (541 Кб)

Робоче оточення OpenSCADA для цього комп'ютера будувалося на основі пакетної бази дистрибутиву ALTLinux T6, а також свіжо-зібраного оточення стільниці Trinity (TDE). Збірка оточення здійснювалася на основі вищенаведеної концепції за допомогою оновленого профілю "mkimage". У новий профіль також було додано мету "plc", однак її сутність змінилася фактично ставши копією мети "live", що стало можливим завдяки впровадженню на етапі первинної ініціалізації прозорого монтування розділу з міткою "alt-live-storage" як відображення упакованої файлової системи із довільним доступом на модифікацію. В цілому це дозволило створити фіксоване ядро прошивки з базовим набором програмного оточення, розміром 300Мб, та можливістю вільного розширення шляхом довстановлення потрібних пакетів із дистрибутиву.


У якості оточення стільниці було обрано "Trinity" з причини наявності проблеми фонового артифактингу у зв'язці XOrgServer 1.10 + Qt4, а також малої ресурсомісткості TDE при високій розвинутості та стабільності.


Архів профілів збірки нового оточення отримав назву mkimage-profiles-6-kdesktop-plc.tgz, а остання збірка прошивки ALTLinux_6-OpenSCADA_0.8.1-TDE_3.5.13.1-i586-flash.tar.

Advantech PCA-6753, PPC-L126

Фірма Advantech випускає широкий спектр обладнання для автоматизації, починаючи від панельних ПК та закінчуючи модулями збору даних ADAM.


У межах проекту системи збору та візуалізації котла №1 цеху ТЭЦ (RU) до рук потрапив панельний ПК PPC-L126 та індустріальний ПК на шасі IPC-6608, з процесорною платою PCA-6753.


Індустріальний ПК "PCA-6753" має наступні характеристики:

Центральний процесор: Мало-споживаний NS GXm-200 МГц (безвентиляторний)
Оперативна пам'ять: 64 МБ DIMM SDRAM
Постійна пам'ять: SSD DiskOnChip® 2000, IDE (40 pin, UDMA 33, 256МБ IDE Flash)
Відео підсистема: CX5530 VGA/LCD и 18-бит LCD TFT
Аудіо підсистема: немає
Інтерфейси/порти: 10/100Mbps Ethernet (RTL-8139); RS-232 + RS-232/422/485 послідовні порти; 2 x USB 1.1 (хост), IR порт; LPT; Floppy
Джерело живлення: +5VDC ±10% @ 1.54A
Робочі умови: 0 ... 60°C

ПЛК PCA-6753F в системном блоке IPC-6608. (68 Кб)

Цей контролер є вже достатньо старим та низькопродуктивним для сучасного програмного забезпечення однак для задач середовища виконання ПЛК він ще годиться і на нього було з успіхом завантажено прошивку на основі пакетної бази ALTLinux 5.1. При цьому про реальний час мова не велась, у зв'язку із відсутністю таймеру високої роздільної здатності (HPET).


Панельний ПК "PPC-L126" має наступні характеристики:

Центральний процесор: VIA Eden 667 MHz
Оперативна пам'ять: Два 168-pin DIMM сокет (128 МБ)
Постійна пам'ять: CompactFlash типа I/II, IDE (44 pin, UDMA 33/66/100, 10 ГБ)
Відео підсистема: VIA Savage4 2D/3D/Video, сенсорний екран 12.1", фронтальна панель: IP65/NEMA4
Аудіо підсистема: AC97 Ver. 2.0
Інтерфейси/порти: 10/100Mbps Ethernet (RTL-8139); 3 x RS-232 + RS-232/422/485 послідовні порти; 2 x USB 1.1 (хост); PS/2 клавіатура та миша; LPT
Джерело живлення: 19VDC @ 3.3A
Робочі умови: 0 ... 40°C

PPC-L126 (18 Кб)

Панельний ПК також має малі ресурси для запуску сучасного графічного оточення, тому для установки на нього використовувався дистрибутив "ALTLinux T6" із заходами по оптимізації:


Приведені заходи дозволили втиснутися у 128 МБ оперативної пам'яті і отримати при цьому розвинуте та продуктивне графічне оточення. Для налаштування сенсорного екрану ELO використовувався пакет із драйвером "elographics" — "xorg-drv-elographics". До конфігураційного файлу "xorg.conf" додано секцію:



Прошивка та створення програмного оточення ПЛК архітектури ARM

Широке розповсюдження у вбудованих рішеннях отримала архітектура ARM завдяки її порівняно високій продуктивності у поєднані із низьким енергоспоживанням та ціною. З метою виконання планового завдання забезпечення апаратної багатоплатформності систему OpenSCADA було адаптовано до збірки та роботи на обладнані ARM-архітектури. Так було виконано проекти збірка проекту OpenSCADA для мобільних пристроїв фірми Nokia (N800, N900, N950) та Збірка OpenSCADA та прошивки для ARM-контролерів фірми ICP DAS (LP-5141). Метою даного розділу є систематизація методик та відстеження проблем створення збірок OpenSCADA та прошивок програмного оточення в цілому для різного вбудованого обладнання архітектури ARM.


Особливістю ARM архітектури є відсутність обов'язкової апаратно-залежної програмної системи первинної ініціалізації та конфігурації обладнання, характерної для x86 архітектур — BIOS, а структура апаратної конфігурації зазвичай містить: центральний процесор (CPU), вбудовану оперативну та флеш-пам'ять, а також низку вбудованого обладнання на стандартних шинах системного рівня. При цьому флеш та оперативна пам'ять знаходяться у загальному адресному сегменті. Ініціалізація такої системи програмним оточенням здійснюється завантаженням виконуваного коду безпосередньо на вбудовану флеш-пам'ять.


Для роботи обчислювальних функцій OpenSCADA та і багатьох супутніх бібліотек та програм важлива продуктивність обчислень із плаваючою точкою. Особливістю процесорів архітектури ARM є простота ядра процесору та необов'язкова наявність розширень на зразок математичного сопроцесору. Як наслідок продуктивність на операціях з плаваючою точкою сильно залежить від конкретно взятого процесору, а також способу емуляції обчислень з плаваючою точкою, у випадку відсутності сопроцесору взагалі. На процесорах ARM-архітектури зустрічаються два формати роботи з плаваючою точкою: FPA та VFP. Формат FPA є застарілим та зустрічається у вигляді апаратної реалізації з ядрами ARM до родини StrongARM(ARMv4). Ядра ARM родини XScale(ARMv5TE) взагалі не комплектувалися математичним сопроцесором. А ядра ARM починаючи із родини ARM11(ARMv6) комплектуються математичним сопроцесором формату VFP. У той же час ARM процесори з архітектурою версії ARMv5 до цих пір широко розповсюджені, тобто питання продуктивності математичних обчислень для них зводяться до продуктивності емуляції формату FPA або VFP. У випадку із оточенням ОС Linux, емуляція FPA зазвичай здійснюється ядром Linux, шляхом обробки виключень процесору під час виклику FPA команд. Програмна емуляція у математичній бібліотеці за звичай зустрічається з форматом VFP, для чого потрібна перебудова всіх програм. При цьому емуляція FPA за посередництвом виключень гірше за продуктивністю програмної емуляції VFP майже на порядок. Порівняти продуктивність обчислень із плаваючою точкою на різних архітектурах, процесорах та способах емуляції можна у додатку 1.


Типове програмне оточення на основі ОС Linux, для обладнання на основі ARM, представляє із себе: Завантажувач UBoot, Ядро Linux та Кореневу Файлову Систему (КФС). Завантажувач UBoot вантажиться до нульового сектору флеш-пам'яті, а його налаштування зберігаються у першому. Із другого сектору завантажується код ядра, а безпосередньо після нього КФС. КФС зазвичай оформлюється у вигляді файлової системи JFFS2 або UbiFS, які оптимізовано для роботи на блокових пристроях — флеш пам'яті, з обмеженим ресурсом запису. Приклади розбивки блокового пристрою (флеш-пам'яті) для LP-5141 та TionPro270 наведено нижче:


Коренева файлова система містить типове UNIX-дерево з робочими програмами, бібліотеками та іншими файлами. Основою будь якої програми або бібліотеки є системні бібліотеки GLibC або UClibC. OpenSCADA адаптовано для збірки та роботи з "GLibC" версії >= 2.3. "UClibC", створена як полегшена версія "GLibC" для вбудованих систем, містить низку обмежень та до цих пір не реалізує або містить помилки у реалізації для низки функцій.


КФС та програмне оточення на основі Linux може постачатися разом із ARM-обладнанням та містити закриті бінарні бібліотеки, модулі ядра Linux та т.п. У такому випадку незалежна збірка та заміна первинного програмного оточення становиться непрактичною оскільки призводить до втрати первинної функціональності. Однак часто зустрічається ситуація постачання обладнання ARM без первинного програмного оточення або з оточенням, яке не містить закритого коду та яке може бути замінено. Прикладом першого випадку є контролер LP-5141 та схожі фірми "ICP DAS", які містять бінарну збірку бібліотеки API спеціалізованого обладнання (libi8k) та модулі ядра Linux для його ініціалізації. Прикладом другого випадку є одно-платний комп'ютер Тіон-Про270, створення програмного оточення та побудова OpenSCADA для архітектури ARM якого будемо розглядати нижче.

Інструменти збірки ядра Linux та робочих оточень під різні цільові архітектури

Сформувати Linux КФС можна на основі готових пакунків існуючого бінарного дистрибутива, пакунків вихідних текстів існуючого дистрибутиву, а також побудувати із оригінальних вихідних текстів за посередництвом ToolChain у одній із складальних систем.


Побудова програм або цілої КФС для архітектур відмінних від x86 та x86_64 зазвичай здійснюється за посередництвом кроскомпіляції із використанням утиліт (ToolChain) для збірки, лінковки та налаштування під цільову архітектуру ARM. Для автоматизації цього процесу створено низку інструментів збірки готових КФС.

BuildRoot

Ця система збірки є частиною проекту створення альтернативної бібліотеки функцій мови "C" UClibC, тому в цілому націлена на побудову оточень із "UClibC", з відповідними обмеженнями. BuildRoot гарно показав себе у роботі на хостових системах різних версій та дозволяє без особливих проблем збирати програмні оточення на основі Linux.


Отримати архів BuildRoot потрібної версії можна за посиланням http://buildroot.uclibc.org/downloads. Далі його потрібно розпакувати у домашній директорії звичайного користувача та здійснити конфігурацію, налаштування та збірку:


У процесі збірки можуть виникнути проблеми наступного роду:

(+) Потрібно вказаний пакет завантажити окремо та розташувати його у теці "./dl" або "./output/dl".
(+) Однозначного рішення цієї проблеми немає та потрібно розбиратися з помилками збірки окремо для програми. Помилка збірки може бути пов'язана, наприклад, з відсутністю вибору окремого параметра під час конфігурації або проблемою збірки програми у цьому оточені. Патчі виправлення збірки можна розташовувати безпосередньо у теці опису програми "./package/{назва пакету}/"

PTXDist

Універсальний інструмент збірки ядер, ToolChain та програмних оточень на основі Linux фірми "Pengutronix". PTXDist є потужним та гнучким інструментом однак старі його версії мають проблеми на сучасних хостових системах, що ускладнює завдання збірки програмних оточень для порівняно старих, але все ще розповсюджених, апаратних платформ. Наприклад, зараз (2012 рік) можна зустріти нове обладнання з процесорами ARM XScale, ARM9 (ARMv5) часів 2003 року. Однак новими версіями PTXDist непогано підтримуються старі платформи, про що можна дізнатися з таблиці підтримки за посиланням: http://www.pengutronix.de/oselas/toolchain/index_en.html.


Для збірки програмного оточення (КФС) за допомогою PTXDist потрібно:


Тепер детальніше, в командах:

Тіон-Про270

Одно-платний комп'ютер "Тіон-Про270" представляє собою високо-інтегровану обчислювально-керуючу систему на базі процесору Marvell PXA270 із ARM ядром родини XScale від фірми ЗЕО. Цю плату було передано розробникам проекту OpenSCADA Олексієм Попковим з метою адаптації OpenSCADA.


Всі матеріали по збірці програмного оточення з OpenSCADA та готові збірки для плати Тіон-Про270 можна отримати за посиланням: ftp://ftp.oscada.org/OpenSCADA/PLC/TionPro270


TionPro270 (344 Кб)

Плата постачається виробником обладнання з передвстановленим програмним оточенням на основі Linux™ або Windows CE©. Крім того всі вихідні матеріали програмних оточень доступні на Wiki-ресурсі виробника.


У первинному вигляді плата потрапила до розробників з мінімальним програмним оточенням, для якого не було можливості зібрати OpenSCADA, тому програмне оточення було повністю завантажено з нуля. Завантаження програмного оточення до flash-пам'яті здійснювалося за допомогою JTAG-адаптеру OLIMEX ARM-USB-OCD та програми OpenOCD версії 0.5.0, збірку якої потрібно конфігурувати з параметром "--enable-ft2232_libftdi".


Для завантаження до флеш-пам'яті плати було використано готові збірки завантажувача UBoot-1.3.3 (файл образу u-boot-1.3.3_svn886_520mhz_tion_pro270_64m.bin) та ядра Linux-2.6.22.19. Образ файлової системи JFFS2 КФС збирався за допомогою "BuildRoot" та "PTXDist", про що нижче.


Прошивка обладнання за допомогою "OpenOCD" здійснюється від особи суперкористувача командою:

$ openocd -f interface/olimex-arm-usb-ocd.cfg -f tion270.cfg

При цьому сценарій прошивки "tion270.cfg" та файли образів програмного оточення, вказані у сценарії прошивки "tion270.cfg", мають знаходитися у поточній теці. Сценарій прошивки "tion270.cfg" містить:

Збірка КФС у BuildRoot

З метою уникнути виникнення безлічі проблем збірки, пов'язаних зі збіркою із самого початку, була взята конфігурація "buildroot-2009.08" безпосередньо від виробника обладнання, із Git-репозиторію: http://zao-zeo.ru/media/files/linux/buildroot-2009.08.git. З метою збірки у оточені "BuildRoot" були створені конфігурації у теці "./package/" для бібліотеки "LibGD" та OpenSCADA.


Отриману після збірки КФС було завантажено до флеш-пам'яті плати та з успіхом запущено. Однак при запуску виявилося, що версія "uCLibс" 0.9.30.3 не містить реалізації функції clock_nanosleep(), а також падає у функції timer_settime(), для типу повідомлення SIGEV_THREAD. Якщо функцію clock_nanosleep() можна замінити на nanosleep() то вирішити проблему функції timer_settime(), у межах даної версії "uCLibс", можливості немає.


Далі було взято образ поточної версії "BuildRoot", на 16.01.2012, та здійснено збірку OpenSCADA з "uCLibs" версії 0.9.32.1. Збірка пройшла вдало, після деякої адаптації складального оточення. OpenSCADA запустилася вдало з деякими проблемами, які було усунено.


У переліку нижче наведено проблеми які виникли під час збірки та роботи OpenSCADA на uCLibC різних версій:

(+) відсутня реалізація функції clock_nanosleep() — потрібно використання версії >= 0.9.32 або заміна на nanosleep().
(-) 0.9.30.3: падіння на функції timer_settime(), для типу повідомлення SIGEV_THREADАктуально.
(+) Бібліотека OpenSSL "libssl" не містить залежності на "libcrypto" — у модулі "OpenSCADA.Transport.SSL" додано пряму залежність на бібліотеку "libcrypto".
(+) Функції сімейства printf() некоректно обходять проблему висячих символів '%' — виправлено рядок повідомлення "Last: %s. Load: %3.1f% (%s from %s)".
(+) Відмінна від GLibC обробка взаємоблокувань у межах одного потоку, у функціях RW-lock — виправлено взаємоблокування у модулі "OpenSCADA.UI.WebVision", а функцію перевірки сеансів винесено до процедури сервісного виклику.

Збірка КФС у PTXDist

Освоєння PTXDist для збірки оточення на TionPro270 здійснювалося за посередництвом вивчення досвіду викладеного за посиланням http://www.emb-linux.narod.ru/tion-pro-270/index.html. Однак статтю написано доволі давно та для збірки використовувалася версія ptxdist-1.1.1, яка на сучасному програмному оточені фактично не працює, а крім того частина бібліотек, потрібних для OpenSCADA, там просто не збираються. В результаті за основу було взято версію ptxdist-2011.11.0 та на ній здійснено збірку.


Перед безпосередньою збіркою КФС для цієї плати було створено конфігурацію ToolChain arm-xscale-linux-gnueabi_tion270.ptxconfig на основі існуючої arm-xscale-linux-gnueabi_gcc-4.6.2_glibc-2.14.1_binutils-2.21.1a_kernel-2.6.39-sanitized.ptxconfig з версіями програм:


Далі було створено клон проекту PTXDist "OSELAS.BSP-Pengutronix-Generic" у теці "TionPro270_RootFS" з конфігурацією платформи "arm-qemu-2011.01.0". Для збірки OpenSCADA створено конфігурацію в особі файлу openscada.in та openscada.make, які було розташовано у теці локальної конфігурації проекту rules/. Крім OpenSCADA було адаптовано конфігурацію програми udev, версія якої виявилася дуже великою для вихідної версії ядра Linux-2.6.22, тобто використану версію udev було опущено до 141. Нові файли конфігурації udev також було розташовано у теці rules/, тим самим визначивши їх використання замість вихідної конфігурації.


Збірка КФС пройшла вдало та було отримано образ ФС jffs2. Отриману КФС було вдало завантажено на плату та вона запрацювала. OpenSCADA також коректно запустилася та функціонує.

Адаптація

Ця плата містить низку апаратних інтерфейсів, адаптація яких цікава для OpenSCADA, тому у даному розділі буде концентруватися інформація щодо їх адаптації.


Плата містить мікросхему перетворення рівнів сигналу із RS232 в RS485, яка однак не є прозорою для надсилання запитів із програмного забезпечення. А саме:


Для вирішення цієї особливості модуль OpenSCADA Transport.Serial було доопрацьовано на предмет підтримки такого роду апаратного керування потоком.


Використовуючи отримане розширення було здійснено перевірку та підтверджено наявність проблеми програмного оточення контролера LP-5141.

ICP DAS LP-51xx

Фірма ICP_DAS достатньо давно випускає контролери на процесорах ARM архітектури із передвстановленим оточенням ОС Linux, як у цьому випадку LP-5141, що робить цікавим створення збірки або нової прошивки із OpenSCADA більш на сторінці проекту.


 (27 Кб)

Nokia N800, N900, N950, N9

Фірма Nokia є одним із світових лідерів у виробництві та продажу мобільних телефонів. У 2005 році фірма Nokia випустила кишеньковий персональний комп'ютер (КПК) N770 на основі розвинутого Linux оточення із власним оточенням робочого столу (на GTK+) — Hildon під загальною назвою проекту Maemo. Згодом на основі платформи Maemo було випущено ще три мобільних пристрої, а саме два КПК «інтернет-планшети» N800, N810 та смартфон «інтернет-планшет» N900. У 2010 році фірма Nokia об'єднала свої зусилля по роботі над Maemo з проектом MobLin фірми Intel, створивши проект MeeGo. На основі платформи MeeGo у 2011 році було випущено два смартфони N950(прототип) та N9 більше на сторінці проекту.


КПК N800 (657 Кб) Мобильный телефон N900 (448 Кб) Мобильный телефон N950 (412 Кб)

SMH2Gi

Вільнопрограмований панельний контролер "SMH2Gi", представляє собою високо-інтегровану обчислювально-керуючу систему на базі процесору iMx27 з ядром ARM926EJ-S від фірми Сегнетікс. Адаптація та збірка OpenSCADA для цього контролера знадобилося у межах проекту створення автоматизованої системи керування вакуумної технологічної установки (RU).


Всі матеріали по збірці програмного оточення з OpenSCADA та готові збірки для панельного контролеру можна отримати за посиланням: ftp://ftp.oscada.org/OpenSCADA/PLC/Segnetics-SMH2Gi.


SMH2Gi (259 Кб)

Панельний контролер постачається виробником обладнання з передвстановленим програмним оточенням на основі Linux™ та власним оточенням виконання контролера "SMLogix". Роль OpenSCADA для даного контролера розглядалася як розширене середовище програмування контролеру, інтегроване та програмоване зі станції верхнього рівня на основі OpenSCADA. Для збереження можливості надання та контролю даними отриманих у OpenSCADA на вбудованому дисплеї, при цьому мінімізуючи працевитрати на адаптацію, вирішено було зберегти вихідне середовище виконання "SMLogix" для виконання завдання представлення даних на внутрішньому дисплеї, а дані транслювати до/із неї за посередництвом локального ModBus/TCP підключення. Згодом, для оптимізації низки задач, було створено модуль джерела даних до OpenSCADA DAQ.SMH2Gi з функціями прямого опитування модулів SMH2Gi MC та MR, а також обміну значеннями змінних із процесом "logix", за посередництвом поділюваної пам'яті.


Для збірки оригінального програмного оточення розробником було використано раніш розглянутий інструментарій PTXDist версії 1.99.12. Зібрати ToolChain, вгадуючи профіль, використаний для збірки вихідного програмного оточення, не було потреби оскільки на сайті виробника доступне повне складальне середовище, оформлене у вигляді образу ОС Linux для віртуальної машини VMWare. Із цього образу було отримано готовий ToolChain профіль gcc-4.3.2-glibc-2.8-binutils-2.18-kernel-2.6.27-sanitized. Оскільки не потрібно було збирати КФС повністю вирішено було зібрати OpenSCADA використовуючи готовий ToolChain окремо. Для збірки OpenSCADA попередньо було зібрано бібліотеки "pcre-8.12" та "sqlite-3.7.6.2". Пізніш, у межах задачі збірки модулів UI.WebCfgD та UI.WebVision, було зібрано бібліотеки: "png-1.2.49", "jpeg-8a", "expat-2.0.1", "freetype-2.3.11", "fontconfig-2.6.0" та "gd-2.0.35". Далі OpenSCADA збиралась наступним чином:


В результаті було сформовано архів збірки OpenSCADA, який можна вивантажити на панельний комп'ютер SMH2Gi та там розпакувати. Отримане програмне оточення OpenSCADA налаштовано на автоматичний запуск при запуску контролера, за посередництвом скрипту ініціалізації "/etc/init.d/openscada". Збірку OpenSCADA було вдало запущено.


У відношенні програмного оточення панельного контролера SMH2Gi в цілому потрібно зробити декілька зауважень. У контролері використано ядро Linux 2.6.29 з розширенням жорсткого реального часу, що дозволяє утримувати періодичні інтервали часу до 100 мкс. Крім того всі критичні системні потоки запущені з політикою керування планування реального часу. При цьому, хоча процесор не має математичного сопроцесора, емуляція виконана оптимально у вигляді SoftVFP. Все це дозволяє у OpenSCADA виконувати високо-детерміновані завдання керування з періодичністю до 100 мкс та прийнятною обчислювальною продуктивністю.

AS-9260

Плата AS-9260 представляє собою контролер на базі мікросхеми AT91RM9260, ядро ARM9(ARMv5), з набором периферійних пристроїв. Плату призначено для розробки (макетування) проектів на базі мікроконтролерів з ядром ARM926EJ-S виробництва корпорації Atmel, також може бути використано у якості керуючого контролера цільової системи.


AS-9260 (194 Кб)

На платі встановлено роз'єми USB2.0 (1 Host, 1 Device, Full-speed, 12Mb/s), DBGU, RS-232, RS-485, два 12-контактних роз'ємів для встановлення модуля інтерфейсу Ethernet 10/100 Mbps, крім того, наявне місце для встановлення двох 80 - контактних роз'ємів типу PLD-80 для підключення зовнішніх модулів з додатковими інтерфейсами.


Периферія плати AS-9260 з процесором AT91sam9260 мінімальна:


Завантажувач та ядро можна знайти тут http://www.at91.com/linux4sam. До U-boot встановлюємо завантаження КФС з USB-флеш:


Флеш форматуємо під ФС EXT2 та на неї заливається КФС Debian Lenny. Запускаємо систему та налаштовуємо інтернет з'єднання nano /etc/network/interfaces:


У /etc/inittab встановлюємо автологін:


Визначаємо репозиторій для оновлення у /etc/apt/sources.list


Після оновлення завантажуємо вихідні тексти OpenSCADA та розв'язуємо залежності. Нативно зібрати скаду не вдасться, оскільки для цього не достатньо ОЗП. Одне з рішень цієї ситуації наступне:





Описаний метод далеко не найкращий, тому ведеться робота по його вдосконаленню. Аналогічним чином скада встановлюється на плату AS-9200 з процесором AT91RM9200.

Raspberry Pi, Pi2 та Pi3; OrangePi Zero

"Raspberry Pi®" — одно-платный комп'ютер, створений з метою благочинності. Призначено для навчання базовим комп'ютерним наукам у школах, позиціюється як дешеве рішення для починаючих розробників. Розробляється "Raspberry Pi Foundation". Плату Raspberry Pi було отримано для збірки та адаптації OpenSCADA від Лисенко Максима. Плату Raspberry Pi2 придбано для задач OpenSCADA та адаптації її для роботу із базовими шинами I2c, SPI, 1Wire із різними сенсорами на них. Плату Raspberry Pi3 було придбано та спонсоровано Proviron Holding NV для деякого налагодження та технічної підтримки.


Raspberry, Orange Pi (667 Кб)

Плата має характеристики:

Параметри: Raspberry Pi Raspberry Pi2 Raspberry Pi3 Orange Pi Zero
Апаратна платформа: ARM11 [ARMv6] ARMv7 Cortex A53 (ARMv8) Cortex-A7 (ARMv7)
Центральний процесор: Broadcom BCM2835, 700 МГц («турбо-режим» до 1ГГц) Broadcom BCM2836, 900 МГц, 4 Ядра Broadcom BCM2837 64біт, 1.2ГГц, 4 Ядра H2 Cortex-A7 H.265/HEVC 1080P, 1.2GHz, 4 ядра
Оперативна пам'ять: 256 або 512 Мб, інтегрована у CPU 512 Mb або 1Gb, інтегрована у CPU 1Gb, інтегрована у CPU 256MB/512MB DDR3 SDRAM
Постійна пам'ять: флеш карта MMC флеш карта MicroSD флеш карта MicroSD µSD, опціональна SPI NOR Flash на платі
Відео підсистема: інтегроване відео ядро Broadcom інтегроване відео ядро Broadcom інтегроване відео ядро Broadcom Mali400MP2 GPU @600MHz
Аудіо підсистема: інтегрована до CPU
Электроживлення: microUSB, 5 В, від 700 мА microUSB, 5 В, від 700 мА microUSB, 5 В, до 2.4A DC 5V DC-IN через µUSB або штирі або PoE
Інтерфейси: 2xUSB, Ethernet 10/100M, HDMI, video RCA, Stereo Jack 3.5 mm, UART, JTAG, SPI, I2C, DSI, CSI 4xUSB, Ethernet 10/100M, HDMI, video RCA, Stereo Jack 3.5 mm, UART, SPI, I2C, DSI, CSI 4xUSB, Ethernet 10/100M, WiFi 802.11 b/g/n, Bluetooth 4.1 LE, HDMI, video RCA, Stereo Jack 3.5 mm, UART, SPI, I2C, DSI, CSI 3xUSB Host, 1xUSB OTG, Ethernet 10/100M POE, WiFi 802.11 b/g/n, TV вихід, мікрофон, стерео line-out, 3xUART, 2xSPI, 2xI2C
Вага: 45 г. 45 г. 45 г. 26 г.
Розмір: 85.6 × 53.98 × 17 мм 85.6 × 53.98 × 17 мм 85.6 × 53.98 × 17 мм 48 × 46 × 17 мм

OpenSCADA on Raspberry Pi (249 Кб)

Raspberry Pi
Для роботи з платою було використано спеціалізований дистрибутив Raspbian “wheezy”. Збірка OpenSCADA здійснювалася для LTS версії 0.8.0.5 та робочої версії 0.8.1 безпосередньо на самій платі. Для збірки довелося розширити розмір області підкачки до 500 Мб, оскільки збірка низки модулів OpenSCADA сучасним компілятором (GCC 4.7) та з оптимізацією (-O2) потребує багато оперативної пам'яті. Отримані пакети успішно встановилися та працювали.


Графічне оточення робочого столу у обраному дистрибутиві побудовано на LXDE 0.5.5, яке відображається у повноцінній роздільній здатності через HDMI, або у роздільній здатності 640x480 через композитний відеовихід. OpenSCADA успішно запускається та працює у графічному режимі, однак продуктивності процесору недостатньо для нормального виконання динамічних моделей OpenSCADA.


Raspberry Pi 2 та 3

For working with the boards there also used a special distributive Raspbian "Wheezy". OpenSCADA has built for Work version 0.9 direct on the board and allowed memory here enough for this operation but it has 1MB and more, the building there allowed on all four threads. The building of OpenSCADA performs in packages which then placed into proper repository of Debian 7 from time to time of the buildings. Also for Raspbian "Jessie", mostly for the generic architecture ARMHF, there performs regular building of OpenSCADA by the OpenSCADA automatic builder into the cross-compiling environment and the result packages are placed into proper repository of Debian 8.


The typical graphical desktop environment into the selected distributive built on LXDE 0.5.5 (Wheezy) and 6 (Jessie) but it's replaced to TDE R14 for more features with low hardware demands. For remote access there was configured VNC access in display resolution 1024x768. OpenSCADA is successfully started and worked into graphical mode and the performance here enough already by the multi-threading.


Raspberry Pi + TDER14 (284 Кб)

For more free handling to the board was connected a WiFi adapter and on RPi3 it presents already.


To allow for operations with GPIO directly in OpenSCADA there was created a module DAQ.BCM2835 based on the library bcm2835. For now the module provides access to "Raspberry Pi" GPIO (0...31) as OpenSCADA DAQ's parameter attributes, static and dynamic functions, which the comparing information of performance shown here.


Current experiments with Raspberry Pi (258 Кб)

To the board there was connected a 16x2 text display 1602A and a program like to the original Python one was wrote into OpenSCADA by using the static functions of the module DAQ.BCM2835. As a result the program works fine and some faster to the Python original one.


To the board there were directly connected sensors DHT 11 and AM2303 (humidity and temperature) and a program like to the original Python program's C-language driver part was wrote into OpenSCADA by using the static functions of module DAQ.BCM2835.


To allow creation derivative DAQ templates with their configuration the dynamic linking to static external functions was added into DAQ.JavaLikeCakc, like this:


To allow operation in OpenSCADA with devices on bus I2C the output transport "Serial" was adapted to the bus by selection the bus and a slave device's address (first byte of the sequence) set by IO control command I2C_SLAVE. In this way now to OpenSCADA there were connected:


The tracing task of the work out opened here.


Orange Pi Zero

For working with the board there used a special distributive Armbian "Jessie". As builds of OpenSCADA there have used the packages repository, mostly for the generic architecture ARMHF, for which performs regular building of OpenSCADA by the OpenSCADA automatic builder into the cross-compiling environment.


The board provides more low level buses (3xUART, 2xSPI, 2xI2C), despite its small size, and restricted GPIO in 16 pins which mostly used by the buses. The buses are standard but GPIO are some specific ones for which we need implement special support into the presented module DAQ.BCM2835 making it more unified one. Then there planed next tasks:


Asus Nexus 7 II


"Asus Nexus 7 II" — tablet computer of 2013 year edition with four-cores ARM-processor and sensor screen 7", released in conjunction of Asus and Google. Purchased for tasks of OpenSCADA and adapting it to work into the environment of OS Android and hardware of modern multicore CPU of ARM-architecture.


Image. OpenSCADA in Web and Qt5 for the native building. (522 Кб)
Image. OpenSCADA in Web and Qt5 for the native building.

Key specification of the tablet:

Hardware platform: ARM Cortex-A15 [ARMv7]
Central processor: Four-core Qualcomm Snapdragon APQ8064-1AA 1500 MHz
Operational memory: 2 GiB DDR3
Permanent memory: 32 GiB
Video subsystem: 400 MHz quad-core Adreno 320
Screen: IPS, 1920x1200 px (323 ppi)

The tracing task of the work out opened here.


Assembling and starting OpenSCADA into the environment of OS Android


Installing of full-featured OS Linux and OpenSCADA starting
For different OS installing you need to unlock the loader and for original Android saving you need ensure multiboot.


The loader unlock and ROOT, from a Linux environment:


To provide the multiboot let install "MultiROM Manager" from "Play Market".


Додаток 1. Обчислювальна продуктивність процесорних систем

Hardware Enter into JavaLikeCalc, us** Operation sin(Pi) [into JavaLikeCalc], us Operation pow(Pi,2) [into JavaLikeCalc], us Model AGLKS [Vision, main mnemo], %(core) Extra tests and notes
ARM
Segnetics SMH2Gi (ARM926EJ-S, 400 MHz, SoftVFP, 199 BogoMIPS) 3.4 11.1 [14.9] 4.4 [7.9] -
Router 3G TELEOFIS RTU968 (ARM926EJ-S), 400 MHz, OpenWrt, uCLibC, SoftVFP, "-O2", 226 BogoMIPS) 2.45 7.2 [9.75] 2.02 [5.45] -
ICP DAS LP-5141 (PXA270, 520 MHz, FPA) 100 [200]* 51 [152]*
ZAO ZEO TionPro270 (PXA270, 520 MHz, SoftVFP, uCLibC-0.9.32.1, -Os, 519.37 BogoMIPS) 22 [51]* 14 [41]* - Minimum power consumption: 1.27 W
ZAO ZEO TionPro270 (PXA270, 520 MHz, SoftVFP, GLibC-2.14.1, -O2, 519.37 BogoMIPS) 5.92 [8.26] 1.74 [4.08] - Last update: 30.10.2013
Nokia N800 (TI OMAP2420, ARMv6, 400 MHz, 397 BogoMIPS) 2.32 2.93 [6.29] 2.11 [6.98] -
Raspberry Pi (BCM2708, ARMv6, 700 MHz) 1.15 [4.57] 1.28 [4.60] -
Nokia N900 (TI OMAP3430, CortexA8, 600 MHz, 598.9 BogoMIPS) 1.23 1.55 [1.9] 0.932 [1.38]
Nokia N950 (TI OMAP3630, CortexA8, 1 GHz) 0.90 [2.02] 0.552 [1.81] Last update (Turbo N900): 02.11.2013
Raspberry Pi 2 (BCM2836, ARMv7, 1 GHz, 4 Cores) 0.525 0.615 [0.955] 0.41 [0.875] 85 [154] Minimum power consumption (on 600MHz): 1.02, 1.14 (+Eth), 1.33(+WIFI)
Orange Pi Zero (Allwinner H2(+), Cortex A7, 1.2 GHz, 4 Cores) 0.483 0.497 [0.757] 0.33 [0.627] - Minimum power consumption (on 240MHz): 0.89, 1.02(+Eth)
Raspberry Pi 3 (BCM2837, ARMv8, 1.2 GHz, 4 Cores) 0.379 0.43 [0.496] 0.295 [0.389] 75 [130] Minimum power consumption (on 600MHz and indifferent to enabled WIFI or Bluetooth): 1.14, 1.39(+Eth)
HTC Desire 820G (Octa-core, Cortex-A7, 1.7 GHz, 8 Cores) 0.416 0.237 [0.315] 0.236 [0.342] -
Asus Nexus7 II (Qualcomm Snapdragon APQ8064-1AA, Cortex-A15, 1.5 GHz, 4 Cores) 0.497 0.161 [0.306] 0.126 [0.341] 54 [82] armv7-a, Soft, VFP. Extra tests.
x86
Cyrix Geode(TM) (232 MHz) 7 [44]* 11 [52]* -
VIA Nehemiah (400 MHz) 2.9 [5.8] 2.4 [5.8] -
AMD K6-2 (504 MHz, 1008 BogoMIPS, BUS 112 MHz) 1.136 [4.66] 1.602 [5.63] -
AMD Geode LX800, ICP-DAS LP-8x81 (500 MHz, 1000 BogoMIPS) 1.04 1.27 [1.66] 2.03 [2.61] -
VIA Nehemiah (667 MHz) 2.7 [5.6]* 2.4 [6.1]* -
RDC R3600, ICP-DAS LX-8x31 (1.0 GHz, 2 Cores) 0.72 (1.52) 1.14 (2.06) -
Intel(R) Atom(TM) CPU Z520, ICP-DAS LP-8x81 Atom (1.33 GHz, 1[2] Cores) 0.39 (1.14) 0.53 (1.12) -
Intel Atom N270 (1.6 GHz, 1[2] Cores, DDR2-533-1.6GB/s) 0.217 0.306 [0.438] 0.424 [0.662] 131 [154]
Intel(R) Celeron(R) CPU 847 (1.1 GHz, 2 Cores) 0.23 [0.675] 0.25 [0.76] 50 [64]
AMD Phenom(tm) 9600 Quad-Core (2.3 GHz, 4 Cores) 0.17 [0.45] 0.14 [0.35] -
AMD Athlon 64 3000+ (2 GHz) 0.15 [0.43] 0.16 [0.49] 23 [31]
AMD Athlon X2 3600+, (2 GHz, 2 Cores) 0.145 [0.42] 0.153 [0.46] 25 [47]
Intel(R) Celeron(R) CPU N2840 (2.16GHz, 2 Cores) 0.175 [0.389] 0.165 [0.385] 33 [60]
Intel(R) Pentium(R) 4 CPU (3 GHz, 1[2] Cores, DDR-400) 0.198 0.152 [0.206] 0.157 [0.253] 45 [77]
Intel(R) Core(TM)2 Duo CPU T5470 (1.6 GHz, 2 Cores) 0.179 0.143 [0.18] 0.129 [0.197] 27.6 [54]
AMD Turion L625 (1.6GHz, 2 Cores, DDR2-555-1.8GB/s) 0.096 0.125 [0.251] 0.096 [0.219] 28 [50]
Intel(R) Core(TM) i3-3217U CPU (1.8 GHz, 2[4] Cores) 0.105 [0.277] 0.148 [0.305] 21 [26]
Intel(R) Core(TM) i3 CPU U 380 (1.33 GHz, 2[4] Cores, DDR3-1333-4.8GB/s) 0.104 [0.257] 0.0985 [0.244] 36 [52]
Intel(R) Xeon(R) CPU E5-2603 (1.8 GHz, 4 Cores) 0.074 [0.178] 0.068 [0.173] -
AMD Phenom(tm) II X4 900e (2.4 GHz, 4 Cores, DDR2-800) 0.067 0.099 [0.1] 0.0567 [0.126] 17 [32]
Intel(R) Core(TM) i5-3610ME CPU (2.7 GHz, 2[4] Cores) 0.05 [0.132] 0.0376 [0.122] -
AMD A8-6500 APU (3.5 GHz, 4 Cores, DDR3-1866-5.8GB/s) 0.0581 0.0425 [0.0572] 0.028 [0.0442] 14 [24]
Intel(R) Core(TM) i7-5600U (2.6->3.2 GHz, 2[4] Cores, DDR3-1600-15GB/s) 0.0445 0.0288 [0.0326] 0.0266 [0.0306] 13.6 [20.5]
Intel(R) Core(TM) i3-4330 CPU (3.5 GHz, 2[4] Cores) 0.03 [0.08] 0.023 [0.073] -

* — Включає в себе дворазовий час виклику функції gettimeofday().
** — Вхід до процедури на мові JavaLikeCalc також означає вхід до критичної секції та запит на читання RW замка відтак цей час переважно відображає продуктивність цієї операції. Цей час виключено з відповідних значень у стовпчиках з JavaLikeCalc.

 (2 Kb) Різниця у часі обчислення при прямому виклику математичної операції та із віртуальної машини JavaLikeCalc обумовлена впливом частоти ядра процесору (частоти на якій воно працює) та яким виконується частина команди до передачі її математичному сопроцесору та із швидкістю пам'яті. Продуктивність математичного сопроцесору зазвичай не пов'язана безпосередньо із продуктивністю та частотою ядра процесору або швидкістю пам'яті.

Методика вимірювання у таблиці вище наступна:
  1. Оцінка часу обчислення операцій загального блокування критичної секції, "sin(Pi)" та "pow(Pi,2)", у другому, третьому та четвертому стовпчиках. Операції sin() та pow() обрано як показові, для оцінки продуктивності сопроцесору та загальних маніпуляцій із реальними числами. Значення у квадратних дужках характеризує ступінь накладених витрат під час обчислення всередині віртуальної машини OpenSCADA та продуктивність цілочисельних обчислень довкола зразкових операцій. Тобто основне значення характеризує продуктивність процесору у операціях із плаваючою точкою (математичний сопроцесор або емуляція), а у квадратних дужках у цілочисельних операціях (центральний процесор), як різниця часу операцій із плаваючою точкою. Методика вимірювання:
    1. забезпечуємо стабільність частоти центрального процесору, шляхом встановлення політики керування у ПРОДУКТИВНІСТЬ;
    2. запускаємо OpenSCADA без навантаження, проект по замовчанню або з порожньою конфігурацією, з конфігуратором UI.QTCfg (RU), UI.WebCfg (RU) або UI.WebCfgD;
    3. відкриваємо об'єкт функції "sin()", а потім "pow()", модуля бібліотеки математичних функцій;
    4. переходимо до вкладки "Виконати", встановлюємо "Включено", вводимо значення аргументам "X" у 3.14159 та "Ступінь" у 2 (для "pow()"), встановлюємо кількість запусків у 1000 (для більшої репрезентативності можна збільшити, порядками, до загального часу операції не більш 10 секунд);
    5. натискаємо "Виконати" та отримуємо час виконання;
    6. здійснюємо обчислення декілька разів, натискаючи "Виконати", домагаючись мінімального значення;
    7. фіксуємо мінімальне значення, яке ділимо на 1000 (кількість запусків) та отримуємо основне значення часу одного обчислення у мікросекундах;
    8. переходимо до об'єкту модуля внутрішніх обчислень OpenSCADA (DAQ.JavaLikeCalc);
    9. створюємо там об'єкт бібліотеки функцій "test", а у ній функцію "test", яку включаємо;
    10. у вкладці "Програма" вводимо текст команди ПОРОЖНЬО, "y=sin(3.14159)", та далі "y=pow(3.14159, 2)";
    11. переходимо до вкладки "Виконати" та виконуємо теж саме, що й у пунктах "d."-"g.";
    12. отриманий результат записуємо у другому стовпчику та вважаємо допоміжним, у квадратних дужках, для третього та четвертого після віднімання значення у другій.
  2. Комплексна оцінка продуктивності, п'ятий стовпчик, здійснюється шляхом виконання моделі технологічного процесу (ТП) АГЛКС на цільовій архітектуру. Цей тест може виконуватися тільки на обчислювальних системах із порівняно високою продуктивністю (або із кількістю ядер більш за одне), які спроможні виконувати модель, та із пристроєм виводу графічної інформації (дисплей), випадок виконання серверу візуалізації не розглядається. Основне значення навантаження процесору характеризує виконання динамічної моделі ТП, а додаткове додає формування та виконання графічного інтерфейсу. Методика вимірювання:
    1. забезпечуємо стабільність частоти центрального процесору, шляхом встановлення політики її керування у ПРОДУКТИВНІСТЬ;
    2. із меню оточення робочого простору (RU) запускаємо модель АГЛКС;
    3. запускаємо емулятор терміналу (наприклад, "konsole"), де набираємо "top", натискаємо Shift+H (дивимося процес в цілому) та Shift+P (сортуємо за навантаженням на процесор);
    4. знімаємо покази у колонці "%CPU" напроти процесу "openscada", відбираємо типове значення для декількох оновлень та фіксуємо його як основне значення;
    5. повертаємося до вікна OpenSCADA та запускаємо середовище візуалізації, а потім проект інтерфейсу "АГЛКС" (RU).
    6. повертаємося до емулятору терміналу та знімаємо додаткове значення, як у пункті "d.".

Отримані результати можете надіслати на адрес електронної пошти для розміщення у цій таблиці!

Додаток 2. Продуктивність сховищ (вбудовані, HDD, SSD, CF, SD, ...)

У цьому розділі міститься інформація про продуктивність сховищ, з якими та на яких працювали та працюють рішення OpenSCADA.
Hardware Real size, GB/GiB Read/Write, MB/s Notes
SSD
PATA SSD, Ver2.M0J (Acer Aspire One 110) 41.2/15.8
SSD: GoodRAM Play 32GB 2.5" SATA2, MLC (SSD32G25S2MGYSM2244) 238/45
SSD: GoodRAM C40 60GB 2.5" SATA3, MLC (SSDPR-C40-060) 498/467
SSD: GoodRAM C40 120GB 2.5" SATA3, MLC (SSDPR-C40-120) 480/330 for EXT4
SSD: GoodRAM CX200 120GB 2.5" SATA3, TLC (SSDPR-CX200-120) 120/111 497/118 fast overheating on write 30+10 °С
SSD: GoodRAM IRIDIUM 120GB 2.5" SATA3, MLC (SSDPR-IRID-120) 120/111 499/201 heating 33+3/11 °С
SSD: TOSHIBA THNSNJ512GCSU 512GB 2.5" SATA3, MLC (JULA0101) 512/477 525/517 heating 32+4/10 °С
HDD. Typical environment: Read/Write: raw 50GB by blocks 1MiB, into end of the hard disk
HDD 3.5": SAMSUNG SP2004C 200/186 39/38.5 heating 27+11/13.5/15°С
HDD 3.5": TOSHIBA DT01ACA050 85.4/84.4 +18°С
HDD 3.5": WDC WD15EARX-00PASB0 43/45.5 +11°С
HDD 3.5": WDC WD10EZRX-00D8PB0 1000/931 77.7/77.5 +9°С, noisely seek
HDD 3.5": Seagate ST1000VM002-1ET1 1000/931 87.1/86.9 heating 27+7/9/10 °С
HDD 2.5": WDC WD5000LPVX-22V0TT0 497/463 62.1/61.7 heating 33+5/9/11 °С
Internal device's flash
Flash: ICP_DAS LP-8x81 Internal 4GB 8/4
Card flash (CF)
CF: ICP_DAS LP-8x81 8GB, MLC 27/(19...15)
CF: ICP_DAS LP-8x81 8GB, MLC-N-233x 44/12.5
CF: ICP_DAS LP-8x81 8GB, pSLC 47/44
Flash Disk IDE44: Kontron chipDISK/1000-IDE 3/5.7
SD, MiniSD, MicroSD, MMC. Typical environment. 30°C, Read/Write: raw 1GB by blocks 1MiB.
Card Readers: [ Grand X CRX45 USB 2.0 multicard reader; Realtec USB 2.0 multicard reader; Transcend Multi-Card Reader M3; GoodRam MicroSD USDRSGRBL10; Raspberry Pi2 MicroSD for EXT4 ]
MicroSD: Transcend 8GB Class 2, 378010 7.94/7.40 [14.6/3.4; 9/3.5; 14.3/3.7; 14.3/3.7]
MicroSD: EMTEC 8GB Class 4 7.96/7.41 [18.0/0.8; 12.3/1.8; 17.2/1.8; 17.0/1.9] early and apparently overheat and hang in long time on write
MicroSD: Kingston 8GB Class 4, SDC4/8GB 7.74/7.21 [16.7/0.756; 15.1/1.8; 16.4/1.8; 16.5/1.9] early and apparently overheat and hang in long time on write
MicroSD: Transcend 8GB Class 4, A31213 7.94/7.40 [17.8/4; 18.0/4.1; 18.8/4.2; 17.9/3.0]
MicroSD: Transcend 32GB Class 4, 9161BA
19.7/6.7
MicroSD: Transcend 4GB Class 6, 9153BA 4.03/3.75 [15.7/6.7; 15.9/7.6; 18.5/9.3; 17.9/9.5]
SD: Team 8GB Class 10, CT8G02XTVCC1118N 8.03/7.47 [16.7/10.3; 14.1/12.2; 18.5/14.0]
MicroSDHC: Toshiba 16GB UHS-1 Class 10, SD-C016UHS1(BL5A) 15.7/14.6 [16.2/5.9; 16.7/7.4; 18.4/9.1; 17.6/8.8; 16.9/11.3]
MicroSDHC: Toshiba 16GB UHS-1 Class 10, SD-C016UHS1(6A) 15.5/14.5 [14.4/6.7; 17.3/8.1; 18.6/9.9; 17.9/10.0; 19.5/13.0]
MicroSDHC/MicroSDXC: Kingston 16GB UHS-1 Class 10, SDC10G2/16GB 15.5/14.4 [18.6/6.0; 16.3/6.7; 18.5/10.5; 18.1/10.1; 17.1/8.6]
MicroSDHC: Transcend 16GB UHS-1 Class 10, C93858 15.9/14.8 [17.2/10.6; 18.6/9.6; 18.5/11.1; 17.7/10.8; 22.5/11.1]
MicroSDHC: SP 32GB, SP032GBSTH010V10 31.1/28.9 [18.1/8.0; 14.8/7.3; 18.7/10.8; 17.9/9.8; 19.4/11.1]
MicroSDHC: SanDisk Ultra 32GB, SDSQUNB-032G-GN3MN 31.1/28.9 [17.1/7.0; 14.8/7.5; 18.4/11.0; 18.1/10.4; -]
MicroSDHC: Transcend 32GB UHS-1 Class 10, Premium 400x D24035 31.7/29.5 [17.6/14.7; 17.8/9.6; 18.8/9.9; 17.8/14.1; 22.4/10.5]

Додаток 3. Рішення ПЛК

У цьому розділі міститься інформація про моделі ПЛК реально побудованих або проектованих на основі розробленого середовища виконання та прошивки ПЛК.
PLC components Price (DDP), $ Notes
PC/104
CPU: Kontron MOPSlcdLX 430 AMDGeodeLX800(i686)-500MHz, 0°-60°C, 5W, Video
CPU: Diamond ATHM800-256A 1229 VIA Mark(i686)-800MHz, 256Mb, -40°-85°C, 10W, Video, 16AI, 4AO, 24DIO
CPU: Diamond ATHM800-256N 842 VIA Mark(i686)-800MHz, 256Mb, -40°-85°C, 10W, Video
CPU: Rhodeus RDS800-LC 414 AMDGeodeLX800(i686)-500MHz, -20°-70°C, 5W, Video
CPU: Helios HLV800-256AV 772 Vortex86DX(i486)-800MHz, 256Mb, -40°-85°C, 5.4W, Video, 16AI, 4AO, 40DIO
CPU: Helios HLV800-256DV 387 Vortex86DX(i486)-800MHz, 256Mb, -40°-85°C, 4.5W, Video
CPU: Tri-M VSX104 380 Vortex86SX(i486sx)-300MHz, 128Mb, -40°-85°C, 2W
MEM: DDR-SODIM-256M 15 for Kontron MOPSlcdLX
Flash Disk: Kontron chipDISK/1000-IDE 100 1Gb, 0°-70°C, read=3MB/s, write=5.7MB/s
Flash Disk: M-Systems MD1171-D1024 42 1Gb, 0°-70°C
Flash Disk: M-Systems MD1171-D256 22 256Mb, 0°-70°C
Flash Disk: M-Systems MD1171-D128 18 128Mb, 0°-70°C
Flash Disk: Diamond systems FD-128R-XT 82 128Mb, -40°-85°C
Flash Disk: Diamond systems FD-1GR-XT 168 128Mb, -40°-85°C
Box: PB-300-K 108
Box: PB-EAP-300-K 250
Box: CT-4 156
Power unit: MMEANWELL DR-4505 30
IO: DMM-16-AT (16AI, 4AO, 16DIO) 581 -40°-85°C
IO: DMM-32X-AT (32AI, 4AO, 24DIO) 689 -40°-85°C
RS485: EMM-OPT4-XT 396 -40°-85°C
RS232->RS485 10
ICP DAS LP-8x81
CPU: LP-8381 974 AMDGeodeLX800(i686)-500MHz, -25°-75°C, 14W, 4GB flash (R/W: 8/4 MB/s), 8GB CF (R/W: 29/19 MB/s), 1GB SRAM, Video, 2xEthernet, 2xUSB, 3-slots, 2xRS-232, 1xRS-485, 1xRS-232/485
CPU: LP-8781 1025 AMDGeodeLX800(i686)-500MHz, -25°-75°C, 16W, 4GB flash (R/W: 8/4 MB/s), 8GB CF (R/W: 29/19 MB/s), 1GB SRAM, Video, 2xEthernet, 2xUSB, 7-slots, 2xRS-232, 1xRS-485, 1xRS-232/485
CPU: LP-8781-Atom 1438 IntelAtomZ520-1.3GHz, -25°-75°C, 18W, 8GB flash, 1GB DDR2, Video, 2xEthernet, 4xUSB, 7-slots, 2xRS-232, 1xRS-485, 1xRS-232/485
IO_BOX: I-87K9 155 IO box for 9 modules series I-87k accessible by DCON
IO: I-8017HW (8AI DE, 16AI SI) 230 Parallel bus, acquisition up to the 30 kHz
IO: I-8042W (16DI + 16DO) 121 Parallel bus.
IO: I-87017ZW (20/10AI) 209 Serial bus. Overvoltage support up to 240V.
IO: I-87019RW (8AI) 213 Serial bus. Additional surge protection, support for thermocouples and resistance thermometers.
IO: I-87024W (4AO) 204 Serial bus. Output of current and voltage.
IO: I-87026PW (6AI, 2AO, 2DI, 2DO) 215 Serial bus. Combined module.
IO: I-87040W (32DI) 121 Serial bus. Isolated.
IO: I-87041W (32DO) 109 Serial bus. Isolated. Watchdog function for communication.
IO: I-87057W (16DO) 82 Serial bus. Watchdog function for communication.
Segnetics SMH 2Gi
CPU: SMH 2Gi-0020-31-2 335 ARM9-200MHz, LCD-display, 1xRS-485, 1xRS-232, 2xUSB, 1xEthernet, 3DO
IO: MC-0402-01-0 (8AI, 4AO, 9DI, 10DO) 176 Single MC RS-485 serial bus.
IO: MR-120-00 (12DI[opt]) 92 Multiple MR RS-485 serial bus.
IO: MR-800-00 (8DO[rel]) 103 Multiple MR RS-485 serial bus.
IO: MR-810-00 (8DI[opt,~]) 82 Multiple MR RS-485 serial bus.
IO: MR-061-00 (6DO[sim,opt]) 84 Multiple MR RS-485 serial bus.
IO: MR-602-00 (6DO[rel], 2AO[opt]) 120 Multiple MR RS-485 serial bus.
IO: MR-504-00 (5DO[rel], 4AO[opt]) 120 Multiple MR RS-485 serial bus.

Посилання


Referring pages: HomePageUk/Doc/BCM2835
HomePageUk/Using/KramWater
HomePageUk/Using/KramatorskBallMills
HomePageUk/Using/LP5xxx
HomePageUk/Using/LP8x81
HomePageUk/Using/NokiaLinux
HomePageUk/Using/PLC