TIA Bitmap per HTTP übertragen

TimeOUT

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

ist es möglich mit einer S7 ein Bitmap-File via HTTP an einen angeschlossenen Client zu übertragen?
Stellt vielleicht sogar Siemens da schon fertige Bausteine (neben TCON, TSEND, etc.) für bereit?

Oder ist das ganz und gar der falsche Weg und das sollte eher über einen PC gelöst werden?
Als ich damals eine Kommunikation mit HTTP realisiert habe fand ich das Handling der im JSON-Format anfallenden Antworten schon sehr...naja bescheiden.

Danke und Gruß
TimeOUT
 
Ich frage mal anders :
Bist du denn sicher, dass du die Daten des Bitmap's in einem DB deiner SPS vorhalten möchtest (um sie übertragen zu können) ?
Bedenke bitte : da kommen ganz schnell mal ein paar ganz viele Bytes zusammen ...
Und dann : Wie kommen die Bitmap-Daten denn vorher in deine SPS rein ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Larry,

Sicher bin ich mir überhaupt nicht. Ich wüsste im Grunde erstmal gar nicht, wie überhaupt das Vorgehen ausschaut.

Ich habe auch gerade gesehen, dass das Bitmap als Binärdatei in das Gerät geschrieben werden muss. Dabei muss es als base64url String kodiert sein.
Nur um es klar zustellen, ich möchte das nicht Umsetzen, ich will nur ein paar Infos einholen, ob es überhaupt praktikabel ist oder nicht. Meiner Meinung nach ist das mehr ein Thema für eine PC-Anwendung und nicht für eine Steuerung.

Wie kommen die Bitmap-Daten denn vorher in deine SPS rein ?
Eine sehr gute Frage!
Soweit ich das verstanden habe, muss das Bitmap mit einem Tool zunächst in ein Binary-Format gebracht werden. Anschließend wird dies in einem HTTP Befehl (URI) an das Gerät übertragen.

Gruß
TimeOUT
 
Zuletzt bearbeitet:
Letzten Endes besteht diesen Bitmap in dem gewünschten Format nur aus X Bytes.
Du kannst also so ein Bitmap mit einem Hexeditor öffnen die Bytes kopieren/abschreiben und in einen DB übertragen.
Genau diese Bytes kannst du dann an die neuen Empfänger schicken. Dabei kann dir in der SPS egal sein, was das genau darstellt, nur die Bytefolge , die der Empfänger bekommt, muß passen.
 
@Ralle:
Das ist schon richtig, was du schreibst - wobei es Speichermäßig da ja ganz schnell Grenzen gibt ... egal welche CPU ...
Ich sehe das allerdings auch eher so, wie der TE, dass nämlich dieses Thema in eine PC-Anwendung hinein gehört und nicht in eine SPS.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na ja, wenn z.B. es um ein Logo für einen Etikettendrucker geht, kann man das durchaus so machen, das ist dann nicht so viel. Oder man hat das Logo bereits im Etkettendrucker. Hängt immer vom Drucker ab.
Ansonsten hast du natürlich Recht.
 
Also es handelt sich bei dem Bild um kein hoch aufgelöstes Format. Ganz im Gegenteil. Das Bitmap muss zunächst in ein Binary-file konvertiert werden, welches maximal 756Byte groß sein darf.
Anschließend muss es in einen Base64Url String gewandelt werden, mit einer exakten Länge von 1008 Byte. Dies ist eine Aufgabe, die man ja zuvor am PC erledigen kann.

Wenn ich mir anschließend, wie Ralle bereits erwähnt hat, die 1008 Byte in einem DB ablege und anschließend an den HTTP Befehl "anhänge" und übertrage sollte das klappen...hoffe ich :rolleyes:
 
Wenn das Bitmap statisch ist, warum soll es denn überhaupt von der SPS aus verschickt werden?

Aber auch wenn es dynamisch sein soll ist das nicht so sehr aufwändig. Den fixen Teil würde ich dann am PC vorberechnen und in einem DB als Konstanten ablegen. Die Bitmap Daten als Byte Array in der SPS in einem DB ablegen, und dann musst du dir wohl oder übel eine Base64-Codierfunktion schreiben welche diese Daten vor der Übertragung entsprechend codiert. Das Hauptproblem dabei ist, dass du a) keine String-Funktionen verwenden kannst weil der String länger als 254 Zeichen wird, und b) außerdem die Stringfunktionen viel Laufzeit und Speicher kosten. Und evtl. musst du die Codierung auf mehrere Zyklen aufteilen, damit das restliche Programm nicht zu sehr beeinflusst wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also die Vorverarbeitung (Bitmap --> Base64URL Binary -File) wird am PC gemacht.
Anschließend öffne ich das fertige Binary-File mit einem passenden Editor und schreibe mir die Bytes (händisch) in einen DB (Vielleicht ein wenig mühsam, aber ich möchte jetzt nicht noch eine zusätzliche Funktion schreiben, mit der ich über SIMATIC hinaus mit Windows kommunizieren kann), dessen Inhalt ich anschließend an meinen HTTP-Befehl anhänge und an den Teilnehmer übertrage.

Es soll von der SPS verschickt werden, weil diese Grafiken volatil im Teilnehmer gespeichert werden. Sprich: Bei einem Spannungsverlust muss die Grafik erst erneut an das Gerät übertragen werden.
 
Ähh ... aber diese so aufbereiteten Daten kannst du doch dann auch z.B. via UDP an die SPS übertragen. Du mußt dann halt "nur" im SPS-Programm einen Baustein und ggf. einen anderen Port haben, der die Daten dann auf diesem Weg annimmt ...

Du könntest in dem Fall dann sogar sicher stellen, dass etwas von PC hereingekommen ist, bevor du ggf. einen leeren DB-Inhalt an dein anderes Gerät weiter schickst ...

Gruß
Larry
 
Zurück
Oben