Prüfen ob DB vorhanden

GregorH

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

Ich muss ein Programm erstellen, das mit einem Pointer auf eine Adresse in einem Datenbaustein zeigt. Unter anderem sollen die Datenbausteinnummer und die Byteadresse vom Benutzer eingegeben werden können, um einen Wert auszulesen.

Meine Frage:
Angenommen, der Benutzer gibt eine falsche Datenbausteinnummer ein, also von einem DB, der nicht vorhanden ist.

Wie kann ich überprüfen, ob ein Datenbaustein existiert?
(SFC 23 bringt mich nicht weiter)

kurzer Programmauszug:

L #Datenbausteinnr
T #hlpword
AUF DB [#hlpword]


Suche nun schoin sehr lange nach nach Möglichkeiten, habe aber noch nichts gefunden.
Freue mich über Antwort!

Grüße
Gregor
 
Hallo

Möglichkeit:

OB121 in die SPS und im Programm dann auf die Bausteinlänge abfragen.

Nachteil: ähnlich langsam wie SFC 24 Test_DB.

Frage: was spricht gegen den SFC 24?


Gruß
 
Danke für die Antwort

Den OB121 soll ich nicht verwenden.
Im Handbuch der cpu (CPU318-2) sind die sfc aufgelistet, die sfc 24 ist aber nicht vorhanden.
Die DBs sollen nicht erstellt werden, es soll nur ein bestimmter Wert ausgelesen werden.

Gibt es nicht eine andere Möglichkeit?

Ähnlich wie die Abfrage der Länge des DB mit DBLG muss es doch auch eine Abfrage der DB-Nummer geben??

Gruß
Gregor
 
Zuletzt bearbeitet:
Genau das macht ja der SFC 24, er prüft ob der Baustein da ist:


siehe:

Operationsliste S7-300
CPU - Daten
CPUs 312 IFM bis 318-2 DP
6ES7398-8AA03-8AN0
Ausgabe 10/2001

Seite 120:
SFC 24 für 318: 30µs.

Was spricht dagegen? Dass der OB121 unschön ist, ist mir klar, aber gegen den SFC24 spricht nur die Ausführungszeit, oder?

Gruß




Danke für die Antwort

Den OB121 soll ich nicht verwenden.
Im Handbuch der cpu (CPU318-2) sind die sfc aufgelistet, die sfc 24 ist aber nicht vorhanden.
Die DBs sollen nicht erstellt werden, es soll nur ein bestimmter Wert ausgelesen werden.

Gibt es nicht eine andere Möglichkeit?

Ähnlich wie die Abfrage der Länge des DB mit DBLG muss es doch auch eine Abfrage der DB-Nummer geben??

Gruß
Gregor
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Heißt das, ich kann den sfc 24 unabhängig vom ob121 benutzen?
kenne mich nicht so gut aus.

wie wende ich den sfc 24 dann in diesem Fall an?

Die Ausführungszeit ist, wenn es nicht anders geht, wohl nicht so wichtig.

Gruß
Gregor
 
Call SFC 24 im Simatic Manager AWL Editor eingeben und dann "F1" drücken!

Wenn die Zeit wirklich kritisch ist bringt nur ein Wechsel der CPU etwas!


Gruß

Heißt das, ich kann den sfc 24 unabhängig vom ob121 benutzen?
kenne mich nicht so gut aus.

wie wende ich den sfc 24 dann in diesem Fall an?

Die Ausführungszeit ist, wenn es nicht anders geht, wohl nicht so wichtig.

Gruß
Gregor
 
Es würde doch auch reichen, den SFC beim start der CPU aufzurufen.
Also im OB100, dann ist bekannt ob vorhanden oder nicht.
Anschliessend kann man ja die Eingaben des Users entsprechend begrenzen bzw kontrollieren!
 
wenn ich das richtig verstehe gibt ja der benutzer eine db-nummer ein.
warum auch immer.

dort wo du diesen db benutzt rufst du vorher die sfc auf.
ist der db nicht vorhanden überspringst du die anweisungen wo der db genutzt wird, oder du erzeugst den db mit einer sfc (nummer hab ich im mom nicht im kopf)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Programm soll unabhängig in verschiedenen Maschinen eingesetzt werden, deshalb die Möglichkeit die DB-Nummer einzugeben.
Habe es so geschrieben, dass es bei nicht vorhandenem DB eine Fehlermeldung ausgibt. Das Erstellen eines neuen DBs ist nicht nötig.

Die Sache mit der Zeit ist übrigens auch kein Problem.

Also nochmals vielen Dank für eure Hilfe!!!

Schönes Wochenende,
Gruß
gregor
 
Zurück
Oben