Datenbausteinproblem!!!!!!!!!!!!!!!!!!!!!!

Sorry das Problem ist mit dem DB81.

Bearbeiten -> Datenbaustein Initialisieren

Neu übertragen.


Aber Gewöhne dir folgendes an. Schreibe in das Netzwerk vor der Verwendung vom DB81.DBW0 einen MOVE Baustein.
Wo Du die Konstante 5 in das DW schreibst. Die Verwendung vom Initalisierungswert ist leider trügerisch.
 
Hier habe ich mal aus dem DB81 eine Quelle generiert und die Stelle rot Markiert. Der Aktualwert steht da eben auf 300. Hat wohl einer mit einer VAT oder so geschossen.


Code:
DATA_BLOCK "DB81"
TITLE =Alarme L-Niveaus
VERSION : 0.1


  STRUCT    
   DBW0 : INT  := 5;    //Vorgabezeit Alarm Trockenlaufschutz
   DBW2 : INT  := 5;    //Restzeit Alarm Trockenlaufschutz
   DBW4 : INT  := 5;    //Vorgabezeit Alarm Niveau sehr tief
   DBW6 : INT  := 5;    //Restzeit Alarm Niveau sehr tief
   DBW8 : INT  := 5;    //Vorgabezeit Alarm Niveau tief
   DBW10 : INT  := 5;   //Restzeit Alarm Niveau tief
   DBW12 : INT  := 5;   //Vorgabezeit Alarm Überfüllschutz
   DBW14 : INT  := 5;   //Restzeit Alarm Überfüllschutz
   DBW16 : INT ;    //Vorgabezeit
   DBW18 : INT ;    //Restzeit
   DBW20 : INT ;    //Vorgabezeit
   DBW22 : INT ;    //Restzeit
   DBW24 : INT ;    //Vorgabezeit
   DBW26 : INT ;    //Restzeit
   DBW28 : INT ;    //Vorgabezeit
   DBW30 : INT ;    //Restzeit
   DBW32 : INT ;    //Vorgabezeit
   DBW34 : INT ;    //Restzeit
   DBW36 : INT ;    //Vorgabezeit
   DBW38 : INT ;    //Restzeit
   DBW40 : INT ;    //Vorgabezeit
   DBW42 : INT ;    //Restzeit
   DBW44 : INT ;    //Vorgabezeit
   DBW46 : INT ;    //Restzeit
   DBW48 : INT ;    //Vorgabezeit
   DBW50 : INT ;    //Restzeit
   DBX52_0 : BOOL ; //AL P1 Trockenlaufschutz / ULSAL103
   DBX52_1 : BOOL ; //AL P1 Niveau sehr tief / MLIRSAHL101
   DBX52_2 : BOOL ; //AL P1 Niveau tief / MLIRSAHL101
   DBX52_3 : BOOL ; //AL P1 Überfüllschutz / ULSAH102
   DBX52_4 : BOOL ; //Reserve
   DBX52_5 : BOOL ; //Reserve
   DBX52_6 : BOOL ; //Reserve
   DBX52_7 : BOOL ; //Reserve
   DBX53_0 : BOOL ; //Reserve
   DBX53_1 : BOOL ; //Reserve
   DBX53_2 : BOOL ; //Reserve
   DBX53_3 : BOOL ; //Reserve
   DBX53_4 : BOOL ; //Reserve
   DBX53_5 : BOOL ; //Reserve
   DBX53_6 : BOOL ; //Reserve
   DBX53_7 : BOOL ; //Reserve
   DBX54_0 : BOOL ; //AL P1 Trockenlaufschutz (Relais)/ ULSAL103
   DBX54_1 : BOOL ; //AL P1 Niveau sehr tief (Relais) / MLIRSAHL101
   DBX54_2 : BOOL ; //AL P1 Niveau tief (Relais) / MLIRSAHL101
   DBX54_3 : BOOL ; //AL P1 Überfüllschutz (Relais) / ULSAH102
   DBX54_4 : BOOL ; //Reserve
   DBX54_5 : BOOL ; //Reserve
   DBX54_6 : BOOL ; //Reserve
   DBX54_7 : BOOL ;  //Reserve
   DBX55_0 : BOOL ; //Reserve
   DBX55_1 : BOOL ; //Reserve
   DBX55_2 : BOOL ; //Reserve
   DBX55_3 : BOOL ; //Reserve
   DBX55_4 : BOOL ; //Reserve
   DBX55_5 : BOOL ; //Reserve
   DBX55_6 : BOOL ; //Reserve
   DBX55_7 : BOOL ; //Reserve
   DBW56 : INT ;    //Alarmmerker(Reserve)
   DBW58 : INT ;    //Alarmmerker(Reserve)
   DBX60_0 : BOOL ; //Flankenmerker AL P1 Trockenlaufschutz / ULSAL103
   DBX60_1 : BOOL ; //Flankenmerker AL P1 Niveau sehr tief / MLIRSAHL101
   DBX60_2 : BOOL ; //Flankenmerker AL P2 Niveau tief / MLIRSAHL101
   DBX60_3 : BOOL ; //Flankenmerker AL P1 Überfüllschutz / ULSAL102
   DBX60_4 : BOOL ; //Flankenmerker
   DBX60_5 : BOOL ; //Flankenmerker
   DBX60_6 : BOOL ; //Flankenmerker
   DBX60_7 : BOOL ; //Flankenmerker
   DBX61_0 : BOOL ; //Flankenmerker
   DBX61_1 : BOOL ; //Flankenmerker
   DBX61_2 : BOOL ; //Flankenmerker
   DBX61_3 : BOOL ; //Flankenmerker
   DBX61_4 : BOOL ; //Flankenmerker
   DBX61_5 : BOOL ; //Flankenmerker
   DBX61_6 : BOOL ; //Flankenmerker
   DBX61_7 : BOOL ; //Flankenmerker
   DBW62 : INT ;    //Flankenmerker(Reserve)
   DBW64 : INT ;    //Flankenmerker(Reserve)
   DBW66 : INT ;    //Flankenmerker(Reserve)
   DBW68 : INT ;    //Quittiermerker lesen 
   DBW70 : INT ;    //Quittiermerker lesen(Reserve)
   DBW72 : INT ;    //Quittiermerker lesen(Reserve)
   DBW74 : INT ;    //Quittiermerker lesen(Reserve)
  END_STRUCT ;  
