Control unit
Dynamic CS | ||
Description | Control unit to switch over dynamic CS tracking. | |
Data type | ||
ST path | gpCh[channel_idx]^.channel_mc_control.dyn_cs | |
Commanded, requested data | ||
ST element | .command_w .request_r | |
Data type | 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] | |
Access | PLC writes command and reads request | |
Return data | ||
ST element | .state_r | |
Data type | 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 | |
Access | PLC is reading | |
Flow control of commanded value | ||
ST element | .command_semaphor_rw | |
Data type | BOOL | |
Value range | [TRUE, FALSE] | |
Special features | Consumption data item | |
Access | CNC accepts the commanded data if this element has the value TRUE and sets this element to the value FALSE after complete acceptance of the data. PLC can write data for commanding if this element has the value FALSE. The PLC sets this element to the value TRUE if all data to be commanded is written. | |
Flow control of requested data | ||
ST element | .request_semaphor_rw | |
Data type | BOOL | |
Value range | [TRUE, FALSE] | |
Special features | Consumption data item | |
Access | CNC writes the data requested by the GUI if this element is FALSE and then sets this element to TRUE. PLC reads the data requested by the GUI if this value is TRUE. After the PLC fully accepts the data, the PLC sets this element to FALSE. | |
Redirection | ||
ST path | gpCh[channel_idx]^.channel_mc_control.dyn_cs.enable_w |
Transition | |||
ST path | gpCh[channel_idx]^.channel_mc_control.dyn_cs.transition_w | ||
Data type | 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=. *) | ||
Access | PLC writes the transition in analogy to the NC command #TRACK CS [ID=0 …] and CNC reads the transition. Correct NC/PLC handshake: First assign all parameters and then set command to +/-1. |
Programing Example
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