Ich bin mit der Programmierung noch nicht so erfahren und brauche etwas Hilfe, leider komme ich mit der Suchfunktion nicht weiter!
Ich möchte einige Analog-Werte in der Visualisierung als Kurve darstellen.
In der Trendanzeig ewerden ja nur die Werte dargestellt, wenn die Visualisierung betrachtet wird. Deshalb bin ich auf das Histogramm gegegangen.
Ich habe dazu ein Array (ARRAY[1..200] OF REAL; ) erstellt, mit dem ich die letzten 200 Werte darstellen kann. Wenn ich die 200 Werte voll habe wird das Array wieder von 1 an beschrieben. D. h. die Kurve von meinem Histgramm wird wieder von vorne an überschrieben.
Eleganter wäre es wenn natürlich wenn die komplette Kurve immer eins nach links verschoben werden würde, wenn der 201., 202. --- Wert erfasst wird.
Wie kan nich das Array ähnlich einem Fifo Buffer um einen Wert verschieben?
Vielen Dank für eure Hilfe
Karnik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
du kannst die Werte im Array ganz einfach verschieben:
VAR
 myArray: ARRAY [0..20] OFREAL;
 ValueCnt : INT; (* Position im Array *)
 i : INT; END_VAR(*FallsBufferamEndist, wirdArraynachlinksverschiben*)IFValueCnt=20THEN
   FORi :=1TO20DO
    myArray[i-1] :=myArray[i];
   END_FOR;
  ValueCnt :=20;ELSE
  ValueCnt :=ValueCnt+1;END_IF;(*AktuellenWertspeichern*)myArray[ValueCnt]:=
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Du fragst ValueCnt auf 200 ab und setzt es in der Schleife wieder auf 200. Da läuft ValueCNT über die 200 weiter, weil beim nächsten Durchlaufen ja auf 201 weitergezählt wird. Mit einen Vergleich auf > 200 funktioniert es.
Ausserdem werden bei mir die Werte nicht richtig wiedergegeben. Beim ersten ausfüllen bis Index 200 sind die Werte "Normal" danach, beim verschieben, werden sie irgentwie umgerechnet und ich erhalte Fantasiewerte.
Gruß
Karnik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo Zusammen!
Ich bin mit der Programmierung noch nicht so erfahren und brauche etwas Hilfe, leider komme ich mit der Suchfunktion nicht weiter!
Ich möchte einige Analog-Werte in der Visualisierung als Kurve darstellen.
In der Trendanzeig ewerden ja nur die Werte dargestellt, wenn die Visualisierung betrachtet wird. Deshalb bin ich auf das Histogramm gegegangen.
Ich habe dazu ein Array (ARRAY[1..200] OF REAL; ) erstellt, mit dem ich die letzten 200 Werte darstellen kann. Wenn ich die 200 Werte voll habe wird das Array wieder von 1 an beschrieben. D. h. die Kurve von meinem Histgramm wird wieder von vorne an überschrieben.
Eleganter wäre es wenn natürlich wenn die komplette Kurve immer eins nach links verschoben werden würde, wenn der 201., 202. --- Wert erfasst wird.
Wie kan nich das Array ähnlich einem Fifo Buffer um einen Wert verschieben?
Vielen Dank für eure Hilfe
Karnik
Hallo,
du kannst die Werte im Array ganz einfach verschieben:
Hallo!
Vielen Dank für die Antwort.
Was ist mit ar1 gemeint? Hoer sollte doch die Position im Array stehen oder nicht?
Karnik
aha... ein Fehler im Code. Es sollte "myArray" da stehen.
Ich habe schon Edit gemacht.
Hallo!
Leider funzt das ganze so nicht.
Du fragst ValueCnt auf 200 ab und setzt es in der Schleife wieder auf 200. Da läuft ValueCNT über die 200 weiter, weil beim nächsten Durchlaufen ja auf 201 weitergezählt wird. Mit einen Vergleich auf > 200 funktioniert es.
Ausserdem werden bei mir die Werte nicht richtig wiedergegeben. Beim ersten ausfüllen bis Index 200 sind die Werte "Normal" danach, beim verschieben, werden sie irgentwie umgerechnet und ich erhalte Fantasiewerte.
Gruß
Karnik
Hallo,
ja, stimmt. Es gibt wirklich Fantasiewerte.
Ich habe es einmal probiert, es hat funktioniert. Super, es ist so einfach.
Aber nach längere Analyse habe ich auch ermittelt, das es eine blöde Sache war
Ich habe das Code oben geändert und geprüft, es funktioniert.
Hallo!
Diese Lösung funktioniert!
Vielen Dank!!