Mit BLKMOV im FB auf IN_OUT vom Typ UDT

Johannes F

Level-1
Beiträge
232
Reaktionspunkte
9
wie kann ich z.b. einen string mit z.b. block-move (SFC20 BLKMOV) in den FB datenbereich IN_OUT vom typ UDT kopieren. wenn ich den UDT in dem bereich OUT aufrufe kann ich mit bolck-move darauf schreiben nur nicht mit IN_OUT
hat jemand eine ideee :confused::confused::confused::confused:
 
Hallo Johannes,
hast Du schon mal versucht, das INOUT-UDT auf eine Temp-Variable zu schreiben, und diese dann an den SFC20 zu legen? Sollte klappen.
gruß
 
Hmmm, so ganz genau erschließt sich mir noch nicht, was Du vorhast. :confused:
Wenn Du mittels SFC20 in ein UDT kopierst, dann brauchst Du doch auch lediglich eine OUT-Variable - da diese ja vom SFC20 beschrieben wird.

gruß
 
Hallo,
ich denke, das Problem ist folgendes :
IN und OUT sind feste Datenbereiche in einem FB. IN_OUT ist aber nur ein Pointer auf einen externen Datenbereich. Wenn das funktionieren soll mußt du dir m.E. aus dem mittels IN_OUT übergebenen Pointer und den Größen-Daten des/deines UDT einen ANY-Pointer bauen. Den kannst du dann an den SFC20 dranschreiben und dann sollte es auch funktionieren ...

Gruß
LL
 
ja das ist schon richtig, habe mir ein bildbaustein gebaut und die struktur (udt) welche aus dem fb kommt ist die struktur für meinen bildbaustein. einfach 1:1 .mit allen anderen variablen habe ich keine probleme nur mit dem string. alle bausteine welche ich zum verarbeiten der strings einsetze geben mir ein OUT-String und diesen kann ich leider nicht auf den IN_OUT-String legen.werde mir wohl etwas drumherum bauen müssen. kaum zuglauben das IN_OUT nicht das gleiche ist wie OUT oder IN bzw. IN und OUT. ne ne ne *ROFL*
 
@LL ne das funzt nicht so wie ich das brauche

lege einfach mal zum spaß in einem fb einen udt mit einem string in IN_OUT ud versuche mit z.b. sfc20 darauf zu schreiben. geht nicht
:-(
 
:confused: ... doch geht. Ich habe es allerdings SCL machen lassen und der hat nichts Besseres zu tun als sich zuerst einen ANY-Pointer aus dem IN_OUT-pointer und der Größe des UDT-Datenblocks zu bauen - halt so, wie ich es geschrieben habe.
Schau dir doch mal zum Spaß den I-DB deines FB an. Der IN_OUT-String belegt dort (egal wie lang du ihn machst) nur die 6 Byte, die der pointer nun mal groß ist ... im Gegensatz dazu bei einem IN oder OUT-Parameter ... das ist der Unterschied ...

Gruß
LL
 
ah ja danke, ganz komisch dachte bis gerstern das es egal ist ob IN und OUT oder IN_OUT.
mmm schade, dann muss ich es eben anders lösen.

komisch ist für mich das ein normales "INT" im IN_OUT bereich die komplette adresse belegt nur ein "STRING" eben nicht.

kennt jemand den grund?
 
Zurück
Oben