DBD und DBW

siemensdepp

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS´ler

Bin gerade beim verstehen von registerindirekten und speicherindirekten Adressierung. In meinem Buch wird immer von einem DBD oder DBW gesprochen. Nur wenn ich in das Datendoppelwort einen Wert transferieren will, geht PLCSIM auf STOP. Laut Buch sollte es aber gehen
Was mach ich falsch?

P.S. Ich weiß, dass ich auch MW nehmen könnte und das es nichts mit registerindirekten und speicherindirekten zu tun hat. Man(n) will es ja verstehen, was der Autor schreibt.

L 5
L 10
+i
T DBW10
 
Hallo.. bevor du irgendwo ein wort hintransferieren kannst musst du es anlegen in einem datenbaustein...

allerdings muss der datenbaustein angelegt sein, auf die plcsim eingespielt und im datenbaustein muss der bereich existieren!

also t db1.dbw 10
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vor dem direkten Zugriff auf DB-Inhalte muß man den DB einmal mit AUF öffnen (aufschlagen) oder besser den vollqualifizierten DB-Zugriff DB1.DBW10 benutzen, dann wird automatisch der richtige DB aufgeschlagen:
Code:
L   5
L   10
+I
[COLOR="Red"]AUF DB1[/COLOR]
T   DBW10

// statt AUF + T besser:
T   DB1.DBW10

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, da war das Beispiel zufällig unglücklich gewählt.

Das hier "verbessert" Step7 nicht automatisch:
Code:
[COLOR="Red"]AUF DB1[/COLOR]
L   5
L   10
+I
T   DBW10
L   0
T   DBW12
Das muß man schon selber besser so schreiben:
Code:
L   5
L   10
+I
T   DB1.DBW10
L   0
T   DB1.DBW12

Harald
 
OK, da war das Beispiel zufällig unglücklich gewählt.

Das hier "verbessert" Step7 nicht automatisch:
Code:
[COLOR="Red"]AUF DB1[/COLOR]
L   5
L   10
+I
T   DBW10
L   0
T   DBW12
Das muß man schon selber besser so schreiben:
Code:
L   5
L   10
+I
T   DB1.DBW10
L   0
T   DB1.DBW12

Harald

Braucht dann aber auch 2 Bytes mehr Speicher!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ab welcher Version soll das so sein?
Stimmt, bei mir verbessert Step7 V5.4 SP5 das auch nicht.

Umgekehrt wird vielleicht ein Schuh draus:
T DB1.DBW10 wird wohl in MC7 als AUF DB1 + T DBW10 umgewandelt, in AWL wird es aber so angezeigt, wie es eingegeben wurde.

Harald
 
Stimmt, bei mir verbessert Step7 V5.4 SP5 das auch nicht.

Umgekehrt wird vielleicht ein Schuh draus:
T DB1.DBW10 wird wohl in MC7 als AUF DB1 + T DBW10 umgewandelt, in AWL wird es aber so angezeigt, wie es eingegeben wurde.

Harald

d.h. wenn du einen Baustein Offline löschst, und dann von Online lädst dann kombiniert Step7 die 2 Anweisungen (sollt es zumindest, kann's grad aber nicht probiern, keine CPU da). Ich bin mir aber fast sicher das Ich das Offline auch schon mal gesehen hatte... aber vieleicht täusch Ich mich auch!)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dafür erscheint es korrekt in den Referenzdaten.
Diese paar Bytes muß man doch heutzutage nicht mehr sparen, die Referenzdaten sind mir wichtiger.

Harald

Meistens nicht, aber Ich hab schon Änderungen an CPUs vornehmen müssen wo Bausteine im OB35 aufgerufen wurden, und dieser gerade so noch schnell genug abgearbeitet werden konnte, ab und an ging die CPU aber auf Stop. Dann das Programm so geändert das ein paar Befehle wegfallen (Die AUFs). Und ab da liefs ohne Probleme. Ok, kommt selten vor, an Neuanlagen von mir auch nicht, aber manchmal muss man an Altanlagen ne schnelle Lösung finden... War auch nur zur Info an den TE gedacht!
 
Ich bin mir aber fast sicher das Ich das Offline auch schon mal gesehen hatte... aber vieleicht täusch Ich mich auch!)
Ich bilde mir auch ein, daß ich es in Verbindung mit Online schon mal gesehen habe, wenn der Offline-AWL-Baustein nicht vorhanden ist. (Deshalb habe ich Dir Deine Anmerkung auch sofort erstmal geglaubt.) Denke, da kann Step7 nicht mehr unterscheiden, ob es original ein vollqualifizierter Zugriff oder 2 Einzel-Operationen waren.

Harald
 
Ich bilde mir auch ein, daß ich es in Verbindung mit Online schon mal gesehen habe, wenn der Offline-AWL-Baustein nicht vorhanden ist. (Deshalb habe ich Dir Deine Anmerkung auch sofort erstmal geglaubt.) Denke, da kann Step7 nicht mehr unterscheiden, ob es original ein vollqualifizierter Zugriff oder 2 Einzel-Operationen waren.

Harald

