Control Unit
Dynamic CS | ||
Beschreibung | Control Unit zur Umschaltung des Trackings des dynamischen CS. | |
Datentyp | ||
ST-Pfad | gpCh[channel_idx]^.channel_mc_control.dyn_cs | |
Kommandierte, angeforderte Daten | ||
ST-Element | .command_w .request_r | |
Datentyp | HLI_COORDINATE_SYSTEM_INT translation : ARRAY [0..HLI_CS_AXES_MAXIDX] OF DINT; | |
| X/Y/Z-translation in [0.1 µm] | |
rotation : ARRAY [0..HLI_CS_AXES_MAXIDX] OF DINT; | ||
| A/B/C-rotation in [0.0001 degree] | |
Zugriff | PLC schreibt Command und liest Request | |
Rückgabe-Daten | ||
ST-Element | .state_r | |
Datentyp | HLI_DYN_CS_STATE actual_state : DINT; |
HLI_DYN_CS_INACTIVE = 0 |
| HLI_DYN_CS_ACTIVATING = 1, | |
| HLI_DYN_CS_ACTIVE = 2, | |
| HLI_DYN_CS_DEACTIVATING = 3, | |
| HLI_DYN_CS_ERROR = -1 | |
Zugriff | PLC liest | |
Flusskontrolle kommandierter Wert | ||
ST-Element | .command_semaphor_rw | |
Datentyp | BOOL | |
Wertebereich | [TRUE, FALSE] | |
Besonderheiten | Verbrauchsdatum | |
Zugriff | CNC übernimmt die kommandierten Daten, wenn dieses Element den Wert TRUE besitzt und setzt nach vollständiger Übernahme der Daten dieses Element auf den Wert FALSE. PLC kann Daten zur Kommandierung schreiben, wenn dieses Element den Wert FALSE besitzt. Sind alle zu kommandierenden Daten geschrieben, setzt die PLC dieses Element auf den Wert TRUE. | |
Flusskontrolle angeforderter Wert | ||
ST-Element | .request_semaphor_rw | |
Datentyp | BOOL | |
Wertebereich | [TRUE, FALSE] | |
Besonderheiten | Verbrauchsdatum | |
Zugriff | CNC schreibt die von der GUI angeforderten Daten, wenn dieses Element FALSE ist und setzt anschließend dieses Element auf TRUE. PLC liest die vom GUI angeforderten Daten, wenn dieser Wert TRUE ist. Nachdem die Daten vollständig in die PLC übernommen worden sind, setzt die PLC dieses Element auf FALSE. | |
Umleitung | ||
ST-Pfad | gpCh[channel_idx]^.channel_mc_control.dyn_cs.enable_w |
Transition | |||
ST-Pfad | gpCh[channel_idx]^.channel_mc_control.dyn_cs.transition_w | ||
Datentyp | HLI_DYN_CS_TRANSITION
| ||
command | : DINT; | (* -1:DEACTIVATE, 1:ACTIVATE *) | |
filter_max_ticks | : UDINT; | (* filter for turning ON/OFF, compare #TRACK CS ON [ID=<i> ...FILTER... *) | |
option | : UDINT; | (* additional option, compare #TRACK CS ON [ID=<i> ...OPTION... *) | |
f_wait | : BOOL; | (* #TRACK CS ON [ ...WAIT... *) | |
f_set_zero | : BOOL; | (*#TRACK CS ON [ ...SET_ZERO... *) | |
f_kin_base | : BOOL; | (* #TRACK CS ON [ ...KIN_BASE... *) | |
f_rot_trans | : BOOL; | (* #TRACK CS ON [ ...ROT_TRANS... *) | |
kinematic_base_cs | : HLI_COORDINATE_SYSTEM_INT; | ||
| (* add. shift between error and kinematic- base, #TRACK CS ON [ID=<i> X=. Y=. *) | ||
Zugriff | SPS schreibt die Transition analog zum NC-Befehl #TRACK CS [ID=0 …] und CNC liest die Transition. Korrekter NC/PLC-Handshake: Zuerst werden alle Parameter belegt und danach command auf +/-1 gesetzt. |
Programmierbeispiel
Control Unit
TYPE HLI_COORDINATE_SYSTEM_INT :
STRUCT
translation : ARRAY [0..HLI_CS_AXES_MAXIDX] OF DINT;
fill_up_2 : DINT;
rotation : ARRAY [0..HLI_CS_AXES_MAXIDX] OF DINT;
fill_up_1 : DINT;
END_STRUCT
END_TYPE
TYPE HLI_DYN_CS_STATE :
STRUCT
actual_state : UDINT;
fill_up_1 : DINT;
END_STRUCT
END_TYPE
TYPE HLI_DYN_CS_TRANSITION :
STRUCT
command : DINT;
filter_max_ticks : UDINT;
option : UDINT;
f_wait : BOOL;
f_set_zero : BOOL;
f_kin_base : BOOL;
f_rot_trans : BOOL;
kinematic_base_cs : HLI_COORDINATE_SYSTEM_INT;
END_STRUCT
END_TYPE
TYPE MC_CONTROL_DYN_CS_UNIT :
STRUCT
enable_w : BOOL; (* MC <-- PLC takes care *)
request_semaphor_rw : BOOL; (* Valid semaphore *)
command_semaphor_rw : BOOL; (* Valid semaphore *)
fill_up_1 : BOOL;
fill_up_2 : DINT;
request_r : HLI_COORDINATE_SYSTEM_INT;
command_w : HLI_COORDINATE_SYSTEM_INT;
transition_w : HLI_DYN_CS_TRANSITION;
state_r : HLI_DYN_CS_STATE;
END_STRUCT
END_TYPE