Endless Axes
Language: | English • 中文(简体) |
---|
Contents
[hide]Endless Axes
Introduction
Axes that can theoretically move endlessly in ether direction are supported in the softMC system. The limits of such axes are actually the range of the double-floating point format (-1.79769e+308,1.79769e+308) which practically gives endless axes operation.
Drive Limitations
However, the drive-controller communication uses much smaller range its position data is transferred using 32-bits data so the limits of internal drive position units are:
[-2 31 ,+2 31 -1]. This is visible on properties: CCFB, CCMD, and CEXT. They are all integer type, 32-bit variables and as such have limited values.
softMC Position Variables
The system automatically extends range position variables (pcmd,pfb,pext) to [mindouble,maxdouble] by counting the number of cycles of 32-bit range. Each time the position feedback (or external) passes 31 bit limit internal counter of revolutions (count_rev) is increased (decreased). So the position property values: PFB, PCMD , PEXT do not exhibit any discontinuities.
Detecting 32-bit Limit Exceeded
Detecting the 32 bit limit is done by checking the current and the previous value of the feedback position obtained from the drive.
- If the XOR operation on the most-significant bits of the current and the previous feedback value is 1
- we increase(decrease) the revolution counter by 1 and then compute the PFB:
- pfb = pfac*(cfb + 2 32 *count_rev)
- If the XOR operation on the most-significant bits of the current and the previous feedback value is 1
The revolution counter (count_rev) can be reset by:
- accessing position factor, e.g., "PFAC = PFAC" or any other assignment
- calling user function: MOT_RESET_ROLLOVER or MOT_RESET_EXROLLOVER