OpenSCADAWiki: Home Page Uk/Using/PLC/firmware ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 

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

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

Інструменти та збірка робочих оточень

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

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

Створення

У першу чергу створювалась конфігурація ПЛК без локального дисплею у зв'язку з наявністю обладнання такого типу та відсутності обладнання для 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/ext3. У випадку з ext3 монтування ФС відбувається як ext2, через проблеми у ініціалізаторі. У випадку з ext2/ext3 потрібно буде використовувати не завантажувач syslinux, а extlinux, конфігурація якого власне майже нічим не відрізняється.


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

У випадку з ext2/ext3 та extlinux:


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


У випадку з файловою системою ext2/ext3 на цільовому диску можна файл "work" не створювати. Тоді робочі дані будуть розміщуватися безпосередньо у директорії "root" цільового диску. Увага. Це ненадійне рішення, оскільки файлова система цільового диску становиться нестатичною, а перевірити її немає можливості, у зв'язку з раннім монтуванням у "ro" та потенційною ненадійністю перевірки ФС, змонтованої у "ro", а також неможливості перемонтування як ext3.


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


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


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


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


Для файлової системи FAT це робиться низкою утиліт з комплекту mtools наступним чином:


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


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

Результат

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

OpenSCADA

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


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


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

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

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


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


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


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


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


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

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

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


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

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°С. Продуктивності даного комп'ютера достатньо для виконання як функцій серверу збору, контролю та керування, так і функцій станції візуалізації. Однак у зв'язку із використанням непродуктивного процесору родини Atom виконання математичних моделей технологічних процесів потребує всіх ресурсів процесору. Наприклад, при виконанні математичної моделі АГЛКС процесор навантажується на 86%. Контролер має сертифікат "УкрСЕПРО", що може бути важливим для багатьох користувачів на території України.



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


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


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


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]