REGION Parameter_Absolut_Set
(* --- Schrittkette Absolutwert setzen und remanent im Servo abspeichern --- *)
CASE #nSchrittketteParaSetAbs OF
1: // Startwerte setzen
#FB_SINA_PARA_S_Instance.ReadWrite := 1; //schreiben
#FB_SINA_PARA_S_Instance.AxisNo := #I_AxisNo_Starter;
#FB_SINA_PARA_S_Instance.hardwareId := #I_HWID_Sollwert_Slot;
#FB_SINA_PARA_S_Instance.Parameter := 2599;
#FB_SINA_PARA_S_Instance.Index := 0;
#FB_SINA_PARA_S_Instance.ValueWrite2 := #I_SetAbsolutwertValue;
#nSetAbsolut_ok := 0;
#nSchrittketteParaSetAbs := 2;
2: // Auftrag starten
#FB_SINA_PARA_S_Instance.Start := True;
IF #FB_SINA_PARA_S_Instance.Busy
AND NOT #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 3;
END_IF;
3: // Auftrag fertig
#FB_SINA_PARA_S_Instance.Start := True;
IF NOT #FB_SINA_PARA_S_Instance.Busy
AND #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 4;
#FB_SINA_PARA_S_Instance.Start := False;
END_IF;
4: // Rückmeldung auslesen
#FB_SINA_PARA_S_Instance.ReadWrite := 0; //lesen
#nSchrittketteParaSetAbs := 5;
5: // Rückmeldung auslesen starten
#FB_SINA_PARA_S_Instance.Start := True;
IF #FB_SINA_PARA_S_Instance.Busy
AND NOT #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 6;
END_IF;
6: // Auftrag fertig
#FB_SINA_PARA_S_Instance.Start := True;
IF NOT #FB_SINA_PARA_S_Instance.Busy
AND #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 11;
#FB_SINA_PARA_S_Instance.Start := False;
END_IF;
7: //Korrekter Wert zurückgelesen?
IF (#FB_SINA_PARA_S_Instance.ValueRead2 = #I_SetAbsolutwertValue) THEN
#nSchrittketteParaSetAbs := 11;
#nSetAbsolut_ok := 1;
ELSE
#nSchrittketteParaSetAbs := 4;
END_IF;
11: // Startwerte setzen Geberpos setzen
#FB_SINA_PARA_S_Instance.ReadWrite := 1; //schreiben
#FB_SINA_PARA_S_Instance.AxisNo := #I_AxisNo_Starter;
#FB_SINA_PARA_S_Instance.hardwareId := #I_HWID_Sollwert_Slot;
#FB_SINA_PARA_S_Instance.Parameter := 2507;
#FB_SINA_PARA_S_Instance.Index := 0;
#FB_SINA_PARA_S_Instance.ValueWrite1 := 2.0;
#nSchrittketteParaSetAbs := 12;
12: // Auftrag starten
#FB_SINA_PARA_S_Instance.Start := True;
IF #FB_SINA_PARA_S_Instance.Busy
AND NOT #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 13;
END_IF;
13: // Auftrag fertig
#FB_SINA_PARA_S_Instance.Start := True;
IF NOT #FB_SINA_PARA_S_Instance.Busy
AND #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 14;
#FB_SINA_PARA_S_Instance.Start := False;
END_IF;
14: // Rückmeldung auslesen
#FB_SINA_PARA_S_Instance.ReadWrite := 0; //lesen
#nSchrittketteParaSetAbs := 15;
15: // Rückmeldung auslesen starten
#FB_SINA_PARA_S_Instance.Start := True;
IF #FB_SINA_PARA_S_Instance.Busy
AND NOT #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 16;
END_IF;
16: // Auftrag fertig
#FB_SINA_PARA_S_Instance.Start := True;
IF NOT #FB_SINA_PARA_S_Instance.Busy
AND #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 21;
#FB_SINA_PARA_S_Instance.Start := False;
END_IF;
17: //Korrekter Wert zurückgelesen?
IF (#FB_SINA_PARA_S_Instance.ValueRead1 = 3.0) THEN
#nSchrittketteParaSetAbs := 21;
#nSetAbsolut_ok := 2;
ELSE
#nSchrittketteParaSetAbs := 14;
END_IF;
21: // Startwerte setzen RAM nach ROM kopieren
#FB_SINA_PARA_S_Instance.ReadWrite := 1; //schreiben
#FB_SINA_PARA_S_Instance.AxisNo := #I_AxisNo_Starter;
#FB_SINA_PARA_S_Instance.hardwareId := #I_HWID_Sollwert_Slot;
#FB_SINA_PARA_S_Instance.Parameter := 971;
#FB_SINA_PARA_S_Instance.Index := 0;
#FB_SINA_PARA_S_Instance.ValueWrite1 := 1.0;
#nSchrittketteParaSetAbs := 22;
22: // Auftrag starten
#FB_SINA_PARA_S_Instance.Start := True;
IF #FB_SINA_PARA_S_Instance.Busy
AND NOT #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 23;
END_IF;
23: // Auftrag fertig
#FB_SINA_PARA_S_Instance.Start := True;
IF NOT #FB_SINA_PARA_S_Instance.Busy
AND #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 24;
#FB_SINA_PARA_S_Instance.Start := False;
END_IF;
24: // Rückmeldung auslesen
#FB_SINA_PARA_S_Instance.ReadWrite := 0; //lesen
#nSchrittketteParaSetAbs := 25;
25: // Rückmeldung auslesen starten
#FB_SINA_PARA_S_Instance.Start := True;
IF #FB_SINA_PARA_S_Instance.Busy
AND NOT #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 26;
END_IF;
26: // Auftrag fertig
#FB_SINA_PARA_S_Instance.Start := True;
IF NOT #FB_SINA_PARA_S_Instance.Busy
AND #FB_SINA_PARA_S_Instance.Done
THEN
#nSchrittketteParaSetAbs := 27;
#FB_SINA_PARA_S_Instance.Start := False;
END_IF;
27: //Korrekter Wert zurückgelese?
IF (#FB_SINA_PARA_S_Instance.ValueRead1 = 0.0) THEN
#nSchrittketteParaSetAbs := 31;
#nSetAbsolut_ok := 3;
ELSE
#nSchrittketteParaSetAbs := 24;
END_IF;
31: // Ende
#nSchrittketteParaSetAbs := 0;
#IO_stAxis_CMD.set_absolut := False;
#CMD_SetAbsoulut := False;
ELSE // Statement section ELSE
;
END_CASE;
END_REGION
(* --- Aufruf Parametrierung Siemens -- *)
#FB_SINA_PARA_S_Instance();
(* --- Timeout Parameter übertragen --- *)
#TON_ParameterTimeout(IN:=#CMD_SetAbsoulut,
PT:=t#10s);