-> Hier kostenlos registrieren
... ja ich habe die Suche bemüht, suche seit Stunden in sämtlichen Foren, aber trotzdem stehe ich total auf dem Schlauch.
Ich bin leider nicht ganz fit in Sachen S7, daher wende ich mich an die Profis unter Euch.
Aufgabenstellung:
Transfer von 62 Eingangswörtern (%IW256 bis %IW378) in einen Datenbaustein.
Das ganze geschieht in einem FB, die Daten sollen in einem Instanz-DB abgelegt werden.
Symbolische Adressierung.
So weit ich das verstanden habe, sollte das ganz einfach mit dem BLKMOV funktionieren.
Ich habe in der Schnittstellen einen Input StartAdr vom Datentyp ANY deklariert, DataIn ist ein ARRAY [1..62] of WORD
#Retval:=BLKMOV(SRCBLK:=#StartAdr, DSTBLK=>#DataIn)
Der Code lässt sich in die CPU laden, es wird aber lediglich ein Wort kopiert.
Bei den Beispielen die ich (AWL) gefunden habe wird leider nur direkt adressiert und dabei auch eine Länge (BYTE xx) angegeben.
Die Längenangabe geht mir hier irgendwie ab
Ich bin für jeden Tip sehr dankbar. :sm24:
PS: bei einer mir bekannten SPS würde die Anweisung lediglich so lauten: DataIn:=%IW256:62;
Danke und LG
Markus
Ich bin leider nicht ganz fit in Sachen S7, daher wende ich mich an die Profis unter Euch.
Aufgabenstellung:
Transfer von 62 Eingangswörtern (%IW256 bis %IW378) in einen Datenbaustein.
Das ganze geschieht in einem FB, die Daten sollen in einem Instanz-DB abgelegt werden.
Symbolische Adressierung.
So weit ich das verstanden habe, sollte das ganz einfach mit dem BLKMOV funktionieren.
Ich habe in der Schnittstellen einen Input StartAdr vom Datentyp ANY deklariert, DataIn ist ein ARRAY [1..62] of WORD
#Retval:=BLKMOV(SRCBLK:=#StartAdr, DSTBLK=>#DataIn)
Der Code lässt sich in die CPU laden, es wird aber lediglich ein Wort kopiert.
Bei den Beispielen die ich (AWL) gefunden habe wird leider nur direkt adressiert und dabei auch eine Länge (BYTE xx) angegeben.
Die Längenangabe geht mir hier irgendwie ab
Auszug aus der Online Hilfe des Portals:
Allgemeine Regeln beim Kopieren
Quell- und Zielbereich dürfen sich nicht überlappen. Wenn der Quell- und der Zielbereich unterschiedlich lang sind, wird nur bis zur Länge des kleineren Bereichs kopiert.
Wenn der Quellbereich kleiner als der Zielbereich ist, wird der Quellbereich komplett in den Zielbereich geschrieben. Die restlichen Bytes des Zielbereichs bleiben unverändert.
Wenn der Zielbereich kleiner als der Quellbereich ist, wird der Zielbereich komplett beschrieben. Die restlichen Bytes des Quellbereichs werden ignoriert.
Wenn ein Bereich vom Datentyp BOOL kopiert wird, muss die angegebene Länge des Bereichs durch 8 teilbar sein, da sonst die Anweisung nicht ausgeführt wird
Ich bin für jeden Tip sehr dankbar. :sm24:
PS: bei einer mir bekannten SPS würde die Anweisung lediglich so lauten: DataIn:=%IW256:62;
Danke und LG
Markus