# pmacv3 ## Overview This is a driver for the pmacV3 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 pmacv3 exposes the following IOC shell functions (all in pmacv3Controller.cpp): - `pmacv3Controller`: Create a new controller object. - `pmacv3Axis`: Create a new axis object. These functions are parametrized as follows: ``` pmacv3Controller( "$(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 ); ``` ``` pmacv3Axis( "$(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.