ThomasHoffmannUlm
Level-1
- Beiträge
- 35
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hallo Forum 
Ich schlage mich seit einiger Zeit mit einem Thema rum was sicher der ein oder andere mit Leichtigkeit lösen kann
Also.
1215 SPS
FESTO Antrieb EMCA auf einer ELGA Achse.
In einem Array mit 2000 Werten haben ich Koordinaten für die Positionierung der Achse.
Die Achse wird referenziert, freigeschaltet und über die Beobachtungstabelle kann ich munter fahren.
In einer einfache IF Anweisung habe ich in einem cyclic interrupt - damit ich das besser sehen kann folgenden FB eingebunden.
Die Achse ist natürlich enabled.
Warum erhalte ich nicht sauber immer Treu and false um entsprechend hier den nächsten Wert laden zu können.
Vorweg, ja ich hätte auch eine For Schleife nehmen können... Aber bis zum Ende komm ich gar nicht, denn der
Antrieb ist zwar auf MC = True oder DriveMoving = False ....
Es ist irgendwie so, dass die Flanken nicht am Contoller ankommen, besser gesagt nicht immer.
Was mach ich falsch???
Danke
Thomas
"FHPP_CTRL_DB".Brake := TRUE;
"FHPP_CTRL_DB".Halt := TRUE;
"FHPP_CTRL_DB".Stop := TRUE;
IF #StartAuslesen = TRUE THEN
IF "FHPP_CTRL_DB".DriveMoving = FALSE THEN
"FHPP_CTRL_DB".StartTask := FALSE;
#AktuellePosition := #AktuellePosition + 1;
#YAchse := ("CAD_SQL_Data".Pos[#AktuellePosition].Y) * (1000);
"FHPP_CTRL_DB".SetValuePosition := #YAchse;
"FHPP_CTRL_DB".StartTask := TRUE;
ELSE
"FHPP_CTRL_DB".StartTask := FALSE;
#YAchse := ("CAD_SQL_Data".Pos[#AktuellePosition].Y) * (1000);
"FHPP_CTRL_DB".SetValuePosition := #YAchse;
"FHPP_CTRL_DB".StartTask := TRUE;
;
END_IF;
"FHPP_CTRL_DB".StartTask := FAlSE;
IF #AktuellePosition = 1999 THEN
#StartAuslesen := FALSE;
#AktuellePosition := -1;
;
END_IF;
;
END_IF;

Ich schlage mich seit einiger Zeit mit einem Thema rum was sicher der ein oder andere mit Leichtigkeit lösen kann
Also.
1215 SPS
FESTO Antrieb EMCA auf einer ELGA Achse.
In einem Array mit 2000 Werten haben ich Koordinaten für die Positionierung der Achse.
Die Achse wird referenziert, freigeschaltet und über die Beobachtungstabelle kann ich munter fahren.
In einer einfache IF Anweisung habe ich in einem cyclic interrupt - damit ich das besser sehen kann folgenden FB eingebunden.
Die Achse ist natürlich enabled.
Warum erhalte ich nicht sauber immer Treu and false um entsprechend hier den nächsten Wert laden zu können.
Vorweg, ja ich hätte auch eine For Schleife nehmen können... Aber bis zum Ende komm ich gar nicht, denn der
Antrieb ist zwar auf MC = True oder DriveMoving = False ....
Es ist irgendwie so, dass die Flanken nicht am Contoller ankommen, besser gesagt nicht immer.
Was mach ich falsch???
Danke
Thomas
"FHPP_CTRL_DB".Brake := TRUE;
"FHPP_CTRL_DB".Halt := TRUE;
"FHPP_CTRL_DB".Stop := TRUE;
IF #StartAuslesen = TRUE THEN
IF "FHPP_CTRL_DB".DriveMoving = FALSE THEN
"FHPP_CTRL_DB".StartTask := FALSE;
#AktuellePosition := #AktuellePosition + 1;
#YAchse := ("CAD_SQL_Data".Pos[#AktuellePosition].Y) * (1000);
"FHPP_CTRL_DB".SetValuePosition := #YAchse;
"FHPP_CTRL_DB".StartTask := TRUE;
ELSE
"FHPP_CTRL_DB".StartTask := FALSE;
#YAchse := ("CAD_SQL_Data".Pos[#AktuellePosition].Y) * (1000);
"FHPP_CTRL_DB".SetValuePosition := #YAchse;
"FHPP_CTRL_DB".StartTask := TRUE;
;
END_IF;
"FHPP_CTRL_DB".StartTask := FAlSE;
IF #AktuellePosition = 1999 THEN
#StartAuslesen := FALSE;
#AktuellePosition := -1;
;
END_IF;
;
END_IF;