Video: Habr administrasjonskonsoll. Lar deg regulere karma, vurdering og utestenge brukere.
TL; DR: I denne artikkelen vil jeg prøve å lage et komisk Habr-kontrollpanel ved å bruke Webaccess/HMI Designer industrigrensesnittutviklingsmiljøet og WebOP-terminalen.
Human-machine interface (HMI) er et sett med systemer for menneskelig interaksjon med kontrollerte maskiner. Vanligvis brukes dette begrepet på industrielle systemer som har en operatør og et kontrollpanel.
WebOP — en autonom industriterminal for å lage menneske-maskin-grensesnitt. Brukes til å lage produksjonskontrollpaneler, overvåkingssystemer, kontrollrom, smarthuskontrollere, etc. Støtter direkte tilkobling til industrielt utstyr og kan fungere som en del av et SCADA-system.
WebOP-terminal - maskinvare
WebOP-terminalen er en lavstrømsdatamaskin basert på en ARM-prosessor, i et enkelt tilfelle med skjerm og berøringsskjerm, designet for å kjøre et program med et grafisk grensesnitt laget i HMI Designer. Avhengig av modell har terminalene ulike industrielle grensesnitt om bord: RS-232/422/485, CAN-buss for tilkobling til bilsystemer, USB Host-port for tilkobling av tilleggsutstyr, USB-klientport for tilkobling av terminalen til en datamaskin, lyd inngang og lydutgang , MicroSD-kortleser for ikke-flyktig minne og overføring av innstillinger.
Enhetene er posisjonert som en budsjetterstatning for alt-i-ett-PCer, for oppgaver som ikke krever kraftige prosessorer og ressursene til en fullverdig stasjonær datamaskin. WebOP kan fungere som en frittstående terminal for kontroll og datainngang/-utgang, sammenkoblet med andre WebOP-er, eller som en del av et SCADA-system.
WebOP-terminalen kan kobles direkte til industrielle enheter
Passiv kjøling og IP66 beskyttelse
På grunn av lav varmespredning er noen WebOP-modeller designet helt uten aktiv luftkjøling. Dette gjør at enhetene kan monteres i områder som er følsomme for støynivåer og reduserer mengden støv som kommer inn i huset.
Frontpanelet er laget uten hull eller skjøter, har et beskyttelsesnivå på IP66, og tillater direkte inntrengning av vann under trykk.
Bakpanelet på WOP-3100T-terminalen
Ikke-flyktig minne
For å forhindre tap av data har WebOP 128Kb med ikke-flyktig minne, som kan arbeides med på samme måte som med RAM. Den kan lagre måleravlesninger og andre kritiske data. Ved strømbrudd vil dataene lagres og gjenopprettes etter omstart.
Fjernoppdatering
Programmet som kjører på terminalen kan oppdateres eksternt via et Ethernet-nettverk eller via RS-232/485 serielle grensesnitt. Dette forenkler vedlikeholdet, siden det eliminerer behovet for å gå til alle terminaler for å oppdatere programvaren.
WebOP-modeller
WebAccess/HMI Designer utviklingsmiljø
Ut av esken er WebOP-terminalen bare en laveffekts ARM-datamaskin som du kan kjøre hvilken som helst programvare på, men hele poenget med denne løsningen er det proprietære WebAcess/HMI industrigrensesnittutviklingsmiljøet. Systemet består av to komponenter:
- HMI designer — miljø for utvikling av grensesnitt og programmeringslogikk. Kjører under Windows på programmererens datamaskin. Det endelige programmet kompileres til én fil og overføres til terminalen for kjøring ved kjøring. Programmet er tilgjengelig på russisk.
- HMI kjøretid - kjøretid for å kjøre det kompilerte programmet på den endelige terminalen. Det kan fungere ikke bare på WebOP-terminaler, men også på Advantech UNO, MIC og vanlige stasjonære datamaskiner. Det finnes kjøretidsversjoner for Linux, Windows, Windows CE.
Hei verden - lage et prosjekt
La oss begynne å lage et testgrensesnitt for vårt Habr-kontrollpanel. Jeg kjører programmet på terminalen
Opprette et nytt prosjekt og velge en arkitektur
Velge kommunikasjonsprotokollen som det kompilerte programmet skal lastes inn i WebOP via. På dette trinnet kan du velge et seriell grensesnitt, eller spesifisere IP-adressen til terminalen.
Grensesnitt for prosjektoppretting. På venstre side er det et trediagram over komponentene i det fremtidige programmet. Foreløpig er vi kun interessert i Skjermer-elementet, dette er direkte skjermene med grafiske grensesnittelementer som vil vises på terminalen.
La oss først lage to skjermer med teksten "Hello World" og muligheten til å bytte mellom dem ved hjelp av knapper. For å gjøre dette vil vi legge til en ny skjerm, Skjerm #2, og på hver skjerm vil vi legge til et tekstelement og to knapper for å bytte mellom skjermer (Skjermknapper). La oss konfigurere hver knapp for å bytte til neste skjermbilde.
Grensesnitt for å stille inn knappen for å bytte mellom skjermer
Hello World-programmet er klart, nå kan du kompilere og kjøre det. På kompileringsstadiet kan det oppstå feil ved feil spesifiserte variabler eller adresser. Enhver feil anses som dødelig; programmet vil bare bli kompilert hvis det ikke er noen feil.
Miljøet gir muligheten til å simulere en terminal slik at du kan feilsøke programmet på datamaskinen din lokalt. Det er to typer simulering:
- Online simulering — alle eksterne datakilder spesifisert i programmet vil bli brukt. Disse kan være USOer eller enheter koblet til via serielle grensesnitt eller Modbus TCP.
- Frakoblet simulering — simulering uten bruk av eksterne enheter.
Selv om vi ikke har eksterne data, bruker vi offline simulering, etter å ha kompilert programmet tidligere. Det endelige programmet vil ligge i prosjektmappen, med navn Prosjektnavn_Programnavn.px3
Programmet som kjører i simuleringen kan styres med musepekeren på samme måte som det ville vært på berøringsskjermen til en WebOP-terminal. Vi ser at alt fungerer etter hensikten. Flott.
For å laste ned programmet til en fysisk terminal, klikker du bare på Last ned-knappen. Men siden jeg ikke konfigurerte tilkoblingen av terminalen til utviklingsmiljøet, kan du ganske enkelt overføre filen ved hjelp av en USB-flash-stasjon eller MicroSD-minnekort.
Programgrensesnittet er intuitivt, jeg vil ikke gå gjennom hver grafisk blokk. Å lage bakgrunner, former og tekst vil være tydelig for alle som har brukt programmer som ligner på Word. For å lage et grafisk grensesnitt kreves ingen programmeringskunnskaper; alle elementer legges til ved å dra musen over i skjemaet.
Arbeid med hukommelse
Nå som vi vet hvordan vi lager grafiske elementer, la oss lære hvordan vi jobber med dynamisk innhold og et skriptspråk. La oss lage et stolpediagram som viser data fra en variabel U $ 100. I diagraminnstillingene velger du datatypen: 16-bits heltall, og området med diagramverdier: fra 0 til 10.
Programmet støtter skriving av skript på tre språk: VBScript, JavaScript og sitt eget språk. Jeg vil bruke det tredje alternativet fordi det er eksempler på det i dokumentasjonen og automatisk syntakshjelp rett i editoren.
La oss legge til en ny makro:
La oss skrive en enkel kode for trinnvis endring av data i en variabel som kan spores på et diagram. Vi vil legge til 10 til variabelen, og tilbakestille den til null når den er større enn 100.
$U100=$U100+10
IF $U100>100
$U100=0
ENDIF
For å kjøre skriptet i en loop, sett det i General Setup-innstillingene som Main Macro, med et utførelsesintervall på 250ms.
La oss kompilere og kjøre programmet i simulatoren:
På dette stadiet har vi lært å manipulere data i minnet og vise dem visuelt. Dette er allerede nok til å lage et enkelt overvåkingssystem, motta data fra eksterne enheter (sensorer, kontrollere) og registrere dem i minnet. Ulike datavisningsblokker er tilgjengelige i HMI Designer: i form av sirkulære skiver med piler, ulike diagrammer og grafer. Ved å bruke JavaScript-skript kan du laste ned data fra eksterne kilder via HTTP.
Har kontrollpanel
Ved å bruke de tilegnete ferdighetene vil vi lage et tegneseriegrensesnitt for Habr-administrasjonskonsollen.
Fjernkontrollen vår skal kunne:
- Bytt brukerprofil
- Lagre karma og vurderingsdata
- Endre karma- og vurderingsverdier ved å bruke glidebrytere
- Når du klikker på «forbud»-knappen, skal profilen merkes som utestengt, avataren skal endres til overkrysset
Vi vil vise hver profil på en egen side, så vi lager en side for hver profil. Vi vil lagre karma og vurdering i lokale variabler i minnet, som vil bli initialisert ved hjelp av Setup Macro når programmet starter.
Justering av karma og vurdering
For å justere karma bruker vi glidebryteren (Slide Switch). Vi spesifiserer variabelen initialisert i Setup Macro som opptaksadresse. La oss begrense utvalget av glidebryterverdier fra 0 til 1500. Nå, når glidebryteren beveger seg, vil nye data bli skrevet til minnet. I dette tilfellet vil starttilstanden til glidebryteren tilsvare verdiene til variabelen i minnet.
For å vise de numeriske verdiene for karma og vurdering, bruker vi det numeriske visningselementet. Prinsippet for driften ligner på diagrammet fra eksempelet "Hello World"-programmet; vi angir ganske enkelt adressen til variabelen i Monitor Address.
Forbud-knapp
"Ban"-knappen implementeres ved hjelp av Toggle Switch-elementet. Prinsippet for datalagring ligner på eksemplene ovenfor. I innstillingene kan du velge forskjellig tekst, farge eller bilde, avhengig av tilstanden til knappen.
Når knappen trykkes, skal avataren krysses over med rødt. Dette er enkelt å implementere ved å bruke Picture Display-blokken. Den lar deg spesifisere flere bilder assosiert med tilstanden til vippebryteren. For å gjøre dette får blokken samme adresse som blokken med knappen og antall stater. Bildet med navneskilt under avataren er satt opp på lignende måte.
Konklusjon
Totalt sett likte jeg produktet. Tidligere hadde jeg erfaring med å bruke et Android-nettbrett til lignende oppgaver, men å utvikle et grensesnitt for det er mye vanskeligere, og nettleser-APIer tillater ikke full tilgang til periferiutstyret. Én WebOP-terminal kan erstatte en kombinasjon av et Android-nettbrett, datamaskin og kontroller.
HMI Designer er, til tross for sin arkaiske design, ganske avansert. Uten spesielle programmeringskunnskaper kan du raskt skissere et fungerende grensesnitt. Artikkelen diskuterer ikke alle grafiske blokker, som det er mange av: animerte rør, sylindre, grafer, vippebrytere. Den støtter mange populære industrielle kontrollere ut av esken og inneholder databasekoblinger.
referanser
WebAccess/HMI Designer og Runtime utviklingsmiljø kan lastes ned
→
Kilde: www.habr.com