Step 7 Spitze-Tal-Wert von AI speichern

Steve38

Level-1
Beiträge
486
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich würde gerne in einem DB meinen Spitzen bzw. Talwert von einem AI speichern, entsprechend mit Zeitstempel, wobei das kein Problem darstellt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Soorryy, hier mein Code mit entsprechnder Symbolik.


L PEW 200
BTI
T "Spitze-Tal-DB".Aktueller_Wert

L "Spitze-Tal-DB".Aktueller_Wert
ITD
T "Spitze-Tal-DB".Spitzenwert
L "Spitze-Tal-DB".Spitzenwert
DTR
T "Spitze-Tal-DB".Talwert
L PEW 200
L "Spitze-Tal-DB".Talwert
>R
= "Spitze-Tal-DB".Aenderung
UN "Spitze-Tal-DB".Aenderung
SPB M004
L PEW 200
L 1.000000e+001
*R
TRUNC
T "Spitze-Tal-DB".Aktueller_Wert
M004: NOP 0


Hier geht meine SPS auf Stop, BCD-Wandlerfehler
 
Zuletzt bearbeitet:
Code:
      L DB105.DBW 84       //Irgendein Wort - weiß keiner was drin steht
      BTI                  //Umwandlung des unbekannten Werts von BCD-Code nach INT
      T #TEMP5             //vermutlich unnötiges Zwischenspeichern
      L #TEMP5
      ITD                  //Umwandlung des unbekannten Werts von INT nach DINT
      T #TEMP6             //vermutlich noch mehr unnötiges Zwischenspeichern
      L #TEMP6
      DTR                  //Umwandlung des unbekannten Werts von DINT nach REAL
      T #TEMP7             //vermutlich noch mehr unnötiges Zwischenspeichern - Geht so wenn man TAK nicht kennt.
      L DB102.DBD 44       //Ein neuer unbekannter Wert
      L #TEMP7
      >R
      = #TEMP21            //viel mehr unnötiges Zwischenspeichern
      UN #TEMP21
      SPB M004
      L DB102.DBD 44       //neuer unbekannter Wert wird mal 10 gerechnet
      L 1.000000e+001
      *R
      TRUNC                //wieder in nen INT abgeschnitten...
      T DB105.DBW 84
M004: NOP 0

Meine Hellseherkugel kann sich zwar vorstellen was das sein soll, aber ausführlich ist deine Beschreibung nicht.
Mit dem BTI-Befehl kann die Glaskugel aber nix anfangen....

No was: Wenn du Code-Postest, drücke in der Menü-Leiste das #-Zeichen und setze den Code innerhalb der eingefügten Code-Tags.
 
Zuletzt bearbeitet:
Logisch, der PEW200 ist noch nicht ordentlich skaliert und entsprechend nicht im Format.

Code:
      L     "Spitze-Tal-DB".Aktueller_Wert
      ITD   
      T     "Spitze-Tal-DB".Spitzenwert
      L     "Spitze-Tal-DB".Spitzenwert
      DTR   
      T     "Spitze-Tal-DB".Talwert
      L     "Analogwerte skaliert".Motorstrom_16Bit
      L     "Spitze-Tal-DB".Talwert
      >R    
      =     "Spitze-Tal-DB".Aenderung
      UN    "Spitze-Tal-DB".Aenderung
      SPB   M004
      L     "Analogwerte skaliert".Motorstrom_16Bit
      L     1.000000e+001
      *R    
      TRUNC 
      T     "Spitze-Tal-DB".Aktueller_Wert
M004: NOP   0


Das Problem ist das meine SPS auf Störung geht, eigentlich möchte ich nur den aktuellen Spitzen bzw. Talwert setzten und gleichzeitig ein Bit setzten für meinen Zeitstempel, aber ich stehe auf dem Schlauch
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Den PEW-Wert lese ich über einen FC105 ordentlich ein und skaliere mir diesen:

Code:
      U     M      0.0
      =     L      0.0
      BLD   103
      U     M      0.1
      SPBNB _001
      CALL  FC   105
       IN     :=PEW200
       HI_LIM :=6.000000e+001
       LO_LIM :=0.000000e+000
       BIPOLAR:=L0.0
       RET_VAL:=DB3.DBW0
       OUT    :=DB6.DBD0
