SPS Anlauf

Farinin

Level-2
Beiträge
352
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, eigentliche dürfte ich als SPS Prog mit einiger Erfahrung nicht mehr stellen, aber wenn es so klar wäre....!?!

Also ich mußte heute für eine Änderung eines Analogeinganges die HW Config ändern und natürlich die SPS stoppen und wieder starten. Soweit so gut. Als die SPS aber durch die Neustartfunktion der HW Config nicht wiederanlief, zwang ich die CPU per Software zu einem Kaltstart. Danach lief alles und Welt schien in Ordnung.
Weit gefehlt: Sämtliche Datenbausteineinträge waren willkürlich verändert, wobei ich keine Bausteinänderung gemacht habe. Zudem war ich stets der Ansicht, dass bei der verwendeten S7-400, Datenbausteine remanent sind!

Wer kann mir das erklären und welche Möglichkeiten der Datenrettung sind denkbar? Kann man eine DB nach Excel bringen? Hilft die Funktion "Ram nach Rom"?:confused:
 
Hatte ich auch mal gemacht....

Die DB's werden bei Kaltstart mit den Initialwerten neu geladen. Echte Scheisse. Den Kaltstart gibt es glaube ich auch nur noch bei älteren Ausgabeständen. Warum Siemens sowas macht? Keine Ahnung.

Edit: Ein Supporter bei Siemens hat mir dann mal geraten die DBS nach Systemdatenbausteinen zu kopieren..?? Vieleicht geht das aber geamcht habe ich das dann nie, weil viel Arbeit mit Wiederherstellen der Daten.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bevor ich an einer SPS etwas ändere, lege ich im Manager über Einfügen einen zusätzlichen Programmordner an, benenne ihn um in Datensicherung+Datum und kopiere von Online alle DB dort hinein. Hat mir schon einige Male geholfen:???:!
 
Die Funktion RAM nach ROM würde auf jeden Fall helfen, hier werden die Aktualwerte der DB's auf die Anfangswerte geschrieben.
Nachteil bei vielen Anlagen: Die CPU muss dabei in Stop sein, was aber in deinem Fall egal gewesen wäre.

Eine Datensicherung wie Ralle schreibt sollte man sowieso und bedingungslos vor jeder Änderung machen.
Warum hast du jetzt ja "schmerzlich" erfahren.

Mfg
Manuel
 
Zuletzt bearbeitet:
Hallo, erst einmal ein großes Dankeschön. Ist es eigentlich absolut ausgeschlossen die Aktualwerte zu den Anfangswerten im Laufenden Betrieb zu ändern? Bzw. kann mal Quellen automatisch generieren?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, erst einmal ein großes Dankeschön. Ist es eigentlich absolut ausgeschlossen die Aktualwerte zu den Anfangswerten im Laufenden Betrieb zu ändern? Bzw. kann mal Quellen automatisch generieren?

Man kann die DB in den Step7-Manager einlesen, Quellen daraus erzeugen, die Aktualwerte in die Anfangswerte umkopieren, die Quellen übersetzen und dann die DB wieder in die SPS schreiben. Mit etwas Mühe kann man das auch automatisieren. In jedem Fall ein Problem, wenn die Anlage weiterläuft und in der Zwischenzeit neue Werte in den DB landen.
 
@Ralle

Ich habe das mal testhalber so probiert, schaut ca so aus:

DATA_BLOCK "HP&TP"
TITLE =
VERSION : 0.1

STRUCT
HP0 : DINT ;
HP1 : DINT ;
HP2 : DINT ;
HP3 : DINT ;
HP4 : DINT ;
HP5 : DINT ;
TP0 : DINT ;
TP1 : DINT ;
TP2 : DINT ;
TP3 : DINT ;
TP4 : DINT ;
TP5 : DINT ;
END_STRUCT ;
BEGIN
HP0 := L#1;
HP1 := L#0;
HP2 := L#0;
HP3 := L#0;
HP4 := L#0;
HP5 := L#0;
TP0 := L#0;
TP1 := L#0;
TP2 := L#0;
TP3 := L#0;
TP4 := L#0;
TP5 := L#0;
END_DATA_BLOCK

wenn ich das übersetze steht im DB dann Anfangswert 0 und Aktualwert 1 im DWORD 0.
Was habe ich falsch verstanden? Wo kann man nun die Anfangswerte ändern?
 
Zuletzt bearbeitet:
Hallo,
hast du eine Visualisierung an der Anlage ?
Wenn ja, dann könntest du damit die Daten der DB's speichern und auf Tastendruck zurückschreiben ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Ralle

Ich habe das mal testhalber so probiert, schaut ca so aus:

DATA_BLOCK "HP&TP"
TITLE =
VERSION : 0.1

STRUCT
HP0 : DINT ;
HP1 : DINT ;
HP2 : DINT ;
HP3 : DINT ;
HP4 : DINT ;
HP5 : DINT ;
TP0 : DINT ;
TP1 : DINT ;
TP2 : DINT ;
TP3 : DINT ;
TP4 : DINT ;
TP5 : DINT ;
END_STRUCT ;
BEGIN
HP0 := L#1;
HP1 := L#0;
HP2 := L#0;
HP3 := L#0;
HP4 := L#0;
HP5 := L#0;
TP0 := L#0;
TP1 := L#0;
TP2 := L#0;
TP3 := L#0;
TP4 := L#0;
TP5 := L#0;
END_DATA_BLOCK