BEGIN
[B][COLOR=Red]   DBW0 := 300; [/COLOR][/B]
   DBW2 := 0; 
   DBW4 := 0; 
   DBW6 := 0; 
   DBW8 := 0; 
   DBW10 := 0; 
   DBW12 := 0; 
   DBW14 := 0; 
   DBW16 := 0; 
   DBW18 := 0; 
   DBW20 := 0; 
   DBW22 := 0; 
   DBW24 := 0; 
   DBW26 := 0; 
   DBW28 := 0; 
   DBW30 := 0; 
   DBW32 := 0; 
   DBW34 := 0; 
   DBW36 := 0; 
   DBW38 := 0; 
   DBW40 := 0; 
   DBW42 := 0; 
   DBW44 := 0; 
   DBW46 := 0; 
   DBW48 := 0; 
   DBW50 := 0; 
   DBX52_0 := FALSE; 
   DBX52_1 := FALSE; 
   DBX52_2 := FALSE; 
   DBX52_3 := FALSE; 
   DBX52_4 := FALSE; 
   DBX52_5 := FALSE; 
   DBX52_6 := FALSE; 
   DBX52_7 := FALSE; 
   DBX53_0 := FALSE; 
   DBX53_1 := FALSE; 
   DBX53_2 := FALSE; 
   DBX53_3 := FALSE; 
   DBX53_4 := FALSE; 
   DBX53_5 := FALSE; 
   DBX53_6 := FALSE; 
   DBX53_7 := FALSE; 
   DBX54_0 := FALSE; 
   DBX54_1 := FALSE; 
   DBX54_2 := FALSE; 
   DBX54_3 := FALSE; 
   DBX54_4 := FALSE; 
   DBX54_5 := FALSE; 
   DBX54_6 := FALSE; 
   DBX54_7 := FALSE; 
   DBX55_0 := FALSE; 
   DBX55_1 := FALSE; 
   DBX55_2 := FALSE; 
   DBX55_3 := FALSE; 
   DBX55_4 := FALSE; 
   DBX55_5 := FALSE; 
   DBX55_6 := FALSE; 
   DBX55_7 := FALSE; 
   DBW56 := 0; 
   DBW58 := 0; 
   DBX60_0 := FALSE; 
   DBX60_1 := FALSE; 
   DBX60_2 := FALSE; 
   DBX60_3 := FALSE; 
   DBX60_4 := FALSE; 
   DBX60_5 := FALSE; 
   DBX60_6 := FALSE; 
   DBX60_7 := FALSE; 
   DBX61_0 := FALSE; 
   DBX61_1 := FALSE; 
   DBX61_2 := FALSE; 
   DBX61_3 := FALSE; 
   DBX61_4 := FALSE; 
   DBX61_5 := FALSE; 
   DBX61_6 := FALSE; 
   DBX61_7 := FALSE; 
   DBW62 := 0; 
   DBW64 := 0; 
   DBW66 := 0; 
   DBW68 := 0; 
   DBW70 := 0; 
   DBW72 := 0; 
   DBW74 := 0; 
END_DATA_BLOCK
 
Was ist VAT? Was hat es mit dem Datenbaustein zu tun?

