Encoder() talks to the IK220 PCI card of Heidenhain.
* = encoder( hhe9, position)
* = encoder( hhe9) position
* = encoder( hhe9, StaPort) status register
* = encoder( hhe9, CancelRef) cancel ref. sequence
* = encoder( hhe9, DoRef) start reference sequence
* = encoder( hhe9, Init) init encoder
* = encoder( hhe9, offset, ival) set offset [counts]
* = encoder( hhe9, conversion, xval) set conversion factor
* = encoder( hhe9, offset) get offset
* = encoder( hhe9, conversion) get conversion
* = encoder( hhe9, p1) 0 increment
1 EnDat
2 SSI
* = encoder( hhe9, p2) 0 11 muApp
1 1Vpp
* = encoder( hhe9, p3) 0 linear axis
1 rotational axis
* = encoder( hhe9, p4) 0 positive
1 negative
The position is calculated by: pos = (encoder - offset)/conversion
A start sequence:
* = encoder( hhe9, p2, 0) sets the card to current mode * = encoder( hhe9, init) * = hex(encoder( hhe9, staport)) -> 0x20 * = encoder( hhe9)
A reference sequence:
! ! move near the reference mark ! move mot1 0 * = encoder( hhe9, init) * = hex(encoder( hhe9, staport)) -> 0x20 * = encoder( hhe9, doref) * = hex(encoder( hhe9, staport)) -> 0x4060 ! ! move over the reference mark ! move mot1 1 * = hex(encoder( hhe9, staport)) -> 0xffffc024 * = encoder( hhe9, position) -> some value
An encoder is calibrated in the following way (assume the encoder reads the monochromator rotation axis):
* = encoder( hhe1, conversion, 1) * = encoder( hhe1, offset, 0)This makes sense only when the encoder is used for the first time. Once the conversion factor is determined, we don't have to re-measure it.
* = encoder( hhe1, conversion, conv) * = encoder( hhe1, offset, offs)