Datenbausteinaufruf wie bei S5 ... A DB...

AndreK

Level-1
Beiträge
415
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ich möchte:
1. In der IN.Schnittstelle des FC einen Daten DB angeben
2. Den im FC dann aufschlagen, wie zu S5 Zeiten mit A DB (xx)
3. in dem FC dann die Daten des DB bearbeiten können... ohne jedesmal DBxx.DBWxx eingeben zu müssen, einfach nur DBWxx

Mir erschließt sich die schreibweise dafür nicht...
zu 1. in welchem Format in der IN Schnittstelle ? Als z.b. Byte und dann indirekt den DB öffnen?
zu 2. call DB (byte) wird wohl nicht gehen... was ist unter S7 der Befehl für "A DBxx"
zu 3. kann man dann direkt so schreiben z.B.
L MW 100
T DBW2

Ich habe das in der Form nocht nicht gemacht! Und in diesem Fall ist ein Instanz DB nicht gewünscht.
Ich möchte eine Maschinenfunktion (die ich noch oft in anderen Anlagen brauchen werde) erzeugen. Mir ist es aber zu blöde bei kleinen Anlagenanpassungen jedesmal den I-DB neu zu erzeugen...
Dann lieber eine Standard Datenablage... ich muß nur halt die DB Nummer umbennen können und den Aufruf des Ablagefachs für den FC jeweils anpassen können.

Danke für eure Mühe und Geduld... ich werde mir auf jeden Fall noch mal die "F1" Taste unter S7 zu rate ziehen...
 
INT, BYTE ... egal

und

Code:
*
      L     #db_nr_in
      T     #db_nr_temp         //muß umkopiert werden, da DB [#nr] nicht mit IN-funktioniert
 
      AUF   DB [#db_nr_temp]
 
Zuletzt bearbeitet:
Muss denn der DB- Aufruf am in- Parameter des FC variabel sein?

Wenn nicht, den IN des FC einfach als Block_DB deklarieren.

.
 

Anhänge

  • Block_db.jpg
    Block_db.jpg
    51,8 KB · Aufrufe: 66
Zuletzt bearbeitet:
Und wie...

... rufe ich diesen im Programm auf...

Wenn ich iin der IN Schnittstelle als Beispiel
DD as BlockDB einfüge...

Wie rufe ich den dann in AWL auf?
AUF DB [DD] geht nicht...?

ich könnte auch einfach in der ersten AWl zeile den AUF DB xx einfach ändern... aber ich wollte auch wissen wie es geht ;-)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
... rufe ich diesen im Programm auf...

Wenn ich iin der IN Schnittstelle als Beispiel
DD as BlockDB einfüge...

Wie rufe ich den dann in AWL auf?
AUF DB [DD] geht nicht...?

mit
Code:
*
AUF   #DD

beim bausteinaufruf steht dann DBxy am IN DD

...danke OHGN, schöne idee :rolleyes:
 
Hier mal ein Beispielprojekt, wie die DB-Nummern Übergabe an FCs/FBs funktioniert
 

Anhänge

  • Example.zip
    31 KB · Aufrufe: 37
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe das in der Form nocht nicht gemacht! Und in diesem Fall ist ein Instanz DB nicht gewünscht.
Ich möchte eine Maschinenfunktion (die ich noch oft in anderen Anlagen brauchen werde) erzeugen. Mir ist es aber zu blöde bei kleinen Anlagenanpassungen jedesmal den I-DB neu zu erzeugen...
Dann lieber eine Standard Datenablage... ich muß nur halt die DB Nummer umbennen können und den Aufruf des Ablagefachs für den FC jeweils anpassen können.

Hallo!

Warum ist eigentlich kein Instanz DB erwünscht?

Wenn du kleine Programmänderungen durchführst und keine neuen Variablen einfügst / änderst dann musst du keinen neuen Instanz DB generieren.
Wenn du neue Variablen brauchst dann musst du dies sowohl im normalen DB ändern oder auch im FB was zur folge hat das du beide DB's in die SPS laden müsstest. Also auch keinen Vorteil dadurch bekommst.

Der große Nachteil an deiner Variante ist das du keine Symbolik mehr hast weil du ja mit L DBWx auf die Daten zugreifst.
Eine andere Möglichkeit die es noch gibt deinen DB Variable zu machen für ein neues Projekt ist wenn du Symbolisch Programmierst und auf den Datenbausteinbereich mit vollem Namen zugreifst. Also L "Meine_Daten".Daten
Mit dieser Variante bräuchtest dann nur im neuen Projekt die DB Nummer ändern, in der Symboltabelle ebenfalls die DB Nummer ändern und dann Bausteinkonsistenz prüfen. Danach wird Überall im Programm die DB Nummer geändert. Also hinter "Meine_Daten" würde sich jetzt eine andere DB Nummer verbergen.

godi
 
Ok

ich stimme dir in allen Punkten zu. Das mit der Symbolik ist nicht so wichtig. Es es nicht die große Komplexität der einzelnen Komponenten.

Ich möchte das jetzt so machen, weil die Grundstruktur der Funktion, also der Ablauf der Schritte ist immer gleich. Es kann aber immer sein das in den verschiedenen Anlagen da mal ein Sensor dazu kommt oder woanders einer wegfällt die ganze Aufrufprozedur geändert werden muß.

So kann ich mich bei der IBN hinsetzen und ohne großartig jedesmal den I-DB neu zu setzen, und damit die schon angepassten Parameter zu überschreiben, einfach was hinzufügen.

Zu Step 5 Zeiten habe ich einfach den Online DB kopiert, was hinzugefügt und wieder zurückgeschieben... war das schön. Verstehe nicht wieso das unter Step7 so blöd gelöst wurde...
 
Super, ich war am selben Problem haengen geblieben. Allerdings muss hier dann #db_nr_temp als INT deklariert werden. Als Byte funktioniert es nicht.

Gruesse,

Robert
 
Zurück
Oben