- Beiträge
- 5.698
- Reaktionspunkte
- 1.629
-> Hier kostenlos registrieren
Rein Interessehalber. Ich kann unmöglich der Einzige sein, der immernoch mit dem Reinitwahn von TIA anneinandergerät.
Als Beispiel. Ich habe eine etwas betagtere Beleuchtunganlage im Ausland (V13) in der ist 1kb Energiedaten vorhanden und diverse Betriebsstundenzähler.
Betriebsstundenzähler hab ich mir mal n Baustein geschrieben.
hiermit sichere ich die Betriebsstunden zustätzlich in einem Merkerdoppelwort (an save Betriebssekunden). Das funktioniert recht gut. Wenn sich am DB der an der Schnittstelle angeschlossen ist, was ändert, dann wird reinitialisiert es steht -1 drin, darum wird der Wert aus dem Merkerwort wiederhergestellt. Alles tiptop. Aber man muss sich um Merkerrerservationen kümmern etc.
Bei einem Grösseren DB in dem ich z.B. energiedaten über Jahre sichere. habe ich ein Programm geschrieben, der diesen DB auf einen Programmgenerierten DB im Ladespeicher sichert (z.B. einmal Täglich) und rücksichert wenn eine Initialisation des DBs stattfindet.
Schon etwas anspruchsvoller, aber für den Benutzer einfach und zuverlässig.
Hat einen gewaltigen Nachteil. Wenn man mit einem neuen Softwarepaket kommt (von V13 auf V15) dann macht Tia einen reinit inklusive Delete sämtlicher zur laufzeit erstellen Daten im Ladespeicher. Zu diesem Zeitpunkt ist es auch nicht möglich aus einer V13 CPU die Aktualdaten in das aktuelle V15 Projekt zu ziehen.
Ein weiterer Nachteil ist, dass der DB der gesichert werden soll, fürs umkopieren als nicht optimiert vorhanden sein muss.
Nun interessiert mich mal eure Stategien die ihr so fahrt? Dass man Parametersicherungen z.B. über ein übergeorndetes SCADA machen könnte, lassen wir mal aussen vor.
Als Beispiel. Ich habe eine etwas betagtere Beleuchtunganlage im Ausland (V13) in der ist 1kb Energiedaten vorhanden und diverse Betriebsstundenzähler.
Betriebsstundenzähler hab ich mir mal n Baustein geschrieben.
Code:
FUNCTION_BLOCK "Betriebsstunden"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
Betrieb : Bool;
END_VAR
VAR_IN_OUT
Betriebsstunden : Int;
Betriebssekunden : DInt;
saveBetriebssekunden : DInt;
END_VAR
VAR
Takt {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
END_VAR
BEGIN
#Takt(CLK := "Taktgeber_dyn"(1.0));
IF #Betriebsstunden >= 0 THEN
#saveBetriebssekunden := #Betriebssekunden;
ELSIF #Betriebsstunden = -1 THEN
#Betriebssekunden := #saveBetriebssekunden;
END_IF;
IF #Betrieb AND #Takt.Q THEN
#Betriebssekunden += 1;
END_IF;
#Betriebsstunden := DINT_TO_INT(#Betriebssekunden / 3600);
END_FUNCTION_BLOCK
hiermit sichere ich die Betriebsstunden zustätzlich in einem Merkerdoppelwort (an save Betriebssekunden). Das funktioniert recht gut. Wenn sich am DB der an der Schnittstelle angeschlossen ist, was ändert, dann wird reinitialisiert es steht -1 drin, darum wird der Wert aus dem Merkerwort wiederhergestellt. Alles tiptop. Aber man muss sich um Merkerrerservationen kümmern etc.
Bei einem Grösseren DB in dem ich z.B. energiedaten über Jahre sichere. habe ich ein Programm geschrieben, der diesen DB auf einen Programmgenerierten DB im Ladespeicher sichert (z.B. einmal Täglich) und rücksichert wenn eine Initialisation des DBs stattfindet.
Schon etwas anspruchsvoller, aber für den Benutzer einfach und zuverlässig.
Hat einen gewaltigen Nachteil. Wenn man mit einem neuen Softwarepaket kommt (von V13 auf V15) dann macht Tia einen reinit inklusive Delete sämtlicher zur laufzeit erstellen Daten im Ladespeicher. Zu diesem Zeitpunkt ist es auch nicht möglich aus einer V13 CPU die Aktualdaten in das aktuelle V15 Projekt zu ziehen.
Ein weiterer Nachteil ist, dass der DB der gesichert werden soll, fürs umkopieren als nicht optimiert vorhanden sein muss.
Nun interessiert mich mal eure Stategien die ihr so fahrt? Dass man Parametersicherungen z.B. über ein übergeorndetes SCADA machen könnte, lassen wir mal aussen vor.