Einsatz EEProm bzw Datum vergleichen

leonhard_II

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

arbeite gerade an einem Projekt mit einer S7-200 CPU 224XP
i.V mit einem TP177micro;

zwei Sachen plagen mich und wäre dankbar um ein paar Tips:

1) Wenn ich übers TP einen Anlagenwert ändere, z.B. Solltemp.
eines Heizkreises, soll dieser nicht nur remanent, sondern
auch nullspannungsfest im internen EEPROM abgespeichert werden;
bisher wäre mein Konzept ein Wertänderungsbit zu setzen und den
gesamten V-Speicher zu sichern; dies erscheint mir aber etwas
ungeschickt; lieber wär mir die selektive Sicherung eben dieses
einen veränderten Wertes nur;
da ich kein Batteriemodul einsetzen will, würde die CPU sonst
nach ein paar Tagen meine "Werkseinstellung" wieder laden und
der veränderte Sollwert wär wieder verloren;

2) Es soll ein Verfallsdatum überwacht werden;
dazu soll am TP eben dieses Verfallsdatum eingegeben werden
und mit der Systemuhr verglichen werden;
ich find leider nur keine komfortable Möglichkeit am TP dieses
Datum im fertigen Date-Format einzugeben und im V-Speicher
zu hinterlegen;
ich probiers jetzt nochmal mit einem String ...

Wenn jemand eine Idee hat, wär ich um entsprechende, kurze Tipps
sehr dankbar.

Heads up and so long
Leonhard
 
Zu deiner ersten Frage:
Schau dir mal SMB31 / SMW32 an,
das dürfte exakt das sein was du suchst.

Mfg
Manuel
 
zu 1) Verstehe nicht ganz warum du die Adressen der Variable nicht kennst um SMB31 / SMW32 zu verwenden. Du adressierst doch deine Variable symbolisch und musst dafür im Symbolbaustein doch eben eine Zuordnung zwischen Symbolen und Speicheradressen treffen, ergo letztere dir auch bekannt sein.
Übrigends: Sowohl internes als auch externes EEPROM haben nur eine beschränke Anzahl Schreibzugrffe (ca. 100000). Den V Speicher komplett zu sichern ist da keine gute Idee, da du sicherlich sehr schnell an diese Größe stoßen würdest.

zu 2) Da ich mit exakt den gleichen Geräten arbeite hatte ich ebenfalls dieses Problem. Ich hab das so gelöst, dass ich drei einzelne Integerwerte für Jahr, Monat und Tag am TP abfrage, sie in der SPS in BCD umwandle und dann vergleiche bzw. das Datum setzen lasse. Nicht schön, bisher aber die einzig mir bekannte Möglichkeit. Die S7-200 hat eben keinen gesonderten Datentypen Date. Wenn du eine geschicktere Lösung kennst wäre ich sicherlich auch interessiert.
 
Hallo Caret,
Hallo Manuel,

sorry, mich hat letzte Woche nochmal ein anderes Projekt beschäftigt ...

zu 1) das Prob ist doch folgendes:
in meinem V-Speicher hab ich so ca. 900 unterschiedlichste Werte stehen,
wohl auch mit Symbolik und auch bunt gemischt VB, VW und VDs;
die gleichen Symbole verwende ich bei den zu verändernden Werten auch im WinCC flex;
wenn aber der Bediener im TP einen E/A-Wert innerhalb seiner zulässigen Grenzen verändert,
kriegt das ja nur das Display mit und verändert den Wert im V-Speicher,
aber die CPU selber kriegt doch nix mit davon, außer daß die dann mit dem neuen
Wert weiterarbeitet;
hab im Moment immer noch nicht die richtige Lösung ...

zu 2) wohl aber hier:
das mit den 3 INT-Feldern ist gut, danke auch an „Caret“ für die Vorlage;
hab dann die Idee noch etwas weitergebastelt, weil ich meine Pappnasen von
Bedienern kenne, die sich dann sicherlich wegen 3xWert umtippen aufregen;
hab einfach nur ein einziges E/A-Feld mit DINT definiert und lasse das
Datum ohne Punkt eingeben, also z.B. 211206; in der CPU wandle ich dann
auch in BCD-Werte und kehre dann das Format um in 061221; jetzt brauch ich nur
noch einen ganz normalen DINT Vergleich auf größer (oder kleiner...) machen und
weiß, ob das am Display eingegebene „Datum“ jünger oder älter ist;
zum Schluß hab ich noch einen einfachen Schutz gegen Fehleingabe gemacht:
will der Bediener eine z.B. nur 5-stellige Zahl als Datum eingeben (Tippfehler
am Display, Zeichen nicht angenommen o.ä.) macht das Display doch eine $00
draus, dies ist bei der Wandlung in den BCD-Code nicht erlaubt und setzt SM1.7,
wenn SM1.7 gesetzt, also Falscheingabe, wird der Monat und das Jahr mit Nullen
vorbesetzt und dies führt beim Vergleich immer zu „Datum abgelaufen, bitte prüfen“

Naja, bischen holprig, aber es funzt !

Wenn da nur nicht das Problem 1) nicht wär ...

Vielen Dank erstmal für Eure Ratschläge
Leonhard
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn da nur nicht das Problem 1) nicht wär ...

Wenn ich das richtig verstehe suchst du eine Funktion die die Wertänderung einer Variable in der SPS detektiert. Da kenne ich bisher auch nur zwei Möglichkeiten:

- DirtyBit vom TP setzen lassen
- einzlne Bits der Variable durch die SPS auf Flanken testen

Die zweite Lösung ist so natürlich nicht universell einsetzbar, da man z.B. um einen Integerwert vollständig zu überwachen 16 Bits auf Flanken testen müsste. Die Methode ist eher dafür gedacht wenn z.B. sichergestellt ist dass der Integerwert immer nur um 1 erhöht oder erniedrigt wird (z.B. Zähler). Dabei würde dann immer nur das erste Bit kippen.
 
Wenn ich das richtig verstehe suchst du eine Funktion die die Wertänderung einer Variable in der SPS detektiert.

Genauso ist's;
aber mittlerweile rück ich grad ein anderes Konzept zurecht:
selbst wenn ich obiges Verfahren lösen könnte, bleiben immer noch
die Variablen, die die SPS selbst ändert (Gesamt-Mengenzähler, etc.),
ungespeichert übrig;
ich werd jetzt beim betriebsmäßigen Ausschalten der Anlage
(bei "Steuerung Aus" läuft die SPS immer noch weiter, mit dieser
"Betriebsart" halt , erst der Hauptschalter macht die SPS auch
spannungslos) alle relevanten Daten mit Grundprinzip SMB31/SMW32
ins int. EEProm sichern; das Ausschalten mit Hauptschalter passiert
nicht so oft, läßt sich leicht detektieren und trifft eigentlich
den Nagel auf den Kopf;
einzige Forderung an den Bediener: erst Steuerung Aus und dann
erst den Hauptschalter Aus;
beim Autofahren bleibst ja auch erst "geregelt" stehen und schaltest
dann erst denn Motor ab ... (es sei denn, man/frau fährt Toyota Prius)

Jedenfalls bin dank Eurem Mitdenken doch ein Gutes Stück weiter-
gekommen, wofür ich mich recht herzlich bedanke.
Werd mich bei passender Gelegenheit auch mit meinen Ideen an
Themenantworten beteiligen.

So long , und ein
Frohes Weihnachtsfest
Leonhard
 
Zurück
Oben