
MCO 305 Design Guide
__ Functions and Examples __
MG.33.L4.02 – VLT
®
is a registered Danfoss trademark
33
Program Example: Marker Synchronization
/********************* Marker synchronizing sample program ************************/
// Inputs:
1
Start/stop synchronization
//
2
Measure slave marker distance
//
3
Measure master marker distance
//
5
Master marker
//
6
Slave marker
//
8
Clear Error
// Outputs:
1
Within synchronizing accuracy, set accuracy window in parameter 33-13
//
2
Marker measurement active.
//
8
Error
***************************** Interrupts ****************************************/
ON ERROR GOSUB errhandle
// In case of error go to error handler routine, this must always be included
/****************************** Basic settings ********************************/
VEL 100
// Sets maximum slave velocity related to parameter 32-80 Maximum velocity
ACC 100
// Sets slave acceleration related to parameter 32-81 Shortest ramp
DEC 100
// Sets slave deceleration related to parameter 32-81 Shortest ramp
/************************ Define application parameters *****************************/
LINKGPAR 1900 "Measuring velocity" 0 100 0
/************************* Set parameters and flags *******************************/
SET SYNCMTYPM 2
// Set master marker type to external
SET SYNCMTYPS 2
// Set slave marker type to external
sync_flag = 0
/****************************** main loop ***************************************/
MAIN:
IF (IN 1 == 1) AND (sync_flag == 0) THEN
// Start synchronizing once when input 1 is high.
SYNCM
// Start marker synchronizing mode
sync_flag = 1
// done flag
ELSE
MOTOR
STOP
// Stop when input 1 is low.
sync_flag = 0
// Reset sync_flag after stop.
ENDIF
IF (IN 2 == 1) AND (sync_flag == 0) THEN
// Start measuring slave marker distance
GOSUB
slave_measure
// Note: Slave motor will rotate
ELSEIF (IN 3 == 1) AND (sync_flag == 0) THEN
// Start measuring slave marker distance,
GOSUB
master_measure
// master must run.
ENDIF
GOTO MAIN
/*************************** Sub programs start **********************************/
SUBMAINPROG
/********************** Measure slave marker distance ******************************/
SUBPROG slave_measure
OUT 2 1
// Set "Marker measurement active" output
CVEL GET 1900
// Set measuring velocity
CSTART
// Start constant velocity mode
old_ipos = IPOS
// Read "old" marker position
marker_number = 0
// Reset variable
total_dist = 0
// Reset variable
skip_first = 0
// Reset variable
WHILE (IN 2 == 1) DO
// Stay in measuring mode while input 2 high
new_ipos = IPOS
// Read "new" marker position
IF (new_ipos != old_ipos) THEN
// Check if a new marker was detected
marker_distance = new_ipos - old_ipos
// Calculate marker distance
IF (marker_distance < 0) THEN
// Change sign if negative
marker_distance = (marker_distance * -1)
ENDIF
Summary of Contents for MCO 305
Page 4: ......