_001: NOP   0

Danach entsprechend wandeln:

Code:
      L     DB6.DBD    0
      RND   
      T     DB6.DBW    4
 
Wäre in meinem Fall dann entsprechnd so:


Code:
      U     "Spitze-Tal-DB".Erster_Start
      FP    "Spitze-Tal-DB".Hilfsbit
      SPBN  s0
      L     "Analogwerte skaliert".Motorstrom
      T     "Spitze-Tal-DB".Spitzenwert
      T     "Spitze-Tal-DB".Talwert

s0:   L     "Analogwerte skaliert".Motorstrom
      L     "Spitze-Tal-DB".Spitzenwert
      >=R   
      SPBN  s1
      L     "Analogwerte skaliert".Motorstrom
      T     "Spitze-Tal-DB".Spitzenwert

s1:   L     "Analogwerte skaliert".Motorstrom
      L     "Spitze-Tal-DB".Talwert
      <=R   
      SPBN  s2
      L     "Analogwerte skaliert".Motorstrom
      T     "Spitze-Tal-DB".Talwert

s2:   SET   
      SAVE


Perfekt.

Würde gerne jedesmal, wenn der Spitzen oder Talwert erreicht wird, ein Bit setzten, dass mir entsprechend den Stemp setzt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist ja eigentlich logis. Denn der Motorsstrom wird erst beim Start ansteigen. Du brauchst also noch eine Abfrage zum <=R welche dir den Zeitpunkt ab dem der Talwert abgespeichert werden soll freigibt.
- Zeitverzögerung nach Motorstart.
- Einsatz des Schützes
- überschreitung eines Schwellwertes
- etc.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Den PEW-Wert lese ich über einen FC105 ordentlich ein und skaliere mir diesen

"Analogwerte skaliert".Motorstrom
Na dann wissen ja schon welche Art von Analogwert (keinen RTD) du hast. ...Das
L PEW 200
BTI
T "Spitze-Tal-DB".Aktueller_Wert
...
sah nach nem missglückten Versuch aus eine Temp umzuwandeln....

Code:
      L     "Spitze-Tal-DB".Aktueller_Wert                //INTEGER
      ITD   
      T     "Spitze-Tal-DB".Spitzenwert                   //DINT
      L     "Spitze-Tal-DB".Spitzenwert
      DTR   
      T     "Spitze-Tal-DB".Talwert                      //REAL


//-------------------------------------------------------- Wozu sind da bis jetzt 3 Formate im Spiel? Warum hat der Tal- und der Spitzenwert ein unterschiedliches Format


      L     "Analogwerte skaliert".Motorstrom_16Bit      //Vermutlich REAL müsste DB6.DBD0 bei dir sein - heißt aber 16Bit - doch kein REAL? Ist aber mit REAL-Vergleich...
      L     "Spitze-Tal-DB".Talwert
      >R    
      =     "Spitze-Tal-DB".Aenderung


      UN    "Spitze-Tal-DB".Aenderung                   //Welchen zweck soll der Teil erfüllen? Willst du hier vielleicht irgendwelche Werte rausfiltern???
      SPB   M004

      L     "Analogwerte skaliert".Motorstrom_16Bit
      L     1.000000e+001
      *R    
      TRUNC 
      T     "Spitze-Tal-DB".Aktueller_Wert

M004: NOP 0

Auch hier stimmen wieder deine Formate nicht
Code:
[COLOR=#333333]Code:[/COLOR]
      U     "Spitze-Tal-DB".Erster_Start
      FP    "Spitze-Tal-DB".Hilfsbit
      SPBN  s
      L     "Analogwerte skaliert".Motorstrom  //Könnte das  DB6.DBW4 bei dir sein - Also INT 
      T     "Spitze-Tal-DB".Spitzenwert           //Ist laut deinem oberen Post ein DINT - geht noch
      T     "Spitze-Tal-DB".Talwert           //Ist laut deinem oberen Post ein [U][B]REAL - GEHT NICHT.[/B][/U]
 
Zuletzt bearbeitet:
Die Werte laufen jetzt einwandfrei, inkl.Bit setzten. Bzw. Zeitstempel

Danke für Eure Hilfe
 
Zuletzt bearbeitet:
Zurück
Oben