ESRF Varoc SSI Absolute Encoder Interface
Authors: Karen J. Coulter (1993), Robert A. Popper (1994)
Table of contents
The Varoc (ZIO085) is a VMEbus SSI (Synchronous Serial Interface) absolute encoder interface card originally developed at ESRF. It supports up to 16 encoder channels per card. This module provides device support and a low-level driver for reading absolute encoder positions via EPICS ai records.
Configuration
There is no user-callable configuration function. The driver uses compile-time constants:
| Constant | Value | Description |
|---|---|---|
MAX_VAROC_CARDS | 1 | Maximum number of cards supported |
ADDR | 0x0800 | A16 base address |
To change the base address or number of cards, modify the constants in drvVarocB.c and rebuild.
Supported Record Types
| Record Type | DTYP String |
|---|---|
| ai | "ESRF Varoc SSI Encoder Iface" |
Link type: VME_IO (#C<card> S<channel> @<parm>)
PARM Field Format
The PARM field specifies the encoder bit count and encoding type:
<numbits><code>
Where:
numbitsis the number of encoder bits (7-25)codeisGfor Gray-code orSfor serial (straight binary)
Examples:
# 23-bit Gray-code encoder on card 0, channel 3
record(ai, "$(P)encoder3") {
field(DTYP, "ESRF Varoc SSI Encoder Iface")
field(INP, "#C0 S3 @23G")
}
# 16-bit straight binary encoder on card 0, channel 0
record(ai, "$(P)encoder0") {
field(DTYP, "ESRF Varoc SSI Encoder Iface")
field(INP, "#C0 S0 @16S")
}
Usage Notes
- Supports up to 16 channels per card.
- Gray-code to binary conversion is handled in hardware (CMD0 bit 5).
- Linear conversion:
ESLO=1,ROFF = -(EGUL / ASLO)