WinCC Unified WinCC Unified Kamera

Zuviel Werbung?
-> Hier kostenlos registrieren
Sieht im Prinzip soweit erstmal gut aus...
Was sagt der TraceViewer?
Hast du zufällig vergessen "IntervallCyclicRefresh" zu deklarieren?
Mach mal in die Callback-Funktion des Intervalls, also bei FireComand nen Trace rein & schau nach ob der auch sekündlich ausgelöst wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Pack mal in dein Script an alle relevanten Stellen einen sinnvollen Trace, dann siehst du zumindest ob der Intervall korrekt ausgelöst wird.
In dem Screenshot ist nur ein Trace enthalten, der Rest ist "Hintergrundrauschen" von der Runtime.
Wenn du dir nen Filter auf "ScriptHmiRuntime" setzt, bekommst du nur die Trace-Einträge.
Und einen Trace mit "Hello World" sehe ich in deinem Script nirgends...
 
Screenshot 2025-11-25 083327.png
Es sieht auf jedenfall nicht ganz verkehrt aus vom Trace her.
Allerdings geschieht nicht an dem Kamera Bild
 

Anhänge

  • Screenshot 2025-11-24 151421.png
    Screenshot 2025-11-24 151421.png
    118,4 KB · Aufrufe: 3
Hmmm....
Mit dem Intervall und dem FireCommand() scheint also soweit alles ok zu sein.
Funktioniert die URL an sich?
Wird beim Aufruf des Kamera-Bilds zumindest initial ein Bild angezeigt?

Und wenn ich dir etwas empfehlen darf:
Es ist recht nützlich bei Traces eher mehr ins Detail zu gehen.
Du weißt JETZT vllt noch was der Trace-Eintrag an der jeweiligen Stelle zu bedeuten hat, aber spätestens in nem Jahr oder wenn ein Kollege ran muss werden diese Quick&Dirty Einträge zu Kopfschmerzen führen.
Auch wenn das erst einmal nach komplettem Overkill aussieht, spart es bei der Fehlersuche am Ende Zeit.

Javascript:
export function _2220_Application_ThirdNav_Home_0_Kamera1_OnLoaded(item) {
    try {
        let webControl = Screen.Items.Item("Web control"); //Das .Item ist aufgrund der Standardmethode von .Items eigentlich nicht zwingend notwendig
        let updateRate = 1000;

        IntervallCyclicRefresh = HMIRuntime.Timers.SetInterval(() => {
            webControl.FireCommand(1, true);
            HMIRuntime.Trace("\nAktualisierung des WebControl angestoßen.\n" +
                "TimerID: " + IntervallCyclicRefresh + "\n" +
                "Name des Controls: " + webControl.Name + "\n" +
                "URL: " + webControl.Url + "\n" +
                "CurrentQuality: " + webControl.CurrentQuality + "\n" +
                "Bild: " + Screen.Name + "\n" +
                "Bildpfad: " + Screen.Parent.Path,
                HMIRuntime.Trace.Enums.hmiSeverity.Info);
        }, updateRate);
        HMIRuntime.Trace("\nIntervall für die zyklische Aktualisierung eines WebControls erstellt.\n" +
            "TimerID: " + IntervallCyclicRefresh + "\n" +
            "Aktualisierungsrate: " + updateRate + "ms\n" +
            "Name des Controls: " + webControl.Name + "\n" +
            "Bild: " + Screen.Name + "\n" +
            "Bildpfad: " + Screen.Parent.Path,
            HMIRuntime.Trace.Enums.hmiSeverity.Info);
    } catch (ex) {
        HMIRuntime.Trace("\nAllgemeiner Fehler im Loaded-Ereignis.\n" +
            "Bild: " + Screen.Name + "\n" +
            "Bildpfad: " + Screen.Parent.Path + "\n" +
            "Fehler: " + ex, HMIRuntime.Trace.Enums.hmiSeverity.Error);
    }
}

Und ein CodeFormater würde auch nicht schaden.
Mir leistet Notepad++ mit dem JSTools-Plugin für so kleinkram ganz gute Dienste.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da das meine erste Berührung mit den JS Sachen ist tu ich mir noch etwas schwer. Aber danke schonmal.

Also bei Laden des Bilder sehe ich ein kamerabild... Wenn ich den Button "Refresh" Drücke läd auch das Bild neu und der Zeitstempel ändert sich.
Das heisst prinzipiell funktioniert das Ganz händisch schon. Nur leider halt nicht automatisiert.

Ich habe den Code von oben mal bei mir reingesetzt und erhalte lauter Fehlermeldungen vom Compiler....
1764243736817.png

Irgendwie meldet er immer,dass was nicht passt, wenn nach dem Trace noch ein + kommt

So geht es....
1764243883757.png
 
Irgendwie meldet er immer,dass was nicht passt, wenn nach dem Trace noch ein + kommt

