Messwerte Erfassen

in dieses Forum kommt alles, was mit speicherprogrammierbaren Steuerungen zu tun hat
Antworten
Rouven90
Null-Leiter
Beiträge: 18
Registriert: Donnerstag 29. Juni 2017, 07:05
Wohnort: Bremen

Messwerte Erfassen

Beitrag von Rouven90 » 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! dank1
Gruß Rouven

troete
Null-Leiter
Beiträge: 432
Registriert: Donnerstag 16. August 2007, 01:03

Re: Messwerte Erfassen

Beitrag von troete » Donnerstag 6. Juni 2019, 23:48

Hi,

leider kann ich nur bedingt nachvollziehen welcher Code oben geschrieben ist. Da aber bisher noch niemand etwas zu diesem Thema geschrieben hat, versuche ich einfach einmal mein Glück und schreibe einmal was mir einfällt. Vielleicht findet sich dann so der "Fehler".
Ich habe unten einige Kommentare hinterlassen. Dies ist zumindest schon Mal ein Anfang. Schreib dir doch selbst die Kommentare hinter jede Zeile. Ich würde auf Anhieb sagen, das hier sehr viele Dinge nicht passen. Um mehr zu sagen bräuchte man mehr Infos.


VAR_INPUT -> Deklaration der Eingangsvariablen?!
clk : BOOL ; 
reset : BOOL ; 
InValue : REAL ; 
END_VAR


VAR -> Deklaration der übrigen Variablen innerhalb des Skriptes?!
statClkEdge : BOOL ; 
statResEdge : BOOL ; 
statValue : REAL ; 
statValues : ARRAY [1 .. 100 ] OF REAL ; 
END_VAR

VAR_TEMP
tempInt : INT ; 
tempIndex : INT ; 
END_VAR


BEGIN -> ist dies hier an der richtigen Stelle?
NETWORK -> fehlen hier nicht ein paar Klammern? Syntax?
TITLE = -> richtige Stelle?


U #clk  -> wenn der Eingang da ist,
FP #statClkEdge -> und eine positive Flanke kommt, wo wechselt diese?????
SPBN end1 -> springe nach End1, also macht er hier nichts weiter, sofern beide Bedingungen erfüllt sind. Hier müsste ich Wissen was der statCLKEdge ist und macht.



Sollte die obrige Bedingung nicht erfüllt sein, dann lade die Eingangsvariable und transferiere sie in eine statische.
L #InValue 
T #statValue 

Rufe einen Blockmove auf .......
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 

troete
Null-Leiter
Beiträge: 432
Registriert: Donnerstag 16. August 2007, 01:03

Re: Messwerte Erfassen

Beitrag von troete » Donnerstag 6. Juni 2019, 23:49

OK, der Beitrag ist von 2017 old-man1

Rouven90
Null-Leiter
Beiträge: 18
Registriert: Donnerstag 29. Juni 2017, 07:05
Wohnort: Bremen

Re: Messwerte Erfassen

Beitrag von Rouven90 » Freitag 7. Juni 2019, 07:13

Vielen Dank für die Hilfe.
Habe damals das Problem noch gelöst.

Weiß nur jetzt nicht mehr genau wie :D

Schönes Wochenende!

Antworten