Control unit

Dynamic CS

Description

Control unit to switch over dynamic CS tracking.

Data type

MC_CONTROL_DYN_CS_UNIT

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.

Programming 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