wenn ich das übersetze steht im DB dann Anfangswert 0 und Aktualwert 1 im DWORD 0.
Was habe ich falsch verstanden? Wo kann man nun die Anfangswerte ändern?

Code:
DATA_BLOCK DB 30
TITLE =
{ S7_language := '7(1) Deutsch (Deutschland)  09.02.2005  11:05:28' }
AUTHOR : Ralle
FAMILY : IFA
NAME : 'IFA-INIT'
VERSION : 1.0


  STRUCT     
   number_Para : INT  := 3;    //number of parameters
   Count : INT ;    //counter for loop - init parameter
   Access_1 : WORD  := W#16#20;    //access_1 - 20h write WORD, 30h write DWORD
   Index_1 : WORD  := W#16#F;    //Index 1 - Control Lageregler P-Faktor KPn
   Subindex_1 : WORD  := W#16#A;    //Subindex 1
   Data_1 : DINT  := L#800;    //data 1
   Access_2 : WORD  := W#16#30;    //access_2 - 20h write WORD, 30h write DWORD
   Index_2 : WORD  := W#16#1C;    //Index 2 - Motion dec_Stop
   Subindex_2 : WORD  := W#16#15;    //Subindex 2
   Data_2 : DINT  := L#7000;    //data 2
   Access_3 : WORD  := W#16#30;    //access_3 - 20h write WORD, 30h write DWORD
   Index_3 : WORD  := W#16#1D;    //Index 3 - Motion acc
   Subindex_3 : WORD  := W#16#1A;    //Subindex 3
   Data_3 : DINT  := L#7000;    //data 3
   Access_4 : WORD  := W#16#20;    //access_4 - 20h write WORD, 30h write DWORD
   Index_4 : WORD ;    //Index 4 - 
   Subindex_4 : WORD ;    //Subindex 4
   Data_4 : DINT ;    //data 4
   Access_5 : WORD  := W#16#30;    //access_5 - 20h write WORD, 30h write DWORD
   Index_5 : WORD ;    //Index 5 - 
   Subindex_5 : WORD ;    //Subindex 5
   Data_5 : DINT ;    //data 5
   Access_6 : WORD  := W#16#20;    //access_6 - 20h write WORD, 30h write DWORD
   Index_6 : WORD ;    //Index 6 - 
   Subindex_6 : WORD ;    //Subindex 6
   Data_6 : DINT ;    //data 6
   Access_7 : WORD  := W#16#20;    //access_7 - 20h write WORD, 30h write DWORD
   Index_7 : WORD ;    //Index 7
   Subindex_7 : WORD ;    //Subindex 7
   Data_7 : DINT ;    //data 7
   Access_8 : WORD  := W#16#20;    //access_8 - 20h write WORD, 30h write DWORD
   Index_8 : WORD ;    //Index 8
   Subindex_8 : WORD ;    //Subindex 8
   Data_8 : DINT ;    //data 8
   Access_9 : WORD  := W#16#20;    //access_9 - 20h write WORD, 30h write DWORD
   Index_9 : WORD ;    //Index 9 - 
   Subindex_9 : WORD ;    //Subindex 9
   Data_9 : DINT  := L#20;    //data 9
   Access_10 : WORD ;    //access_10 - 20h write WORD, 30h write DWORD
   Index_10 : WORD ;    //Index 10
   Subindex_10 : WORD ;    //Subindex 10
   Data_10 : DINT ;    //data 10
  END_STRUCT ;    
BEGIN
   number_Para := 3; 
   Count := 0; 
   Access_1 := W#16#20; 
   Index_1 := W#16#F; 
   Subindex_1 := W#16#A; 
   Data_1 := L#800; 
   Access_2 := W#16#30; 
   Index_2 := W#16#1C; 
   Subindex_2 := W#16#15; 
   Data_2 := L#7000; 
   Access_3 := W#16#30; 
   Index_3 := W#16#1D; 
   Subindex_3 := W#16#1A; 
   Data_3 := L#7000; 
   Access_4 := W#16#20; 
   Index_4 := W#16#0; 
   Subindex_4 := W#16#0; 
   Data_4 := L#0; 
   Access_5 := W#16#30; 
   Index_5 := W#16#0; 
   Subindex_5 := W#16#0; 
   Data_5 := L#0; 
   Access_6 := W#16#20; 
   Index_6 := W#16#0; 
   Subindex_6 := W#16#0; 
   Data_6 := L#0; 
   Access_7 := W#16#20; 
   Index_7 := W#16#0; 
   Subindex_7 := W#16#0; 
   Data_7 := L#0; 
   Access_8 := W#16#20; 
   Index_8 := W#16#0; 
   Subindex_8 := W#16#0; 
   Data_8 := L#0; 
   Access_9 := W#16#20; 
   Index_9 := W#16#0; 
   Subindex_9 := W#16#0; 
   Data_9 := L#20; 
   Access_10 := W#16#0; 
   Index_10 := W#16#0; 
   Subindex_10 := W#16#0; 
   Data_10 := L#0; 
END_DATA_BLOCK
Du kannst schon bei der Vereinbarung Werte hinter die Variablen schreiben.
Das sind die Anfangswerte, die dir im DB angezeigt werden. Im zweiten Teil nach Begin stehen die Aktualwerte. Siemens schreibt in seiner Hilf, das seien die Anfangswerte, ich denke, die haben da die Begriffe verwechselt. Wenn deine Werte 0 sind, erscheint der Anfangswert nicht, da Defaultwert.
 
Zurück
Oben