IOCINFRAApp/Db/LakeShore331.proto
author Heinz Junkes <junkes@fhi-berlin.mpg.de>
Wed, 15 Jul 2020 08:12:22 +0200
changeset 2 320de4b4c9ee
parent 0 77d8eafe2a07
permissions -rw-r--r--
Add 2nd moxa XGS600 and TPG256

# LakeShore 336 Series Streams Protocol File 
#
#####
# Interface: ASCII (INET or GPIB)
# Four Sensor Inputs/Outputs
# Two PID Loops
# Two Heater Outputs
#
# Commands:
#       *IDN? 				- ID Query
#          return: <string>
#       INTYPE? <input>			- Input Type Parameter Query
#          return: n,n,n,n,n <sensorType>,<autorange>,<range>,<compensation>,<units>
#       HTR? <output>  			- Heater Output Query
#          return: +nnn.n
#       HTRSET? <output>		- Heater Setup Query
#          return: n,n,+n.nnn,n <htrResistance>,<maxCurrent>,<maxUserCurrent>,<current/power>
#       HTRST? <output>			- Heater Status Query
#          return: n<error code>
#       <C/K/S>RDG? <input>		- Celcius/Kevin/Sensor Input Reading Query
#          return: +nnn.n		
#       RDGST? <input>			- Input Reading Status Query
#          return: n <status byte> 		
#       SETP <output>,<value> 		- Control Setpoint Command
#       SETP? <value>	  		- Control Setpoint Query
#          return: +nnn.nnn
#       RANGE <output>,<range> 		- Heater Range Command
#       RANGE? <value>  		- Heater Range Query
#          return: <0=Off, 1=Low(On), 2=Medium, 3=High
#       PID <output>,<P>,<I>,<D>        - Control Loop Parameters Command
#       PID? <output> 			- Control Loop Query
#	    return: <nnn.n>,<nnn.n>,<nnn.n>
#       RAMP <output>,<off(0)/on(1)>,<rate> - Control Setpoint Ramp Cmd
#       RAMP? <output> 			    - Control Setpoint Ramp Query
#	    return: <off(0)/on(1)>,<rate>
#    

ExtraInput = Ignore;
ReplyTimeout = 100;
OutTerminator = LF;
InTerminator = CR LF;

getID { 
	out "*IDN?";
        in "%s";
	@init {out "*IDN?"; in "%s";}
	}

setSETP {
	out "SETP \$1,%f";
        wait 100;
	}

getSETP {
	out "SETP? \$1";
	in "%f";
	@init {out "SETP? \$1"; in "%f";}
	}


setMOUT {
	out "MOUT \$1,%f";
        wait 100;
	}

getMOUT {
	out "MOUT? \$1";
	in "%f";
	@init {out "MOUT? \$1"; in "%f";}
	}


setOUTMODE {
	out "OUTMODE \$1,%(\$2:OUT\$1:Mode.RVAL)d,%(\$2:OUT\$1:Cntrl.VAL)d,0";
        wait 100;
	}


getOUTMODE {
	out "OUTMODE? \$1";
        in "%(\$2:OUT\$1:Mode_RBV.VAL)d,%(\$2:OUT\$1:Cntrl_RBV.VAL)d,%*d";
	}

setMODE {
	out "MODE %d";
        wait 100;
	}

getMODE {
	out "MODE?";
        in "%d";
	}

setPID {
	out "PID \$1,%(\$2:P\$1.VAL)f,%(\$2:I\$1.VAL)f,%(\$2:D\$1.VAL)f";
        wait 100;
	}

getPID {
        out "PID? \$1";
        in "%(\$2:P\$1_RBV.VAL)f,%(\$2:I\$1_RBV.VAL)f,%(\$2:D\$1_RBV.VAL)f";
	}

setInType {
        out "INTYPE %(\$2:OUT\$1:Cntrl_RBV.VAL)s,%(\$2:IN\$1:Sensor_RBV.VAL)d,%(\$2:IN\$1:AutoRange_RBV.VAL)d,%(\$2:IN\$1:Range_RBV.VAL)d,%(\$2:IN\$1:Comp_RBV.VAL)d,%(\$2:IN\$1:Units.RVAL)d";
	}

getInType {
        out "INTYPE? %(\$2:OUT\$1:Cntrl_RBV.VAL)s";
        in "%(\$2:IN\$1:Sensor_RBV.VAL)d,%(\$2:IN\$1:Comp_RBV.VAL)d";
	}

getInput {
        out "%(\$2:IN\$1:Units_RBV.VAL)s","RDG? ","%(\$2:OUT\$1:Cntrl_RBV.VAL)s";
        in "%f";
	}

getInName {
        out "INNAME? %(\$2:OUT\$1:Cntrl_RBV.VAL)s";
        in "%[_a-zA-Z0-9 -]";
	}

getHeater {
        out "HTR? \$1";
        in "%f";
	}

getRange {
        out "RANGE? \$1";
        in "%d";
	}

setRange {
        out "RANGE \$1,%d";
        wait 100;
	}

getAOutput {
        out "AOUT? \$1";
        in "%f";
	}

setRamp {
	out "RAMP \$1,%(\$2:OnRamp\$1.VAL)d,%(\$2:RampR\$1.VAL)f";
        wait 100;
	}

getRamp {
        out "RAMP? \$1";
        in "%(\$2:OnRamp\$1_RBV.VAL)d,%(\$2:RampR\$1_RBV.VAL)f";
	}