TIA Eingangs-Array kopieren in Lokaldaten FB

MisterCP

Level-1
Beiträge
17
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich suche jetzt schon seit Stunden, konnte bislang aber keine funktionierende Lösung finden, hoffe daher hier auf Hilfe.

Ich möchte in einem FB einen Eingangsbereich von 32 Byte einlesen und in ein Struct im Temp-Bereich des FB kopieren.
(später sollen dann von da aus die Werte je nach ihrem Format (gemischt Byte, Int, Uint) weiter aufbereitet werden)

Da der FB dann rund 30mal mit verschiedenen Eingangsbereichen aufgerufen werden soll, verbietet sich ein direktes Bearbeiten der Eingabebytes.

mit MOVE und MOVE_BLK und SFC20 bekomm ich es irgendwie nicht hin, die Bausteine mit den richtigen Parametern zu versorgen.
der eine kann mit dem Pointer auf die E-Adresse nichts anfangen, der andere nichts mit dem Struct der Lokaldaten.

An sich wollte ich zwar den Rest des Bausteins in AWL schreiben, wenns aber nur mit SCL geht, nehm ich auch das (Ist erst mein zweiter Kontakt mit TIA)

Ich danke euch schon mal im Voraus für eure Tips
 
Hallo Mister CP.

Ich würde einen PLC Datentyp ehemals UDT anlegen dort und diesen am IN des FB deklarieren so könntest du mit einer Eingangsangabe alles einlesen.
EVTL. wenn alles sauber auf Wordgrenzen liegt entfällt sogar das spätere Rangieren auf Temp.
Gruß TIA
 
Hallo WinCCTIA,

anscheinend meintest du was anderes als ich da raus lese, funktionieren tut es jedenfalls so, wie ich es umgesetzt habe nicht.

1) einen PLC Datentyp namens UDT_01 angelegt und mit mit meinen 32Byte Daten deklariert
2) IN-Variable im FB namens InData deklariert und als Datentyp den UDT_01 angegeben
3) Aufruf meines FB in OB1 eingefügt und als Parameter für InData P#E0.0 Byte 32 übergeben => stimmt nicht mit den formalen Parametern überein

was mache ich da falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... auf diese Weise kannst du nur einem ANY-Pointer Daten übergeben (der wäre da neutral).
Ein IN-Parameter vom Typ Struct_xyz erwartet seine Eingangsdaten auch genau in dem Datenformat (eben auch als Struct_xyz).

Gruß
Larry
 
Hallo WinCCTIA,

leg den UDT_1 nochmal als Statische Variable im FB an. Dann kannst du einfach symbolisch kopieren.

TIA_20160822_1.PNGTIA_20160822_2.PNG


Stefan
 
Das man den UDT schon in der Variablentabelle dem Eingangsbereich zuordnen kann ist bekannt ?
Damit würde das kopieren wie auch immer entfallen
de TE muss dann in der Variablentabelle die ca 30 Eingangsbereiche Symbolisch zuordnen ( Datentype UDT ) und kann dann das entsprechende Symbol
dem FB übergegen.



Edit
wegen zu vielen UDTs
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mister,

schau dir mal den Befehl "Deserialize" an.
Als Eingangsarray nimm deine 32 Byte, als Ausgang dann eine Variable vom Typ deines UDT's, diese Variable nimmst du dann als Eingang für deinen FB.

Funktioniert allerdings nur mit 1500 Steuerungen (du hast ja eine 1510).

Gruß
Rainer
 
Zurück
Oben