Messwerte Erfassen
Verfasst: Freitag 24. November 2017, 07:09
Hallo,
ich will gerne mit einer VIPA M13 folgenden Ablauf programmieren, hänge aber gerade fest,...Evtl kann mir hier jemand helfen =)
Google hat mir auch nicht sonderlich geholfen, hab unzählige Beitrage gelesen, aber es war nirgends das richtige bei.
Wenn das Signal "clk" kommt, soll ein Messwert "InValue" erfasst werden und in den Anfang des DB's geschrieben werden, wenn nun erneut das Signal kommt, wird der zweite wert um einen verschoben und der neue Wert kommt auf Platz eins usw,...
Das ganze bis 100 Werte voll sind.
Momentan schreibt er überall das gleiche rein,..
Mein Programm:
VAR_INPUT
clk : BOOL ;
reset : BOOL ;
InValue : REAL ;
END_VAR
VAR
statClkEdge : BOOL ;
statResEdge : BOOL ;
statValue : REAL ;
statValues : ARRAY [1 .. 100 ] OF REAL ;
END_VAR
VAR_TEMP
tempInt : INT ;
tempIndex : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
U #clk
FP #statClkEdge
SPBN end1
L #InValue
T #statValue
CALL "BLKMOV"
SRCBLK := P#DIX 8.0 REAL 100
RET_VAL := #tempInt
DSTBLK := P#DIX 12.0 REAL 100
end1: NOP 0
U #reset
FP #statResEdge
SPBN end2
LAR1 P##statValues
L 100
loop: T #tempIndex
L 0.000000E+000
T D [AR1,P#0.0]
+AR1 P#4.0
L #tempIndex
LOOP loop
end2: NOP 0
Vielen Dank!
Gruß Rouven
ich will gerne mit einer VIPA M13 folgenden Ablauf programmieren, hänge aber gerade fest,...Evtl kann mir hier jemand helfen =)
Google hat mir auch nicht sonderlich geholfen, hab unzählige Beitrage gelesen, aber es war nirgends das richtige bei.
Wenn das Signal "clk" kommt, soll ein Messwert "InValue" erfasst werden und in den Anfang des DB's geschrieben werden, wenn nun erneut das Signal kommt, wird der zweite wert um einen verschoben und der neue Wert kommt auf Platz eins usw,...
Das ganze bis 100 Werte voll sind.
Momentan schreibt er überall das gleiche rein,..
Mein Programm:
VAR_INPUT
clk : BOOL ;
reset : BOOL ;
InValue : REAL ;
END_VAR
VAR
statClkEdge : BOOL ;
statResEdge : BOOL ;
statValue : REAL ;
statValues : ARRAY [1 .. 100 ] OF REAL ;
END_VAR
VAR_TEMP
tempInt : INT ;
tempIndex : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
U #clk
FP #statClkEdge
SPBN end1
L #InValue
T #statValue
CALL "BLKMOV"
SRCBLK := P#DIX 8.0 REAL 100
RET_VAL := #tempInt
DSTBLK := P#DIX 12.0 REAL 100
end1: NOP 0
U #reset
FP #statResEdge
SPBN end2
LAR1 P##statValues
L 100
loop: T #tempIndex
L 0.000000E+000
T D [AR1,P#0.0]
+AR1 P#4.0
L #tempIndex
LOOP loop
end2: NOP 0
Vielen Dank!
Gruß Rouven