Відэа: адмінскі пульт кіравання Хабрам. Дазваляе рэгуляваць карму, рэйтынг, і баніць карыстальнікаў.
TL; DR: у артыкуле я паспрабую стварыць жартоўны пульт кіравання Хабрам, выкарыстоўваючы асяроддзе распрацоўкі прамысловых інтэрфейсаў Webaccess/HMI Designer і тэрмінал WebOP.
Чалавека-машынны інтэрфейс (англ.: Human-machine interface, HMI) - гэта набор сістэм для ўзаемадзеяння чалавека з кіраванымі машынамі. Звычайна гэты тэрмін ужываецца для прамысловых сістэм, у якіх ёсць аператар і пульт кіравання.
WebOP - аўтаномны прамысловы тэрмінал для стварэння чалавека-машынных інтэрфейсаў. Выкарыстоўваецца для стварэння пультаў кіравання вытворчасцю, сістэм маніторынгу, дыспетчарскіх, кантролераў разумнага дома, і г.д. Падтрымлівае прамое падлучэнне да прамысловага абсталявання, можа працаваць у складзе SCADA-сістэмы.
Тэрмінал WebOP – апаратная частка
Тэрмінал WebOP – гэта маламагутны кампутар на базе ARM-працэсара, у адзіным корпусе з маніторам і тачскрынам, прызначаны для запуску праграмы з графічным інтэрфейсам, створанай у HMI Designer. У залежнасці ад мадэлі, тэрміналы маюць на борце розныя прамысловыя інтэрфейсы: RS-232/422/485, CAN-шыну для падлучэння да аўтамабільных сістэм, порт USB Host для падлучэння дадатковай перыферыі, порт USB Client для падлучэння тэрмінала да кампутара, аўдыёўваход і аўдыёвыхад , картрыдар MicroSD для энерганезалежнай памяці і пераносу налад.
Прылады пазіцыянуюцца ў якасці бюджэтнай замены манаблокаў, для задач, якія не патрабуюць магутных працэсараў і рэсурсаў паўнавартаснага дэсктопнага кампутара. WebOP можа працаваць як аўтаномны тэрмінал для кіравання і ўводу/высновы дадзеных, у пары з іншымі WebOP, ці ў складзе SCADA-сістэмы.
Тэрмінал WebOP можа падлучацца напрамую да прамысловых прылад.
Пасіўнае астуджэнне і абарона IP66
Дзякуючы нізкаму цеплавылучэнні, некаторыя мадэлі WebOP выкананы цалкам без актыўнага паветранага астуджэння. Гэта дазваляе мантаваць прылады на аб'ектах, крытычных да ўзроўня шуму, і змяншае колькасць пылу, якое трапляе ўнутр карпусы.
Пярэдні панэль выканана без зазораў і стыкаў, мае ўзровень абароны IP66, і дапушчае прамое трапленне вады пад напорам.
Задняя панэль тэрмінала WOP-3100T
Энерганезалежная памяць
Для прадухілення страты дадзеных у WebOP ёсць 128Кб энерганезалежнай памяці, з якой можна працаваць гэтак жа, як з RAM. У ёй можна захоўваць сведчанні лічыльнікаў і іншыя крытычна важныя дадзеныя. У выпадку збою харчавання, дадзеныя будуць захаваны, і адновяцца пасля перазагрузкі.
Выдаленае абнаўленне
Праграму, запушчаную на тэрмінале, можна абнаўляць выдалена па Ethernet-сетцы ці праз паслядоўныя інтэрфейсы RS-232/485. Гэта спрашчае абслугоўванне, бо пазбаўляе ад неабходнасці абыходзіць усе тэрміналы для абнаўлення ПЗ.
Мадэлі WebOP
Серада распрацоўкі WebAccess/HMI Designer
З скрынкі тэрмінал WebOP - проста маламагутны ARM-кампутар, на якім можна запускаць любое ПА, але ўся сутнасць гэтага рашэння ў фірмовым асяроддзі распрацоўкі прамысловых інтэрфейсаў WebAcess/HMI. Сістэма складаецца з двух кампанентаў:
- HMI Designer - асяроддзе распрацоўкі інтэрфейсаў і праграмавання логікі. Працуе пад Windows, на кампутары праграміста. Выніковая праграма кампілюецца ў адзін файл і перадаецца на тэрмінал, для выканання рантаймам. Праграма даступная на рускай мове.
- Час выканання HMI - рантайм для запуску скампіляванай праграмы на канчатковым тэрмінале. Можа працаваць не толькі на тэрміналах WebOP, але таксама на кампутарах Advantech UNO, MIC, і звычайных дэсктопных кампутарах. Існуюць версіі рантайму пад Linux, Windows, Windows CE.
Hello world – стварэнне праекта
Пачнём стварэнне тэставага інтэрфейсу для нашага пульта кіравання Хабрам. Я буду запускаць праграму на тэрмінале
Стварэнне новага праекту і выбар архітэктуры
Выбар камунікацыйнага пратакола, па якім будзе адбывацца загрузка скампіляванай праграмы ў WebOP. На дадзеным кроку можна абраць паслядоўны інтэрфейс, альбо паказаць IP-адрас тэрмінала.
Інтэрфейс стварэння праекту. У левай частцы - дрэвападобная схема з кампанентаў будучай праграмы. Пакуль нас цікавіць толькі пункт Screens, гэта непасрэдна экраны з элементамі графічнага інтэрфейсу, якія будуць выводзіцца на тэрмінал.
Для пачатку створым два экрана з тэкстам "Hello World" і магчымасцю перамыкацца паміж імі з дапамогай кнопак. Для гэтага дадамо новы экран Screen #2, і на кожны экран дадамо тэкставы элемент і дзве кнопкі пераключэння паміж экранамі (Screen Buttons). Кожную кнопку наладзім на пераключэнне на наступны экран.
Інтэрфейс наладкі кнопкі пераключэння паміж экранамі
Праграма «Hello World» гатова, зараз можна яе скампіляваць і запусціць. На этапе кампіляцыі могуць быць памылкі ў выпадку няправільна ўказаных зменных або адрасоў. Любая памылка лічыцца фатальнай, праграма будзе скампіляваная толькі ў выпадку адсутнасці памылак.
У асяроддзі прадугледжана магчымасць сімуляцыі тэрмінала, для таго, каб можна было наладжваць праграму на кампутары лакальна. Ёсць два віды сімуляцыі:
- Анлайн-сімуляцыя - усе вонкавыя крыніцы дадзеных, паказаныя ў праграме, будуць задзейнічаныя. Гэта могуць быць УСО або прылады, падлучаныя па паслядоўным інтэрфейсам або Modbus TCP.
- Афлайн-сімуляцыя - Сімуляцыя без выкарыстання вонкавых прылад.
Пакуль знешніх дадзеных у нас няма, выкарыстоўваем афлайн-сімуляцыю, папярэдне скампіляваўшы праграму. Выніковая праграма будзе знаходзіцца ў тэчцы праекту, з імем ІмяПраекта_ІмяПраграмы.px3
Запушчаная ў сімуляцыі праграма можа кіравацца курсорам мышы гэтак жа, як бы гэта адбывалася на тачскрын тэрмінала WebOP. Бачым, што ўсё працуе, як і задумана. Выдатна.
Для загрузкі праграмы на фізічны тэрмінал дастаткова націснуць кнопку Download. Але бо я не наладжваў падлучэнне тэрмінала да асяроддзя распрацоўкі, можна проста перанесці файл, выкарыстаючы USB-флэшку або карту памяці MicroSD.
Інтэрфейс праграмы інтуітыўна зразумелы, я не постаці разбіраць кожны графічны блок. Стварэнне фонавым, фігур, тэксту будзе зразумела любому, хто выкарыстоўваў праграмы, падобныя на Word. Для стварэння графічнага інтэрфейсу не патрабуецца навыку праграмавання, усе элементы дадаюцца перацягваннем мышшу на форму.
Праца з памяццю
Цяпер, калі мы ўмеем ствараць графічныя элементы, вывучым працу з дынамічным зместам і скрыптовай мовай. Створым столбчатую дыяграму, з адлюстраваннем дадзеных са зменнай U $ 100. У наладах дыяграмы абярэм тып дадзеных: 16-бітны цэлы лік, і дыяпазон значэнняў дыяграмы: ад 0 да 10.
Праграма падтрымлівае напісанне скрыптоў на трох мовах: VBScript, JavaScript і ўласную мову. Я буду выкарыстоўваць трэці варыянт, бо для яго ёсць прыклады ў дакументацыі і аўтаматычная даведка па сінтаксісе адразу ў рэдактары.
Дадамо новы макрас:
Напішам просты код для паступовай змены дадзеных у зменнай, якую можна будзе адсочваць на дыяграме. Будзем дадаваць 10 да зменнай, і абнуляць, калі яна будзе больш за 100.
$U100=$U100+10
IF $U100>100
$U100=0
ENDIF
Для выканання скрыпту ў цыкле, усталюем яго ў наладах General Setup як Main Macro, з інтэрвалам выканання 250ms.
Скампілюем і запусцім праграму ў сімулятары:
На дадзеным этапе мы навучыліся маніпуляваць дадзенымі ў памяці і адлюстроўваць іх у наглядным выглядзе. Гэтага ўжо дастаткова, каб стварыць простую сістэму маніторынгу, атрымліваючы дадзеныя са знешніх прылад (датчыкаў, кантролераў) і запісваючы іх у памяць. У HMI Designer даступныя розныя блокі адлюстравання дадзеных: у выглядзе кругавых цыферблатаў са стрэлкамі, розных дыяграм, графікаў. З дапамогай скрыптоў на JavaScript можна рэалізаваць загрузку дадзеных з вонкавых крыніц па HTTP.
Пульт кіравання Хабрам
Выкарыстоўваючы атрыманыя навыкі, зробім жартоўны інтэрфейс адмінскага пульта кіравання Хабрам.
Наш пульт павінен умець:
- Пераключаць профілі карыстальнікаў
- Захоўваць дадзеныя кармы і рэйтынгу
- Змяняць значэння кармы і рэйтынгу з дапамогай паўзункоў
- Пры націску кнопкі «забаніць» профіль павінен пазначацца як забанены, аватарка павінна мяняцца на закрэсленую
Кожны профіль будзем выводзіць на асобнай старонцы, таму створым па старонцы для кожнага профіля. Карму і рэйтынг будзем захоўваць у лакальных зменных у памяці, якія будуць ініцыялізавацца з дапамогай Setup Macro пры запуску праграмы.
Рэгуляванне кармы і рэйтынгу
Для рэгулявання кармы будзем выкарыстоўваць паўзунок (Slide Switch). У якасці адрасу запісу паказваем зменную, ініцыялізаваную ў Setup Macro. Абмяжуем дыяпазон значэнняў паўзунка ад 0 да 1500. Цяпер пры руху паўзунка новыя дадзеныя будуць запісвацца ў памяць. Пры гэтым першапачатковы стан паўзунка будзе адпавядаць значэнням зменнай у памяці.
Для вываду лікавых значэнняў кармы і рэйтынгу будзем выкарыстоўваць элемент Numeric display. Прынцып яго працы аналагічны дыяграме з прыкладу праграмы "Hello World", проста паказваем адрас зменнай у Monitor Address.
Кнопка "забаніць"
Кнопка "забаніць" рэалізаваная з дапамогай элемента Toggle Switch. Прынцып захоўвання дадзеных аналагічны прыкладам вышэй. У наладах можна абраць розны тэкст, колер ці малюнак, у залежнасці ад стану кнопкі.
У момант націску кнопкі, аватарка павінна закрэслівацца чырвоным. Гэта лёгка рэалізаваць з дапамогай блока Picture Display. Ён дазваляе задаць некалькі малюнкаў, прывязаных да стану кнопкі Toggle Switch. Для гэтага блоку паказваецца такі ж адрас, як у блока з кнопкай, і колькасць станаў. Аналагічнай выявай настроена карцінка з шыльдзікамі пад аватаркай.
Заключэнне
У цэлым, прадукт мне спадабаўся. Раней у мяне быў досвед выкарыстання для аналагічных задач планшэта на Android, але распрацоўка інтэрфейсу для яго істотна складаней, а браузерныя API не дазваляюць паўнавартасна атрымаць доступ да перыферыі. Адзін тэрмінал WebOP можа замяніць звязак з Android-планшэта, кампутара і кантролера.
HMI Designer, нягледзячы на архаічны дызайн, задаволенай прасунуць. Без асаблівых навыкаў праграмавання можна хутка накідаць які працуе інтэрфейс. У артыкуле не разглядаюцца ўсе графічныя блокі, якіх тамака вельмі шмат: аніміраваныя трубы, балоны, графікі, тумблеры. Ён са скрынкі падтрымлівае мноства папулярных прамысловых кантролераў, утрымоўвае канектары баз дадзеных.
Спасылкі
Асяроддзе распрацоўкі WebAccess/HMI Designer і Runtime можна спампаваць
→
Крыніца: habr.com