Video: Habr-beheerconsole. Hiermee kunt u karma reguleren, gebruikers beoordelen en verbannen.
TL; DR: In dit artikel zal ik proberen een komisch Habr-controlepaneel te maken met behulp van de industriële interface-ontwikkelomgeving Webaccess/HMI Designer en de WebOP-terminal.
Mens-machine-interface (HMI) is een reeks systemen voor menselijke interactie met bestuurde machines. Deze term wordt doorgaans toegepast op industriële systemen met een operator en een bedieningspaneel.
WebOP — een autonome industriële terminal voor het creëren van mens-machine-interfaces. Wordt gebruikt voor het maken van productiecontrolepanelen, monitoringsystemen, controlekamers, smart home-controllers, enz. Ondersteunt directe aansluiting op industriële apparatuur en kan werken als onderdeel van een SCADA-systeem.
WebOP-terminal - hardware
De WebOP-terminal is een computer met laag vermogen, gebaseerd op een ARM-processor, in één behuizing met een monitor en touchscreen, ontworpen om een programma uit te voeren met een grafische interface gemaakt in HMI Designer. Afhankelijk van het model hebben de terminals verschillende industriële interfaces aan boord: RS-232/422/485, CAN-bus voor aansluiting op autosystemen, USB Host-poort voor het aansluiten van extra randapparatuur, USB Client-poort voor aansluiting van de terminal op een computer, audio ingang en audio-uitgang, MicroSD-kaartlezer voor niet-vluchtig geheugen en overdracht van instellingen.
De apparaten zijn gepositioneerd als budgetvervanger voor alles-in-één pc's, voor taken waarvoor geen krachtige processors en de middelen van een volwaardige desktopcomputer nodig zijn. WebOP kan werken als een zelfstandige terminal voor besturing en gegevensinvoer/-uitvoer, gecombineerd met andere WebOP's, of als onderdeel van een SCADA-systeem.
De WebOP-terminal kan rechtstreeks verbinding maken met industriële apparaten
Passieve koeling en IP66-bescherming
Vanwege de lage warmteafvoer zijn sommige WebOP-modellen volledig ontworpen zonder actieve luchtkoeling. Hierdoor kunnen de apparaten worden gemonteerd in gebieden die gevoelig zijn voor geluidsniveaus en wordt de hoeveelheid stof die in de behuizing terechtkomt verminderd.
Het frontpaneel is gemaakt zonder kieren of verbindingen, heeft een beschermingsgraad van IP66 en laat direct water onder druk binnendringen.
Achterpaneel van de WOP-3100T-terminal
Niet-vluchtig geheugen
Om gegevensverlies te voorkomen beschikt WebOP over 128Kb niet-vluchtig geheugen, waarmee op dezelfde manier kan worden gewerkt als met RAM. Het kan meterstanden en andere kritische gegevens opslaan. Bij een stroomstoring worden de gegevens opgeslagen en na een herstart hersteld.
Updaten op afstand
Het programma dat op de terminal draait, kan op afstand worden bijgewerkt via een Ethernet-netwerk of via seriële RS-232/485-interfaces. Dit vereenvoudigt het onderhoud, omdat het niet meer nodig is om naar alle terminals te gaan om de software bij te werken.
WebOP-modellen
WebAccess/HMI Designer-ontwikkelomgeving
Standaard is de WebOP-terminal slechts een energiezuinige ARM-computer waarop u alle software kunt draaien, maar het hele punt van deze oplossing is de bedrijfseigen WebAcess/HMI-ontwikkelingsomgeving voor industriële interfaces. Het systeem bestaat uit twee componenten:
- HMI-ontwerper — omgeving voor het ontwikkelen van interfaces en programmeerlogica. Draait onder Windows op de computer van de programmeur. Het uiteindelijke programma wordt in één bestand gecompileerd en naar de terminal overgebracht voor uitvoering tijdens runtime. Het programma is beschikbaar in het Russisch.
- HMI-runtime — runtime voor het uitvoeren van het gecompileerde programma op de uiteindelijke terminal. Het werkt niet alleen op WebOP-terminals, maar ook op Advantech UNO, MIC en gewone desktopcomputers. Er zijn runtimeversies voor Linux, Windows, Windows CE.
Hallo wereld - een project maken
Laten we beginnen met het maken van een testinterface voor ons Habr-controlepaneel. Ik zal het programma op de terminal uitvoeren
Een nieuw project creëren en een architectuur kiezen
Het selecteren van het communicatieprotocol waarmee het gecompileerde programma in WebOP wordt geladen. Bij deze stap kunt u een seriële interface selecteren of het IP-adres van de terminal opgeven.
Interface voor het maken van projecten. Aan de linkerkant bevindt zich een boomdiagram van de componenten van het toekomstige programma. Voorlopig zijn we alleen geïnteresseerd in het item Schermen, dit zijn direct de schermen met grafische interface-elementen die op de terminal worden weergegeven.
Laten we eerst twee schermen maken met de tekst "Hallo wereld" en de mogelijkheid om hiertussen te schakelen met behulp van knoppen. Om dit te doen, zullen we een nieuw scherm toevoegen, Scherm #2, en op elk scherm zullen we een tekstelement en twee knoppen toevoegen om tussen schermen te schakelen (Schermknoppen). Laten we elke knop configureren om naar het volgende scherm te gaan.
Interface voor het instellen van de knop om tussen schermen te schakelen
Het Hello World-programma is klaar, nu kunt u het compileren en uitvoeren. In de compilatiefase kunnen er fouten optreden als er onjuiste variabelen of adressen zijn opgegeven. Elke fout wordt als fataal beschouwd; het programma wordt alleen gecompileerd als er geen fouten zijn.
De omgeving biedt de mogelijkheid om een terminal te simuleren, zodat u lokaal fouten in het programma op uw computer kunt opsporen. Er zijn twee soorten simulatie:
- Online simulatie — alle in het programma gespecificeerde externe gegevensbronnen zullen worden gebruikt. Dit kunnen USO's zijn of apparaten die zijn aangesloten via seriële interfaces of Modbus TCP.
- Offline simulatie — simulatie zonder het gebruik van externe apparaten.
Hoewel we geen externe gegevens hebben, gebruiken we offline simulatie, nadat we het programma eerder hebben samengesteld. Het definitieve programma bevindt zich in de projectmap, met de naam Projectnaam_Programmanaam.px3
Het programma dat in de simulatie draait, kan met de muiscursor op dezelfde manier worden bestuurd als op het touchscreen van een WebOP-terminal. We zien dat alles werkt zoals bedoeld. Geweldig.
Om het programma naar een fysieke terminal te downloaden, klikt u gewoon op de knop Downloaden. Maar aangezien ik de verbinding van de terminal met de ontwikkelomgeving niet heb geconfigureerd, kun je het bestand eenvoudig overbrengen met behulp van een USB-flashstation of MicroSD-geheugenkaart.
De programma-interface is intuïtief, ik zal niet elk grafisch blok doornemen. Het maken van achtergronden, vormen en tekst zal duidelijk zijn voor iedereen die programma's heeft gebruikt die vergelijkbaar zijn met Word. Voor het maken van een grafische interface zijn geen programmeervaardigheden vereist; alle elementen worden toegevoegd door de muis naar het formulier te slepen.
Werken met geheugen
Nu we weten hoe we grafische elementen moeten maken, gaan we leren werken met dynamische inhoud en een scripttaal. Laten we een staafdiagram maken waarin gegevens van een variabele worden weergegeven U $ 100. Selecteer in de diagraminstellingen het gegevenstype: 16-bits geheel getal en het bereik van diagramwaarden: van 0 tot 10.
Het programma ondersteunt het schrijven van scripts in drie talen: VBScript, JavaScript en zijn eigen taal. Ik zal de derde optie gebruiken omdat er voorbeelden van zijn in de documentatie en automatische syntaxishulp rechtstreeks in de editor.
Laten we een nieuwe macro toevoegen:
Laten we wat eenvoudige code schrijven om stapsgewijs gegevens te wijzigen in een variabele die in een diagram kan worden gevolgd. We voegen 10 toe aan de variabele en stellen deze terug op nul als deze groter is dan 100.
$U100=$U100+10
IF $U100>100
$U100=0
ENDIF
Om het script in een lus uit te voeren, stelt u het in de Algemene instellingen in als Hoofdmacro, met een uitvoeringsinterval van 250 ms.
Laten we het programma compileren en uitvoeren in de simulator:
In dit stadium hebben we geleerd gegevens in het geheugen te manipuleren en visueel weer te geven. Dit is al voldoende om een eenvoudig monitoringsysteem te creëren, waarbij gegevens van externe apparaten (sensoren, controllers) worden ontvangen en in het geheugen worden vastgelegd. In HMI Designer zijn verschillende gegevensweergaveblokken beschikbaar: in de vorm van ronde wijzerplaten met pijlen, verschillende diagrammen en grafieken. Met JavaScript-scripts kunt u via HTTP gegevens uit externe bronnen downloaden.
Habr-bedieningspaneel
Met behulp van de verworven vaardigheden zullen we een komische interface maken voor de Habr-beheerconsole.
Onze afstandsbediening moet in staat zijn om:
- Wissel tussen gebruikersprofielen
- Bewaar karma- en beoordelingsgegevens
- Verander karma en beoordelingswaarden met behulp van schuifregelaars
- Wanneer u op de knop “ban” klikt, moet het profiel als verboden worden gemarkeerd en moet de avatar veranderen in doorgestreept
We zullen elk profiel op een aparte pagina weergeven, dus we zullen voor elk profiel een pagina maken. We slaan karma en beoordeling op in lokale variabelen in het geheugen, die zullen worden geïnitialiseerd met behulp van Setup Macro wanneer het programma start.
Karma en beoordeling aanpassen
Om karma aan te passen zullen we de schuifregelaar (Slide Switch) gebruiken. We specificeren de variabele die is geïnitialiseerd in Setup Macro als het opnameadres. Laten we het bereik van de schuifregelaarwaarden beperken van 0 tot 1500. Wanneer de schuifregelaar beweegt, worden er nieuwe gegevens naar het geheugen geschreven. In dit geval komt de beginstatus van de schuifregelaar overeen met de waarden van de variabele in het geheugen.
Om de numerieke waarden van karma en beoordeling weer te geven, gebruiken we het numerieke weergave-element. Het principe van de werking is vergelijkbaar met het diagram uit het voorbeeldprogramma “Hello World”; we geven eenvoudigweg het adres van de variabele aan in Monitor Address.
Ban-knop
De “ban”-knop wordt geïmplementeerd met behulp van het tuimelschakelaarelement. Het principe van gegevensopslag is vergelijkbaar met de bovenstaande voorbeelden. In de instellingen kun je verschillende tekst, kleur of afbeelding selecteren, afhankelijk van de status van de knop.
Wanneer de knop wordt ingedrukt, moet de avatar rood worden doorgestreept. Dit is eenvoudig te implementeren met behulp van het Picture Display-blok. Hiermee kunt u meerdere afbeeldingen opgeven die zijn gekoppeld aan de status van de tuimelschakelaarknop. Hiervoor krijgt het blok hetzelfde adres als het blok met de knop en het aantal statussen. De afbeelding met naamplaatjes onder de avatar is op een vergelijkbare manier opgebouwd.
Conclusie
Over het algemeen vond ik het product leuk. Eerder had ik ervaring met het gebruik van een Android-tablet voor soortgelijke taken, maar het ontwikkelen van een interface daarvoor is veel moeilijker, en browser-API's bieden geen volledige toegang tot de randapparatuur. Eén WebOP-terminal kan een combinatie van een Android-tablet, computer en controller vervangen.
HMI Designer is, ondanks zijn archaïsche ontwerp, behoorlijk geavanceerd. Zonder speciale programmeervaardigheden kunt u snel een werkende interface schetsen. Het artikel bespreekt niet alle grafische blokken, waarvan er veel zijn: geanimeerde pijpen, cilinders, grafieken, tuimelschakelaars. Het ondersteunt standaard veel populaire industriële controllers en bevat databaseconnectoren.
referenties
WebAccess/HMI Designer en Runtime ontwikkelomgeving kunnen worden gedownload
→
Bron: www.habr.com