Persistente oder Remanente daten??

COOLT

Level-1
Beiträge
98
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute ich würde gerne bei meine Programm auf die Initialisierung
Code:
PROGRAM Benutzerlisten_Initialisierung
VAR
    Benutzerliste: ARRAY[1..Max_Benutzer] OF Struct_User;
    Initialisiert: BOOL;
    i: INT;
END_VAR

IF NOT Initialisiert THEN
Benutzerliste[1].sUserID:='1010101';
Benutzerliste[1].sUserlvl:='Admin';
Benutzerliste[1].sUserName:='Mann1';
Benutzerliste[2].sUserID:='2020202';
Benutzerliste[2].sUserlvl:='Techniker';
Benutzerliste[2].sUserName:='Mann2';
Benutzerliste[3].sUserID:='3030303';
Benutzerliste[3].sUserlvl:='Admin';
Benutzerliste[3].sUserName:='Frau';
Initialisiert:=TRUE;
END_IF;
Verzichten, da ich die Benutzerliste über eine Visualisierung selber editieren kann, und nach einem system reset alle daten futsch sind aus die initialisierungs daten.
Könntet ihr mir da vielleicht weiterhelfen und mir sagen welche ich denn am besten nehmen sollte? Und mir dann auch gleich erklären wie ich das hinbekomme, dass die Daten dementsprechend gespeichert werden?

Mfg
COOLT
 
Hab hier lediglich eine Anleitung für den CX1000 gefunden. Musst mal schauen, wie du damit zurecht kommst und ob es so auch mit dem CX1100 funzt.
 
Hab hier lediglich eine Anleitung für den CX1000 gefunden. Musst mal schauen, wie du damit zurecht kommst und ob es so auch mit dem CX1100 funzt.

genau so geht´s - hab ich selber schon ausprobiert.


Persistent und remanent funktioniert nur wenn das Twincat System ordentlich heruntergefahren wird - also kein Spannungsausfall. Das lässt sich also nur mit einer USV realisieren.

Als Alternative könntest du auch persistente Variablen definieren und diese zur Laufzeit des Programms per FB in gewissen Zeitabständen sichern - aber nicht zu oft, sonst ist irgendwann der Flash kaputt - dann hast du zumindest eine gewisse Remanenz (die Datenänderungen seit der letzen Sicherung gehen halt dann verloren).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann mir jemand vielleicht mal ein Beispiel für den FB_NovRamReadWrite-Funktionsbaustein schreiben?
Ich versteh nich so ganz wie ich den deklarieren soll weil die Dokumentationen von Beckhoff voll fürn arsch sind.
 
Also wenn ich die Anleitung richtig verstanden habe, muss kein extra FB geschrieben werden. Laut Anleitung musst du die Variablen, die du sichern möchtest lediglich als Ausgang zu deklarieren und dann im Systemmanager mit dem NOVRAM-Gerät zu verbinden. Aber keine Gewähr. Ich habe lediglich die Anleitung interpretiert und die ganze Thematik noch nie praktisch ausprobiert.
 
Hallo COOLT,

die Tatsache, dass persistente und remanente Variablen nur persistent und remanent sind, wenn das Twincat System ordentlich heruntergefahren wird, finde ich miserabel. :evil:
Hier sollte Beckhoff unbedingt nachbessern.
Allerdings kann man sich recht gut mit dem NOVRAM behelfen. Die entsprechenden Variablen müssen nur als Ausgang (%Q*) deklariert und mit dm NOVRAM verknüpft werden. Anzumerken ist, dass die CPU-Belastung mit wachsender NOVRAM- Belegung stark anwächst, da dieser Speicher Zyklisch gelesen und geschrieben wird!

Ich lege nur Zähler und schnell ändernde Variablen im NOVRAM ab. Rezepturen und andere zu speichernde Daten, die sich nur gelegentlich ändern, lege ich als Datei auf einem USB- Stick ab. Dieser wird nach dem Einschalten einmalig gelesen und nur nach Änderung beschrieben…

Gruß
Chräshe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo COOLT,

die Tatsache, dass persistente und remanente Variablen nur persistent und remanent sind, wenn das Twincat System ordentlich heruntergefahren wird, finde ich miserabel. :evil:
Hier sollte Beckhoff unbedingt nachbessern.
...

Schau Dir mal folgenden Link an:
http://infosys.beckhoff.com/index.p.../TcPlcLibUtilities_FB_WritePersistentData.htm

Man hat also auch die Möglichkeit darauf Einfluss zu nehmen.
 
Schau Dir mal folgenden Link an:
http://infosys.beckhoff.com/index.p.../TcPlcLibUtilities_FB_WritePersistentData.htm

Man hat also auch die Möglichkeit darauf Einfluss zu nehmen.

Das hab ich ja auch schon erklärt. Einen gewissen Datenausfall hat man aber auch damit, da man ja nicht permanent auf den Flash schreiben kann.

Am elegantesten lässt sich das ganze mit einer USV lösen, die dann dem Twincat-System einen Spannungsausfall mitteilt und dieses dann einen Shutdown auslöst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau Dir mal folgenden Link an:
http://infosys.beckhoff.com/index.p.../TcPlcLibUtilities_FB_WritePersistentData.htm

Man hat also auch die Möglichkeit darauf Einfluss zu nehmen.

@ zotos
klar kenne ich den Link. Nur finde ich, dass eine SPS persistente und remanente Variablen haben sollte, ohne dass man Kopfstände machen muss. Bei den kleinen Steuerungen von Beckhoff geht das, bei den „großen“ PC- basierenden geht das nicht mehr… sehr schade…:sb8:

Gruß
Chräshe
 
Remanente Merker

Hi,
also ich habe folgende Erfahrungen gemacht. Wenn man ein NOV DP RAM zu Verfügung hat. Einfach den z.B. Merker als Ausgang deklarieren also Q%.. und dann im Systemmanager unter dem Unterpunkt NOV/DP Ram einen Ausgang erstellen diesem dem Datentyp zuweisen also BIT WORD us.w und dann mit dem vorher in der Variablendeklaration erstellten Ausgang verlinken wie bei einer EA Karte mit einer Variable. Und schon ist der Wert Remanent.
Das mit den Persiten Daten (weiß nicht ob das grammatikalisch richtig ist aber wisst was ich meine) geht indem man Sie unter VAR_persitent in der Variablendeklaration einträgt und funktioniert definitv nur mit einer USV da erst bei Spannunsausfall an der Klemme der CX die Werte speichert!
MfG Thomas
 
o.k. soweit hab ich das jetz verstanden geht das ganze auch mit Arrays? z.B.: soll eine Benutzerliste als Array beschrieben werden und dann in dem Nov RAM abgespeichert werden. geht das auch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
o.k. soweit hab ich das jetz verstanden geht das ganze auch mit Arrays? z.B.: soll eine Benutzerliste als Array beschrieben werden und dann in dem Nov RAM abgespeichert werden. geht das auch?

Was du auf jeden Fall machen kannst ist, dass du für jedes Element deines Arrays eine eigene Variable im Unterpunkt NOV/DP-RAM erstellst.
 
Und wie soll das gehen? Soll ich alle 200 Arrayunterpunkte mit nem ausgang belgen? oder geht das iwie mit ner schleife? und wie ordne ich die dann alle dem gleich ausgang zu? *Verwirrt bin*:confused::confused::confused::confused:

Mfg
COOLT
 
Vergiss es. Bei 200 Elementen hat das keinen Sinn. Du müsstest nämlich alles von Hand anlegen und verknüpfen. Das lohnt sich nicht.
 
Zurück
Oben