Many improvements to the MasterMACS motor driver. It is working but the hardware is shaky.
Added support for dose rate controlled Phytron motors. Not tested! Small bug fixes
This commit is contained in:
@@ -10,6 +10,11 @@ Updated to go through SINQAxis for -MsgTxt support
|
||||
Added a selector to support multiple phytrons on a connection
|
||||
|
||||
Mark Koennecke, January 2019
|
||||
|
||||
Added PhytronDoseAxis. The speed of this axis is controlled by the
|
||||
neutron dose rate fed in as analog signal
|
||||
|
||||
Mark Koennecke, April 2023
|
||||
*/
|
||||
|
||||
#include "SINQController.h"
|
||||
@@ -17,6 +22,10 @@ Mark Koennecke, January 2019
|
||||
|
||||
#define COMLEN 80
|
||||
|
||||
|
||||
class PhytronController;
|
||||
class PhytronDoseController;
|
||||
|
||||
class PhytronAxis : public SINQAxis
|
||||
{
|
||||
public:
|
||||
@@ -32,7 +41,7 @@ public:
|
||||
asynStatus setClosedLoop(bool closedLoop);
|
||||
int setBrake(int brakeIO);
|
||||
|
||||
private:
|
||||
protected:
|
||||
char phytronChar;
|
||||
PhytronController *pC_; /**< Pointer to the asynMotorController to which this axis belongs.
|
||||
* Abbreviated because it is used very frequently */
|
||||
@@ -47,6 +56,21 @@ private:
|
||||
friend class PhytronController;
|
||||
};
|
||||
|
||||
class PhytronDoseAxis : public PhytronAxis
|
||||
{
|
||||
// A special version of PhytronAxis where the speed is controlled by the neutron flux.
|
||||
public:
|
||||
PhytronDoseAxis(class PhytronController *pC, int axis, int enc);
|
||||
asynStatus move(double position, int relative, double min_velocity, double max_velocity, double acceleration);
|
||||
|
||||
friend class PhytronDoseController;
|
||||
|
||||
protected:
|
||||
char doseChar;
|
||||
PhytronDoseController *pC_;
|
||||
};
|
||||
|
||||
|
||||
class PhytronController : public SINQController {
|
||||
public:
|
||||
PhytronController(const char *portName, const char *PhytronPortName, const char *selector,
|
||||
@@ -57,7 +81,8 @@ public:
|
||||
PhytronAxis* getAxis(int axisNo);
|
||||
|
||||
friend class PhytronAxis;
|
||||
private:
|
||||
|
||||
protected:
|
||||
asynUser *pasynUserController_;
|
||||
|
||||
asynStatus transactController(int axisNo, char command[COMLEN], char reply[COMLEN]);
|
||||
@@ -65,3 +90,20 @@ friend class PhytronAxis;
|
||||
const char *selector;
|
||||
|
||||
};
|
||||
|
||||
class PhytronDoseController : public PhytronController {
|
||||
public:
|
||||
PhytronDoseController(const char *portName, const char *PhytronPortName, const char *selector,
|
||||
int encX, int encY);
|
||||
|
||||
PhytronDoseAxis* getAxis(asynUser *pasynUser);
|
||||
PhytronDoseAxis* getAxis(int axisNo);
|
||||
|
||||
friend class PhytronDoseAxis;
|
||||
|
||||
protected:
|
||||
asynUser *pasynUserController_;
|
||||
const char *selector;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user