Falsches Verständniss von DB's

MSP

Level-2
Beiträge
210
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne in einen DB eine Hand voll Zuständen als 1 oder 0 speichern.

Dazu habe ich mir die Siemens Ausbildungsunterlagen Modul B4 / Datenbausteine angeschaut, aber es scheint bei mir nicht zu funktionieren.

In meinem DB10 steht zB der Wert 'FACH1' als BOOL mit dem Startwert FALSE / 0

Ich möchte nun abhängig von einem Taster diesen Wert auf 0 oder 1 ändern...

In den Unterlagen wurden 3 Beispiele genannt, auch hier im Forum fand ich einige, die aber leider nie mit BOOL arbeiten, sondern meist mit INT etc. Dadurch bin ich ein wenig verwirrt.

Was mich verunsichert ist das ich keine einzelnen Bits ein/auslesen kann.
In den Unterlagen steht zB das man einzelne Bits per DBX einlesen kann, aber wenn ich DBX verwende wird die Codezeile als Falsch ( Syntaxfehler ) angemeckert....

Arbeite ich hingegen mit dieser Variante
Code:
      AUF   "Lagerstatus"               // Öffnen des DB10
      UN    "Lagerstatus".FACH1         // Laden Zustand FACH1; UND-NICHT mit
      U     E      0.0                  // Eingang 0.0
      =     "Lagerstatus".FACH1         // Setzen von FACH1
      L     DB10.DBW    1               // Laden des DB-Wortes 1 in AKKU
      T     MW     1                    // AKKU nach Merkerwort

Dann sehe ich zumindest im PLCSIM im Merkerwort 1 wie die 1 gesetzt und zurückgesetzt wird, der Transfer also scheinbar abläuft.

Ich lese ja an dieser Stelle ein DB-Wort ein; Da ich insgesamt 14 Fächer habe, sind im DB 14 Bit's belegt(?) ( Fach1 bis FACH14; +2.0 bis +3.5 )

Und genau diesen Punkt verstehe ich nun garnicht.
Ich lade das DB-Wort 1.
Was genau lade ich nun in meinen Akku? Das gesamte Wort, also 16 Bits, oder sind pro FACH das ich belege ein gesamtes Wort belegt in der CPU?
Sprich wenn ich FACH3 laden möchte, muss ich dann DBW 3 laden?

Da ich die einzelnen Fächer über die Symbolik ansprechen kann, sehe ich ja nicht wie der Befehl

UN "Lagerstatus".FACH1

in wirklichkeit aussieht. Wenn ich versuche das zu testen per Hand, also mit der Adresse, geht dies ja nicht da im DB ja die absolute Adresse beim Aufruf erst bestimmt wird.
Bleibt mir nun übrig über die Symbolik zu programmieren, oder gibt es Wege dies mittels der Angaben im DB ( FACH1 = +2.0, FACH2 = +2.1 etc. ) anzusprechen?

Die Unterlagen an sich helfen mir beim Verständniss nicht weiter, genau wie die symbolische Adressierung, da ich dort nicht sehe wie dort genau angesprochen wird bzw wie das Laden genau passiert.

Michael
 
Hallo MSP,

auf einzelne Bits im DB kannst Du schon zugreifen:

u db3.dbx0.0
un db3.dbx0.1
= db3.dbx0.2
usw.

Wenn Du symbolisch programmiert hast (UN "Lagerstatus".FACH1)
brauchst Du nur über "Ansicht"/"Anzeigen mit" die Symbolische Anzeige ausschalten und Du siehst die Bitzugriffe wie oben am Beispiel.

Ich denke, dann wird die Datenbausteinarbeit etwas verständlicher.

Gruß
raika
 
Hallo,

u db3.dbx0.0
un db3.dbx0.1
= db3.dbx0.2
usw.

Hmm so hatte ich es eigendlich auch gemacht, nur das dann dauernd der db10.dbx als Syntaxfehler angemeckert wurde :(
Werde das nochmal nachprüfen, eventuell habe ich mit dem 2.0 den Syntaxfehler verursacht... :?:

Rayk: Danke, aber die Unterlagen kenne ich schon fast auswendig, das sind leider im Moment die einzigsten die ich zur Verfügung habe. In Steuerungstechnik arbeiten wir im Moment 'nur' mit SucoSoft von Moeller... die Projektarbeit ist aber Siemens... soviel zur Abstimmung Unterricht <-> Projektarbeit :?

Michael
 
Zurück
Oben