Testing the configuration in the simulation

In a simulation, it is easy to test the configuration of the universal kinematics using an NC program if you have an approximate idea of the axis motion to be expected when moving with a transformation.

The NC program below can be used as a template which may have to be slightly modified.

In the NC program, the axis positions are logged to an output file by the NC command #MSG.
(See Writing messages to a file (#MSG SAVE) and Definition of file names (#FILE NAME))

The logged axis positions must then be compared with the expected axis positions.

Programming Example

Type and source of risk

;----------------------------------------------------------
;
;   First configure the universal kinematics in the NC
;   program instead of in the channel list.
;   This simplifies the test since then the lists need
;   not be reloaded every time.
;
;----------------------------------------------------------
; Tool points in Z direction
N00110  V.G.KIN[91].ZERO_ORIENTATION[0]         = 0
N00120  V.G.KIN[91].ZERO_ORIENTATION[1]         = 0
N00130  V.G.KIN[91].ZERO_ORIENTATION[2]         = 1
; Zero position of the flange
N00160  V.G.KIN[91].ZERO_POSITION[0]            = 10000
N00170  V.G.KIN[91].ZERO_POSITION[1]            = 20000
N00180  V.G.KIN[91].ZERO_POSITION[2]            = 30000
; 5 axes XYZCA
N00210  V.G.KIN[91].NUMBER_OF_AXES              = 5
; X axis, translatory
N00240  V.G.KIN[91].AXIS[0].TYPE                = 1
N00250  V.G.KIN[91].AXIS[0].ORIENTATION[0]      = 1
N00260  V.G.KIN[91].AXIS[0].ORIENTATION[1]      = 0
N00270  V.G.KIN[91].AXIS[0].ORIENTATION[2]      = 0
; Y axis, translatory
N00300  V.G.KIN[91].AXIS[1].TYPE                = 1
N00310  V.G.KIN[91].AXIS[1].ORIENTATION[0]      = 0
N00320  V.G.KIN[91].AXIS[1].ORIENTATION[1]      = 1
N00330  V.G.KIN[91].AXIS[1].ORIENTATION[2]      = 0
; Z axis, translatory
N00360  V.G.KIN[91].AXIS[2].TYPE                = 1
N00370  V.G.KIN[91].AXIS[2].ORIENTATION[0]      = 0
N00380  V.G.KIN[91].AXIS[2].ORIENTATION[1]      = 0
N00390  V.G.KIN[91].AXIS[2].ORIENTATION[2]      = 1
; A axis
N00420  V.G.KIN[91].AXIS[3].TYPE                = 2
N00430  V.G.KIN[91].AXIS[3].ORIENTATION[0]      = 1
N00440  V.G.KIN[91].AXIS[3].ORIENTATION[1]      = 0
N00450  V.G.KIN[91].AXIS[3].ORIENTATION[2]      = 0
N00460  V.G.KIN[91].AXIS[3].POINT[0]            = 40000
N00470  V.G.KIN[91].AXIS[3].POINT[1]            = 50000
N00480  V.G.KIN[91].AXIS[3].POINT[2]            = 60000
; C axis
N00510  V.G.KIN[91].AXIS[4].TYPE                = 2
N00520  V.G.KIN[91].AXIS[4].ORIENTATION[0]      = 0
N00530  V.G.KIN[91].AXIS[4].ORIENTATION[1]      = 0
N00540  V.G.KIN[91].AXIS[4].ORIENTATION[2]      = 1
N00550  V.G.KIN[91].AXIS[4].POINT[0]            = 70000
N00560  V.G.KIN[91].AXIS[4].POINT[1]            = 80000
N00570  V.G.KIN[91].AXIS[4].POINT[2]            = 90000
; Axis sequence in the kinematic chain: XYZCA
N00600  V.G.KIN[91].CHAIN[0]                    = 0
N00610  V.G.KIN[91].CHAIN[1]                    = 1
N00620  V.G.KIN[91].CHAIN[2]                    = 2
N00630  V.G.KIN[91].CHAIN[3]                    = 4
N00640  V.G.KIN[91].CHAIN[4]                    = 3
; Programming mode 12 or 13, P-CHAN-00112
N00670  V.G.KIN[91].PROGRAMMING_MODE            = 13
; Set RTCP mode
N00700  V.G.KIN[91].RTCP                        = 1
; Fetch axes
N00730  #SET AX [X, 1, 0] [Y, 2, 1] [Z, 3, 2] [A, 4, 3] [C, 5, 4]
;----------------------------------------------------------
;
;   Now the machine can be moved, various
;   tool lengths tried out, etc.
;
;    #CHANNEL INIT fetches the axis position
;   and outputs it with #MSG and V.A.ACS.ABS to a
;   text file (normally "message.txt").
;
;----------------------------------------------------------
; Select transformation
N00870  #KIN ID [91]
N00880  #TRAFO ON
; move
N00910  G00 X0 Y0 Z0 B0
N00920  #FLUSH WAIT
N00930  #CHANNEL INIT [CMDPOS]
N00940  #MSG SAVE EXCLUSIVE ["X setpoint: %f", V.A.ACS.ABS.X]
N00950  #MSG SAVE EXCLUSIVE ["Y setpoint: %f", V.A.ACS.ABS.Y]
N00960  #MSG SAVE EXCLUSIVE ["Z setpoint: %f", V.A.ACS.ABS.Z]
N00970  #MSG SAVE EXCLUSIVE ["A setpoint: %f", V.A.ACS.ABS.A]
N00980  #MSG SAVE EXCLUSIVE ["C setpoint: %f", V.A.ACS.ABS.C]
N00990  #MSG SAVE EXCLUSIVE [""]
; Deselect transformation
N01020  #TRAFO OFF
; Change tool length
N01050  V.G.WZ_AKT.L = 99
; Select transformation
N01080  #KIN ID [91]
N01090  #TRAFO ON
; move
N01120  G00 X0 Y0 Z0 B0
N01130  #FLUSH WAIT
N01140  #CHANNEL INIT [CMDPOS]
N01150  #MSG SAVE EXCLUSIVE ["X setpoint: %f", V.A.ACS.ABS.X]
N01160  #MSG SAVE EXCLUSIVE ["Y setpoint: %f", V.A.ACS.ABS.Y]
N01170  #MSG SAVE EXCLUSIVE ["Z setpoint: %f", V.A.ACS.ABS.Z]
N01180  #MSG SAVE EXCLUSIVE ["A setpoint: %f", V.A.ACS.ABS.A]
N01190  #MSG SAVE EXCLUSIVE ["C setpoint: %f", V.A.ACS.ABS.C]
N01200  #MSG SAVE EXCLUSIVE [""]
; move
N01230  G00 X0 Y0 Z0 B45
N01240  #FLUSH WAIT
N01250  #CHANNEL INIT [CMDPOS]
N01260  #MSG SAVE EXCLUSIVE ["X setpoint: %f", V.A.ACS.ABS.X]
N01270  #MSG SAVE EXCLUSIVE ["Y setpoint: %f", V.A.ACS.ABS.Y]
N01280  #MSG SAVE EXCLUSIVE ["Z setpoint: %f", V.A.ACS.ABS.Z]
N01290  #MSG SAVE EXCLUSIVE ["A setpoint: %f", V.A.ACS.ABS.A]
N01300  #MSG SAVE EXCLUSIVE ["C setpoint: %f", V.A.ACS.ABS.C]
N01310  #MSG SAVE EXCLUSIVE [""]
; Deselect transformation
N01340  #TRAFO OFF
; end
N01370  M30