Auf Variablen im Instanzdatenbaustein direkt zugreifen

esse

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

Ich bin's schon wieder mit einer Frage.

Darf man direkt auf Variablen in einem IDB zugreifen (auch schreibend). In der S......-Hilfe hab ich meiner Meinung nach gelesen das nur der zugehörige FB darauf zugreifen sollte.

Ich denke aber (ich weiss es nicht besser) das ein direkter Zugriff (symbolisch) kein Problem darstellen sollte - ODER DOCH?


SG
esse
 
was man darf und was nicht entscheidet am ende der kunde. (im besten fall)

grundsätzlich ist es möglich, da der instanz-DB wie ein global-DB behandelt werden kann.
ob das sinnvoll ist oder nicht, was es für auswirkungen haben kann und in wie weit du damit dann noch eine saubere programmierung herstellen kannst sei jetzt deinem urteilsvermögen und den kommentatoren nach diesem post überlassen ...

ich habe meine meinung dazu im forum schon öfter zum ausdruck gebracht. :rolleyes: (wobei das mittlerweile mehr und mehr verschwimmt...)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
4l hat recht, es ist möglich
Aber wer verantwortungsvoll programmiert unterlässt es. Die symbolische programmierung bei S7 ist keine. Sie ist lediglich auf die absolute aufgesetzt. Bei Rockwell gibt es keine absolut adressen mehr (allerdings auch keine DBs) da wäre so etwas möglich.
Besonders kritisch wird es, wenn ein anderer kollege auf absolut umstellt, und instanzdbs verändert, weil er es nicht besser weiss.
Das ergebnis kann erstaunlich sein.
Auch wenn merker aus der mode gekommen sind, sie habe durchaus vorteile.

Gruss
Audsuperuser
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es geht ohne grössere Probleme. Genau so tu ich zeit viele Jahren.

Einzigste Punkt wo man aufmerksam sein muss:
Der FB Deklarationsteil darf nicht geändert werden, wenn man mit Inbetriebnahme oder Instandhaltung auf ein laufende Anlage zu tun hat.
Der Grund ist, das wenn der Deklarationsteil und somit auch der entsprechende IDB geändert wird, muss alle IDBs und Programm Bausteine das die IDB anspricht neu auf den CPU geladen werden.

Solange das man offline und symbolisch programmiert, kan man tun wie man will.

Dasselbe gelt für Programme die mit aufwendige DBs + UDTs erstellt wird.

Wenn man so tun, muss man voraus die FBs erzeugen und testen, so das man bei laufende Anlage kein bedarf hat den Deklaration zu ändern. Es fordert damit mehr Vorarbeit, aber es lohnt sich, auch für andere Grunde als nur den möglicheit IDBs direkt zuzugreifen.
 
Hab mir durch das ändern eines FB´s auch mal ins Bein geschossen. Deshalb seh ich das genau so wie 4-L u. Perf.
 
Ich mache es manchmal , aber nur bei fertigen Bausteinen von Siemens, wie z.B. Regler-Bausteine. Da will ich in der Visu oft viele Parameter ändern können und diese über einen Parametrier-DB zu schleifen ist mir schlicht zu viel Arbeit. Sollwert, Istwert , Stellgrad usw werden natürlich übergeben, aber manchmal will der Kunde z.B. zum test die Änderungsgeschwidigkeit des Sollwert ändern usw.
Aber sobald es um einen änderbaren FB geht, gilt ein absolutes Nein, da man da nicht drauf achten kann.
Wenn man dann einen FB ändert und der Übersicht wegen, einen Parameter einfügt ändern sich schnell mal alle adressen im Instanzdb.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach meiner Meinung gehört ein DI dem entsprechenden FB.
Mir ist keine Situation bekannt wo der DI von aussen verändert werden muss.
Müssen Werte geändert werden, dann ist es notwendig den FB so zu erweitern, dass die Parameter vom FB in andere Variablen z.B Merker oder Global DB geschrieben und ggF dort wieder abgeholt werden.

bike
 
Ich mache es manchmal , aber nur bei fertigen Bausteinen von Siemens, wie z.B. Regler-Bausteine. Da will ich in der Visu oft viele Parameter ändern können und diese über einen Parametrier-DB zu schleifen ist mir schlicht zu viel Arbeit. Sollwert, Istwert , Stellgrad usw werden natürlich übergeben, aber manchmal will der Kunde z.B. zum test die Änderungsgeschwidigkeit des Sollwert ändern usw.
Aber sobald es um einen änderbaren FB geht, gilt ein absolutes Nein, da man da nicht drauf achten kann.
Wenn man dann einen FB ändert und der Übersicht wegen, einen Parameter einfügt ändern sich schnell mal alle adressen im Instanzdb.

Genauso habe ich es selber schon bei einigen Projekten gemacht.
Zugriff auf Instanz-DBs nur bei Standardbausteinen für Motoren, Ventile, Messungen, Zähler etc.
Dort sind meine nach außen hin sichtbaren oder veränderbaren Variablen gekennzeichnet, z.b. durch gruppieren in Strukturen mit passendem Namen (z.B. PUBLIC / PRIVATE oder BEFEHLE / STATUS_RO / INTERN).
Der Zugriff erfolgt dann z.B. mit "Pumpe_1".PUBLIC.einschalten.
Wenn das konsequent umgesetzt wird ergibt das auch ein schlüssiges Konzept

Da Step7 die Objektorientierung sowieso nicht so richtig unterstützt, bringt mir ein "freifliegender" Merker auch nicht mehr Kapselung als direkter Zugriff auf den Instanz DB.

P.S.:
So ganz im Reinen bin ich mir mit dem Zugriff auf Instanzen selber auch nicht, dafür bringt es erhebliche Vorteile bei der Programmierung mit sich. Und da die Rangiererei entfällt können hier auch keine Fehler mehr entstehen.
 
Zurück
Oben