TIA Wie kann ich Daten von einer Fremdapplikation in TIA V17 importieren?

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich vermute, du empfängst tatsächlich ASCII-Zeichen (Chars), und zwar ein Byte 16#31 und ein Byte 16#35
Diese Vermutung ist richtig :)

@Freiberger. Die Funktion ist super. Wie füllst du das Array IOac_signs bzw. wie erkenne ich, dass ein neues Zeichen gesendet wurde?
 
Moin uweschwarz,

die Funktion dient nur der Übersetzung. Man muss ein Übergabearray (z.B. array[0..9] of char) außen an die Funktion dranschreiben. Ausgeführt wird die Funktion immer, wenn sie aufgerufen wird.

Beispielaufruf:
Code:
    "TASK_AUTO_DB".TASK.Z.X := LINT_TO_INT("POOL_CHARtoLINT"(IOac_signs := #T_COORD.DST.X));

1747310028310.png

"TASK_AUTO_DB".TASK.Z.X ist ein Int.

VG
MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erste Schritt, untersuche genau welchen Format haben die Daten die von Labview empfangen werden.
Als Chars, Hexzahlen, Dezimalzahlen, oder .. ?
Haben die einzelne Ziffern eine feste Position, oder flexibel, oder einen (ab)art von Gleitpunktzahlen ?
Wenn z.B "123", wird es als "1"+"2"+"3" empfangen oder "0"+"0"+"0"+"1"+"2"+"3", oder .. ?
Usw.
Es konnte sogar sein dass eine eventuelle Dezimaltrenner als Char übertragen werden.
Z.B.: "1"+"2"+"."+"3"+"4"
Erst danach wurde ich eine Lösung finden, wie man die Labview Daten in einen Zahlenwert in den S7 Steurung konvertiert.
 
Es ist ja so, dass, wenn LV eine 15 sendet erst eine 1 und kurz danach eine 5 auf dem Empfangsbyte empfangen wird. Irgendwie müsste ich diese beiden Zeichen in ein Array of Char einlesen. Leider habe ich gerade einen Knoten im Kopf und krieg's irgendwie nicht hin.
Ich habe es so versucht. Leider funktioniert das nicht.
1747315555281.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin uweschwarz,

Ich mache es idR so, dass ich mir ein temporäres array[0..n]of char erstelle. Da trage ich dann die einzelnen Char aus der Schnittstelle ein.

Beispiel:
Code:
#Tac_handoverplaceNo[0] := "iTELE_DABA_DB".dataTray[#Ii_idx].DATASET."DATA"[65];
#Tac_handoverplaceNo[1] := "iTELE_DABA_DB".dataTray[#Ii_idx].DATASET."DATA"[66];
#Ti_hopNo := LINT_TO_INT("POOL_CHARtoLINT"(IOac_signs := #Tac_handoverplaceNo));
 
Wie sieht denn Dein Datenstrom aus? Die numerischen Werte sollten immer an der gleichen Position auszulesen sein.
Sonst musst Du eine Möglichkeit erfinden, die Werte zu suchen. Oder es muss Dir mitgeteilt werden, an welchen Positionen sich die Werte befinden.
 
Es ist ja so, dass, wenn LV eine 15 sendet erst eine 1 und kurz danach eine 5 auf dem Empfangsbyte empfangen wird.
Ich kann mir kaum vorstellen dass nur 1 BYTE empfangen wird.
Verwendest du TRCV_C in die S7-1500'er ?
Wie gross ist die Datenstruktur auf den DATA Pin ?
Überwachst du BUSY und DONE ?

Da der Labview Programmierer bereits eine Verbindung via TCP von einem anderen Projekt hatte, haben wir uns jetzt für eine TCP-Verbindung entschieden und jetzt, hallelujah, eine Verbindung über die die SPS auch Daten empfängt.
Zeige uns die Details zu diese Verfahren.
Welche Code hast du in die S7-1500 ?
 
Moin uweschwarz,

ok, wenn Du wirklich immer nur ein Byte empfängst, dann müsstest Du wissen, wann das erste und wann das letzte (numerische) Zeichen kommt.
Dann würde ich ein Array in einem globalen DB anlegen und diesen füllen.
Du brauchst eine (globale) Int-Variable als Zeiger. In der steht der Index für das Array.
Dann kannst Du mit dem 'NDR' (steht für einen Zyklus an) das Array "befüllen":

Code:
IF
    #DONE
THEN
    "DB".arrya["DB".ptr] := "1202_Raman_Data_Empfang".TestString;
    "DB".ptr += 1;
END_IF;

Wenn der Wert vollständig ist, "DB".ptr wieder auf 0 setzen.
 
Ich komme mit der LV Verbindung nicht weiter. Die Fehlermeldung ist, dass der Server die Verbindungsanfrage zurückweist.
Die Verbindungsdaten auf der SPS sind aber richtig. Bei der SPS ist aktiver Verbindungsaufbau eingestellt. Dann müsste doch die SPS der Server sein, oder?

Ich habe gerade gar keine Idee, wie ich weiterkommen kann. Normalerweise müsste doch nach Verbindungsabbruch die Verbindung automatisch wieder neu aufgebaut werden, oder?




1747325888274.png

1747326091704.png1747326136549.png
 
Zurück
Oben