TIA Telegramm String zerlegen

ThomasM

Level-1
Beiträge
114
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen

ich seit gestern ein Problem und finde dafür grad keinen Ansatz.
Zum Problem: Ich bekomme von einer übergeordneten Steuerung einen String[21] als Telegramm, der den Fahrauftrag darstellt. Der String wird natürlich unterschiedlich beschrieben und mein Problem ist, dass bei dem einen Auftrag der Zielort die ersten 3 Zeichen des Strings belegt und beim nächsten dann die ersten 4. Hier mal ein Beispiel des Strings:

Code:
1. Fahrauftrag
String[21] = 'GRU060010550104000742'

Zielort sind die ersten 3 Zeichen: GRU

2. Fahrauftrag
String[21] = '2010                 '

Zielort sind die ersten 4 Zeichen, der Rest wird bei diesem Telegramm mit Leerzeichen aufgefüllt

Wenn ich jetzt die tatsächliche Länge des Strings auslese (mit LEN), werden dann die Leerzeichen auch mitgezählt? Ich nehme mal an ja. Natürlich könnte ich jetzt das erste Zeichen auf 'G' abfragen und anhand des Resultats den String zerlegen. Aber wenn sich mal am Telegramm was ändert, z.B. die Bezeichnung des Zielorts, ist das nicht gerade flexibel.
Ich hoffe mir kann jemand einen Denkanstoß geben, irgendwie bin ich für diese Woche schon durch...

Gruß ThomasM
 
Ich habe das jetzt nicht wirklich verstanden.
Allerdings :
Du willst den String-Inhalt interpretieren - das heißt in Abhängigkeit des Inhalts an bestimmten Stellen entstehen Aktionen - das heißt weiterhin, dass du das dann auch entsprechend auswerten solltest.
Ich würde aber auch versuchen, festzulegen, dass das Ziel nicht einmal aus den ersten 3 Zeichen und ein anderes Mal aus den ersten 4 Zeichen festgelegt wird. Bei deinem String haben ja möglicherweise die folgenden Zeichen auch noch eine Bedeutung, die eine unterschiedliche Reaktion deinerseits bewirken sollen ?

Was ist das denn überhaupt, was du da hast ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist das denn überhaupt, was du da hast ?

Es handelt sich um die Zielvergabe für einen Lagerplatz.

2010 entspricht zum Beispiel dem Aufnahmeplatz und GRU060010550104000742 dem Lagerplatz im Lager. Die restlichen Stellen sind dann Reihe, Tiefe, Ebene und paar Fixwerte. Der Aufbau für das GRU-Telegramm ist immer gleich also 3 Stellen Reihe, 3 Stellen Tiefe, usw. Diesen String zu zerlegen ist nicht das Problem, das hab ich schon in einer UDT gemacht und weise die Stellen mit der MID-Funktion entsprechend zu. Das Problem ist wie du richtig erkannt hast, dass das Ziel aus den ersten 3 oder den ersten 4 Zeichen bestehen kann.

Ich würde aber auch versuchen, festzulegen, dass das Ziel nicht einmal aus den ersten 3 Zeichen und ein anderes Mal aus den ersten 4 Zeichen festgelegt wird.
Das Problem ist, dass ich das nicht festlegen kann. Das machen die Herren vom Lagerverwaltungssystem und ich muss nehmen was ich kriege.

Hab jetzt mal zum Testen mit der FIND-Funktion nach dem Auftauchen eines Leerzeichens gesucht und anhand des INT Ausgangs dann entschieden wie der STRING zerlegt werden soll. Jetzt muss ich allerdings erst noch testen ob das restliche Programm dann auch das macht, was ich mir vorstelle.

Gruß ThomasM
 
Naja ... ich hätte jetzt verscht, die "Herren vom Lagerverwaltungssystem" umzuprogrammieren ...
Wenn du diese Option nicht hast bleibt dir nur die Möglichkeit zu programmieren (in deinem String-Zerlege-Baustein) : wenn der String z.B. mit "GRU" anfängt, dann ist der Aufbau dies und wenn der String mit "2010" anfängt dann ist der Aufbau das. Entsprechend wirst du das dann bei weiteren (neuen) Headern nachpflegen müssen (u.U.).

Gruß
Larry
 
Ich würde mittels AT auf den String zugreifen und dann die Stellen einzeln prüfen.

Welche Art eines Telegramms es ist kannst du prüfen indem du schaust ob die ersten X Stellen Buchstaben oder Zahlen sind.

Meistens bekomme ich vom MFR Telegramme die mit einer zweistelligen Zahlenkombination anfangen. Das kann dann ein Einlager-, Auslager- oder Umlagerauftrag sein. Welcher es ist, bekomme ich nur mittels der Zahlenkombi auf den ersten beiden Stellen mit.
Bei einem Auslagerauftrag heißt das dann meistens "01G06021023001".

E: Wenn natürlich keinerlei Konsistenz in den Telegrammen enthalten ist, d.h. dass auch Telegramme die eigentlich mit GRU beginnen sollten, nicht unbedingt mit GRU oder anderen Buchstaben beginnen sondern mit 146, dann hau den Programmierern des MFR mal auf die Finger. Telegrammverkehr braucht immer einen unterscheidbaren Telegrammkopf. Und wenn es nur die Unterscheidung zwischen Buchstaaben und Zahlen sind.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Morgen

Danke für eure Tipps. Ich werde jetzt erstmal meine Lösung mit FIND belassen und wenn dann ein Leerzeichen an einer unlogischen Stelle auftritt, kriegen die von mir erstmal ne Fehlermeldung zurück.

Ja am liebsten würde ich die alle rasieren... wer kommt denn auf die Idee die Gruppenbezeichnung des Lagers mit 3 Stellen zu machen und die der Zulieferer mit 4 Stellen... Der Telegrammkopf hat ja auch nen eindeutigen Aufbau, da steht aber leider nur die Telegrammart drin ( z. B. '01' Fahrauftrag). Ne Kennung ob ein-, aus- oder umgelagert werden soll wäre ein Traum... Ich muss anhand der Quelle, Ziel, Endziel in den Nutzdaten des Telegramms entscheiden was zu tun ist...

Gruß ThomasM
 
Zurück
Oben