Empfangs-DB auslesen

Black Scorpion

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

ja ich schon wieder. Habs endlich geschafft Daten mit der CP340 zu senden und zu empfangen, die werden in einem DB200 auch schön angezeigt. Frage: So von nem Anfänger an die Meister.... wie kann ich die Daten auslesen. Ich bekomme ja mit das die im DB200 liegen und die Länge des aktuellen Telegramms bekomme ich ja auch mit... so ist das ja nicht. Wollte mir jetzt nen eigenen FC schreiben um den DB200 auszulesen und das Telegramm zu zerlegen...

Zur Zeit hab ich bei SPS en ganzes Sägewerk vor dem Kopf....
 
String

Hallo,

wenn du mal genau beschreibst was du zerlegen willst und wie auswerten findet sich bestimmt ne Lösung.

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Anhang habe ich den DB200 mal als Screenshot beigefügt. Hinter jedem letzten Zeichen kommt noch ein "CR" dazu als Endezeichen. So und nun will ich diesen String in einen eigenen FC einlesen und dann dort zerlegen und verarbeiten.....

Zwischen zwei Befehlen steht ein ";" als Trennung. Dann sieht das wie folgt aus: "X 5000;K90" und das letzte Zeichen ist immer ein Carrige Return.....

Aber wie gesagt, ein Sägewerk vor dem Kopf ist im Moment nix gegen die Blockade die ich da hab...
 

Anhänge

  • Empfang_DB200.JPG
    Empfang_DB200.JPG
    271 KB · Aufrufe: 44
Zuletzt bearbeitet:
Prinzipfrage !
Ist es eventuell eine feste Länge des Telegrammes,
dies wird bei serieller Übetragung oft gemacht.
Wenn nicht kannst Du SCL ?

Ansonsten einen String anlegen z.B. String[200]
Dieser liegt z.B. im DB200 ab Byte 0
Die Länge (1 Byte) aus dem Receive kopierst du in DB200.DBB1, dort steht die belegte Länge vom String.
Ab hier kannst Du mit den Stringoperationen der S7 nach z.B. einem ";" suchen, den String bis zur Fundstelle umkopieren nach z.B. Befehl1, dann weitersuchen und wieder einen String extrahieren von Fundstelle1+1 bis Fundstelle 2 usw.
Gib aber einfach mal genauer an, was Du da für daten erhälst.
 
Nein, die Länge des Telegrammes kann variieren....

Ja ein wenig SCL beherrsche ich...hab schon eigene Funktionen geschrieben und bin auch zuversichtlich das das hier auch klappen wird, wenn ich wüsste wie es geht....

DB200.DBB1 ==> was ist das, was kann ich darunter verstehen....

Also ich will die Zeichenkette die ich empfangen habe, die im DB200 steht mit der angegebenen Länge lang nach auslesen und irgendwie ablegen, in ner Variablen oder so, damit ich die dann durchsuchen und weiter verarbeiten kann....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du den String im DB200 ab Byte 0 mit z.B. String[200] anlegst, so ist dieser bereich genau 202 Byte lang.
im ersten byte DB200.DBB0 steht eine 200 für die definierte Länge des String,
im zweiten byte steht die tatsächliche benutze Länge. Wenn Du also 50 zeichen empfängst, kopierst Du die Empfangsdaten ab dem 3.Byte in den String. Dann trägst du die EMpfangene Länge ein und hast eine gebrauchsfertigen String zur weiteren Verarbeitung.
Zur Vorsicht lösche ich den Empfangsdb nach dem Umkopieren/Auswerten wieder ab, damit kein Müll beim nächsten Empfang zu Fehlern führt.
 
Im Prinzip hab ich das jetzt dank dir auch verstanden. Danke... Aber jetzt stellt sich die Frage "WIE KOPIERT MAN DAS?" Ich bin jetzt nur mit Bits unterwegs gewesen und solch was komplexes hab ich noch nie gemacht....
 
Zurück
Oben