Aktualwerte kopieren

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Felse,
ich habe es wie folgt gemacht.
Ich habe einen DB1 angelegt und habe da folgende Variablen Deklariert und dem DB ein symbol gegeben.

DB1.JPG

Dann habe ich in den OB1 den SFC20 aufgrufen mit dem Ziel die Daten von der Variablen Test nach Test1 umzuladen.

ob1.JPG

Das anlegen an den Eingang vom SFC20 SRCBLK habe ich so gemacht das
ich folgendes geschrieben habe P#DB1.DBX0.0 INT1 der Editor wandelt dann automatisch in "Daten".Test um.
Genauso bin ich mit dem Ausgang vom SFC20 DSTBLK verfahren, der Any Pointer sah so aus P#DB1.DBX2.0 INT1 und es wurde "Daten".Test1.

Hier noch ein Bild aus der Simulation
S7-PLCSIM.JPG

Frei nach Berger-Buch
Die Systemfunktion SFC 20 BLKMOV kopiert
in Richtung aufsteigender Adresse (inkrementierend)
den Inhalt eines Quellbereiches (Parameter SRCBLK)
zu einem Zielbereich (Parameter DSTBLK).
An den Parametern können folgende Aktualparameter




angelegt werden:
  • beliebige Variablen aus den Operandenbereich
    Eingänge E; Ausgänge A; Merker M; Datenbausteine
    (Variablen aus Global. und Instanz-Datenbauseine)
  • Variablen aus den temponären Lokaldaten
  • absoluteadressierte Datenbereiche unter Angabe​


    eines ANY-Zeigers
Mit dem SFC 20 nicht kopieren können Sie Zeit- und Zähl-​


funktionen sowie Informationen von und zu den Baugruppen
(Operandenbereich Peripherie) und Systemdatenbausteine SDB.​

Gruß helmut​
 
Zuletzt bearbeitet:
Hallo Felse,

das Problem ist wahrscheinlich, dass du als Adressen die DB's angibst. Es müssen Pointer verwendet werden. z.B.P#DB100.DBX0.0 Byte 200
Ich habe vor einiger Zeit eine vergleichbare Funktion programmiert, die einwandfrei funktioniert.

Gruß Rainer

Blockmove.jpg
 
Zuletzt bearbeitet:
OK, bevor ich das mache, hier mein genaues Problem: die Werte, die ich in meine Eingb. Felder eingebe, bzw. die Schalter/Taster betätige sind wenn ich mal ne Änderung vornehmen muss nach erneutem Laden alle wieder auf "0". Genauso wenn ich mal die CPU/MMC Karte tauschen will.


Verstehe ich es richtig das du eigentlich nur die Aktulwerte als Anfangswert brauchst ? Wenn ja probier mal >Zielsystem> Ram nach Rom kopieren.
Du kannst auch mit der Station Online gehen und die Online DBs in den Offline DB kopieren. Dann hast du auch alle Aktualwerte als Anfangswert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Morgen, Hey Helmut hab dich wohl gestern geschafft mit meinen Fragen, das du das so schön gepostet hast. Hier nochmal fettes DANKE!! Aber eine Sache wär da noch: wie in deinem Bsp funzt es nun auch bei mir: der Wert wird auf den anderen übertragen, die sind ja beide in einem DB, aber wenn ich den Wert jetzt auf eine Variable in einem anderen DB übertragen will geht das nicht... warum?
 

Anhänge

  • Unbenannt.bmp
    182,9 KB · Aufrufe: 12
Guten morgen Felse,
du hast mich nicht geschafft, ich bin ein Westfälischer Dickschädel, also Praktisch unzerstörbar.
Bei deinem Beispiel in den oberen Postings sieht es so aus das du nicht die Variable des Datenbaustein angelegt hast sondern den Datenbaustein, das hat der Ralle auch so erkannt. Deswegen hätte ich mir auch gewünscht dass du den einen Screenshot machst da hätte man sofort erkannt was jetzt an den Eingangsparametern des SFC 20 liegt, oder wie du den Anypointer aufgebaut hast. Für mich und den anderen war das erst einmal in erster Linie irgendeine Variable, ob es jetzt ein DB war ist nicht gleich zu erkennen.
ANY-Parameter bei den SFC 20

Diese Systemfunktion bezitzt je zwei Parameter mit dem Datentyp ANY
An diesem Parametern können Sie (im Prinzip) einen beliebigen Operanden,
eine beliebige Variable oder einen beliebigen absolutadressierten Bereich
anlegen.
Verwenden Sie eine Variable mit zusammengesetzten Datentyp, kann es
nur eine "komplette" Variable sein; Komponenten einer Variablen
(z.B. einzelne Feld- oder Struckturkomponenten) sind nicht zugelassen.
Für die Angabe eines Absolutadressierten Bereichs verwenden Sie den ANY-Zeiger.
Bei einem ANY-Zeiger vom Typ BOOL (z.B. bei einem Feld) muss die
Länge durch 8 teilbar sein.
Sie können auch einzelne Variablen mit dem Datentyp STRING kopieren.
Allerdings verhalten sich in diesem Fall der AWL-Programmeditor und der
SCL-Programmeditor unterschiedlich.
Wenn Sie an einem Bausteinparameter vom Datentyp ANY einen Aktual-
parameter anlegen, der in den temporären Lokaldaten liegt, geht der
Editor davon aus, dass dieser Aktualparamter die Struktur eines ANY-
Zeiger aufweist. Sie können auf diese Weise in den temporären Lokaldaten
einen ANY-Zeiger aufbauen, den Sie zur Laufzeit verändern können, d.h.
Sie können den Bereich variable gestalten.

gruss helmut
 
...du kannst doch ganze Felder kopieren, bei deinem ANY-Zeiger muss du doch die Länge angeben...die Variablen müssen nur hintereinander stehen...
 
Zurück
Oben