TIA S7-1500 Kommunikation zu Ethernet Waage (Fa. Ohaus)

Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe es mit dem LCOM Baustein hinbekommen.
Ich bekomme jetzt Daten und die sehen auch gut aus.
Nur werden die wie bei einem Schieberegister immer durchgeschoben, bis sie wieder von Anfang anfangen.
Kann man bei dem LCom-Baustein angeben, wieviele Bytes man empfangen will? Dann stimmt die Angabe wohl nicht.
Sendet die Waage immer gleich lange Nachrichten?
Wie häufig sendet die Waage bzw. wie lang zeitlich ist die Lücke zwischen den Nachrichten?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich bei der länge 17 eingebe stehen die Daten immer im gleichen Feld, allerdings steht das erste stelle nicht bei Byte 0 sondern verschoben bei Byte 14 z.B.. Ich versteh das ganze noch nicht wirklich
 
Screenshot 2024-06-12 131702.png
Das ist die Beschreibung der Waage. Ich geh also nicht davon aus, dass die Daten immer gleich lange sind.
Ich bekomme die Daten mehrmals pro Sekunde.
 
Gibt es ein Handbuch (Doku) zu der Waage? Da kommen sicher noch andere Informationen daher( Header, Status, z.b. ), die wahrscheinlich für deinen Einsatz nicht wichtig sind.

Wie groß ist dein Empfangspuffer( auch 17 Bytes )? Wenn der Puffer größer als die Empfangenen Daten sind, bleibt der Rest halt immer leer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es ein Handbuch (Doku) zu der Waage? Da kommen sicher noch andere Informationen daher( Header, Status, z.b. ), die wahrscheinlich für deinen Einsatz nicht wichtig sind.

Wie groß ist dein Empfangspuffer( auch 17 Bytes )? Wenn der Puffer größer als die Empfangenen Daten sind, bleibt der Rest halt immer leer
Der ist größer. Hat gerade 32 Byte Platz
 
Ok, das bekommst immer alles auf einmal, oder? Da wir die Struktur kennen, kannst mit der "AT"-Funktions auf den Rcv-Puffer eine Sicht drauf legen mit der Struktur
 
Guten Abend nochmal,

ich habe mir jetzt eine Lösung gebastelt, ob die schön ist oder nicht, dass sei dahin gestellt. Aber sie scheint zu funktionieren.
Ich baue die Verbindung über ein TCON auf, frage dann die Daten an und baue die Verbindung dann über ein TDISCON wieder hab.
Dies mach ich jetzt jedes Mal, wenn ich Daten von der Waage möchte. Das gute ist, dies passiert normalerweise nur alle 3h oder so.

Ich danke euch wirklich sehr für eure Nerven mit mir. Ihr habt mir sehr weitergeholfen.

Gruß Dennis
 
Zuviel Werbung?
-> Hier kostenlos registrieren
frage dann die Daten an und baue die Verbindung dann über ein TDISCON wieder hab.
Musst du zum Daten abfragen etwas an die Waage senden?
Ich würde die Verbindung aufgebaut lassen. Wenn die Waage sowieso dauernd von sich aus Daten sendet, dann empfange die doch auch dauernd. Dann hast du auch gleichzeitig eine ständige Diagnose, ob die Waage und die Netzwerkverbindung noch da ist und kannst das momentane Gewicht dauernd anzeigen.
 
Nein, die Waage schickt dauernd.
Hätte ich gerne so gemacht, wenn die Daten immer an der gleichen Stelle stehen würden. Egal ob ich meine empfangenen Daten 16 Byte 30 Bye oder 200Bye groß gemacht habe. Die Daten haben sich wie ein Schieberegister verhalten, und dass habe ich leider auch nicht wegbekommen.
Die empfangenen Daten von Endzeichen zu Endzeichen waren immer 16 Byte groß´.
 
