DB mit AUF öffnen braucht mann das heute noch?

winnman

Level-3
Beiträge
2.197
Reaktionspunkte
390
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum kommen immer wider diese Befehle: AUF DBxy?
meines Wissens kann ich in Step7 einfach auf den DB zugreifen
zb U DB100.dbx100.0

warumm soll ich zuvor AUF DB 100 stellen?

zu S5 Zeiten war das was anderes.

klärt mich bitte auf.
 
Ja, braucht man noch, manchmal.

Stichpunkte:
- indirekte Adressierung, Schleifen
- innerhalb von FC's mit parametrierbarem BLOCK_DB
- Zykluszeit sparen
- AUF DI100 kann man z.B. auch ganz gut brauchen
- "DB100." macht im Übrigen nichts anderes als "AUF DB100"

Wenn es geht, ziehe ich allerdings den vollqualifizierten Zugriff vor, allein aus Lesbarkeits- (Kommentare) und Referenzgründen.

Gruß
Flinn
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei einfachen binären Verknüpfungen i(Kop - FUP) ist "Auf DBxxx" schlechter Stil.
Wenn du direkt zugreifst (U DB100.DX0.5), dann taucht das Datenbit auch korrekt im Querverweis auf.
Bei indiekten Zugriffen und Pointern ist "AUF DBxxx" nötig, da bei "einfachen" Pointern der DB nicht mit übergeben werden kann.

Gruß
Dieter
 
mann lernt immer wider dazu.

Mit Pointern hab ich normalerweise nicht´s zu tun.

Bei den Programmen an denen ich biher rumgebastelt hab ist mir das nie aufgefallen.

Bei uns steht eigentlich FUP und in "schwierigen" Fällen "einfache AWL" auf dem Vorderdrund.

Schwerpunkt ist immer: Aus dem Programmausdruck soll auch noch der einfache Betriebelektriker (da zähle ich mich auch noch dazu) die Funktion erkennen können.

Es lässt sich eigentlich alles damit lösen auch wenns Programmiertechnisch schönere Lösungen gäbe und eventuell ein bisschen aufwendiger ist.

Für Kommunikation, . . . lässt sich das alles so kapseln un d entsprechend kommentieren, dass auch das verständlich wird.
 
Zuletzt bearbeitet:
@winnman

Die "einfachen" Zeiten für Betriebselektriker neigen sich - meiner Meinung nach - dem Ende zu.
Warum:

  • Es wird immer mehr Funktionalität in SPS und HMI verlagert. An Anlagen an denen früher eine SPS und ein Leit-PC stand, ist jetzt eine SPS und ein Panel. Darüber laufen Berechnungen, Kommunikation und mehr.

  • Die Diagnosefunktionen für einfache Fehler werden immer besser. Eigentlich eine gute Geschichte aber: Der Elektriker kommt nur noch selten mit der Software in Berührung. In vielen Fällen hört es am Ein- oder Ausgang auf. Der Haken: Wenn es mal kompliziert wird, dann "kennt" der Elektriker die Anlage gar nicht.
Wenn ich mir die aktuellen Tendenzen anschaue, dann gibt es in Zukunft 2 Sorten Elektriker: Teilewechsler und Spezialisten. Drum schau dir auch mal intensiv die "gekapselten" Funktionen an.

Gruß
Dieter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenns sein muss, dann komm ich schon mit den "gekapselten" zurecht, aber meine Kollegen stehen dann voll auf der Platte (meist auch schon bei ein bisschen einfacher AWL :) drum bin ich auch hinter "Einfacher" Programmierung her :)
 
ich brauche Global-DB gar nicht mehr ...

Ich nutze Global-DB fast ausschließlich, weil ich das rumpoken in IDB für unsauber halte, mit gewissen Ausnahmen, die vom Softwaredesign abhängen. IDB sind für mich Lokaldaten, die sind auch in C# .Net und anderen Programmiersprachen nicht von außen zugänglich.
 
Ich verwende Global-DB sehr viel.
Der Grund ist schlussendlich das sehr viele von meine Parameter beobachtet oder geändert werden kann auf den HMI. Und wenn die Parameter mit ein HMI verknüpft sind, bin ich gewöhnt die Daten in wenige DBs zu sammeln.
Wenn erst erzeugt ändern diese Global-DBs sich sehr selten.

Ich verwende auch Instanz-DBs, und "poken" problemlos mit die IDBs in andere Bausteine als die verknüpfte FBs. (Diese Diskussion hatten wir schon. Ich gehörte zu der Minderheit).
Die FBs und IDBs ändern sich relativ oft, und dank symbolisches programmieren wird es automatisch überall im program aktualisiert.

Zurück zum Thema.

Das low-level basteln mit DBs wird mehr oder weniger mit SCL abgelöst. In die nächste generation von STEP7 ist SCL als standard inkludiert (endlich !).
"Zykluszeit sparen" denke ich ist heute von sehr geringe bedeutung in verhältniss zu code das gut lesbar und einfach zu warten ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das low-level basteln mit DBs wird mehr oder weniger mit SCL abgelöst. In die nächste generation von STEP7 ist SCL als standard inkludiert (endlich !).
"Zykluszeit sparen" denke ich ist heute von sehr geringe bedeutung in verhältniss zu code das gut lesbar und einfach zu warten ist.

Aber wenn das gut lesbar sein soll:


Code:
FOR I := 1 TO Anzahl DO
       Wert := DWORD_TO_DINT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_Nr)).DD[StartP+((I-1)*4)]);
...

Ich mein immer noch, für jedes Problem gibt es ganz sicher die jeweils besser geeignete Programmiersprache, speziell mal auf SPS abgestellt. Ich würde nie auf die Idee kommen, rel. komplexe bitorientierte Freigaben, z.Bsp. für Horizontalachsen in SCL auszuprogammieren, dafür ist dann doch KOP/FUP/AWL übersichtlicher.
 
ähm, der Thread legt aber heute sehr schnell alle Problemme der
Automatisierung offen. Jetzt sind wir bei dem Punkt, was ist die Richtige
Programmiersprache.
 
ich glaub aber, dass wir in absehbarer zeit zu "was ist die richtige hardware?" schwenken und dann geht der stellungskrieg erst richtig los...

wobei ich ja finde, das in einer 400er instanzdaten besser genutzt werden
können wie in eine 300er. Die 400er hat ganz einfach die Status LED's
besser angeordnet. Dabei sollte mann beachten, das z.b. der Hans Beckhoff
bei der Entwicklung seiner Steuerung auf sämtliche DB's verzichtet hat.
 
Zum Thema
Warum kommen immer wider diese Befehle: AUF DBxy?
meines Wissens kann ich in Step7 einfach auf den DB zugreifen
zb U DB100.dbx100.0
warumm soll ich zuvor AUF DB 100 stellen?
Es gab bis die vorige Generation von CPUs eine merkbare Zykluszeit sparniss wenn man von DB100.DBX100.0 verzichtete.
Mit die heutige Generation glaube ich das die Zykluszeit ist gleich oder fast gleich.

Es gibt andere Gründe dafür das man AUF verwenden wurde, aber mit SCL, UDTs und AT besteht dieser Gründe meistens nicht mehr.
 
Zuletzt bearbeitet:
Zurück
Oben