Step 7 S7-200 SPS - Analog Werte Forcen & Werte im EEPROM Speicher - Fragen ???

thomasdeldiaz

Level-1
Beiträge
47
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo lieber SPS Forum Mitglieder,

Beim meinen SPS S7-200 Programmieren bin ich auf die folgende Probleme gestoßen. Es handelt sich um folgendes:

1. Wie kann ich die Werte vom Analogeingang forcen ? Geht das überhaupt ? Ich habe eine VW Variable die ich nach dem Umrechnen des Analogsignals bekomme - sehe Foto. Ich kann in der Statustabele den Wert FORCEN und überschreiben, dann erscheint in der Spalte "Aktueller Wert" der gewünschte Wert und der Vorhängeschloss Zeichen. Dann aber im Programmablauf beim Angang der SBR bleibt der Wert ungeändert. Woran kann es liegen ?

SPS-01.PNG

SPS-02.PNG

2. Zweite Sache die irgendwie nicht vollkommen einwandfrei funktionieren will ist das Speichern der HMI Werte im EEPROM Gedächtnis. Ich habe von der SIEMENS Webseite dementsprechenden Baustein heruntergeladen und im meinen Programm schon beigefügt. Auf dem HMI habe ich eine Seite eingerichtet mit den EA-Feldern Eingabe/Ausgabe die für das Eintragen der Einstellungswerte dienen. Es sollen VW Variablen im EEPROM gespeichert werden. SAVE Taster löst das Speichersignal aus. Beispielweise der erste Wert "Niveau im Tank - MAX" wird mittels VW408 Variable an die SPS übertragen, deswegen habe ich beim EEPROM Baustein als "V_Start" den Wert 408 zugewiesen. Ich frage mich ob der Wert "Lenght" = 4 nicht zu groß ist und die Variablen überlappen sich. Es hat einmal funktioniert aber anstatt die Zahl 28000, die ich eingegeben hatte, erschien nach dem Hochfahren der Steuerung die Zahl 27948. Die alle Variable sollen aus den EA Feldern (EA Feld 1 -->VW408, EA Feld 2 -->VW410, usw. VW412, VW414, VW416)als VW Variable an die SPS übertragen und mittels SAVE gespeichert werden.

SPS-03.PNG

SPS-04.PNG

SPS-05.PNG

Könnte mir jemand eventuelle einen Tipp geben. :lol:

MfG,

T-MAck
 
1. vermutlich wird der VW400 irgendwo im Programm beschrieben. Das Forcen setzt keinen Schreibschutz, sondern weist lediglich am Anfang jedes Zyklus dem VW400 einen Wert zu. Kannst Du die SPS in STOP setzen oder den Schreibbefehl auf das VW400 im Programm überspringen? Dann sollte der Forcewert am HMI zu sehen sein.

2. Ich kenne den Baustein nicht, würde aber vermuten, daß bei Length die Anzahl Bytes anzugeben ist --> also 2 bei Words
VW408 schreiben: V_Start:=408 / Length:=2
VW410 schreiben: V_Start:=410 / Length:=2

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
2. Zweite Sache die irgendwie nicht vollkommen einwandfrei funktionieren will ist das Speichern der HMI Werte im EEPROM Gedächtnis.
...
Könnte mir jemand eventuelle einen Tipp geben.
Ich habe damals einen etwas anderen Weg gewählt, allerdings waren das auch meine ersten und einzigen Experimente damit. Daher habe ich einen eigenen Weg ohne den Siemens Baustein:



Das Problem bei der Sache ist ja, dass das Speichern jeder einzelnen Variable mehrere Zyklen dauern kann und daher nicht immer sofort ausführbar ist.
Deshalb habe ich für das Speichern einige Statusbits definiert und zwar je zu speichernder Variable 2.
Das erste Bit (im Beispiel V54.0) gibt immer an, dass der Wert geändert wurde und somit gespeichert werden muss. Das Bit wird vom HMI durch das Ereignis "Wert geändert" der jeweiligen Variable gesetzt.
Das zweite Bit (V54.1) gibt an, dass das Speichern dieser Variable bereits aktiv ist, damit dies nicht noch einmal ausgelöst wird. Es wird logischerweise beim Auslösen der Speicherung gesetzt (NW6).
Solange irgendetwas gespeichert wird, ist dann das Sondermerkerbit SM31.7 aktiv (PS: richtig ist, dass es zum Speicherstart aktiviert werden muss). Solange es aktiv ist, kann keine weitere Speicherung ausgelöst werden. Sind beide Statusbits aktiv und SM31.7 geht wieder auf inaktiv, werden beide Statusbits zurückgesetzt (NW5) und es kann ggf. eine neue Speicherung durchgeführt werden. Wegen des einfacheren Rücksetzens habe ich beide Statusbits direkt hintereinander definiert.
Für jede Speicherung habe ich so allerdings 2 NWs (halt erste Gehversuche). Ich vermute mal, dass dies in der Siemens SBR steckt/ausgelagert ist. Was ich mich jetzt frage, ist wie der Start ggf. gespeichert wird, falls schon ein anderes EEPROM-Speichern im Gange ist, da Du die SBR ja mehrfach nutzt.
PPS: Werden da Deine lokalen Variablen für Done und Busy, die ja scheinbar auch damit zusammen hängen, auch an globale Speicher weiter gegeben?


