TIA BLKMOV Variant (S7-1500) --> MOVE_BLK_VARIANT (S7-1200) wie?

newbi_plc

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe ein Problem. Im angehängten Bild seht ihr einen Screenshot von der Anweisung BLKMOV Variant bei einer S7-1500. BLKMOV Variant gibt es aber nicht bei einer S7-1200. Muss wieder ein Programm teilweise konvertieren von einer S7-1500 nach S7-1200.

Wie macht man die Anweisung wie im Bild (rot eingekreist) mit einer S7-1200? Ich wünschte ich würde mich besser auskennen mit SCL oder anderen Tricks :-( Hoffe ihr könnt mir wieder helfen.
Danke im voraus
 

Anhänge

  • BLK_MOVE_VARIANT.JPG
    BLK_MOVE_VARIANT.JPG
    124 KB · Aufrufe: 90
Die Anweisung in der S7-1200 sieht anderst aus und wenn ich die Anweisung verwende so wie ich mir das vorstelle und gelesen habe dann passiert einfach nichts. Wird nicht verschoeben. Ich brauch einfach eine Anweisung/Zeile/SCL code wie man 500 Merkerbytes in einen Datenbaustein schiebt in dem ein Array ist [1..500]. :???:
 
Ich brauch einfach eine Anweisung/Zeile/SCL code wie man 500 Merkerbytes in einen Datenbaustein schiebt in dem ein Array ist [1..500]. :???:
Eigentlich, in dem man das Ganze auf symbolische Verarbeitung umstellt.

Dann sollte es auch nur noch 'ne Zuweisung sein:
Code:
ArrayTarget := ArraySource;
oder
Code:
FOR #i := 1 TO 500 BY 1 DO
   ArrayTarget[#i] := ArraySource[#i];
END_FOR;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aaah, jetzt dämmert es langsam...

Das Problem scheinen die Merker zu sein... E's und A's kann man in ein Array "packen" (über einen UDT) mit Merker geht das nicht.

Wie kommst du an 500 Merkerbyte? Wäre es möglich deren "Entstehung zu verhindern" und in einen DB zu packen?

Aber wie gewöhnlich ruft das direkt 1000 neue Problemchen auf den Plan...

SCL hilft dir da auch erst mal nicht weiter da "voll symbolisch" im TIA, wie an die einzelnen Variablen rankommen ist hier die Frage
 
Was gehen sollte, ist zwar nicht schön, aber...

Schau dir mal Peek und Poke an. Damit kann man direkt im Speicher rumpfuschen:

So nach dem Motto: (absolut ungetestet)
Code:
FOR #i := 1 TO 500 BY 1 DO
   ArrayTarget[#i] := PEEK(AREA := 16#83,DBNUMBER := 0,BYTEOFFSET := 100 + i);
END_FOR;
 
Daran hab ich auch schon gedacht....Aber jetzt hab ich doch tatsaechlich eine andere Lösung. Komisch ist nur das das eigentlich so gar nicht gehen sollte wenn man im TIA Informationssystem liest....aber mit rumspielen ging es dann doch :rolleyes: Siehe Bild wie man es mit S7-1200 machen koennte......

Der Trick war bei "DEST": Dort muss wohl nämlich der "Zeiger" direkt auf dem gesamten Array [1..500] stehen und nicht auf das erste Element des Arrays.....:confused:

L_MOVE_BLK_VARIANT.JPG
 
Zuletzt bearbeitet:
Zurück
Oben