Analogwerte ähnlich Schieberegister speichern

steffen21m

Level-1
Beiträge
71
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute ! :)
Ich habe eine Simatic S5 mit 942 B CPU, die an einer Lauer (ähnlich OP) angeschlossen ist.
In der Lauer kann ich eine Schrittzeit (wie lange der Schritt dauert) und eine Intervallzeit (wie oft in diesem Schritt ein Impuls kommt) einstellen.
Nun möchte ich folgendes realisieren:
Während der Schrittzeit soll alle Impulszeit ein Analogwert in einem Datenbaustein gespeichert werden. Da beide Zeiten variabel sind, möchte ich nicht die Anzahl der speicherbaren Werte vorgeben.
Beispiel:
Schrittzeit 120 Sekunden / Intervallzeit 10 Sekunden
Also sollen alle 10 Sekunden innerhalb der 120 Sekunden Werte gespeichert werden (120 Sekunden geteilt durch 10 Sekunden = 10 Werte)
Gibt es eine Möglichkeit das ganze irgendwie allgemein zu Adressieren ?
z.B Schrittzeit geteilt durch Intervallzeit = Anzahl der Werte
Ein Zähler zählt die Impulse der Intervallzeit
Aber wie kann ich den Zähler mit Datenworten verknüpfen ?? Zähler gleich 1 = schreibe Wert in Datenwort 1 .....

Oder wie würdet ihr das ganze realisieren ??

Vielen Dank für eure Mühe :roll:

Gruss Steffen
 
z.B.
es sollen 20 DW mit Analogeingang PW 128 gespeichert werden.
(von DW 1 bis DW 20)

L KF 20 <---- Zahl 20 speichern
T MW 200

L KF 128 <---- Adresse PW 128
T MW 202

UN M 20.0 <--- Achtung ! Wischmerker (d.h. nur eine Zykluszeit = 1)
BEB

L DW 0 <--- DW 0 = 0 => Anfang d.h. Eins eintragen
L KF 1 (DW 0 dient als Zwischenspeicher)
>F
SPB M001
T DW 0
M001

L DW 0
L MW 200
>=F <--- alle 20 DW belegt ?
BEB

B MW 202 <---- PW 128 indirekt laden
L PW 0

B DW 0
T DW 0

L DW 0 <--- Adresse + 1 (d.h. 1,2,3,4,5......20)
I 1
T DW0

BEA

Allgemein.
------------

L KF 123
T MW 100

B MW 100 <--- Adresseübergabe
L DW 0 <--- immer Null ! = L DW 123

L KF 111
T MW 102
L KF 222
T MW 104

AUF DB 100
B MW 102
L DW 0 <---- lade DW 111 aus dem DB 100
AUF DB 101
B MW 104
T DW 0 <--- und transferiere in DB 101 ...DW 222


javascript:emoticon(':D')
 
Zurück
Oben