48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
# detectorTower
|
|
|
|
## Overview
|
|
|
|
This is a driver for the Turbo PMAC motion controller with the SINQ communication protocol. It is based on the sinqMotor shared library (https://git.psi.ch/sinq-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.
|
|
|
|
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.
|
|
|
|
|
|
## Developer guide
|
|
|
|
### Usage in IOC shell
|
|
|
|
turboPmac exposes the following IOC shell functions (all in turboPmacController.cpp):
|
|
- `turboPmacController`: Create a new controller object.
|
|
- `turboPmacAxis`: Create a new axis object.
|
|
These functions are parametrized as follows:
|
|
```
|
|
turboPmacController(
|
|
"$(NAME)", # Name of the MCU, e.g. mcu1. This parameter should be provided by an environment variable.
|
|
"$(ASYN_PORT)", # IP-Port of the MCU. This parameter should be provided by an environment variable.
|
|
8, # Maximum number of axes
|
|
0.05, # Busy poll period in seconds
|
|
1, # Idle poll period in seconds
|
|
0.05 # Communication timeout in seconds
|
|
);
|
|
```
|
|
```
|
|
turboPmacAxis(
|
|
"$(NAME)", # Name of the associated MCU, e.g. mcu1. This parameter should be provided by an environment variable.
|
|
1 # Index of the axis.
|
|
);
|
|
```
|
|
|
|
### Versioning
|
|
|
|
Please see the documentation for the module sinqMotor: https://git.psi.ch/sinq-epics-modules/sinqmotor/-/blob/main/README.md.
|
|
|
|
### How to build it
|
|
|
|
Please see the documentation for the module sinqMotor: https://git.psi.ch/sinq-epics-modules/sinqmotor/-/blob/main/README.md.
|