DBs kopieren

mdosch

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


ich habe mehrere DBs in einer Steuerung (317T-2 DP) denen verschiedene Daten wie z.B. Positionen (REAL) oder Errors (BOOL) abgespeichert sind und möchte diese in einer anderen Steuerung (315-2 DP) zugänglich machen.

Meine Vorgehensweise:

* DBs von der einen Steuerung in die andere kopiert.

* Änderungen im Programm vorgenommen:
** Daten der DBs mit SFC20 (BLKMOV) in die Ausgangsbereiche der SPS kopiert
** Daten mittels Profibus DP übertragen
** Daten mit SFC20 in die DBs kopiert

Somit sollten nun die Daten auch in der zweiten Steuerung abgefragt werden können.
Wenn ich jedoch in der zweiten Steuerung den DB1 oder DB2 öffne fehlen Namen und Kommentare. Im DB5 sind diese jedoch vorhanden.

DB1 und DB2 unterscheiden sich wie folgt von DB5:

* Erstellsprache TechObj, statt DB
* Typ Datenbaustein abgeleitet von UDT 12, statt Datenbaustein

Gibt es eine Möglichkeit diese Informationen in die andere Steuerung zu übertragen oder muss ich das alles per Hand eingeben?


Gruß
Martin
 
Hallo Martin,

Du musst noch den DB aus dem Offline-Projekt kopieren. Denn die Kommentare etc. gibt es nur Offline.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
* DBs von der einen Steuerung in die andere kopiert.

@Gebs,
ich habe die DBs auch offline kopiert. Im Simatic Manager mittels "Rechtsklick -> kopieren" und "Rechtsklick -> einfügen".
Das merkwürdige ist ja, dass ich bei allen 3 DBs gleich vorgegangen bin und die Namen und Kommentare nur im DB5 vorhanden sind.
Deswegen dachte ich es liegt vielleicht am unterschiedlichen Typ oder der unterschiedlichen Sprache.

Edit: Ich habs gelöst. Einfach den Baustein UDT12 auch kopieren brachte die Lösung da die beiden Bausteine davon abgeleitet sind. Typisch, ewig lange rumgegrübelt und rumprobiert aber kaum rafft man sich dazu auf im Forum um Rat zu fragen fällt einem die Lösung wie Schuppen von den Augen. :)
 
Zuletzt bearbeitet:
Hab jetzt ein kleines Testprogramm erstellt und komischerweise tauchen im Slave in bestimmten DBs keine Daten auf. :(
Beim SFC 20 BLKMOV bekomme ich als Rückgabewert 31952, in der Hilfe fand ich aber zu diesem Wert keine Fehlermeldung.
 
Zuletzt bearbeitet:
Ich habe gerade nochmal ein bisschen was über den SFC 20 gelesen und habe festgestellt, dass viele Probleme durch falsche ANY-Pointer entstehen, deswegen schreib ich hier exemplarisch mal einen SFC 20 Aufruf rein.

Code:
 CALL  "BLKMOV"
       SRCBLK :=P#E 128.0 BYTE 32
       RET_VAL:=MW103
       DSTBLK :=P#DB1.DBX40.0 BYTE 32
      NOP   0

Ist die Syntax so richtig?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab jetzt ein kleines Testprogramm erstellt und komischerweise tauchen im Slave in bestimmten DBs keine Daten auf. :(
Beim SFC 20 BLKMOV bekomme ich als Rückgabewert 31952, in der Hilfe fand ich aber zu diesem Wert keine Fehlermeldung.

Du musst die Fehler aber in Hex nachschlagen (7CD0). Hab Ich aber auch gerade gemacht, den gibts nich... würde da mal den Siemens Support mit belästigen!
 
Hab jetzt ein kleines Testprogramm erstellt und komischerweise tauchen im Slave in bestimmten DBs keine Daten auf. :(
Beim SFC 20 BLKMOV bekomme ich als Rückgabewert 31952, in der Hilfe fand ich aber zu diesem Wert keine Fehlermeldung.
Bist Du sicher, daß der RET_VAL 31952 = W#16#7CD0 ist? Das ist kein Fehlercode.
Was sagt das BIE-Bit in dem Fall?

F1 zu SFC20
Falls das real vorhandene Ziel- oder Quellfeld kleiner ist als die Größe des parametrierten Speicherbereichs für Quell- oder Zielfeld (Parameter SRCBLK, DSTBLK), werden keine Daten übertragen.

Code:
 CALL  "BLKMOV"
       SRCBLK :=P#E 128.0 BYTE 32
       RET_VAL:=MW103
       DSTBLK :=P#DB1.DBX40.0 BYTE 32
      NOP   0

Ist die Syntax so richtig?
Ja.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Prozessabbild geht bis 127.7 und daran lag auch der Fehler. :)
Danke.

Habe aber leider schon wieder den nächsten Fehler. :(

Im Baugruppenzustand der 317T-2 DP bekomme ich folgende Fehlermeldung:

Schreibfehler beim Zugriff auf den DB
Unzulässige DB-Nummer: 1
Angeforderter OB: Programmierfehler-OB (OB 121)
Prioritätsklasse: 1
interner Fehler, kommendes Ereignis

Ich bin da relativ ratlos woher dieser Fehler plötzlich kommen könnte. :confused:
Ich kopiere lediglich Daten aus den DBs DB1, DB2 und DB5 in den Ausgangsbereich und übertrage sie per Profibus.
Jedoch bekomme ich nur bzgl. DB1 diese Meldung und nicht bei den anderen. Habe auch so spontan keine mögliche Fehlerquelle gefunden. :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe jetzt in dem FC, in dem ich die DBs in die Ausgangsbereiche kopiere, alles mit DB1 per Sprunganweisung "auskommentiert".
Der Fehler tritt aber immer noch auf. Komischerweise hab ich aber sonst nichts am Programm geändert, was Bezug auf den DB hat. :confused:
 
Schreibfehler beim Zugriff auf den DB
Unzulässige DB-Nummer: 1
Angeforderter OB: Programmierfehler-OB (OB 121)
Prioritätsklasse: 1
interner Fehler, kommendes Ereignis

Gehe zu Baustein anklicken (Im Diagnosepuffer)

dort sollte dein fehlerhafter Aufruf sein
 
eine Zeile oberhalb des Fehlers markieren

dann sollte "Baustein öffnen " erscheinen
 

Anhänge

  • b1.jpg
    b1.jpg
    39,3 KB · Aufrufe: 12
  • b2.jpg
    b2.jpg
    47,1 KB · Aufrufe: 8
Zuletzt bearbeitet:
Leider kann ich keine Zeile oberhalb des Fehlers markieren, da der gesamte Diagnosepuffer mit diesem einen Fehler gefüllt ist und das Feld ausgegraut bleibt, egal welchen Eintrag ich markiere. :(

Edit: Ich hänge mal ein Bild an...
 

Anhänge

  • fehler.JPG
    fehler.JPG
    69,6 KB · Aufrufe: 17
Zuletzt bearbeitet:
Zurück
Oben