ЛР4.Ч1.Xмарні сервіси IIoT. Основи роботи з Watson IoT Platform

4. Створення та використання логічного інтерфейсу цифрового двійника

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

Для початку означимо призначення логічного інтерфейсу. Деякі перетворення опишемо тут, інші буде зроблено пізніше. По перше, необхідно робити перетворення (масштабування) величин. Зокрема (див таб.1 з п.3.1) величини:

  • плинна частота в 0.1 Гц
  • струм 0.1 А
  • номінальний момент на двигуні, 0.001

По друге, слово статусу STA може за значенням відрізнятися для різних ПЧ. У будь якому випадку в  застосунках кінцевих користувачів цікавить тільки кілька станів: операційний/неопераційний, аварія. По факту, для ПЧ Altivar, що керуються по профілю CIA402, станів набагато більше. На рис.39 показаний автомат стану, де ETA (те саме, що STA) може бути в багатьох станах, тому необхідно реалізувати перетворення ETA (STA) в якусь властивість логічного інтерфейсу «State», який би показував стан як Operational (TRUE) і Not Operational(FALSE), а також властивість «Fault», яка б показувала чи є помилка (при TRUE).  Для зручності деталізованого відображення STA можна передавати його як STRING, з означенням плинного стану, відповідно до автомату станів на рис.39.

рис.39

4.1.  Розділення простого інтерфейсу на фізичний і логічний інтерфейси

Використовуючи консоль IBM Cloud зайдіть в означення Device Types, далі в панель налаштування типу ATV630. Виберіть вкладку «Interface» і натисніть вкладку «редагувати» (рис.40)

  рис.40

Після цього перейдіть в розширений режим налаштування через команду «Use Advanced Interface Creator».

  рис.41

У розширеному режимі можна редагувати окремо логічні і фізичні інтерфейси. При переході в розширений режим, єдиний простий інтерфейс розділиться на 2 – фізичний та логічний. Тому для початку в розширеному режимі необхідно зробити Активацію вже існуючих створених інтерфейсів, які пов’язані між собою, за допомогою кнопки Activate (рис.42)

рис.42

У випадаючому вікні підтверджуємо кнопкою «Deploy».

4.2. Редагування логічного інтерфейсу в простому редакторі

У вікні, що з’явилося необхідно перейти до редагування логічного інтерфейсу (рис.43)

рис.43

У вікні Identity натисніть (рис.44) Next.

  рис.44

Відкрийте структуру об’єкту “d”, щоб можна було доступитися до вікна налаштування властивостей. Перейдіть до редагування властивості «I» (рис.45)

  рис.45

У вікні редагування властивості, видно що вона просто копіює значення з фізичного інтерфейсу. Перейдіть у режим редагування властивості.  

  рис.46

Дане значення властивості (струму) треба просто перемножити на 0.1, оскільки саме в цих одиницях воно передається з пристрою Edge, тому відповідно і у фізичному інтерфейсі. Використовуючи кнопки «X» та «Value» запишіть формулу,  як це показано на рис.47, після чого натисніть опцію підтвердження і кнопку “Save”.

  рис.47

Аналогічні дії зробіть для

  • плинна частота, в 0.1 Гц
  • номінальний момент на двигуні, в 0.001 Н*м

Після усіх дій натисніть “Next” (рис.48)

рис.48 

У наступному вікні виберіть події, які будуть повідомлятися підписувачам (рис.49) і натисніть «Done». Дочекайтеся коли завершиться процес оновлення інтерфейсу (це може зайняти кілька секунд) і зробіть активацію інтерфейсів кнопкою Active.

рис.49

 

 

4.3. Перевірка роботи логічного інтерфейсу

Модифікуйте програму в хмарному застосунку, змінивши у вузлі IBM IoT поле «Input Type» рівним “Device State Event”.  Активуйте передачу даних з Edge в хмару, у вікні відладки хмарного застосунку подивіться, які значення прийшли в застосунок через логічний інтерфейс, вони повинні бути відмасштабовані.

 

4.4. Редагування властивості STA логічного інтерфейсу з використанням розширеного редакторку  

Для редагування простих перетворень, в якому приймають участь арифметичні операції достатньо використовувати стандартний редактор. Тим не менше платформа IoT дозволяє використовувати в логічному інтерфейсі досить складні перетворення з використанням JSONata.  JSONata описана в доіднику по Node-RED.  Правила використання JSONata в описі перетворень для платформи IBM IoT описані за наступним посиланням.

