Gesamten Inhalt eines DB in einen anderen Transferieren

Wagginator

Level-1
Beiträge
45
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wie kann ich den Inhalt eines Global-DB mit einfachen Mitteln in einen anderen kopieren?(Step7 5.4, S7 300-Station)
Hintergrund: Die zu projektierende Maschine kann unterschiedliche Produktgrößen (Formate) fahren. Jedes Format benötigt andere Parameter.
Ich will nun für jedes Format einen Parameter_FormatX_DB erstellen. Nach der Formatwahl soll der Inhalt des entsprechenden Parameter DB in einen Rangier DB kopiert werden. So kann ich unabhängig vom Format das gleiche Programm nutzen. (FB mit unterschiedlichen Aufrufen und Zuordnungen währe zu umständlich, da es sich um mehr als 400 Parameter handelt).

L Parameter_DB
T Rangier_DB
Funktioniert ja leider nicht:ROFLMAO:!
 
Code:
*
      CALL  "BLKMOV"
       SRCBLK :=P#DB100.DBX 0.0 BYTE 32
       RET_VAL:=#return
       DSTBLK :=P#DB101.DBX 0.0 BYTE 32
 
Hallo vierlagig,
das sieht ja echt ganz einfach aus. Leider funktioniert es nicht.
Wozu benötige ich den Rückgabewert? Muß der Ziel DB schon mit Variablen gefüttert werden, oder reicht ein lehrer DB? Benötige ich auch irgendwelche
Anstoß- und Fertig-Bits? Wie groß ist die maximale Zugriffsbreite, mein DB wird bestimmt über 1000 Byte groß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Rückgabewert sagt dir z.B. ob der Kopiervorgang erfolgreich war (siehe dazu Step7-Hilfe von dem SFC).

Es müssen für die Funktion des Ganzen natürlich Quell- und Zielbereich vorhanden sein ...

Gruß
LL
 
Hallo vierlagig,
das sieht ja echt ganz einfach aus. Leider funktioniert es nicht.
Wozu benötige ich den Rückgabewert? Muß der Ziel DB schon mit Variablen gefüttert werden, oder reicht ein lehrer DB? Benötige ich auch irgendwelche
Anstoß- und Fertig-Bits? Wie groß ist die maximale Zugriffsbreite, mein DB wird bestimmt über 1000 Byte groß.
Der Ziel-DB sollte schon vorhanden sein und so deklariert sein wie der Quell-DB.

Die maximale Zugriffsbreite der SFC20 kannst Du in der Step7 Onlinehilfe nachlesen.([Edit]: kann man nicht, 1000 Byte sollten aber kein Problem sein[/Edit])
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die maximale Zugriffsbreite der SFC20 kannst Du in der Step7 Onlinehilfe nachlesen.

kannst du? ich finds grad nicht ... alles andere wurde ja schon gesagt und lass dir noch eins mit auf dem weg gegeben sein: LIES! LIES! LIES!

zum triggern:

Code:
*
      U   #xCopy
      SPBN noco

      CALL  "BLKMOV"
       SRCBLK :=P#DB100.DBX 0.0 BYTE 32
       RET_VAL:=#return
       DSTBLK :=P#DB101.DBX 0.0 BYTE 32

noco: NOP 0
 
Wie groß ist die maximale Zugriffsbreite, mein DB wird bestimmt über 1000 Byte groß.

Siehe die folgende Siemens-FAQ:

Maximal kopierbare Datenmenge:

Gemäß CPU-spezifischen Einschränkungen.

Welche Systemfunktionen können zum Kopieren von Daten verwendet werden und welche Unterschiede sind zwischen den einzelnen SFCs zu beachten?

Wenn die Datenmenge zu groß wird, kannst Du den SFC20 BLKMOV auch mehrmals hintereinander aufrufen, also mit jedem Aufruf des SFC20 BLKMOV immer nur einen Teil der Datenmenge kopieren.

Gruß Kai
 
Danke für die Antworten,
habe alles versucht wie beschrieben, ohne Erfolg.
Ich weiß einfach nicht, was ich falsch mache.
Ich verstehe auch nicht warum die Aktualwerte in meinem DB online alle auf 0 sind.
Teste gerade zu Hause mit PLCSIM, werde es morgen noch mal inner Baugruppe testen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast Du Deinen Datenbaustein initialisiert?

- Datenbaustein im Simatic-Manager öffnen

- Auf "Ansicht/Datenansicht" gehen

- Unter "Bearbeiten/Datenbaustein initialisieren" den Datenbaustein initialisieren

- Den Datenbaustein speichen und neu in die SPS/PLCSIM übertragen

Gruß Kai
 
Danke Kai,
das war echt der entscheidene Hinweis.
Jetzt funkt alles.
:TOOL:

Verstehe ich nicht. Wieso sind nach einem Blockmove per Online-Programm die Aktualwerte im Online-DB erst nach Offline-Initialisieren da? Welcher DB wurde initialisiert: der Quell- oder der Ziel-DB?

Aber hauptsache es läuft. Das ist schon tool.:p

Gruß
Flinn
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehe ich nicht. Wieso sind nach einem Blockmove per Online-Programm die Aktualwerte im Online-DB erst nach Offline-Initialisieren da? Welcher DB wurde initialisiert: der Quell- oder der Ziel-DB?

Aber hauptsache es läuft. Das ist schon tool.:p

Gruß
Flinn

Na ich denke, er hat den Quell-DB erstellt, Werte eingetragen und ihn dann in die SPS gespielt. Dachte immer, wenn er noch gar nicht in der SPS ist, werden die Aktualwerte automatisch auf die Offlinewerte gesetzt. Wer weiß vielleicht gabs den Baustein schon, dann muß er natürlich initialisiert werden.
 
Zurück
Oben