meikelneit
Level-2
- Beiträge
- 172
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Schönen guten Tag,
ich möchte folgendes in SCL programmieren. Ich lese der Reihe nach die Kommunikationszeit meiner CANOpen Kommunikation in ein Array ein und möchte dabei direkt das minimum und maximum erfassen.
Für das minimum habe ich folgendes Programmiert:
FOR #n := 0 TO 50 DO
IF "CANOpen_Zeitstempel".Array_Counter = 1 THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[0];
END_IF;
IF "CANOpen_Zeitstempel".Zeitmessung_Array_Min >= "CANOpen_Zeitstempel".Zeitmessung_Array[#n] THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[#n];
END_IF;
END_FOR;
Das tuts aber nicht. Wenn ich aber in der zweiten IF Bedingung eine Ergänzung mache, kommt ein Wert an:
FOR #n := 0 TO 50 DO
IF "CANOpen_Zeitstempel".Array_Counter = 1 THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[0];
END_IF;
IF "CANOpen_Zeitstempel".Zeitmessung_Array_Min >= "CANOpen_Zeitstempel".Zeitmessung_Array[#n] THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[#n];
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[1];
END_IF;
END_FOR;
Dann kommt ein Wert an, also erreicht er den Schritt ja. Es wirkt so als hätte er Probleme damit #n in dem Array anständig zu verarbeiten.
Kennt jemand eine Lösung oder generell eine bessere Methode?
Vielen dank im Voraus.
MfG Meikelneit
PS: Bitte entschuldigt, irgendwie kann ich die Zeilen nicht einrücken.
ich möchte folgendes in SCL programmieren. Ich lese der Reihe nach die Kommunikationszeit meiner CANOpen Kommunikation in ein Array ein und möchte dabei direkt das minimum und maximum erfassen.
Für das minimum habe ich folgendes Programmiert:
FOR #n := 0 TO 50 DO
IF "CANOpen_Zeitstempel".Array_Counter = 1 THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[0];
END_IF;
IF "CANOpen_Zeitstempel".Zeitmessung_Array_Min >= "CANOpen_Zeitstempel".Zeitmessung_Array[#n] THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[#n];
END_IF;
END_FOR;
Das tuts aber nicht. Wenn ich aber in der zweiten IF Bedingung eine Ergänzung mache, kommt ein Wert an:
FOR #n := 0 TO 50 DO
IF "CANOpen_Zeitstempel".Array_Counter = 1 THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[0];
END_IF;
IF "CANOpen_Zeitstempel".Zeitmessung_Array_Min >= "CANOpen_Zeitstempel".Zeitmessung_Array[#n] THEN
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[#n];
"CANOpen_Zeitstempel".Zeitmessung_Array_Min := "CANOpen_Zeitstempel".Zeitmessung_Array[1];
END_IF;
END_FOR;
Dann kommt ein Wert an, also erreicht er den Schritt ja. Es wirkt so als hätte er Probleme damit #n in dem Array anständig zu verarbeiten.
Kennt jemand eine Lösung oder generell eine bessere Methode?
Vielen dank im Voraus.
MfG Meikelneit
PS: Bitte entschuldigt, irgendwie kann ich die Zeilen nicht einrücken.