Nabend,

ich versuche seit zwei Tagen die Schrittmotorklemme KL2531 zum leben zu
erwecken. (Einfach drehen lassen mit veränderbarer Drehrichtung und
Geschwindigkeit geht schon). Ich möchte eine abselute Anzahl von Schritten machen. Ich habe mich an dieses Beispiel gehalten:
http://sps-forum.de/showthread.php?t...=kl2531&page=2
Ich komme in meiner rudimentären Implementation bis zu dem Punkt wo der Fahrauftrag gestartet werden soll CTRL.2 auf 1. Nur der Motor fährt nicht los! Über die Systemsteuerung habe ich mir die Register R2 & R3 angesehen und gesehen das meine Benutzerdefinierten Werte geschrieben wurden.

Ich habe meinen FB für die KL2531 hier mit reinkopiert.
Ich bin jetzt ein wenig planlos wo ich weiter nach einen Fehler suchen kann.
Wenn Euch irgend etwas auffällt, wäre ich über Ideen dankbar!

mfg

Lars

FUNCTION_BLOCK KL2531
VAR_INPUT
Steps: UINT := 0;
Reset: BOOL := FALSE;
Enable: BOOL := FALSE;
END_VAR
VAR_OUTPUT
Busy: BOOL := FALSE;
Err: BOOL:= FALSE;
END_VAR
VAR
Enable_TRIG : R_TRIG;
Reset_TRIG : R_TRIG;
TerminalReg: ReadWriteTerminalReg;
nr: INT := 0;
temp_position: INT;
Step_Count: INT;
END_VAR

Enable_TRIG(CLK := Enable);
Reset_Trig(CLK := Reset);

CASE step_count OF

0: IF Enable_Trig.Q = TRUE THEN
Step_Count := 5;
Busy := TRUE;
Ctrl.0 := TRUE;
nr := 0;
temp_position := position;
END_IF

5: CTRL := 16#DF;
Velocity := 16#1235;
IF Status = 16#9F THEN
Step_Count := 8;
END_IF

8: Ctrl := 16#9F;
IF position = 16#1235 THEN
step_count := 10;
END_IF

10: Ctrl := 16#C2;
Velocity := 1234 + temp_position;
IF Status = 16#82 THEN
Step_Count := 15;
nr := 1;
END_IF

15: Ctrl := 16#82;
IF position = (1234 + temp_position) THEN
step_count := 20;
nr :=2 ;
END_IF

20: Ctrl := 16#C3;
Velocity := 5678 + temp_position;
IF Status = 16#83 THEN
step_count := 25;
nr := 3;
END_IF

25: Ctrl := 16#83;
IF position = (5678 + temp_position) THEN
step_count := 30;
Velocity := 0;
nr := 4;
END_IF

30: IF Velocity = 0 THEN
Step_count := 40;
nr := 5;
END_IF

40: CTRL.0 := TRUE;
CTRL.1 := FALSE;
CTRL.2 := TRUE;
CTRL.3 := FALSE;
CTRL.4 := FALSE;
CTRL.5 := FALSE;
CTRL.6 := FALSE;
CTRL.7 := FALSE;

IF extstatus.3 THEN
busy := FALSE;
Ctrl.2 := FALSE;
nr := 6;
step_count := 0;
END_IF

END_CASE