Video: Habr administratörskonsol. Låter dig reglera karma, betygsätta och blockera användare.
TL; DR: I den här artikeln kommer jag att försöka skapa en komisk Habr-kontrollpanel med hjälp av Webaccess/HMI Designers industriella gränssnittsutvecklingsmiljö och WebOP-terminalen.
Human-machine Interface (HMI) är en uppsättning system för mänsklig interaktion med kontrollerade maskiner. Vanligtvis används denna term för industriella system som har en operatör och en kontrollpanel.
WebOP — En autonom industriterminal för att skapa gränssnitt mellan människa och maskin. Används för att skapa produktionskontrollpaneler, övervakningssystem, kontrollrum, smarta hemkontroller, etc. Stöder direktanslutning till industriell utrustning och kan fungera som en del av ett SCADA-system.
WebOP-terminal - hårdvara
WebOP-terminalen är en lågeffektsdator baserad på en ARM-processor, i ett enda fodral med bildskärm och pekskärm, designad för att köra ett program med ett grafiskt gränssnitt skapat i HMI Designer. Beroende på modell har terminalerna olika industriella gränssnitt ombord: RS-232/422/485, CAN-buss för anslutning till bilsystem, USB-värdport för anslutning av extra kringutrustning, USB-klientport för anslutning av terminalen till en dator, ljud ingång och ljudutgång, MicroSD-kortläsare för icke-flyktigt minne och överföring av inställningar.
Enheterna är placerade som en budgetersättning för allt-i-ett-datorer, för uppgifter som inte kräver kraftfulla processorer och resurserna hos en fullfjädrad stationär dator. WebOP kan fungera som en fristående terminal för kontroll och datainmatning/utmatning, parat med andra WebOP:er, eller som en del av ett SCADA-system.
WebOP-terminalen kan anslutas direkt till industriella enheter
Passiv kyla och IP66-skydd
På grund av låg värmeavledning är vissa WebOP-modeller designade helt utan aktiv luftkylning. Detta gör att enheterna kan monteras i områden som är känsliga för ljudnivåer och minskar mängden damm som kommer in i höljet.
Frontpanelen är gjord utan mellanrum eller skarvar, har en skyddsnivå på IP66 och tillåter direkt inträngning av vatten under tryck.
Bakpanelen på WOP-3100T-terminalen
Icke-flyktigt minne
För att förhindra dataförlust har WebOP 128Kb icke-flyktigt minne, som kan arbetas med på samma sätt som med RAM. Den kan lagra mätaravläsningar och andra kritiska data. Vid strömavbrott kommer data att sparas och återställas efter en omstart.
Fjärruppdatering
Programmet som körs på terminalen kan uppdateras på distans via ett Ethernet-nätverk eller via RS-232/485 seriella gränssnitt. Detta förenklar underhållet, eftersom det eliminerar behovet av att gå till alla terminaler för att uppdatera programvaran.
WebOP-modeller
WebAccess/HMI Designer utvecklingsmiljö
Out of the box är WebOP-terminalen bara en lågeffekts ARM-dator på vilken du kan köra vilken programvara som helst, men hela poängen med denna lösning är den proprietära WebAcess/HMI-utvecklingsmiljön för industriellt gränssnitt. Systemet består av två komponenter:
- HMI-designer — Miljö för utveckling av gränssnitt och programmeringslogik. Körs under Windows på programmerarens dator. Det slutliga programmet kompileras till en fil och överförs till terminalen för körning under körning. Programmet är tillgängligt på ryska.
- HMI körtid — körtid för att köra det kompilerade programmet på den slutliga terminalen. Det kan fungera inte bara på WebOP-terminaler, utan också på Advantech UNO, MIC och vanliga stationära datorer. Det finns runtime-versioner för Linux, Windows, Windows CE.
Hej världen - skapa ett projekt
Låt oss börja skapa ett testgränssnitt för vår Habr kontrollpanel. Jag kör programmet på terminalen
Skapa ett nytt projekt och välja en arkitektur
Välja kommunikationsprotokollet genom vilket det kompilerade programmet ska laddas in i WebOP. I det här steget kan du välja ett seriellt gränssnitt eller ange terminalens IP-adress.
Gränssnitt för att skapa projekt. På vänster sida finns ett träddiagram över komponenterna i det framtida programmet. För närvarande är vi bara intresserade av objektet Skärmar, det här är direkt skärmarna med grafiska gränssnittselement som kommer att visas på terminalen.
Låt oss först skapa två skärmar med texten "Hello World" och möjligheten att växla mellan dem med knappar. För att göra detta kommer vi att lägga till en ny skärm, Skärm #2, och på varje skärm kommer vi att lägga till ett textelement och två knappar för att växla mellan skärmar (Skärmknappar). Låt oss konfigurera varje knapp för att växla till nästa skärm.
Gränssnitt för att ställa in knappen för att växla mellan skärmar
Hello World-programmet är klart, nu kan du kompilera och köra det. I kompileringsskedet kan det finnas fel vid felaktigt angivna variabler eller adresser. Alla fel anses vara ödesdigra; programmet kompileras endast om det inte finns några fel.
Miljön ger möjlighet att simulera en terminal så att du kan felsöka programmet på din dator lokalt. Det finns två typer av simulering:
- Online simulering — Alla externa datakällor som anges i programmet kommer att användas. Dessa kan vara USO eller enheter anslutna via seriella gränssnitt eller Modbus TCP.
- Offline simulering — Simulering utan användning av externa enheter.
Även om vi inte har extern data använder vi offline-simulering, efter att ha kompilerat programmet tidigare. Det slutliga programmet kommer att finnas i projektmappen, med namnet Projektnamn_Programnamn.px3
Programmet som körs i simuleringen kan styras med muspekaren på samma sätt som det skulle vara på pekskärmen på en WebOP-terminal. Vi ser att allt fungerar som det är tänkt. Bra.
För att ladda ner programmet till en fysisk terminal klickar du bara på knappen Ladda ner. Men eftersom jag inte konfigurerade anslutningen av terminalen till utvecklingsmiljön kan du enkelt överföra filen med hjälp av ett USB-minne eller ett MicroSD-minneskort.
Programgränssnittet är intuitivt, jag kommer inte att gå igenom varje grafiskt block. Att skapa bakgrunder, former och text kommer att vara tydligt för alla som har använt program som liknar Word. För att skapa ett grafiskt gränssnitt krävs inga programmeringskunskaper, alla element läggs till genom att dra musen till formuläret.
Arbeta med minne
Nu när vi vet hur man skapar grafiska element, låt oss lära oss hur man arbetar med dynamiskt innehåll och ett skriptspråk. Låt oss skapa ett stapeldiagram som visar data från en variabel U $ 100. I diagraminställningarna väljer du datatypen: 16-bitars heltal och intervallet för diagramvärden: från 0 till 10.
Programmet stöder att skriva skript på tre språk: VBScript, JavaScript och sitt eget språk. Jag kommer att använda det tredje alternativet eftersom det finns exempel på det i dokumentationen och automatisk syntaxhjälp direkt i editorn.
Låt oss lägga till ett nytt makro:
Låt oss skriva lite enkel kod för att stegvis ändra data i en variabel som kan spåras på ett diagram. Vi lägger till 10 till variabeln och nollställer den till noll när den är större än 100.
$U100=$U100+10
IF $U100>100
$U100=0
ENDIF
För att köra skriptet i en loop, ställ in det i General Setup-inställningarna som Main Macro, med ett exekveringsintervall på 250ms.
Låt oss kompilera och köra programmet i simulatorn:
I detta skede har vi lärt oss att manipulera data i minnet och visa det visuellt. Detta är redan tillräckligt för att skapa ett enkelt övervakningssystem, ta emot data från externa enheter (sensorer, styrenheter) och registrera dem i minnet. Olika datavisningsblock finns tillgängliga i HMI Designer: i form av cirkulära urtavlor med pilar, olika diagram och grafer. Med hjälp av JavaScript-skript kan du ladda ner data från externa källor via HTTP.
Har kontrollpanel
Med hjälp av de förvärvade färdigheterna kommer vi att skapa ett komiskt gränssnitt för Habrs administratörskonsol.
Vår fjärrkontroll ska kunna:
- Byt användarprofil
- Lagra karma och betygsdata
- Ändra karma och betygsvärden med hjälp av reglagen
- När du klickar på "förbjud"-knappen ska profilen markeras som förbjuden, avataren ska ändras till överstruken
Vi kommer att visa varje profil på en separat sida, så vi skapar en sida för varje profil. Vi kommer att lagra karma och betyg i lokala variabler i minnet, som kommer att initieras med hjälp av Setup Macro när programmet startar.
Justera karma och betyg
För att justera karma kommer vi att använda skjutreglaget (Slide Switch). Vi anger variabeln som initierats i Setup Macro som inspelningsadress. Låt oss begränsa intervallet för skjutreglagets värden från 0 till 1500. Nu, när skjutreglaget flyttas, kommer ny data att skrivas till minnet. I det här fallet kommer skjutreglagets initiala tillstånd att motsvara värdena för variabeln i minnet.
För att visa de numeriska värdena för karma och betyg kommer vi att använda det numeriska displayelementet. Principen för dess funktion liknar diagrammet från exemplet "Hello World"-programmet; vi anger helt enkelt adressen till variabeln i Monitor Address.
Ban-knapp
"Ban"-knappen implementeras med hjälp av Toggle Switch-elementet. Principen för datalagring liknar exemplen ovan. I inställningarna kan du välja olika text, färg eller bild, beroende på knappens status.
När knappen trycks in ska avataren vara överstruken med rött. Detta är enkelt att implementera med hjälp av Picture Display-blocket. Det låter dig ange flera bilder som är associerade med tillståndet för växlingsknappen. För att göra detta får blocket samma adress som blocket med knappen och antalet tillstånd. Bilden med namnskyltar under avataren är uppställd på liknande sätt.
Slutsats
Sammantaget gillade jag produkten. Tidigare hade jag erfarenhet av att använda en Android-surfplatta för liknande uppgifter, men att utveckla ett gränssnitt för det är mycket svårare, och webbläsarens API:er tillåter inte full åtkomst till kringutrustningen. En WebOP-terminal kan ersätta en kombination av en Android-surfplatta, dator och kontroller.
HMI Designer är, trots sin arkaiska design, ganska avancerad. Utan speciella programmeringskunskaper kan du snabbt skissa på ett fungerande gränssnitt. Artikeln diskuterar inte alla grafiska block, av vilka det finns många: animerade rör, cylindrar, grafer, vippomkopplare. Den stöder många populära industriella kontroller direkt från förpackningen och innehåller databasanslutningar.
referenser
WebAccess/HMI Designer och Runtime-utvecklingsmiljö kan laddas ner