Datenspeicherung im DB in zeitlichen Intervallen

Zuviel Werbung?
-> Hier kostenlos registrieren
Das MW 20 fängt bei Inhalt 0 an.

VL zählt eins dazu und speichert es nicht wieder ab, deswegen wird nur ein DBWort beschrieben.

Behaupte ich jetzt mal einfach so.

L MB 20
+ 1
T MB 20

könnte glaube ich helfen.
 
Zuletzt bearbeitet:
Das MW 20 fängt bei Inhalt 0 an.

VL zählt eins dazu und zieht später wieder ab, deswegen wird nur ein DBWort beschrieben.

Es fehlt die Initialisierung des MW 20.

Behaupte ich jetzt mal einfach so.

wah? wo zieh ich was ab? siehst du dich noch? :ROFLMAO:

ja, MB20 fängt bei null an, pro takt einen drauf, bei 9 knallen wir es auf -1, dadurch beim nächsten takt 0 ...

man könnte es auf -1 für den ersten start initialisieren, sehe aber keine notwendigkeit dafür...
 
Der Grundaufbau ist von so einem Übungsprojekt zum Analogbaustein und der Rest ist dazu gebastelt^^

IM FC1 ist der FC105 drin und im FC2 der FC106


FC1
Code:
 U     M      4.0
      =     L      4.0
      BLD   103
      U     E      0.1
      SPBNB M001
      CALL  "SCALE"
       IN     :=PEW292
       HI_LIM :=1.000000e+001
       LO_LIM :=0.000000e+000
       BIPOLAR:=L4.0
       RET_VAL:=MW102
       OUT    :=MD104
M001: NOP   0


      L     MD   104
      T     MW    30
FC2
Code:
      U     M      4.0
      =     L      3.0
      BLD   103
      U     E      0.0
      SPBNB _001
      CALL  "UNSCALE"
       IN     :=MD104
       HI_LIM :=1.000000e+001
       LO_LIM :=0.000000e+000
       BIPOLAR:=L3.0
       RET_VAL:=MW108
       OUT    :=PAW288
_001: NOP   0
FC3
U M 0.5
FP M 10.0
SPBN M001
L MB 20
+ 1
L 16
*I
LAR1
AUF DB 10
L MW 30
T DBW [AR1,P#0.0]
L MB 20
L 9
==I
SPBN M001
L -1
T MB 20
M001: NOP 0

Vielleicht habt ihre gelich ein paar Verbesserungsvorschläge
 
Ja.

Code:
U M 0.5
FP M 10.0
SPBN M001
L MB 20
+ 1
[COLOR=red]T MB 20
[/COLOR]L 16
*I 
LAR1 
AUF DB 10
L MW 30
T DBW [AR1,P#0.0]
L MB 20
L 9
==I 
SPBN M001
L -1
T MB 20
M001: NOP 0

Siehe oben.

griele Füße dtsclipper
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok jetzt funktioniert alles :cool:.

aber eine Frage hab ich jetzt noch: Wenn ich jetzt den Code nochmal benutzen will, was muss ich alles ändern damit das funktioniert?
Ich vermute mal das was ich Blau makiert habe aber was noch.

Code:
  U M 0.5 
FP M 10.0 
SPBN M001 
[COLOR=Blue]L MB 21 [/COLOR]
+ 1 [COLOR=red]
[COLOR=Blue]T MB 2[/COLOR][/COLOR][COLOR=Blue]1[/COLOR]
L 16 
*I  
LAR1  
[COLOR=Blue]AUF DB 12 [/COLOR]
[COLOR=Blue]L MW 50 [/COLOR]
T DBW [AR1,P#0.0] 
[COLOR=Blue]L MB 21 [/COLOR]
L 9 
==I  
SPBN M001 
L -1 
[COLOR=Blue]T MB 21 [/COLOR]
M001: 
NOP 0
 
Zuletzt bearbeitet:

Anhänge

  • MB20-1.gif
    MB20-1.gif
    6,6 KB · Aufrufe: 21
.. zumindestens lässt sich die -1 so nicht da rein laden. Da der TE Anfänger ist, wollte ich nicht mit AKKU1 L-H und L-L (oder doch andersrum?) anfangen, deswegen diese etwas unvollständige Behauptung.

Funktionieren eigentlich INT-Vergleiche mit einem negative belegten Byte?
Wenn ich es kurz überschlage eher nicht, oder täusche ich mich?
 
Funktionieren eigentlich INT-Vergleiche mit einem negative belegten Byte?
Wenn ich es kurz überschlage eher nicht, oder täusche ich mich?
Jaaa! So 'rum wird ein Schuh 'draus. :)
INT-Vergleiche auf negative signed-BYTE funktionieren nicht und auch INT-Arithmetik funktioniert nicht wie erwartet.
Wenn man will, daß bei Addition einer +1 auf signed-BYTE -1 eine 0 wird, dann muß man INC 1 benutzen (bei INT-Addition erhält man 256 statt 0).
Das ist auch der Grund, warum der Code von VL höchstwahrscheinlich zum CPU-Stop wegen Zugriffsfehler/Bereichlängenüberschreitung führt.
So sollte der Code aussehen (oder statt MB20 besser überall MW20 benutzen):
Code:
U M 0.5
FP M 10.0
SPBN M001
L MB 20
[COLOR="Red"]INC 1[/COLOR]
T MB 20
L 16
*I
LAR1
AUF DB 10
L MW 30
T DBW [AR1,P#0.0]
L MB 20
L 9
==I
SPBN M001
L -1
T MB 20
M001: NOP 0

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach dem das Programm jetzt nun einwandfrei läuft bin ich ein bisschen am erweitern. :wink:
Wollte jetzt kein neuen Thread aufmachen aber meine zwei Fragen:
Wie kreige ich den am besten den Max Wert herraus und gibt es eine Möglichkeit den Mittelwert einfacher zu ermitteln als meine jetztige Version:
Code:
      AUF   DB    10
      L     DBW    0
      L     DBW    2
      +I    
      L     DBW    4
      +I    
      L     DBW    6
      +I    
      L     DBW    8
      +I    
      L     DBW   10
      +I    
      L     DBW   12
      +I    
      L     DBW   14
      +I    
      L     DBW   16
      +I    
      L     DBW   18
      +I    
      L     DBW   20
      +I    
      L     DBW   22
      +I    
      L     DBW   24
      +I    
      L     DBW   26
      +I    
      L     DBW   28
      +I    
      L     DBW   30
      +I    
      L     DBW   32
      +I    
      L     DBW   34
      +I    
      L     DBW   36
      +I    
      L     DBW   38
      +I    

      L     20
      /I    
      T     MB    50
 
Hallo,

Das ganze über eine Schleife laufen lassen (weniger Code)

und das Ergebnis nicht unbedingt in ein Byte rammen, eher Word.
 
Zurück
Oben