Як розробити програму для автоматизації майже не вміючи програмувати. Доведеться вивчити IDE...

Хочеш створити свій проект в «залізі», який переверне світ з ніг на голову? Або автоматизувати управління світлом в коридорі. При цьому ти не спеціаліст у програмуванні мікроконтролерів, але розібрався з arduino і тим, як моргати її світлодіодами і тільки дізнався про польових транзисторах, симісторах, 1-Wire. Тепер хочеш керувати всім цим господарством та надати доступ через інтернет і зберігати дані в хмарі.



Або ти дружиш з паяльником, гуру програмування ПЛК, снифишь PDU в modbus. Але комп'ютер з Windows і SCADA занадто дорогий для проекту або не підходить чомусь ще… І хочеться запускати програму на одноплатном комп'ютері Raspberry PI з доступом до її периферії GPIO, I2C.

Методи візуального програмування
Використовуючи готові компоненти та бібліотеки, можна розробляти програму використовуючи мови візуального програмування. На щастя програмістів і до нещастя всіх користувачів таких систем, настає такий момент, коли потрібна функціональність, яка не підтримується «з коробки». Програми не генерують інші програми для нашого складного світу краще ніж програмісти і у нас поки є робота. Перерахуємо як же можна візуально програмувати типові завдання:

Блок-схеми/Доброзичливий російська алгоритмічна мова, яка забезпечує наочність(ДРАКОН)/Р-схеми і т. п. Що я добре запам'ятав з програмування в школі і перших курсах інституту, так це блок-схеми. Малювання блок-схем підходять для занять студентів, щоб як і у солдатів, весь вільний час було зайнято роботою. Ще одне застосування — навчання програмування на аркуші паперу. Ну і нарешті, хтось працює і малює такі діаграми, щоб здати госпроект за ЕСПД/ГОСТ. Поспівчуваємо їм!

CASE інструментарій — сотні їх за захмарні гроші і часто з сумнівною користю. Особливо багато таких систем використовується архітекторами та баз даних.

UML Діаграма станів з якої за допомогою кодогенерации можна отримати заготовку або готову керуючу програму. Ця діаграма є прикладом автоматного програмування. І відмінно підходить для проектування компіляторів, багатьох електронних пристроїв і будь-яких завдань і модулів систем в яких є сутності зі складною поведінкою.

Мова релейно-контактної логіки. Ця мова має бути близький інженерам і тим хто програмує ПЛК. Програмування ліфта — один з типових прикладів використання.

Середовище візуального програмування LabVIEW дозволяє робити досить складні системи візуально і тісно пов'язана з апаратним забезпеченням National Instruments. Сподобався приклад того, як в коментарях на хабре реалізували завдання у візуальному редакторі для порівняння складності з Delphi рішенням і огляд LabVIEW.

Reactive Blocks
У цій же статті про Reactive Blocks використовується модифікована UML діаграма діяльності, яка пристосована під компоненти проекту і з якої генерується код. Розробники зробили plugin для Eclipse зі своєю моделлю, аналізатором схем і подіями компонент.

Проект доступний безкоштовно для open source проектів, з цілком логічним обмеженням. Всі створені вами в IDE Building Blocks стануть доступними всім під open source ліцензією.

Ідеологія Reactive Blocks
Це візуальне конструювання програми з готових існуючих цеглинок — building block, які приховують всю складність взаємодії з «залізом» і хмарними сервісами.

Звичайно, складні алгоритми краще писати як java код, тому графічна діаграма та код підтримуються в синхронізованому змозі автоматично. Це одвічна мрія компонентного проектування, коли компоненти пишуть програмісти, а використовують їх користувачі-експерти у своїй галузі.

Так само як і не варто робити з діаграми — спагетті діаграму з сотні і тисячі елементів. У цьому випадку можна поддиаграмму оформити у вигляді такого компонента-будівельного блоку. У разі open source рішення, ви публікуєте свій блок, щоб співтовариство також могло використовувати його в своїх проектах.

