OpenSCADAWiki: Home Page Uk/Using/PLC/firmwareARM
 

Прошивка та створення програмного оточення ПЛК архітектури 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 Kb)


Плата постачається виробником обладнання з передвстановленим програмним оточенням на основі 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 Kb)

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 Kb) Мобильный телефон N900 (448 Kb) Мобильный телефон N950 (412 Kb)

SMH2Gi

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

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

SMH2Gi (259 Kb)


Панельний контролер постачається виробником обладнання з передвстановленим програмним оточенням на основі 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 Kb)


На платі встановлено роз'єми 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 Kb)


Плата має характеристики:
Параметри: 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 Kb)


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".