Ім'я: ПЛК
|
Сучасні системи автоматизованого керування технологічними процесами (АСУ ТП) є достатньо складними. Умовно ієрархію АСУ ТП можна поділити на два рівня: нижній та верхній рівень. Нижній рівень АСК ТП містить польове обладнання (датчики та виконавчі механізми), а також програмовані логічні контролери (ПЛК). Верхній рівень представляє із себе систему оперативної візуалізації та контролю за технологічним процесом — SCADA-система. ПЛК становить відповідальну частину АСК ТП, яка виконує функцію збору даних польового обладнання, обчислення та видачу керуючих, блокуючих та інших дій на керувальні органи польового обладнання.
OpenSCADA є відкритою реалізацією SCADA-системи, яку засновано на модульній архітектурі, що дозволяє будувати кінцеві рішення під різноманітні вимоги. Цільовим призначення OpenSCADA є системи верхнього рівня, однак висока ступінь модульності, і як наслідок масштабованість, дозволяють вирішувати широке коло задач суміжних областей.
Ринок ПЛК насичено широким спектром виробів різної архітектури та конструкції. Архітектурно ПЛК можна поділити на три умовні групи:
Жорстко-програмовані ПЛК за звичай будуються на основі одно-кристальних мікроЕОМ або мікросхемах програмованої логіки. Програма таких контролерів або прошивається одноразово, надаючи можливість програмної параметризації, або ж формується спеціалізованими засобами, які наділено функціями компіляції бінарної прошивки середовища виконання з програмою користувача, наприклад ISaGRAF або LabView. У якості представника такого ПЛК можна у приклад навести модулі розподіленого ППО фірми Advantech.
Високоінтелектуальні комерційні ПЛК за звичай будуються на базі більш потужного обладнання з архітектурою, близькою до повноцінного ПК. Основною відмінністю від стандартного ПК-сумісного ПЛК є закрита програмна, а часто і апаратна архітектури. Програмне оточення таких контролерів за звичай базується на операційній системі реального часу, яка планує декілька потоків користувача з поділом їх за пріоритетом. Користувацьке програмування таких ПЛК здійснюється роботою у фірмовому програмному оточенні, яке формує у якості результату бінарний код потоку ПЛК. У якості представника такого обладнання можна навести ПЛК серії S7 фірми Siemens.
ПК-сумісні ПЛК з відкритим доступом — це група скоріше не ПЛК, прямо сумісних з ПК, а ПЛК, які не містять інтегрованого середовища виконання і часто постачаються без операційної системи. Архітектура таких ПЛК може бути різною, починаючи від економічних рішень архітектури x86 та закінчуючи архітектурними рішеннями ARM та MIPS. Середовище виконання таких ПЛК за звичай формують з ПЗ того ж класу, що і у випадку з жорстко програмованими ПЛК, у вигляді бінарного файлу для виконання під одну з розповсюджених, масштабованих або спеціалізованих ОС (DOS, QNX, Linux, WinCE, VxWorks). Часто зустрічаються і спеціалізовані під задачу рішення. У якості представників цього класу можна розглядати ПЛК формфактору PC/104.
Варіанти конструктивного виконання ПЛК можна умовно поділити на моно-блокові та модульні. Моно-блокові ПЛК надають фіксовану конфігурацію ППО, спеціалізовану під обмежене коло завдань. Модульні конструкції надають можливість легкого розширення конфігурації ППО під потрібне завдання. Існують також і гібридні конструкції, які представляють із себе моно-блок, спроможний розширювати своє ППО за рахунок зовнішніх блоків ППО, які підключаються по одному з стандартних інтерфейсів, наприклад, за RS-485.
Архітектура системи OpenSCADA дозволяє створювати кінцеві рішення під різні вимоги та ресурси шляхом модульного розширення. Ця можливість виявляється корисною у світлі обмеженості ресурсів ПЛК. Крім того, враховуючи постійний розвиток апаратного забезпечення, а також безперервне підвищення інтеграції та економічності сучасних мікропроцесорних рішень, OpenSCADA дозволяє послідовно розширювати функціональність ПЛК, зберігаючи наступність зі старими рішеннями. Наприклад, на основі системи OpenSCADA можна будувати рішення з мінімальними вимогами на рівні: CPU 100 МГц, пам'ять та флеш-диск по 30 Мб.
Як було зазначено вище ресурси сучасних ПЛК можуть коливатися у достатньо великих межах, причому ПЛК фіксованого типу, побудовані на однокристальних мікроЕОМ, все далі витискаються у вузько-спеціалізовані галузі розвиненими ПК-архітектурами. Така тенденція робить все більш цікавою можливість створення уніфікованої відкритої платформи для реалізації середовища виконання ПЛК на основі уніфікованих ПК-платформ.
OpenSCADA дозволяє реалізувати ідею створення відкритої платформи для реалізації середовища виконання ПЛК. Вже зараз можна реалізовувати оточення ПЛК, які нічим не поступаються комерційним інтелектуальним контролерам, а багато у чому і перевершують їх за рахунок можливості інтегрування функцій, характерних для SCADA систем, у оточення ПЛК, розширюючи функціональні та користувацькі характеристики ПЛК та приводячи його на єдину зі SCADA кодову базу, а також оптимізуючи вартість кінцевого рішення.
Перелічимо функції, які вирішуються OpenSCADA у межах оточення ПЛК:
Архітектура x86 порівняно недавно стала позиціюватися як вбудована та реальні рішення на її основі, у цій галузі, рідко мають ресурси (< i386), яких недостатньо для виконання повноцінної ОС та розвинутого оточення. З цієї причини, а також з причини більшої уніфікації архітектури, індивідуальні збірки ядра Linux та базових програм оточення ОС здійснюються достатньо рідко, що за звичай характерно для архітектури ARM. Більш цікавим та практичним для x86, для широкого кола обладнання, є збірка прошивок зі стисненою кореневою файловою системою (КФС). Однак все ще можлива індивідуальна збірка прошивок за допомогою систем складання на кшталт "BuildRoot" або "PTXDist", нижче. Також можлива і пряма установка дистрибутиву Linux.
Перед реалізацією прошивки ПЛК, даного розділу, ставились наступні вимоги:
Враховуючи вищенаведені вимоги для створення прошивки було обрано інструмент створення дистрибутивів 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" цільового диску.
Наступним етапом є конфігурація та ініціалізація завантажувача. Для конфігурації завантажувача потрібно відредагувати файл "syslinux/syslinux.cfg" або "extlinux/extlinux.conf" наступним чином:
У випадку вибору ідентифікації завантажувального розділу за ідентифікатором дізнатися його для нашого розділу можна командою: blkid.
У випадку з міткою це завдання дещо складніше оскільки робиться це для різних файлових систем по різному.
Для файлових систем EXT2/3 це робиться утилітою e2label. Наприклад, так: $ e2label /dev/sdb1 PLС
Для файлової системи FAT це робиться низкою утиліт із комплекту mtools або за допомогою parted, що простіше. За допомогою mtools це робиться наступним чином:
Тепер можемо ініціювати завантажувач:
На цьому з завантаженням та ініціюванням прошивки все. Якщо отриманий диск не завантажується тоді:
У результаті отримаємо прошивку розміром від 30 до 100Мб, яка задовольняє фактично всім заявленим вимогам та забезпечує:
У якості середовища виконання ПЛК використано систему 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. В цілому процедуру створення прошивки було збережено, з низкою змін, але при цьому було додано деякі покращення та розширення:
Оскільки з'явилася можливість легко довстановлювати потрібні пакети безпосередньо із репозиторія то відпала потреба у окремій збірці прошивок із 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 загального призначення:
Це ядро міститься у дистрибутиві 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".
Процес складання та тестування:
Отримане ядро, перейменовано у "kernel-image-rt1-up-2.6.29.alt1", можна використовувати для PLC із HPET або таймером високої роздільної здатності, а також у "LP-8x81" та "LP-8x81 Atom" (тільки одне ядро)!
Складання ядра версії 2.6.33 потрібне для контролерів фірми "ICP DAS" LP-8x81 та LP-8x81 Atom з причини наявності саме для нього, із патчем CONFIG_PREEMPT_RT, бінарних драйверів "ICP DAS", для LP-8x81 Atom.
Результати тестів цього ядра:
Процес складання та тестування:
Плати від "Diamond Systems" стали першими на яких тестувалась та стабілізувалась OpenSCADA. Першою платою став одно-платний комп'ютер ATH400 формфактору 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" було уніфіковано для підтримки всіх плат виробника.
Другою платою стала плата ППО DMM32-AT, представлена на рисунку нижче. Плата використовувалась для створення макетів та емуляторів поля технологічного ПЗ. Плата має характеристики:
Джерело живлення: | +5VDC ±10% @ 200mA |
Робочі умови: | -40 to +85°C |
DAQ: | 32AI (16 біт, 200 кГц), 4AO, 24DIO, 2CNTR |
Дослідження шумових властивостей високо-імпедансних входів плат від 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 [-] |
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, про яку вище.
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 |
На цей час рішень на цій платі немає, однак планується зібрати для неї оточення, можливо для автономної системи обліку.
VDX-6354D представляє собою одно-платний комп'ютер формфактору PC/104, представлено на рисунку нижче. Цей комп'ютер побудовано на процесорі "DM&P SoC CPU Vortex86DX- 800MHz", який продуктивніше "Vortex86SX-300 МГц" у попередньому розділі, однак і енергоспоживання цієї плати вже не 2, а 4 Вата більше на сторінці проекту (RU)
Промислові контролери сімейства LP-8x81 фірми ICP DAS є першим продуктом із серії LinPAC, який побудовано на x86 сумісному процесорі, попередні контролери цього сімейства основані на процесорі сімейства ARM. Крім x86 процесору ці контролери мають значні ресурси оперативної пам'яті та дискового простору. Все це дозволило розглядати цей контролер як першого кандидата із продукції ICP DAS для адаптації OpenSCADA у якості середовища виконання більше на сторінці проекту (RU).
Фірма Avalue, сумісно з її дистриб'ютором у Росії фірмою ElTech, надає широкий спектр панельних ПК, які можуть використовуватися починаючи із звичних офісних моноблоків та закінчуючи промисловими сенсорними панелями у фронтальному виконанні класу IP65. У зв'язку використання стандартного обладнання запуск та робота OpenSCADA на них не викликає проблем більше на сторінці проекту (RU).
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%. Контролер має сертифікат "УкрСЕПРО", що може бути важливим для багатьох користувачів на території України.
Робоче оточення 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 випускає широкий спектр обладнання для автоматизації, починаючи від панельних ПК та закінчуючи модулями збору даних 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 |
Цей контролер є вже достатньо старим та низькопродуктивним для сучасного програмного забезпечення однак для задач середовища виконання ПЛК він ще годиться і на нього було з успіхом завантажено прошивку на основі пакетної бази 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 |
Панельний ПК також має малі ресурси для запуску сучасного графічного оточення, тому для установки на нього використовувався дистрибутив "ALTLinux T6" із заходами по оптимізації:
Приведені заходи дозволили втиснутися у 128 МБ оперативної пам'яті і отримати при цьому розвинуте та продуктивне графічне оточення. Для налаштування сенсорного екрану ELO використовувався пакет із драйвером "elographics" — "xorg-drv-elographics". До конфігураційного файлу "xorg.conf" додано секцію:
Широке розповсюдження у вбудованих рішеннях отримала архітектура 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 КФС можна на основі готових пакунків існуючого бінарного дистрибутива, пакунків вихідних текстів існуючого дистрибутиву, а також побудувати із оригінальних вихідних текстів за посередництвом ToolChain у одній із складальних систем.
Побудова програм або цілої КФС для архітектур відмінних від x86 та x86_64 зазвичай здійснюється за посередництвом кроскомпіляції із використанням утиліт (ToolChain) для збірки, лінковки та налаштування під цільову архітектуру ARM. Для автоматизації цього процесу створено низку інструментів збірки готових КФС.
Ця система збірки є частиною проекту створення альтернативної бібліотеки функцій мови "C" UClibC, тому в цілому націлена на побудову оточень із "UClibC", з відповідними обмеженнями. BuildRoot гарно показав себе у роботі на хостових системах різних версій та дозволяє без особливих проблем збирати програмні оточення на основі Linux.
Отримати архів BuildRoot потрібної версії можна за посиланням http://buildroot.uclibc.org/downloads. Далі його потрібно розпакувати у домашній директорії звичайного користувача та здійснити конфігурацію, налаштування та збірку:
У процесі збірки можуть виникнути проблеми наступного роду:
Універсальний інструмент збірки ядер, ToolChain та програмних оточень на основі Linux фірми "Pengutronix". PTXDist є потужним та гнучким інструментом однак старі його версії мають проблеми на сучасних хостових системах, що ускладнює завдання збірки програмних оточень для порівняно старих, але все ще розповсюджених, апаратних платформ. Наприклад, зараз (2012 рік) можна зустріти нове обладнання з процесорами ARM XScale, ARM9 (ARMv5) часів 2003 року. Однак новими версіями PTXDist непогано підтримуються старі платформи, про що можна дізнатися з таблиці підтримки за посиланням: http://www.pengutronix.de/oselas/toolchain/index_en.html.
Для збірки програмного оточення (КФС) за допомогою PTXDist потрібно:
Тепер детальніше, в командах:
Одно-платний комп'ютер "Тіон-Про270" представляє собою високо-інтегровану обчислювально-керуючу систему на базі процесору Marvell PXA270 із ARM ядром родини XScale від фірми ЗЕО. Цю плату було передано розробникам проекту OpenSCADA Олексієм Попковим з метою адаптації OpenSCADA.
Всі матеріали по збірці програмного оточення з OpenSCADA та готові збірки для плати Тіон-Про270 можна отримати за посиланням: ftp://ftp.oscada.org/OpenSCADA/PLC/TionPro270
Плата постачається виробником обладнання з передвстановленим програмним оточенням на основі 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" здійснюється від особи суперкористувача командою:
При цьому сценарій прошивки "tion270.cfg" та файли образів програмного оточення, вказані у сценарії прошивки "tion270.cfg", мають знаходитися у поточній теці. Сценарій прошивки "tion270.cfg" містить:
З метою уникнути виникнення безлічі проблем збірки, пов'язаних зі збіркою із самого початку, була взята конфігурація "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 різних версій:
Освоєння 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 достатньо давно випускає контролери на процесорах ARM архітектури із передвстановленим оточенням ОС Linux, як у цьому випадку LP-5141, що робить цікавим створення збірки або нової прошивки із OpenSCADA більш на сторінці проекту.
Фірма Nokia є одним із світових лідерів у виробництві та продажу мобільних телефонів. У 2005 році фірма Nokia випустила кишеньковий персональний комп'ютер (КПК) N770 на основі розвинутого Linux оточення із власним оточенням робочого столу (на GTK+) — Hildon під загальною назвою проекту Maemo. Згодом на основі платформи Maemo було випущено ще три мобільних пристрої, а саме два КПК «інтернет-планшети» N800, N810 та смартфон «інтернет-планшет» N900. У 2010 році фірма Nokia об'єднала свої зусилля по роботі над Maemo з проектом MobLin фірми Intel, створивши проект MeeGo. На основі платформи MeeGo у 2011 році було випущено два смартфони N950(прототип) та N9 більше на сторінці проекту.
Вільнопрограмований панельний контролер "SMH2Gi", представляє собою високо-інтегровану обчислювально-керуючу систему на базі процесору iMx27 з ядром ARM926EJ-S від фірми Сегнетікс. Адаптація та збірка OpenSCADA для цього контролера знадобилося у межах проекту створення автоматизованої системи керування вакуумної технологічної установки (RU).
Всі матеріали по збірці програмного оточення з OpenSCADA та готові збірки для панельного контролеру можна отримати за посиланням: ftp://ftp.oscada.org/OpenSCADA/PLC/Segnetics-SMH2Gi.
Панельний контролер постачається виробником обладнання з передвстановленим програмним оточенням на основі 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 представляє собою контролер на базі мікросхеми AT91RM9260, ядро ARM9(ARMv5), з набором периферійних пристроїв. Плату призначено для розробки (макетування) проектів на базі мікроконтролерів з ядром ARM926EJ-S виробництва корпорації Atmel, також може бути використано у якості керуючого контролера цільової системи.
На платі встановлено роз'єми 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®" — одно-платный комп'ютер, створений з метою благочинності. Призначено для навчання базовим комп'ютерним наукам у школах, позиціюється як дешеве рішення для починаючих розробників. Розробляється "Raspberry Pi Foundation". Плату Raspberry Pi було отримано для збірки та адаптації OpenSCADA від Лисенко Максима. Плату Raspberry Pi2 придбано для задач OpenSCADA та адаптації її для роботу із базовими шинами I2c, SPI, 1Wire із різними сенсорами на них. Плату Raspberry Pi3 було придбано та спонсоровано Proviron Holding NV для деякого налагодження та технічної підтримки.
Плата має характеристики:
Параметри: | 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 мм |
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
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.
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.
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
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:
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".
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] | >100 | |
Nokia N950 (TI OMAP3630, CortexA8, 1 GHz) | 0.90 [2.02] | 0.552 [1.81] | >100 | 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] | - |
Методика вимірювання у таблиці вище наступна:
Отримані результати можете надіслати на адрес електронної пошти для розміщення у цій таблиці!
У цьому розділі міститься інформація про продуктивність сховищ, з якими та на яких працювали та працюють рішення 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] |
У цьому розділі міститься інформація про моделі ПЛК реально побудованих або проектованих на основі розробленого середовища виконання та прошивки ПЛК.
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. |