Bilddatei in Visualisierung die im Dateisystem der SPS liegt

sash583

Level-1
Beiträge
32
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es die Möglichkeit eine Bilddatei in eine Visualisierung einzubinden, die im Dateisystem der SPS liegt?
In Codesys muss ja jedes Bild im Imagepool liegen und dort habe ich keinen Zugriff auf das Bild. Kann man da irgendeine Referenz eintragen, die auf das interne Dateisystem der SPS verweist. Ich habe schon gesucht aber bisher nichts gefunden.

Danke!!
 
hmm.. ich bin mir nicht sicher ob ich das richtig verstanden habe aber ich denke du willst deine visu mit auf die PLC laden und dann dort darauf zugreifen. Wenn du von der Codesys Visu sprichst dann stimmt das, die Datei muss im Dateisystem liegen auf dem die Visu läuft. Die Visu in Codesys kannst du ja auch nicht runterladen zur PLC (zumindest in V2). Da läuft die Visu immer auf einem Target das z.B. ein Windowssystem ist.
Bei V3 sieht das Ganze etwas anders aus. Da kannst du bei den meisten Steuerungen eine Webvisu aktivieren dann liegen die Bilddaten auch auf der Steuerung und durch einen browser (egal auf welchem Gerät das nun ist) kannst du die Visu starten. Eine andere Lösung fällt mir nicht ein.

Wenn du die Bildatei nur modifizieren willst auf Byteebene dann kannst du die Datei natürlich auch auf eine V2 Steuerung laden und mit FileOpen FileWrite usw. bearbeiten. Aber einzelne Bytes in einem Bild zu bearbeiten ist denke ich Quatsch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal für die schnelle Antwort.
Ich muss das wohl mal etwas konkreter machen. Also ich habe einen PFC200 von Wago mit Embedded Linux. Per FTP schicke ich aller 5sek ein Bild von einer Überwachungskamera auf die Steuerung, was dann immer wieder überschrieben wird. Dieses Bild möchte ich auf der internen Webvisu darstellen. Wenn ich aber bei E!Cockpit (defacto Codesys V3 oder so) einen ImagePool anlege, kann ich nur Bilder integrieren, zu denen ich vom Programmiersystem aus Zugriff habe. Also kann ich das Bild, was irgendwo im Dateisystem der Steuerung liegt nicht integrieren. Gibt es da irgendeine Möglichkeit einen Platzhalter zu paltzieren, der dann durch das Bild im Dateisystem ersetzt wird, wenn die Steuerung läuft????
 
Kommt drauf an welche Möglichkeiten du in der Webvisu hast, aber mit etwas Javascript lässt sich ein Bytearray deren einzelne Werte du aus deinem SPS-Speicher ausliest, in ein Bild wandeln (Bytes z.B. base64 codieren).
 
Meines Erachtens läuft die Visu auf HTML 5 Basis und aktualisiert sich alle 200ms. Mich wundert bloß, dass man anstatt des Bildes das auf dem Programmiersystem liegt nicht einen Verweis auf das eigene Dateisystem der Steuerung machen kann. Ein Bytearray auslesen scheint mir da schon etwas zu viel Aufwand zu sein. Aber vielleicht ist es der einzige Weg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
es ist so das die Bilder der Webvisu schon auf der Steuerung liegen im /visu Verzeichnis, die werden aus Perfomancegründen aber gecached.
D.h auch wenn du die Datei austauschen würdest, bekommst du immer das original Bild angezeigt.
Ab 3.5SP8 gibt's aber tatsächlich die Möglichkeit über ein Bitmap Property ein Neuladen des ausgetauschten Bildes zu veranlassen.
(also hier eine Änderung an der Bitmapversion -> dein neues Bild wird geladen)

Vor 3.5SP8 gabs nur den üblen Workaround das Caching auszuschalten in:
webvisu.cfg.json
{
"UpdateRate": 200,
"PlcAddress": "0000.9ED4.C1D5",
"UseLocalHost": true,
"Application": "Application",
"StartVisu": "SendTweetVisu",
"NumCachedImages": 0,
"BestFit": true,
"LogLevel": "INFO",
"CommBufferSize": 50000,
"HasKeyboard": false
}
die von CODESYS beim download in den Visu Ordner kopiert wird.
Hat eben den Nachteil das es für alle Bilder ausgeschaltet ist.

Grüße
 

Anhänge

  • BitmapVersion.jpg
    BitmapVersion.jpg
    28,6 KB · Aufrufe: 30
Zuletzt bearbeitet:
Soweit es eine Netzwerkkamera ist könnte es auch anders funktionieren. In Codesys V2 konnte man ein ActiveX Element hinzufügen, soweit für die Kamera sowas existiert und Codesys V3 das auch noch kann, könnte das auch ein gangbarer Weg sein.

Von irgendwas mit Internetzugang gesendet.
 
Danke an HausSPSler,

der Tipp mit dem visu-Ordner hat mir schon viel gebracht. Ich lege jetzt das Bild im ImagePool an, lade es hoch auf die Steuerung und dann überschreibe ich per FTP das hochgeladene Bild. Das funktioniert ganz gut, solang man die Webvisu per HAnd neu lädt, hat man immer das aktuelle Bild. Aber hier scheint mir wirklich das Caching ein Strich durch die Rechnung zu machen. Denn das Bild wird nicht alle 200ms neu geladen. Caching ausschalten, wie von HausSPSler beschrieben, hat leider nichts gebracht. Aber das ist trotzdem schon mal ein brauchbarer Zustand. ActiveX kann ich mal schauen, ob das eine Lösung wäre.

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
das geht schon du musst nur beachten das dieses json file beim download wieder neu von "oben" also CODESYS runterkommt...
Also entweder die webvisu.cfg.json readonly machen nachdem du es ergänzt hast oder aber du kannst oben ja deine Startseite z.B webvisu2 nennen dann hast du zwei json file untern eine die du geändert hast und die zweite würde beim download immer überschrieben die verwenest du dann ja aber nicht.

webvisu.cfg.json
{
"UpdateRate": 200,
"PlcAddress": "0000.9ED4.C1D5",
"UseLocalHost": true,
"Application": "Application",
"StartVisu": "SendTweetVisu",
"NumCachedImages": 0,
"BestFit": true,
"LogLevel": "INFO",
"CommBufferSize": 50000,
"HasKeyboard": false
}
Grüße
 
Das war mir eigentlich schon bewusst, dass die immer wieder überschrieben wird. Deswegen habe ich eine Boot-Applikation draus gemacht und dann die webvisu.cfg.json überschrieben und zur Sicherheit die Steuerung neu gestartet um das Ganze zu probieren. Wenn du aber sagst, dass muss gehen, dann werde ich das nochmal probieren. Die Zeile "NumCachedImages" stand bei mir gar nicht drin, ist das Normal???
 
ja genau,
das ist normal das die nicht drinn steht weil man es ja in der Regel so nie braucht, ausser für solche "Hacks" ;-)
Grüße
 
Zurück
Oben