69 lines
3.1 KiB
Markdown
69 lines
3.1 KiB
Markdown
# el734
|
|
|
|
## <span style="color:red">Please read the documentation of sinqMotor first: https://gitea.psi.ch/lin-epics-modules/sinqMotor</span>
|
|
|
|
## Overview
|
|
|
|
This is a driver for the EL734 motion controller. It is based on the sinqMotor shared library (https://gitea.psi.ch/lin-epics-modules/sinqMotor). The header files contain detailed documentation for all public functions. The headers themselves are exported when building the library to allow other drivers to depend on this one.
|
|
|
|
## User guide
|
|
|
|
This driver is a standard sinqMotor-derived driver and does not need any specific configuration. For the general configuration, please see https://git.psi.ch/sinq-epics-modules/sinqmotor/-/blob/main/README.md.
|
|
|
|
### Usage in IOC shell
|
|
|
|
masterMacs exposes the following IOC shell functions:
|
|
- `el734Controller`: Create a new controller object.
|
|
- `el734Axis`: Create a new axis object.
|
|
|
|
The full el734_X.cmd file looks like this:
|
|
|
|
```
|
|
# Define the name of the controller and the corresponding port
|
|
epicsEnvSet("NAME","el734_X")
|
|
epicsEnvSet("ASYN_PORT","p$(NAME)")
|
|
|
|
# Create the TCP/IP socket used to talk with the controller. The socket can be adressed from within the IOC shell via the port name
|
|
drvAsynIPPortConfigure("$(ASYN_PORT)","172.28.101.24:1025")
|
|
|
|
# Create the controller object with the defined name and connect it to the socket via the port name.
|
|
# The other parameters are as follows:
|
|
# 8: Maximum number of axes
|
|
# 0.05: Busy poll period in seconds
|
|
# 1: Idle poll period in seconds
|
|
# 1: Socket communication timeout in seconds
|
|
el734Controller("$(NAME)", "$(ASYN_PORT)", 8, 0.05, 1, 1);
|
|
|
|
# Define some axes for the controller at the given slot (1, 2 and 5). No slot may be used twice!
|
|
el734Axis("$(NAME)",1);
|
|
el734Axis("$(NAME)",2);
|
|
el734Axis("$(NAME)",5);
|
|
|
|
# Set the number of subsequent timeouts
|
|
setMaxSubsequentTimeouts("$(NAME)", 20);
|
|
|
|
# Configure the timeout frequency watchdog:
|
|
setThresholdComTimeout("$(NAME)", 100, 1);
|
|
|
|
# Parametrize the EPICS record database with the substitution file named after the MCU.
|
|
epicsEnvSet("SINQDBPATH","$(el734_DB)/sinqMotor.db")
|
|
dbLoadTemplate("$(TOP)/$(NAME).substitutions", "INSTR=$(INSTR)$(NAME):,CONTROLLER=$(NAME)")
|
|
epicsEnvSet("SINQDBPATH","$(el734_DB)/el734.db")
|
|
dbLoadTemplate("$(TOP)/$(NAME).substitutions", "INSTR=$(INSTR)$(NAME):,CONTROLLER=$(NAME)")
|
|
dbLoadRecords("$(el734_DB)/asynRecord.db","P=$(INSTR)$(NAME),PORT=$(ASYN_PORT)")
|
|
```
|
|
|
|
### Additional records
|
|
|
|
`el734` provides a variety of additional records. See `db/el734.db` for the complete list and the documentation.
|
|
|
|
## Developer guide
|
|
|
|
### Versioning
|
|
|
|
Please see the documentation for the module sinqMotor: https://gitea.psi.ch/lin-epics-modules/sinqMotor/src/branch/main/README.md.
|
|
|
|
### How to build it
|
|
|
|
This driver can be compiled and installed by running `make install` from the same directory where the Makefile is located. However, since it uses the git submodule sinqMotor, make sure that the correct version of the submodule repository is checked out AND the change is commited (`git status` shows no non-committed changes). Please see the section "Usage as static dependency" in https://gitea.psi.ch/lin-epics-modules/sinqMotor/src/branch/main/README.md for more details.
|