Added interpose driver from DLS

Added a low-level interpose driver to allow usage of stream devices.
This commit is contained in:
2025-04-17 09:25:42 +02:00
parent 7b904e30db
commit e5a4af14ea
10 changed files with 1147 additions and 1012 deletions

View File

@ -8,13 +8,15 @@ This is a driver for the Turbo PMAC motion controller with the SINQ communicatio
## 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.
This driver is a standard sinqMotor-derived which however uses a special low level IP Port driver (`pmacAsynIPPortConfigure`) instead of the standard `drvAsynIPPortConfigure`. For the general configuration, please see https://git.psi.ch/sinq-epics-modules/sinqmotor/-/blob/main/README.md.
The folder "utils" contains utility scripts for working with pmac motor controllers. To read their manual, run the scripts without any arguments.
- writeRead.py: Allows sending commands to and receiving commands from a pmac controller over an ethernet connection.
- analyzeTcpDump.py: Parse the TCP communication between an IOC and a MCU and format it into a dictionary. "demo.py" shows how this data can be easily visualized for analysis.
### Usage in IOC shell
### IOC startup script
turboPmac exports the following IOC shell functions:
- `turboPmacController`: Create a new controller object.
@ -30,7 +32,7 @@ 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.
# We do not use the standard asyn port driver here, but a PMAC-specific one which enables the usage of StreamDevices for
# communicating with the controller directly.
pmacAsynIPConfigure("$(ASYN_PORT)","172.28.101.24:1025")
pmacAsynIPPortConfigure("$(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:
@ -59,6 +61,10 @@ dbLoadTemplate("$(TOP)/$(NAME).substitutions", "INSTR=$(INSTR)$(NAME):,CONTROLLE
dbLoadRecords("$(sinqMotor_DB)/asynRecord.db","P=$(INSTR)$(NAME),PORT=$(ASYN_PORT)")
```
### Additional records
`turboPmac` provides a variety of additional records. See `db/turboPmac.db` for the complete list and the documentation.
## Developer guide
### Versioning