Variablentabellen bieten den Vorteil unterschiedliche Testumgebungen abspeichern zu können. So können Tests und Beobachtungen während einer Inbetriebsetzung oder zu Service- und Wartungszwecken mühelos reproduziert werden. Die Anzahl der abspeicherbaren Variablentabellen ist nicht begrenzt.

und das ist nur ein teil dessen, was dir die umfangreiche siemens-hilfe anbietet
 
VAT= Variablentabelle

damit kannst du auf sämtliche Variablen zugreifen, z.b. auch auf die DBs und da die Werte im Betrieb ändern. Und wenn man das so macht kann man halt öfters reinfallen weil nach Neustart oder so der Werte wieder weg ist, ich hatte das bei meinem aktuellen Projekt beim Testen sehr häufig....

Daher halt "geschossen"...
 
Was hast du mit "geschossen" gemeint?

Also was passiert ist kann man ja aus meinem und den Beiträgen der Kollegen MatMer und vierlagig (die ich alle dafür bewundere das sie Dir noch helfen wollen) lesen.

In einem DB sind jeder "Variable" zwei Werte zugeordnet der Initialisierungswert und der Aktuelle Wert. Das siehst Du auch in der Quelle die ich Dir hier reingestellt habe. Da ist das DB81.DBW0 (und alle anderen) ja zweimal aufgeführt.

Im Programmablauf zählt nur der Aktualwert den man wenn benötigt mit dem Initialisierungswert über schreiben kann.

Jetzt verlässt Du Dich blind darauf das der Aktualwert immer dem Initialisierungswert entspricht weil Das Programm ja den Aktualwert nicht verändert. Jetzt vermute ich das jemand entweder mittels einer VAT oder in dem er den DB81 von der SPS auf das PG geladen hat eben einen DB gespeichert hat der andere Aktualwerte enthält.

Mit dem Geschossen meine ich das jemand den Aktualwert verändert hat sei es mit der VAT, der Visu, durch wildes kopieren... keine Ahnung auf jeden Fall stand der DB nicht mehr auf dem Initialisierungswert.

Ich bin ja Programmierer und kein Detektiv... auch wenn man da Parallelen finden kann.
 
Von mir ein kleiner Tipp...

Im Zweifelsfalle die Werte, sofern sie denn konstant und auf alle Ewigkeit dies sein sollen, im OB1 NW 1

L 5
T DB...

Und das Problem löst sich von Alleine, dann kann auch nichts und niemand nit einer Variablentabelle oder Variable_Steuern irgendwas ändern, im nächsten Zyklus ist der Wert wieder initalisiert.

Griele Füße dtsclipper
 
Datenbaustein 81 öffnen -> Bearbeiten -> Datenbaustein Initialisieren

Speichern!

Auf die SPS (PLCsim oder was auch immer) jagen Fertig.

Bearbeiten -> Datenbaustein Initialisieren

Neu übertragen.


Aber Gewöhne dir folgendes an. Schreibe in das Netzwerk vor der Verwendung vom DB81.DBW0 einen MOVE Baustein.
Wo Du die Konstante 5 in das DW schreibst. Die Verwendung vom Initalisierungswert ist leider trügerisch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
da hab ich ja gestern abend richtig was versäumt "!!!!!!!!!!!!!!!!!!!!"

aber: bitte keine Konstanten ins Programm schreiben, um DB-Werte zu initialisieren - sonst können wir ja die DB gleich abschaffen, und die Visu ändert die Konstante im Code.
 
Von mir ein kleiner Tipp...

Im Zweifelsfalle die Werte, sofern sie denn konstant und auf alle Ewigkeit dies sein sollen, im OB1 NW 1

L 5
T DB...

Und das Problem löst sich von Alleine, dann kann auch nichts und niemand nit einer Variablentabelle oder Variable_Steuern irgendwas ändern, im nächsten Zyklus ist der Wert wieder initalisiert.

Griele Füße dtsclipper


Das ist wohl ein Scherz, im NW 2 wird der Wert durch eine andere Zuweisung platt gemacht und dann?

pt
 
Aber das Problem war doch ursprünglich das die Initalwerte aus dem DB verwendet werden und nicht geänderte ...

Oder habe ich da was falsch verstanden... :confused:

Wenn der Initalwert eh nicht so verwendet wird wie Initialisiert, was ist dann der Sinn dieses Threads ?

( Man beachte das EINE Fragezeichen ! )

Mit grübelden Gedanken dtsclipper
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Wenn der Initalwert eh nicht so verwendet wird wie Initialisiert, was ist dann der Sinn dieses Threads ?
...

Ich habe auch zur Konstanten geraten. Ich würde es allerdings direkt vor der Verwendung machen.

Wenn er via Visu den Wert einstellen könnte, hätte er doch kein Problem und würde hier nicht Fragen.

Ich hoffe das ihm einleuchtet das er eine Konstante nicht verändern kann.
 
Zurück
Oben