So geht es....
1764243883757.png
Wtf.....O_o
Der mit + verkettete String ist ja eigentlich nur dazu da die Trace-Projektierung einigermaßen so anzulegen wie sie am Ende ausgegeben wird (die "\n" sind Zeilenumbrüche).
Könntest du prinzipiell auch ohne die + alles in eine Zeile packen.
Wenn ich das richtig sehe zählt der "HMIRuntime.Trace" an sich als Fehler an.
Mit welcher TIA Version arbeitest du?
Ich meine Enumerationen gab's erst ab V18.
Mein V20 mault bei dem Code nicht...
 
Ich arbeite mit V18.
Aber mir scheint es auch so dass da irgendwas fehlt.
Wie müsste ich das denn schreiben, dass es funktioniert und du mir vllt weiterhelfen könntest 👼
Habe es versucht, aber ich kriege keine syntax hin die funktioniert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir setzen als Kamera eine Sick SEC110 (Firmware mindestens Version 2.1.0) ein. Diese kann ich über das Browser Control im MTP1000 Basic aufrufen.
URL: http://<Kamera-IP>/liveView
 
Ich habs eben bei mit in V18 Update 5 eingetippt.
1764304592530.png
Anscheinend besitzt Trace() in V18 noch keinen Severity-Parameter.
War mir tatsächlich neu, dass das erst mit V19 dazu gekommen sein muss...
Gewöhn dir am besten an bei so Sachen einmal kurz in die F1-Hilfe zu schauen.
Scriptfunktionen musst du im Normalfall über die Suchfunktion in der Hilfe manuell raussuchen, den Eintrag per Kontext aufzurufen funktioniert im Normalfall nicht.

Also einfach den Parameter entfernen, dann gehts:
Javascript:
export function Bild_1_OnLoaded(item) {
    try {
        let webControl = Screen.Items.Item("Web control"); //Das .Item ist aufgrund der Standardmethode von .Items eigentlich nicht zwingend notwendig
        let updateRate = 1000;

        IntervallCyclicRefresh = HMIRuntime.Timers.SetInterval(() => {
            webControl.FireCommand(1, true);
            HMIRuntime.Trace("\nAktualisierung des WebControl angestoßen.\n" +
                "TimerID: " + IntervallCyclicRefresh + "\n" +
                "Name des Controls: " + webControl.Name + "\n" +
                "URL: " + webControl.Url + "\n" +
                "CurrentQuality: " + webControl.CurrentQuality + "\n" +
                "Bild: " + Screen.Name + "\n" +
                "Bildpfad: " + Screen.Parent.Path);
        }, updateRate);
        HMIRuntime.Trace("\nIntervall für die zyklische Aktualisierung eines WebControls erstellt.\n" +
            "TimerID: " + IntervallCyclicRefresh + "\n" +
            "Aktualisierungsrate: " + updateRate + "ms\n" +
            "Name des Controls: " + webControl.Name + "\n" +
            "Bild: " + Screen.Name + "\n" +
            "Bildpfad: " + Screen.Parent.Path);
    } catch (ex) {
        HMIRuntime.Trace("\nAllgemeiner Fehler im Loaded-Ereignis.\n" +
            "Bild: " + Screen.Name + "\n" +
            "Bildpfad: " + Screen.Parent.Path + "\n" +
            "Fehler: " + ex);
    }
}
 
Wir setzen als Kamera eine Sick SEC110 (Firmware mindestens Version 2.1.0) ein. Diese kann ich über das Browser Control im MTP1000 Basic aufrufen.
URL: http://<Kamera-IP>/liveView
Sieht ganz putzig aus^^
Gibts diese Halterungen der Kamera auch fertig von SICK? Hab auf der SICK-Website keine Zubehör-Liste gefunden.
Läuft das komplett ohne hartcodierte Benutzerdaten im Zugriffs-Link?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So habe mal den Code reingehaun. Das funktioniert auch soweit...
1764319856992.pngDas hier kommt im TraceViewer.

Hier ist der Code den ich verwendet habe

1764319857127.png

Vollständigkeitshalber noch der Code für das Abgebaut Ereigniss

1764319857134.png

Aber für mein Verständnis sieht der Trace doch eigentlich in Ordnung aus?
 

Anhänge

  • 1764319856997.png
    1764319856997.png
    73,9 KB · Aufrufe: 9
Sieht ganz putzig aus^^
Gibts diese Halterungen der Kamera auch fertig von SICK? Hab auf der SICK-Website keine Zubehör-Liste gefunden.
Läuft das komplett ohne hartcodierte Benutzerdaten im Zugriffs-Link?
Wir setzen folgendes Bracket von Sick ein: BEF-SEC100

Korrekt, ich muss im Link keine Zugriffsdaten angeben.

Für RTSP-Stream gilt das ebenfalls:
rtsp://<Kamera-IP>:554/live/0

1764328028691.png
 
Zurück
Oben