Mit TRCV kann man auch nur einzelne Zeichen aus dem Empfangspuffer abholen (falls zu langsam, dann ggf. TRCV mehrmals aufrufen, z.B. Schleife), und die Zeichen in einen eigenen Puffer kopieren und anhand von Startzeichen/Endezeichen/Framezeichen im Protokoll die Nachricht im Puffer suchen. Oder auf das Endezeichen prüfen und ab dem nächsten Zeichen im Puffer vorne eintragen.
Man kann auch mit dem Adhoc-Modus (TRCV Len=0 angeben) alle Zeichen abholen die gerade da sind, und mit Hilfe der RCVD_LEN die Empfangsnachricht in einem eigenen Puffer zusammenbauen. Wenn die Waage immer kurze Pausen zwischen den Nachrichten macht, dann ist die Chance groß, dass man so immer die komplette Nachricht auf einmal bekommt. Das habe ich allerdings noch nie mit S7-1500 und TIA gemacht, nur mit S7-31x PN und Step7 classic.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist die Beschreibung der Waage. Ich geh also nicht davon aus, dass die Daten immer gleich lange sind.
Ich bekomme die Daten mehrmals pro Sekunde.
Die Telegramme müssen nicht immer gleich lang sein, da du da ein feld mit max5 Zeichen hast. Kommt also wohl auf die konfig an. Du hast aber CRLF als anhaltspunkt und leerzeichen als trenner. Also kannst du gut die Daten in einen fifo schieben und diesen dann nach den Crlf als telegrnammrahmen durchsuchen. Ich würde dafür einfach ein trcv-c nehmen. Das übernimmt den gesamten verbindungsaufbau und halten für dich.
 
Möglicherweise hilft dir der folgende Hinweise. Ich habe mal auf einer Baustelle gesessen und habe das T_CON usw. nicht hinbekommen. Immer wieder getestet und gemacht und getan. Mit verschiedenen Werten, IPs usw. Am Ende habe ich gemerkt, dass ich immer erst urlöschen musste und dann erst die neuen Werte wie IP usw. übernommen wurden. TIA hat die Werte einfach nicht in den DB geschrieben, wenn schon etwas enthalten war.
 
Möglicherweise hilft dir der folgende Hinweise. Ich habe mal auf einer Baustelle gesessen und habe das T_CON usw. nicht hinbekommen. Immer wieder getestet und gemacht und getan. Mit verschiedenen Werten, IPs usw. Am Ende habe ich gemerkt, dass ich immer erst urlöschen musste und dann erst die neuen Werte wie IP usw. übernommen wurden. TIA hat die Werte einfach nicht in den DB geschrieben, wenn schon etwas enthalten war.
Das ist mir auch aufgefallen, dass wie Onlinewerte nicht geändert werden. Hier reicht es aber aus, die Onlinewerte des DB´s anzupassen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Am Ende habe ich gemerkt, dass ich immer erst urlöschen musste und dann erst die neuen Werte wie IP usw. übernommen wurden. TIA hat die Werte einfach nicht in den DB geschrieben, wenn schon etwas enthalten war.
Das ist mir auch aufgefallen, dass wie Onlinewerte nicht geändert werden.
Wurde der DB vor dem Laden nicht übersetzt? Oder gar nicht in die CPU geladen?
Das klingt wie ein BUG (--> Siemens Support informieren), oder was genau habt ihr gemacht?

Hier reicht es aber aus, die Onlinewerte des DB´s anzupassen
Achtung: Dann werden die Aktualwerte beim nächsten Urlöschen (z.B. spielen an der Speicherkarte) oder bei "hochsporadischem" Remanenzverlust durch die Startwerte (genauer: die anfänglichen Aktualwerte) des DB aus dem Ladespeicher ersetzt und sind futsch!
 
Wurde der DB vor dem Laden nicht übersetzt? Oder gar nicht in die CPU geladen?
Das klingt wie ein BUG (--> Siemens Support informieren), oder was genau habt ihr gemacht?
Das war ca 2019. Ich kann mich nicht mehr genau erinnern. Es wurde alles übersetzt und geladen. Aber die Werte für den DB, welcher für den TCON zuständig ist wurde nicht aktualisiert. Ich mein, ich habe es damals dem Support gesagt.
 
Wurde der DB vor dem Laden nicht übersetzt? Oder gar nicht in die CPU geladen?
Das klingt wie ein BUG (--> Siemens Support informieren), oder was genau habt ihr gemacht?


Achtung: Dann werden die Aktualwerte beim nächsten Urlöschen (z.B. spielen an der Speicherkarte) oder bei "hochsporadischem" Remanenzverlust durch die Startwerte (genauer: die anfänglichen Aktualwerte) des DB aus dem Ladespeicher ersetzt und sind futsch!
Die Startwerte sind ja schon korrekt nachdem konfigurieren des TCON. Nur die Aktualwerte bleiben alt.
 
Zurück
Oben