TIA Bedienerhinweise über OPC auf PC anzeigen

Canopus231171

Level-2
Beiträge
90
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe nun die nächste Herausforderung, das Produktionsdaten und Bedienerhinweise auf einem Monitor der an einem PC angeschlossen ist angezeigt werden sollen.

Der PC kommuniziert mit einem OPC UA und FTP mit der Steuerung.
Gibt es eine Software oder andere Möglichkeiten um das umzusetzen.
Der Rechner hat kein VB. Kenne ich mich eh nicht mit aus.

Ich hatte erst die Idee das mit dem Unify über den Webbrowser zu machen.
Leider ist die Steuerung für diese Idee nicht die Richtige.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also am einfachsten kann man (meines Erachtens) mit bspw. UaExpert Daten, die per OPC UA verfügbar sind am PC anzeigen. Einfach auf die PLC gehen, entsprechende Datenpunkte in die View ziehen und dann kann man sie sehen.
 
Beispiel für Python mit FastAPI, Jinja2 Templates und asyncua (freeopcua).
Python:
import asyncio

from contextlib import asynccontextmanager

from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from jinja2 import Template
from asyncua import Client


@asynccontextmanager
async def opc(app: FastAPI):
    print("Starting OPC UA client")
    task = asyncio.create_task(opc_client("opc.tcp://192.168.0.20:4840"))
    yield
    print("Stopping OPC UA client")
    task.cancel()
    while not task.done():
        await asyncio.sleep(0.1)   

global_data = {}
app = FastAPI(lifespan=opc)
tpl = Template("""
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>OPC UA Data</title>
    <style>
        body { font-family: Arial, sans-serif; }
        table { width: 100%; border-collapse: collapse; }
        th, td { padding: 8px; text-align: left; border-bottom: 1px solid #ddd; }
</style>
</head>
<body>
    <h1>OPC UA Data</h1>
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Value</th>
            </tr>
        </thead>
        <tbody>
            {% for name, value in data.items() %}
            <tr>
                <td>{{ name }}</td>
                <td>{{ value }}</td>
            </tr>
            {% endfor %}
        </tbody>
              
              
    </table>
</body>
</html>
""")


async def opc_client(url: str):
    client = Client(url)
    client.session_timeout = 30000

    async with client:
        print("Connected to OPC UA server")
        await worker(client)


async def worker(client: Client):
    while True:
        # NodeId von UaExpert (kostenlos) kopiert.
        buffer9 = client.get_node('ns=3;s="ProductionDataBuffer"."buffer"[9]')
        for node in await buffer9.get_variables():
            name = (await node.read_display_name()).Text
            value = await node.read_value()
            # print(f"{name} => {value}")
            global_data[name] = value
        await asyncio.sleep(5)


@app.get("/")
async def root():
    return HTMLResponse(tpl.render(data=global_data), status_code=200)

Den HTML-Code hab ich von GitHub-Copilot erstellen lassen.
Im browser sieht das dann so aus:
Screenshot 2025-07-11 at 12-14-03 OPC UA Data.png
 
Lässt sich kostenlos und mit etwas Einarbeitung mit Node RED umsetzen
Ich versuche nun Node-red zu installieren, selbst Chat-GPT hat eine super Anweisung. Aber irgendwie gibt es Versionsprobleme.
Node-js ist die letzte Version und NPM wird ja automatisch mit installiert. Daher verstehe ich die Meldung nicht so ganz.
Ich denke irgendjemand sollte ja ebenfalls auf das Problem gestoßen zu sein.

1752349635613.png
 
Was spricht gegen den integrierten Webserver der 1517?
Hey, das mit dem Webserver fand ich eine richtig gute Idee. Hab dann in der Webapplikation ein Bild angelegt und entsprechend Werte eingetragen. Webserver ist natürlich auch aktiv.
Nur leider lässt sich die Geschichte nicht auf die Steuerung übertragen.

🤷‍♂️

Screenshot 2025-07-10 155438.png


Screenshot 2025-07-10 155543.png
Screenshot 2025-07-10 155850.png
 
Ich versuche nun Node-red zu installieren, selbst Chat-GPT hat eine super Anweisung. Aber irgendwie gibt es Versionsprobleme.
Node-js ist die letzte Version und NPM wird ja automatisch mit installiert. Daher verstehe ich die Meldung nicht so ganz.
Ich denke irgendjemand sollte ja ebenfalls auf das Problem gestoßen zu sein.

Anhang anzeigen 89039

Moin,
unsere Quicksolution habe ich damals auf einem alten Thin Client mit IOBroker aufgesetzt. Jetzt haben wir von der EDV einen Ausgemusterten Server mit Proxmox im IOT Vlan bekommen. Was ich sagen will... IOBroker hat IMHO alles fertig an Board, installiert man noch Influx und Grafana hat man im nu eine Visu zusammen geschoben. Das alle läuft seit 4 Jahren ohne ausfall. Mit einem AI Bot lässt sich dann Fix ein Python Flask Script bauen oder auch Module für Node Red. Die Möglichkeiten "explodieren" dann schon fast... ich mache dann einiges mit Openrouter und VS Code + Roo. Die Anzeige war ne 2min Sache :D. Die Scripte für die Webseiten laufen bei uns dann in einem Docker Container auf unterschiedlichen Ports.
 

Anhänge

  • 1752414899715.png
    1752414899715.png
    73,1 KB · Aufrufe: 4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey, das mit dem Webserver fand ich eine richtig gute Idee. Hab dann in der Webapplikation ein Bild angelegt und entsprechend Werte eingetragen. Webserver ist natürlich auch aktiv.
Nur leider lässt sich die Geschichte nicht auf die Steuerung übertragen.

🤷‍♂️

Anhang anzeigen 89046


Anhang anzeigen 89047
Anhang anzeigen 89048
Ist auf der Memory Karte genug Speicherplatz, sodass die WebApp draufpassen sollte?
 
SpeicherartBeispielBedeutung
MerkerM10.0Bit 0 im Merkerbyte 10
EingangI0.0Bit 0 am Eingang 0
AusgangQ0.0Bit 0 am Ausgang 0
DB (Byte)DB1,0Byte 0 aus Datenbaustein 1
DB (String)DB1,10:STRING[20]String ab Byte 10, Länge 20

Sagt die AI dazu :D...
 
Zurück
Oben