TIA BLKMOV Ersatz

Zuviel Werbung?
-> Hier kostenlos registrieren
Wie wärs mit einer FOR Schleife und BYTE_to_CHAR? Wobei ich nicht weiss, ob die Syntax der Konvertierung in TIA so ist wie in Classic, aber der Weg sollte so klappen.
 
BLKMOVE.jpgIch bekomme von einen Datamatrixscanner die Auswertung im Byte Format, die in einem DB im Char Format gespeichert wird. Ich bin relativ neu in der SPS Programmierung. Wie funktioniert die FOR Schleife mit BYTE_to_Char? hättest du einen Screenshot?
 
Ich hab hier kein TIA und evtl. weiss da einer ob es da in FUP was passendes gibt, ich würde mir das in SCL machen. Dazu kann ich dir auch ein Beispiel machen, aber halt nur in Classic SCL.
 
Bei mir hats nach sehr vielen Umwegen irgendwie geklappt mit ANYs und BLKMOVE im TIA v12. Wohl zu beachten, daß diese Funktion im v11 und v12 unterschiedlich heißt und unterschiedlich angewendet wird!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
FUNCTION Blockmove_SCL :bool
// Bausteinparameter
VAR_INPUT
    // Eingangsparameter
    QuellDB:Block_DB;
    Quelle_Startbyte:INT;
    Anzahl_bytes:INT;
    ZielDB:Block_DB;
    Ziel_Startbyte:INT;
END_VAR

VAR_OUTPUT
    // Ausgangsparameter

END_VAR

VAR_TEMP
    // temporäre Variablen
    i:INT;
    j:INT;
    bytes:INT;
END_VAR

BEGIN
    bytes:=Quelle_Startbyte+Anzahl_bytes;
    j:=Ziel_Startbyte;
    FOR i:=Quelle_Startbyte TO bytes BY 1 DO
        ZielDB.DB[j]:=QuellDB.DB[i];
        j:=j+1;
    END_FOR;
Blockmove_SCL:=true;
END_FUNCTION

So in etwa haste einen Blockmove, mach dir einen FC mit dem Code und ruf den dann auf, ich hab die Variablen recht eindeutig beschriftet.
Ist aber nicht getestet, hab grad keine Zeit dafür und Asche auf mein Haupt wenn da ein Fehler drinne ist. :)

Die Konvertierungsgeschichte ist da nicht mit drinne, hoffe es hilft erstmal weiter.

edit: i und j waren vertauscht :(
 
Zuletzt bearbeitet:
Zurück
Oben