Jo, Ich weis, irgendwo hab ichs gesehen. Dabei ist mir nun auch aufgefallen das Ichs in meiner ConnectionLib falsch mache. Ich wandle immer alle DB Zugriffe in Vollqualifizierte um, muss mal schauen wo das steht obs ne einzel Anweisungs bleibt oder nicht (schätze das steckt in der DBF in dem Feld mit den Kommentaren!)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jo, Ich weis, irgendwo hab ichs gesehen. Dabei ist mir nun auch aufgefallen das Ichs in meiner ConnectionLib falsch mache. Ich wandle immer alle DB Zugriffe in Vollqualifizierte um, muss mal schauen wo das steht obs ne einzel Anweisungs bleibt oder nicht (schätze das steckt in der DBF in dem Feld mit den Kommentaren!)

hallo,

dann achte auch noch auf ein TDB ...
sonst hast du mit vollqualifizierten zugriff evtl. voll daneben gegriffen ! ;)

Gruss
 
hallo,

dann achte auch noch auf ein TDB ...
sonst hast du mit vollqualifizierten zugriff evtl. voll daneben gegriffen ! ;)

Gruss

Hä??? Ich wandle doch nur ein AUF mit direkt darauf folgendem T DB.. Oder L DB.. In eine Vollqualifizierte Anweisung um (da der MC7 Code identisch ist). Da muss Ich nichts mit TDB beachten. Achso, die umwandlung mach Ich ja auch nur wenn T oder L kein Sprungziel ist.
 
Hallo,
hast recht, wenn´s direkt aufeinander folgt :cool:

Hatte wohl das hier im Kopf (war spät am Abend) :rolleyes:
DB-Register: Die Verwendung bestimmter Sprachkonstrukte kann dazu führen, dass die Inhalte von DB-Register und .... etc.... verändert werden.
Wenn TDB oder diese Sprachkonstrukte (gewollt) verwendet werden, darfst man nicht nur auf das AUF DB schauen !

Gruss nach Offenau :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich wandle doch nur ein AUF mit direkt darauf folgendem T DB.. Oder L DB.. In eine Vollqualifizierte Anweisung um (da der MC7 Code identisch ist). Da muss Ich nichts mit TDB beachten. Achso, die umwandlung mach Ich ja auch nur wenn T oder L kein Sprungziel ist.
Das macht der Step7-AWL-Editor exakt genauso in der Online-Ansicht, wenn kein Offline-Baustein zum Vergleich existiert. Hab's eben mal getestet (315-2 PN/DP).

Offline programmiert und in die CPU geladen:
Code:
      AUF   DB   101
      L     DBD    0

      L     DB101.DBD    4

      U     M      0.0
      SPB   M005

      AUF   DB   101
M005: L     DBD    0
Online-Ansicht:
Code:
      L     DB101.DBD    0
      L     DB101.DBD    4
      U     M      0.0
      SPB   M003
      AUF   DB   101
M003: L     DBD    0
* AUF..+L.. wird als vollqualifizierter Zugriff dargestellt, außer wenn das L.. ein Sprungziel ist.
* Die Leerzeilen sind online nicht vorhanden.
* Die Sprungmarke heißt anders.

In meinem Testprogramm waren weiter hinten schon 2 Sprungmarken vorhanden.
Möglicherweise existiert im Online-Programm eine unsortierte Tabelle der Sprungziele, wo die Sprungziele in der Programmier-Reihenfolge eingetragen sind und der AWL-Editor generiert dann bei der Online-Ansicht Sprungmarken-Namen nach dem Schema M<Tabellenindex>? Oder der AWL-Editor vergibt schon bei der Programmierung "absolute" Sprungmarkennummern, die die Offline-Ansicht nur darstellt?

Die Netzwerkaufteilung des Programmcodes bleibt Online erhalten. Da gibt es glaub ich eine Tabelle.

Harald
 
Möglicherweise existiert im Online-Programm eine unsortierte Tabelle der Sprungziele, wo die Sprungziele in der Programmier-Reihenfolge eingetragen sind und der AWL-Editor generiert dann bei der Online-Ansicht Sprungmarken-Namen nach dem Schema M<Tabellenindex>? Oder der AWL-Editor vergibt schon bei der Programmierung "absolute" Sprungmarkennummern, die die Offline-Ansicht nur darstellt?

Online im MC7-Code gibt es nur noch Sprungweiten (vor/zurück, Weite) und keine Labels. Die Labels werden rein vom Editor generiert.
 
In meinem Testprogramm waren weiter hinten schon 2 Sprungmarken vorhanden.
Möglicherweise existiert im Online-Programm eine unsortierte Tabelle der Sprungziele, wo die Sprungziele in der Programmier-Reihenfolge eingetragen sind und der AWL-Editor generiert dann bei der Online-Ansicht Sprungmarken-Namen nach dem Schema M<Tabellenindex>? Oder der AWL-Editor vergibt schon bei der Programmierung "absolute" Sprungmarkennummern, die die Offline-Ansicht nur darstellt?

Die Netzwerkaufteilung des Programmcodes bleibt Online erhalten. Da gibt es glaub ich eine Tabelle.

Harald
Ne für die Sprungmarken gibts keine Tabelle die werden anhsnd der Sprünge, in denen ja die Anzahl der Wörter steht erstellt. Glaub der erste Sprung bekommt M000 kann aber sein das es auch das erste Ziel war (hab ich auch so realisiert)

Jo von den Netzwerken gibts eine Liste im Online Baustein.l
 
Zurück
Oben