Є можливість автоматично упакувати свій додаток в пакет (OSGI bundle) для платформи Eclipse Kura. Тоді можливий перезапуск програми без перезапуску контейнера, доступна консоль для адміністрування, а також безліч сервісів цієї IoT платформи і вся міць існуючих компонентів і запускати це на Raspberry PI або Beagleboard Black.

Установка Reactive Blocks
Є варіант скачати спеціальну збірку eclipse+Reactive Blocks відразу готову до запуску сторінки для Windows, Mac OS X або Linux. Інший варіант, якщо у вас є встановлений Eclipse Neon(4.6)/Mars(4.5)/Luna(4.4)/Kepler(4.3) — потрібно вказати Update-Site і встановити плагін.

У будь-якому випадку для збірок Linux, заснованих на debian, потрібно інсталювати пакет libwebkitgtk-1.0 перед запуском середовища розробки:

sudo apt install libwebkitgtk-1.0

Для використання в збірці готової JDK, відмінною від доступною в системі за замовчуванням, потрібно додати рядки в файл reactiveblocks.ini:

-vm
PATH_TO_YOUR_JDK/bin/java

Знайомство з Reactive Blocks
Для доступу до сервера компонент довелося пройти авторизацію та аутентифікацію за допомогою облікового запису Google.

Написав питання по пошті і до честі їх інженерів і менеджменту, мені влаштували майстер-клас один на один з google hangout з відео конференції, скринкастом IDE і розбором простого прикладу. Їх провідний розробник виявився інженером з аерокосмічної галузі і любить у вільний час займатися авіамоделювання і проектує автопілот.

Мені здався дуже цікавим приклад сигналізації на RaspberryPI з використанням акселерометра.



Погравшись з різними прикладами, подивившись на вміст Building Blocks під капотом. Особливо цікаво було виявити там вже знайому мені бібліотеку OpenIMAJ.

Особисто для себе я не знайшов переваг порівняно з розробкою під Apache Camel з його компонентами rhiot і можливостями візуалізації. Про що скоро опублікую пост і навіть робочий приклад вже готовий! У своїй публікації на хабре Управляємо автоматом на Groovy/Java. Як ЧПУ верстата в домашній майстерні не перетворитися в мульт героїв «двоє зі скриньки» я використовував Apache Camel для керуванням ЧПУ верстатом.

Спроба схрестити BeagleBoard Black GPIO з Reactive Blocks була безуспішною.Так як бібліотека для роботи з GPIO SilverThings/bulldog не змогла працювати в режимі обробки переривання. Звичайно, можна опитувати порт введення в циклі — але це якось не правильно. Завів багрепорт #96 для цієї бібліотеки.

Вбудовані в процесор BeagleBoard Black RPU підходять для real time завдань де не місце java з її GC STW паузами.
Для java програмістів, на відміну від інженерів по електроніці, виникають думки щодо практичного використання Bitreactive IDE в складних проектах і треба розбиратися:

  • як відбувається одночасна робота над однією діаграмою кількох осіб;
  • як відбувається переформатування проекту з безліччю діаграм;
  • навіщо було робити свій сервер для зберігання компонент, коли вже є maven сумісні репозитарії;
  • як побачити diff для різних версій діаграми?
  • як розробляти тести і робити mock для компонент. Ніби як є генерація для jUnit, але треба заглиблюватися в практику тестування реальних додатків.


Висновки
Замість вивчення мов програмування вам доведеться вивчити його позначення схем, компоненти і засіб розробки. Потрібно це програмісту?

Це рішення більше підійде для інженерів не фахівців, які не хочуть вникати в тонкощі програмування на java, але хочуть використовувати всю міць існуючих компонент для зв'язку з «хмарними» сервісами IoT, мультимедіа та роботи з java бібліотеками, обгорнутими в building block.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.