Daten aus DB lesen / in DB schreiben

Supervisor

Level-1
Beiträge
93
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Experten,

ich möchte gerne Daten von bestimmten Adressen aus einem DB lesen und diese entweder mit Merkern weiterverarbeiten oder in einen anderen DB auf eine bestimmte Adresse kopieren.

Ich habe mal folgendes kurzes Beispielprogramm gemacht:

Der Datenbaustein DB 1 hat in der Datenansicht folgende Struktur:
(5 Datenfelder mit vorbelegten Anfangswerten)
Code:
0.0  "D1"  DWORD   DW#16#123
4.0  "D2"  BYTE    B#16#8
5.0  "D3"  BYTE    B#16#1A
6.0  "D4"  BYTE    B#16#2B
7.0  "D5"  BYTE    B#16#3C
Die FC hat folgenden AWL-Code:
Code:
L 0                 //Wert 0 laden für Adresse 0
SLD 3               //3 Bit links schieben
LAR1                //ins Adressregister 1 laden
AUF DB 1            //DB 1 öffnen
L DBD [AR1,P#0.0]   //DWORD laden in DB 1 von Adresse 0.0
T #Puffer           //Wert in Variable "PUFFER" speichern (Datentyp: DWORD)

Leider funktioniert das aber nicht! :sb8:

Wenn ich unter Step 7 die FC beobachte, dann bekomme ich immer nur Nullen als Daten angezeigt. Die Adresse im AR1 stimmt aber.
Warum funktioniert das nicht?
Was mache ich falsch?

Danke für eure Hilfe im vorraus!
 
der code ist ok.

was steht denn im aktualwert?
geh im db mal auf datenansicht. dann auf bearbeiten/db-initialisieren.
damit werden die anfangswerte in die aktualwerte kopiert. dann ins ag übertragen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Volker,

ich hab das grad mal ausprobiert und nun funktioniert es! DANKE!!!!

Die Aktualwerte hatten alle den Wert 0. Ich dachte bis jetzt, die Aktualwerte werden automatisch mit den Anfangswerten beschrieben. Muss man die eigentlich immer manuell aktualisieren oder geht das auch irgendwie automatisch?
Nebenbei gefragt: Was meinst du mit ag ?
 
Supervisor schrieb:
Die Aktualwerte hatten alle den Wert 0. Ich dachte bis jetzt, die Aktualwerte werden automatisch mit den Anfangswerten beschrieben. Muss man die eigentlich immer manuell aktualisieren oder geht das auch irgendwie automatisch?
Nebenbei gefragt: Was meinst du mit ag ?


Ein AG ist ein "Arbeitsgerät",
Siemens - Deutsch für SPS.

Die Anfangswerte werden nicht automatisch in die Aktualwerte kopiert.
Das musst du händisch machen.

Wichtig: Bei durchführen der Funktion "Bausteinkonsistenz prüfen" werden die Aktualwerte auf die Anfangswerte gesetzt!

Bedenke folgendes:
Der Baustein wird nur DANN mit den Anfansgwerten genutzt, wenn er jungfräulich in das AG eingespielt wurde, z.B. nach Urlöschen.

Wurde der Aktualwert einmal versorgt, z.B. im zyklischen Programm, dann behält dieser DB auch diese Werte !

Bei den neuen C - CPU wird der DB sogar bei Spannungsausfall im Flash gespeichert, so das bei Neustart die (richtigen) Aktualwerte drinnstehen.

Einen DB über seine Startwerte initialisieren macht eigendlich nur Sinn, wenn die Werte keine Änderungen mehr erfahren müssen.

Sonst am besten die Aktualwerte immer im zyklischen Programm versorgen!
 
Ach so, jetzt weiß ich bescheid!
Das ist ja fast wie der AFDBW = Abkürzungsfimmel der Bundeswehr !
(Schenkelklopfer :sm26: )

Danke an alle für eure Hilfe! :s17:
 
Zurück
Oben