Een SCADA-monitoringdemo bouwen met FUXA
Laatst bijgewerkt:
In deze handleiding bouw je met gesimuleerde tankniveaus een klein SCADA-monitoringscherm. Mosquitto ontvangt MQTT-berichten en FUXA toont de waarden en hun verloop. Daarna stel je een alarm voor een laag niveau in.
Dit is uitsluitend een softwaredemo. Er wordt geen PLC aangesloten, geen pomp bediend en geen besturing van fysieke apparatuur gevalideerd. Voltooi eerst de FUXA-installatiehandleiding in deze categorie.
Benodigdheden
- Een reComputer RK3576 waarop FUXA draait in de container
fuxa-rk3576uit de installatiehandleiding. - SSH-toegang tot de RK3576 en een browser op hetzelfde vertrouwde netwerk.
- Mosquitto Broker en
mosquitto_pub/mosquitto_subop de RK3576. Met de onderstaande opdrachten installeer je deze zo nodig.
De installatiehandleiding gebruikt de netwerkmodus host. Controleer of de container draait en deze modus gebruikt, zodat FUXA de Broker op 127.0.0.1:1883 kan bereiken:
sudo docker ps --filter name=fuxa-rk3576
sudo docker inspect -f '{{.HostConfig.NetworkMode}}' fuxa-rk3576Als de tweede opdracht niet host toont, pas dan eerst het containernetwerk en het Broker-adres aan je configuratie aan.
Stap 1: De lokale MQTT Broker voorbereiden
Voer op de RK3576 het volgende uit:
sudo apt update
sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable --now mosquitto
systemctl is-active mosquitto
sudo ss -ltnp | grep ':1883'systemctl is-active hoort active te tonen. Beperk de Broker voor deze lokale demo tot de loopback-interface en stel een MQTT-service zonder authenticatie niet bloot aan internet. Gebruik bij een bestaande Broker met authenticatie de bijbehorende verbindingsinstellingen.
Stap 2: Voorbeeldgegevens publiceren en controleren
Eén MQTT-topic bevat drie tankniveaus. Publiceer een bewaard JSON-bericht zodat FUXA het ook kan ontvangen wanneer het later abonneert:
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m '{"tank1":7500,"tank2":1500,"tank3":3000}'
mosquitto_sub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -C 1 -vDe abonnee hoort direct het topic en de JSON-gegevens te tonen. Houd de namen tank1, tank2 en tank3 in de volgende stappen exact gelijk.
Stap 3: FUXA verbinden met MQTT
Open http://<RK3576_IP>:1881/editor. Klik linksboven op het tandwiel, open Connections en voeg één MQTT-verbinding toe:
| Veld | Waarde |
|---|---|
| Name | RK3576 MQTT |
| Type | MQTTclient |
| Address (mqtt://[server]:[port]) | mqtt://127.0.0.1:1883 |
| Enable | Aan |
Laat Polling leeg. Klik op OK en controleer of de verbindingsindicator groen is. Eén verbinding is voldoende: de drie niveaus zijn velden binnen hetzelfde topic.
Klik op het koppelingspictogram van de verbinding om de pagina met tags en abonnementen te openen. Vul bij Browser Topics on broker rk3576/fuxa/demo/tanks in en klik op zoeken. Selecteer het topic en vul dezelfde route in bij Topic path als dit veld leeg is. Kies json in plaats van raw en klik op Subscribe. Controleer of de numerieke velden tank1, tank2 en tank3 verschijnen.
Stap 4: De monitoringweergave maken
Open in de editor MainView onder Views en voeg een kop toe, bijvoorbeeld RK3576 Tank Monitor.
- Sleep een numerieke weergave (pictogram ## onder Controls) naar het canvas. Koppel die aan de numerieke tag
tank1, niet aan het volledige JSON-topic. Voeg er nog twee toe voortank2entank3. Ze horen7500,1500en3000te tonen. - Sleep Chart (het lijngrafiekpictogram onder Controls) naar het canvas. Open Chart settings → Chart to show → New Chart. Klik in de grafiekinstellingen op + en maak
Tank Levels. - Kies Add Line in het ⋮-menu van de nieuwe grafiek en koppel de lijn aan
tank1. Voeg zo nodig lijnen voortank2entank3toe. SelecteerTank Levelsbij Chart to show. - Sla op met het diskettepictogram en gebruik afspelen/voorbeeld om de drie waarden en de grafiek te controleren.
Gebruik de exacte tagnamen uit de FUXA-kiezer. Het pad kan ook de verbinding en het MQTT-topic bevatten.
Stap 5: Veranderende waarden bekijken
Voer deze simulator op de RK3576 in een tweede terminal op de voorgrond uit. Stop met Ctrl+C:
tank1=7500
tank2=1500
tank3=3000
while true; do
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m "{\"tank1\":$tank1,\"tank2\":$tank2,\"tank3\":$tank3}"
tank1=$((tank1 - 100))
tank2=$((tank2 + 60))
tank3=$((tank3 + 40))
if [ "$tank1" -le 0 ]; then
tank1=7500
tank2=1500
tank3=3000
fi
sleep 2
doneControleer of de waarden veranderen en de grafiek nieuwe punten krijgt. Stop de simulator vóór de alarmtest, anders overschrijft het volgende bericht de testwaarde.
Stap 6: Een alarm voor een laag niveau toevoegen en testen
Klik in de editor linksboven op het tandwiel, open Alarms en voeg een alarm toe:
| Veld | Waarde |
|---|---|
| Name | Tank 1 low level |
| Tag | Numerieke tag tank1 onder RK3576 MQTT |
| Low → Enabled | Aan |
| Low → Check interval (seconds) | 1 |
| Low → Min / Max | 0 / 1000 |
| Low → Time in Min-Max range (seconds) | 1 |
| Low → Text | Tank 1 low level |
Klik op OK en sla het project op. Het controle-interval en de tijd binnen het bereik zijn in seconden: vul 1 in, niet 1000. Voor dit voorbeeld zijn High en High High niet nodig.
Publiceer een lage waarde nadat je de simulator hebt gestopt:
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m '{"tank1":800,"tank2":1500,"tank3":3000}'Open http://<RK3576_IP>:1881/. Controleer of het eerste getal 800 is, de bel rechtsboven een rode badge heeft en Alarms Tank 1 low level met prioriteit Low en status Active toont. Klik op de bel als het paneel gesloten is.
Herstel na de test een normale waarde:
mosquitto_pub -h 127.0.0.1 -p 1883 \
-t rk3576/fuxa/demo/tanks -r \
-m '{"tank1":7500,"tank2":1500,"tank3":3000}'Resultaat en beperkingen
De demo is voltooid als het MQTT-abonnement werkt, de waarden en grafiek veranderen en het alarm verschijnt wanneer tank1 800 is. Het publicatieprogramma is een testlus op de voorgrond, geen productiegegevensbron. Een bewaard MQTT-bericht laat de laatste waarde zien nadat de lus stopt; een stilstaand getal bewijst niet dat er nieuwe gegevens binnenkomen.
Gebruik voor productie een gegevensbron met authenticatie, beperk de toegang tot FUXA en de Broker en controleer alarmen en besturingsacties op de echte installatie. Sluit dit voorbeeld niet rechtstreeks aan op veiligheidskritieke machines.