PS: Das SMB31 habe ich anhand der Hilfe F1 konfiguriert, wo dann auch die Größe (Byte, Word, Doppelword) und natürlich der Speicherstart SM31.7 drinsteht.
 
Zuletzt bearbeitet:
Eingabewert in EEPROM speichern

Ich programmiere das Speichern in den EEPROM ebenfalls direkt und nutze keine fertigen Bausteine.
Bei Einstellwerten die über ein Display eingegeben werden, gehe ich der Einfachheit halber davon aus, daß sich nicht mehrere Werte gleichzeitig ändern und brauche außer dem SM31.7 und dem Zyklus1-Bit SM0.1 keine weiteren Steuerbits.

Wenn ein Wert sich ändert, dann merke ich mir den neuen Wert als Wert_vorher und wenn (noch) kein Schreibauftrag läuft dann parametriere ich die EEPROM-Schreibsteuerung SMB31 und SMW32 und starte das Schreiben durch Setzen das SM31.7. Das SM31.7 wird von der Schreibsteuerung nach erfolgtem Schreiben automatisch zurückgesetzt. Ich bin mir ziemlich sicher, daß die Schreibsteuerung in der S7-200-Firmware nur dann tatsächlich in den EEPROM schreibt, wenn sich der neue (Soll-)Wert vom gespeicherten (Ist-)Wert unterscheidet.

Für diese simple Ansteuerung brauche ich je Variable 1 Netzwerk, wo jeweils nur 2x der Eingabewert ("neu"), 2x der Vergleichswert ("vorher") und 1x die Adresse des Eingabewertes angepasst werden müssen:
Code:
LDW<>  [COLOR="#0000FF"]Eingabewert_1:VW1000[/COLOR], [COLOR="#0000FF"]Eingabewert_1_vorher:VW1500[/COLOR]
MOVW   [COLOR="#0000FF"]Eingabewert_1:VW1000[/COLOR], [COLOR="#0000FF"]Eingabewert_1_vorher:VW1500[/COLOR]
UN     Erst_Zykl_ein:SM0.1
UN     In_EEPROM_speichern_7:SM31.7
MOVW   [COLOR="#0000FF"]+1000[/COLOR], Adresse_speichern:SMW32    // +1000 entspricht VW1000
MOVB   2, EEPROM_speichern:SMB31
S      In_EEPROM_speichern_7:SM31.7, 1

Man könnte jetzt die Verknüpfung mit dem SM31.7 noch vor den Vergleich setzen und müßte eigentlich auch noch dafür sorgen, daß der Eingabewert sich während dem Schreiben nicht ändert... doch der simple Code funktioniert bei mir seit Jahren ohne Probleme. Die Einstellwerte werden nur selten geändert und werden dann ohne weiteres Zutun automatisch in den EEPROM geschrieben.

Harald
 
Hallo HUCKI und PN/PD,

Vielen Dank für die Hinweise.

Es ist mir mittlerweile klar geworden, dass eine Sache in der Bedienungsanleitung des Siemens EEPROM Bausteins, ist mir zwischen den Zeilen verschwunden. Ich bin einen Fehler begangen und den START Bit (SAVE HMI Taster) nicht sol lang aktiv gehalten bis die Daten tatsächlich gespeichert werden. Wenn das alles so weit ist, dann soll ein Signal "DONE" kommen als Bestätigung des Speichervorgangs. Habe ich nicht gemacht und deshalb hat nicht so gut funktioniert wie ich es wollte.

Ich versuche nochmals am Montag und sage Bescheid wie es läuft.

Falls es doch nicht funktionieren sollte, dann werde ich bestimmt eure Ideen einsetzen müssen.

Bis dann,

T-Mack
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

es hat alles geklappt. Der SIEMENS EEPROM Baustein funktioniert einwandfrei. Muss alles ausgeführt werden wie es drin in der Bedienungsanleitung steht. Also ein SAVE Signal so lang halten bis DONE Signale ankommt und den Speichervorgang bestätigt.

Mit dem Wertforcen hat alles auch gut funktioniert. Ich habe die Bausteine mit dem Umwandlung und der Skalierung inaktive vorübergehend gemacht, dass die VW Variable in den nächsten Zyklen nicht über geschrieben wird.

Geht alles so weit sehr gut :D,

Danke für eure Hilfe.

Bis dann.

T-Mack
 
Zurück
Oben