Files
sics/site_ansto/hardsup/nhq200util.h
Douglas Clowes 696227ffc8 Huge changes, remove non-multichan code
r1511 | dcl | 2007-02-19 12:33:58 +1100 (Mon, 19 Feb 2007) | 2 lines
2012-11-15 13:00:07 +11:00

143 lines
4.6 KiB
C

/*---------------------------------------------------------------------------
N H Q 2 0 0 U T I L
A few utility functions for talking to a NHQ 200
voltage controller via the ANSTO setup:
TCP/IP===MOXA===RS-232===NHQ200.
Mark Koennecke, Juli 1997
Mark Lesha, January 2006 (based on ITC4 code)
Douglas Clowes, December 2006 (based on LAKESHORE340 code)
----------------------------------------------------------------------------*/
#ifndef NHQ200_UTIL_H
#define NHQ200_UTIL_H
/*----------------------- ERRORCODES--------------------------------------
Most functions return a negative error code on failure. Error codes
defined are those defined for serialsinq plus a few additional ones:
*/
#define NHQ200__BADCOM -501 /* command not recognized */
#define NHQ200__BADPAR -502 /* bad parameter to command */
#define NHQ200__BADMALLOC -503 /* error allocating memory */
#define NHQ200__BADREAD -504 /* error analysing command string on Read */
#define NHQ200__FAULT -505 /* fault or overload condition exists in NHQ200 */
#define NHQ200__NONHQ200 -510 /* Controller is not NHQ200 */
#define NHQ200__BADSET -530 /* failed three times to set voltage */
#define NHQ200__READONLY -531
/*------------------------------------------------------------------------*/
typedef struct __NHQ200 {
pMultiChan mcc;
int iRead;
int iControl;
void *pData;
char pAns[80]; /* should be enough for NHQ200 errors */
/* The NHQ200 does not need multipliers or dividers but
leave them in anyway for back compatibility or future use
but force the value to 1.0 all the time */
float fDiv;
float fMult;
float fValue;
int iError;
int iReadOnly;
int iState;
char serial_number[20];
char software_version[20];
char voltage_max[20];
char current_max[20];
char status_s[20];
char status_t[20];
int module_status;
int vmax_percent;
int imax_percent;
int ramp_input;
char* transReply;
int transWait;
int iGetOut;
struct timeval tv_last;
} NHQ200;
typedef struct __NHQ200 *pNHQ200;
/*-----------------------------------------------------------------------*/
int NHQ200_Open(pNHQ200 *pData,char *pHost, int iPort, int iChannel, int iMode);
/***** creates an NHQ200 datastructure and opens a connection to the NHQ200
controller. Input Parameters are:
the hostname
the port number
the RS-232 channel number on the Mac.
iMode: 1 for ReadOnly, 0 for normal mode
Return values are 1 for success, a negative error code on
failure.
*/
void NHQ200_Close(pNHQ200 *pData);
/****** close a connection to an NHQ200controller and frees its
data structure. The only parameter is a pointer to the data
structure for this controller. This pointer will be invalid after
this call.
*/
int NHQ200_Config(pNHQ200 *pData, int iTmo, int iRead,
int iControl, float fDiv, float fMult);
/***** configure some aspects of a NHQ200 voltage controller.
The parameter are:
- a pointer to the data structure for the controller as
returned by NHQ200_Open
- a value for the connection timeout
- the voltage sensor to use for reading the
voltage.
- the voltage sensor used by the NHQ200controller
for regulating the voltage.
- the divisor needed to calculate the real voltage
from the sensor.
The function returns 1 on success, a negative error code on
failure.
*/
int NHQ200_Send(pNHQ200 *pData, char *pCommand, char *pReply, int iLen);
/******* send a the command in pCommand to the NHQ200controller.
A possible reply is returned in the buffer pReply.
Maximum iLen characters are copied to pReply.
The first parameter is a pointer to a NHQ200data structure
as returned by NHQ200_Open.
Return values are 1 for success, a negative error code on
failure.
*/
int NHQ200_Read(pNHQ200 *pData, float *fVal);
/******* reads the current actual voltage of the sensor
configured by ConfigNHQ200for reading. The value is returned
in fVal. The first parameter is a pointer to a NHQ200
data structure as returned by NHQ200_Open.
Return values are 1 for success, a negative error code on
failure.
*/
int NHQ200_Set(pNHQ200 *pData, float fVal);
/****** sets a new preset voltage in the NHQ200 voltage
controller. Parameters are:
- a pointer to a NHQ200data structure as returned by NHQ200_Open.
- the new preset value.
Return values are 1 for success, a negative error code on
failure.
*/
void NHQ200_ErrorTxt(pNHQ200 *pData, int iCode, char *pError, int iLen);
/******* translates one of the negative error NHQ200error codes
into text. Maximum iLen bytes will be copied to the
buffer pError;
*/
#endif /* NHQ200_UTIL_H */