Ім'я: LP8x81 Засновано: листопад 2009р Версія: 1.0.0 Статус: GPL Учасники:Роман Савоченко Переклад:Роман Савоченко Опис: Проект присвячено створенню середовища виконання ПЛК для контролерів серії LP-8x81 фірми ICP DAS.
Вступ
Промислові контролери сімейства LP-8x81 фірми ICP DAS є першим продуктом з серії LinPAC, який побудовано на x86 сумісному процесорі, попередні контролери цього сімейства засновано на процесорі сімейства ARM. Крім x86 процесору ці контролери мають значні ресурси оперативної пам'яті та дискового простору. Все це дозволило розглядати ці контролери як перший кандидат з продукції ICP DAS для адаптації OpenSCADA у якості середовища виконання.
Основою для адаптації OpenSCADA у якості середовища виконання контролерів сімейства LP-8x81 стала потреба у створені системи автоматичного керування навантаженням шарових млинів помелу вугілля для ТЕЦ. Особливістю цього технологічного процесу (ТП) є наявність специфічних до ресурсів та функціям контролеру вимог при невеликому об'ємі параметрів. Крім того, вирішальним фактором було обмежене фінансування. Всім пред'явленим вимогам задовольнили контролери сімейства LP-8x81:
порівняно невисока ціна;
достатньо висока продуктивність для ПЛК;
архітектурна та програмна відкритість ПЛК;
промислове виконання та розширений температурний діапазон.
Метою даного проекту було створення середовища виконання на основі OpenSCADA, а також прошивки з ОС Linux та OpenSCADA для контролерів цього сімейства. Пред'являлися наступні вимоги до середовища виконання та прошивки:
підтримка модулів сімейства I-8000 у OpenSCADA, включаючи швидкий режим для швидких модулів аналогового вводу;
підтримка функцій спектрального аналізу сигналів у OpenSCADA;
включення до прошивки ядра ОС Linux з підтримкою таймеру реального часу високої роздільної здатності, низькою латентністю та розширенням жорсткого реального часу;
перезбір драйверів специфічного обладнання виробника для потрібного ядра;
формування упакованого штампу прошивки для надійної роботи у екстремальних умовах.
ПЛК LP-8x81
ПЛК (рис.1) конструктивно виконано за модульним принципом, де модулі встановлюються до кошика. Кошик сполучено з процесорним модулем та може мати 0, 3 або 7 слотів для модулів розширення. Модулі розширення можуть бути двох типів, а саме: модулі на паралельну та послідовну шини. Модулі на паралельній шині (I-8x) є швидкими. Модулі на послідовній шині (I-87x) встановлюються на шину інтерфейсу RS-485 та працюють зі швидкістю 115000 біт/с за протоколом DCON. Крім модулів безпосередньо у кошику контролер може розширюватися додатковими кошиками з модулями на послідовній шині (I-87x) через послідовний інтерфейси процесору.
Рис. 1. ПЛК серії LP-8x81.
Процесор контролера має наступні технічні характеристики:
CPU
AMD LX800 процесор (32-біт, 500 МГц)
Системна пам'ять
1 GB RAM
SRAM з подвійним живленням від батареї
512 КБ (зі збереженням протягом 5 років)
Flash
4 гБ як IDE Master; Читання: 8 МБ/c; Запис: 4 МБ/c
EEPROM
16 КБ
Збереження даних: 40 років; 1,000,000 циклів видалення/запису.
RJ-45 x 2, 10/100 Base-TX Ethernet Контролер (Авто-погодження, авто MDI/MDI-X, LED індикатор)
USB 1.1 (хост)
2
COM1
Внутрішні комунікації з модулями I-87K у слотах
COM2
RS-232 (RxD, TxD и GND); Не ізольований
COM3
RS-485 D2+,D2-;само-налаштування ASIC всередині
COM4
RS-232/RS-485 (RxD, TxD, CTS, RTS и GND для RS-232, Data+ и Data- для RS-485); Не ізольований
COM5
RS-232 (RxD, TxD, CTS, RTS, DSR, DTR, CD, RI и GND); Не ізольований
Робоча температура
-25 ~ +75 °C
Програмне оточення на основі OpenSCADA.
Початкове програмне забезпечення представляє собою дистрибутив Linux з графічним оточенням Gnome та з встановленими драйверами спеціалізованого обладнання. Крім того, оточення містить компілятор "C" з LinPAC SDK, а також інтерпретатор мови Perl.
Враховуючи, що невідомо вихідного дистрибуту, який використано постачальником та як наслідок не омовлено можливість встановлення додаткового ПЗ, тоді використання такого оточення як є, по перше - обтяжливо, по друге - не може бути співставлено з наявними апаратними ресурсами. Крім того вихідне ядро Linux 2.6.18 далеке до пред'явлених вимог.
Виходячи з цих основних вимог, вирішено було створити повністю нове програмне оточення. В основу цього програмного оточення було покладено дистрибутив ALTLinux 5.1, ядро Linux 2.6.29-rt-up та OpenSCADA 0.6.4.2. Вибране ядро задовольняє всім пред'явленим вимогам, а дистрибутив ALTLinux 5.1 дозволяє збирати компактні прошивки під потрібні вимоги.
Вибір нового оточення поставив нас перед фактом відсутності вихідних текстів для драйверів специфічного обладнання постачальника. Цю проблему було вирішено сумісно з розробниками вихідного програмного оточення, які погодилися адаптувати та зібрати власні драйвера під потрібне ядро Linux. Архів цих модулів наявний тут.
Для реалізації підтримки обладнання контролерів LP-8x81 та модулів серії I-8000 було створено модуль DAQ.ICP_DAS для системи OpenSCADA. Модуль надає в систему OpenSCADA підтримку різноманітного обладнання фірми ICP DAS за посередництвом бібліотеки API фірми libi8k.a.
Прошивка програмного оточення створювалася у відповідністю з інструкцією тут. У доповнення до стандартних матеріалів було створено пакет з файлами потрібними для контролерів LP-8x81 kernel-modules-icp-rt-up-1.0.0-alt1.2.src.rpm. Крім того, профіль збірки прошивок було адаптовано на збірку для LP-8x81.
У процесі випробовування програмного оточення було виявлено, що стандартний драйвер мережевих контролерів "via-rhine" працює некоректно, а саме відбувається падіння швидкості мережі на порядок після нормальної роботи протягом від діб до тижнів. Проблему було вирішено адаптацією та збіркою драйвера "rhinefet" від VIA.
З часом збірку прошивки для LP-8x81 було здійснено на основі пакетної бази дистрибутиву "ALTLinux T6" зі збереженням ядра Linux 2.6.29-rt-up, що дозволило:
Використати нову функцію "propagator" (система попередньої ініціалізації обладнання, пошуку та завантаження штампів ФС) пошуку/створення розділів EXT2/3/4 з міткою "alt-live-storage" для формування кореневого розділу "root" на модифікацію. Ця функція надає повноціну можливість встановлення додаткових пакетів безпосередньо із репозиторія дистрибутива, а також оновлення упакованих у прошивку пакетів, виключаючи ядро та низку системних сервісів.
Додати можливість створення прошивки у вигляді комбінованого ISO-образу, який можна (крім запису на CD/DVD) прямо, за допомогою утиліти dd, записати на USB-flash, HDD, SSD та отримати робоче оточення з розділом "alt-live-storage", відображення "root", на вільний простір носія.
Висновок
У результаті було отримано та запущено у роботу прошивку програмного оточення, яка задовольняє всім висунутим вимогам. На цей час оточення працює на трьох контролерах LP-8781 та виконує функції:
швидкий збір даних вібродатчика по двох каналах на частоті 5 КГц;
спектральний аналіз сигналу вібродатчика та формування рівня завантаження шарового млина за двома каналами;
збір та видача даних за 18 аналоговими та 32 дискретними каналами загального призначення;
обчислення двох задач з алгоритмами загального значення, для керування млинами (період 500 мс);
обчислення двох задач з алгоритмами швидкого керування (період 100мс), для задач імпульсного керування;
обслуговування запитів з верхнього рівня (дві резервовані OpenSCADA - станції).