DB mit Analogwerten

ziege8

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo bin neu hier und grad mit S7 angefangen, jetzt hab ich mal eine Frage. Ich möchte verschiedene Analoge Eingangswerte in einen DB schreiben und ich möchte den höchsten Wert der dabei am Potentiometer erreicht war wieder auslesen und analog ausgeben.
Habt ihr eine Idee? Und wann übernimmt er einen Wert in den DB?
Danke im voraus

Gruß ziege
 
Hallo ziege,

als erstes musst Du einmal den Analogwert von ein Eingabebaugruppe in die CPU bringen. Dazu ist die AI-Baugruppe in HW-Konfig zu projektieren.

Ein Weg um den Maximalwert in einem DB zu ermitteln ist folgender:

Code:
      L     "Datenbaustein".Maximalwert
      L     "Eingangswert1"
      >I    
      SPB   xyz

      T     "Datenbaustein".Maximalwert

xyz:  BE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo bin neu hier und grad mit S7 angefangen, jetzt hab ich mal eine Frage. Ich möchte verschiedene Analoge Eingangswerte in einen DB schreiben und ich möchte den höchsten Wert der dabei am Potentiometer erreicht war wieder auslesen und analog ausgeben.
Habt ihr eine Idee? Und wann übernimmt er einen Wert in den DB?

Wenn du da nur den Rohwert in dem DB haben möchtest, sollte das kein Problem sein.
Code:
L PEW 256   //Analogwert 
T DB1.DBW0   //Ziel im DB

aber ich denke mal du möchtest da schon einem brauchbaren Wert im DB haben, was bedeutet das du den Analogwert erst normieren musst, siehe hierzu den Beitrag von VL in der FAQ, der müsste dir dabei weiterhelfen können.
 
Hallo ziege 8,

sollen die verschiedenen werte gleichzeitig oder nacheinander aufgenommen werden? werden alle werte gespeichert oder nur eine bestimmte zeitlang?
 
Danke an alle für die schnellen Antworten. Ich wollte in einer bestimmten zeit (20s) verschiedene Werte anaolg in den DB fortlaufend schreiben aller 1s. D.h. es sollten nach dem Start je nach Skallierung 20 Werte im Db stehen und von denen sollte der größte Wert ermittelt und ausgegeben werden.
Danke Gruß ziege
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

spontan würde ich sagen, daß Du jede Sekunde mit MOVE und Flanke jeden Meßwert in den DB schreibst.
Dann einfach auswerten:

NW1:

Wert1 > Wert2
&
Wert1 > Wert3
&
.
.
.
&
Wert1 > Wert20

= Move Wert1 in MW


NW2

Wert2 > Wert1
&
Wert2 > Wert3
&
.
.
.
&
Wert2 > Wert20

= Move Wert2 in MW

Das gleiche mit allen anderen Werten.

Es geht sicher auch kürzer, aber da müste ich auf die Erfahrenen Benutzer verweisen.
 
Ich habs gewusst.

Es geht auch kürzer.

Habe die Angewohnheit bei neuen Aufgaben einfach nur die Aufgabenstellung zu nehmen, logisch zu formulieren und dann einfach runterzuschreiben. Einkürzen geht dann immernoch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Brauchst du die Werte nur für die suche nach dem max-wert? dann würde ich die gar nicht speichern, sondern gleich beim aufnehmen vergleichen

u M0.0 // merker für Auftragsstart
spbn m000
l pew 100 // analoger Eingangswert
l db1.dbw0 // kann auch mw sein?
<i // weil Eingang ja nur wort
spb vorb // wenn keiner dann vorbei
l pew 100 // analoger Eingangswert
t db1.dbw0 // kann auch mw sein?
vorb: nop 0
m000: nop 0

u m0.1 // Auftrag für Ausgabe
spbn m001
l db1.dbw0
t paw 102
m001: nop 0

u m0.3 // auftragsstart zum initialisieren
spbn m002
l 0 // analoger Eingangswert
l db1.dbw0
m002: nop 0

wenn du die werte wirklich alle speichern willst, dann kannst du mit indirekter adressierung arbeiten (ist dann so bibliotheksfähig) oder wirklich in jedemaufnahmezyklus 20 werte umherschieben. den vergleich würde ich immer sofort bei der messwerttaufnahme machen.
 
Danke Jungs für die Antworten. Problem erledigt, ich brauchte nur den max Wert und hab den über Vergleicher rausbekommen. Also danke nochmal an alle.

Gruß ziege
 
Zurück
Oben