У випадку даної задачі, необхідно створити дві властивості «State» (String) і «Fault» (Boolean)

Перейдіть в редагування логічного інтерфейсу. На вікну етапу «State Model» переведіть властивість STA в режим редагування. Переведіть редактор в Advanced Editor та змініть формулу як це показано на рис.50. Нижче наведений текст формули:

(($event.d.STA % 65280 = 64) ? "Заборона запуску" : "" ) & (($event.d.STA % 65280 = 80) ? "Заборона запуску" : "" ) & (($event.d.STA % 65520 = 8) ? "Помилка" : "" ) & (($event.d.STA % 65280 = 33) ? "Готовий до подачі живлення" : "" ) & (($event.d.STA % 65280 = 49) ? "Готовий до подачі живлення" : "" ) & (($event.d.STA % 65280 = 51) ? "Живлення подане" : "" ) & (($event.d.STA % 65280 = 55) ? "Операційний режим " : "" ) & (($event.d.STA % 65280 = 23) ? "Швидка зупинка" : "" )

рис.50

Зробіть підтвердження та збереження (Save). Перейдіть на інший крок (Next) після чого виберіть пункт «For All Events» (при таких налаштуваннях простіше вести налагодження). Після цього натисніть Done.

На вікні інтерфейсів натисніть кнопку «Activate”->”Deploy”, після чого «Done». 

Для розуміння формули ознайомтеся з таблицею 2. Спочатку отримується молодший байт значення шляхом отримання остачі від ділення на FF00HEX (65280DEC), це робиться по причині відсутності побітових операторів в JSONata. Далі складуються усі результати умовних виразів в один текстовий рядок. Оскільки при невиконанні умов добавляється пустий рядок («»), то тільки одна умова сформує текстове представлення стану.   

таб.2. Значення стану

Шістнадцяткове

Десяткове

Текстове значення

Примітка

xx40

64

Заборона запуску

 

xx50

80

Заборона запуску

 

xxx8

8

Помилка, використовувати

дільник 65520DEC (FFF0HEX)

xx21

33

Готовий до подачі живлення

 

xx31

49

Готовий до подачі живлення

 

xx33

51

Живлення подане

 

xx37

55

Операційний режим

 

xx17

23

Швидка зупинка

 

 

4.5. Перевірка роботи перетворення властивості STA логічного інтерфейсу

У консолі IBM Watson IoT Platform відкрийте вікно стану (State) пристрою SIC101 (рис.50), виберіть логічний інтерфейс. У користувацькому інтерфейсі локального Node-RED змініть значення STA на 64, після чого активуйте пересилання даних в хмару. У вікні State повинно з’явитися повідомлення з текстом.       

рис.51

Також у хмарному Node-RED повинно з’явитися повідомлення зі значенням STA, рівним  «Заборона запуску». Поступово змінюючи значення STA в локальному Node-RED, перевірте спрацювання інших станів.

4.6. Добавлення в хмарний сервіс вузла отримання помилок статусу пристрою

Для отримання помилок, пов’язаних зі статусом пристрою можна використати режим Device State Error Event.

У хмарному Node-RED вставте ще один вузол IBM IoT in, аналогічно як це було зроблено в п.3.5. Необхідно також створити ще один конфігураційний вузол API Key (наприклад з назвою IoT2), інакше тільки один з вузлів в один момент часу буде отримувати повідомлення. У налаштуваннях Input Type вкажіть Device State Error Event.

рис.52

                Тепер, коли при обробці стану виникне якась помилка, вона буде відображатися в налагоджувальній панелі.

4.7. Добавлення властивостей STATUS та FAULTдо логічного інтерфейсу

Виконується самостійно!

Добавте до існуючого логічного інтерфейсу  властивості STATUS та FAULT типу BOOLEAN.

 

STATUS=TRUE при STA=xx37 (Операційний режим)

FAULT=TRUE при STA=xxx8 (Помилка)

Перевірте роботу, забезпечте щоб з’явилися повідомлення зі STATUS=TRUE та FAULT=TRUE.

Зробіть копії екранів з повідомленнями.

При налагодженні перевіряйте помилки в налагоджувальній панелі хмарного Node-RED за допомогою фрагмента програми, що був створений в п.4.7.