| Oxford Cryosystems 700 series serial line communications | home | protocols | wiring diagram |
| Cryostream | Cobra | PheniX | HeliX | status packets | command packets |
notestypedef struct {
unsigned char Length; /* Length of this packet, = 46 (bytes)*/
unsigned char Type; /* Packet ID, = 200 for HeliX status packets */
unsigned short GasSetPoint; /* Gas set point Temp 100*K */
unsigned short GasTemp; /* Gas temp 100*K */
signed short GasError; /* Gas error 100*K */
unsigned char RunMode; /* The current run mode */
unsigned char PhaseId; /* The id of the current phase - see below */
unsigned short RampRate; /* The ramp rate of the current phase */
unsigned short TargetTemp; /* The target temperature of the current phase */
unsigned short ShieldTemp; /* Shield temp, 100*K */
unsigned short NozzleTemp; /* Nozzle temperature, 100*K */
unsigned short Remaining; /* Time remaining in phase */
unsigned char CryoSpeed; /* Cryodrive speed */
unsigned char GasHeat; /* Sample stage heater, % */
unsigned char ShieldHeat; /* Shield heater, % */
unsigned char NozzleHeat; /* Nozzle heater, % */
unsigned char CryoStatus; /* Cryodrive status */
unsigned char AlarmCode; /* Indicates most serious alarm condition */
unsigned short RunTime; /* Time in minutes the machine has been running */
unsigned short ControllerNumber; /* Controller number, from ROM */
unsigned char SoftwareVersion; /* Software version */
unsigned char GasFlow; /* Gas flow, 10*l/min */
unsigned char LinePressure; /* Back pressure, 100*bar */
unsigned char CryoAdjust; /* Cryodrive speed boost */
unsigned char OuterFlow; /* Flow rate in outer stream */
unsigned char GasType; /* Helium or nitrogen in cold stream */
unsigned char TurboMode; /* In Turbo mode ? */
unsigned char HardwareType; /* Cryostream, Plus, with/without Shutter */
unsigned char ShutterState; /* Shutter status */
unsigned char ShutterTime; /* Shutter time remaining */
unsigned char UnusedOne; /* For expansion */
unsigned char UnusedTwo; /* For expansion */
unsigned short UnusedThree; /* For expansion */
unsigned short UnusedFour; /* For expansion */
} NHelixStatus;
enum {
StartUp, /* = 0: Initial transient value - run through system checks */
StartUpFail, /* = 1: Some failure in system checks - leave results on screen */
StartUpOK, /* = 2: System checks OK - awaiting Start button */
Run, /* = 3: Machine is running */
SetUp, /* = 4: Special commissioning mode */
ShutdownOK, /* = 5: System has shut down cleanly */
ShutdownFail /* = 6: System has shut down due to hardware error */
};
enum {
Ramp, /* = 0: Current phase is a Ramp */
Cool, /* = 1: Current phase is a Cool */
Plat, /* = 2: Current phase is a Plat */
Hold, /* = 3: Current phase is a Hold */
Warm, /* = 4: Current phase is a Warm */
DeletePhase, /* = 5: Internal use only */
LoadProgram, /* = 6: Internal use only */
SaveProgram, /* = 7: Internal use only */
Soak, /* = 8: The end part of the Warm phase */
Wait /* = 9: Part of Ramp/Wait */
};
enum {
STATUS_ACTIVATED = 1, // Bit 0
STATUS_HIGH_TEMP_WARNING = 2, // Bit 1
STATUS_HIGH_TEMP_TRIP = 4, // Bit 2
STATUS_LOW_PRESSURE_WARNING = 8, // Bit 3
STATUS_MANUAL = 32, // Bit 5
STATUS_START = 64, // Bit 6
}
The STATUS_START and STATUS_ACTIVATED fields are potentially confusing.
if ((CryoStatus & STATUS_START) == STATUS_START) then this indicates that the Cryodrive has received a command to switch on - it should be on. The STATUS_ACTIVATED bit can be inspected to see if the Cryodrive has successfully switched on.
if ((CryoStatus & STATUS_ACTIVATED) == 0) this means that the Cryodrive is actually on. Otherwise it is off, and the STATUS_START bit should be examined to see if this an error or not.
if ((CryoStatus & STATUS_HIGH_TEMP_WARNING) == 0) this means the Cryodrive is reporting a high temperature warning. This logic applies also to STATUS_HIGH_TEMP_TRIP and STATUS_LOW_PRESSURE_WARNING.
if (CryoStatus & STATUS_MANUAL) == 0 this indicates that the Cryodrive has been incorrectly set into manual control mode using the dipsticks in the unit's interior.
enum {
AlarmConditionNone, /* = 0: No alarms exist */
AlarmConditionStopPressed, /* = 1: Stop button has been pressed */
AlarmConditionStopCommand, /* = 2: Stop command received */
AlarmConditionEnd, /* = 3: End phase complete */
AlarmConditionPurge, /* = 4: Purge phase complete */
AlarmConditionTempWarning, /* = 5: Temp error > 5 K */
AlarmConditionHighPressure, /* = 6: Back pressure > 0.5 bar */
AlarmConditionVacuum, /* = 7: Evaporator reduction at max */
AlarmConditionStartUpFail, /* = 8: Self-check fail */
AlarmConditionLowFlow, /* = 9: Gas flow < 2 l/min */
AlarmConditionTempFail, /* = 10: Temp error > 25 K */
AlarmConditionGasTypeError, /* = 11: Sensor detects wrong gas type */
AlarmConditionTempReadingError, /* = 12: Unphysical temp. reported */
AlarmConditionSuctTemp, /* = 13: Suct temperature out of range */
AlarmConditionSensorFail, /* = 14: Invalid ADC reading */
AlarmConditionBrownOut, /* = 15: Degradation of power supply */
AlarmConditionHeatsinkOverheat, /* = 16: Heat sink overheating */
AlarmConditionPsuOverheat, /* = 17: Power supply overheating */
AlarmConditionPowerLoss, /* = 18: Power failure */
AlarmConditionRefrigeratorTooCold, /* = 19: Refrigerator stage is too cold */
AlarmConditionRefrigeratorTimedOut, /* = 20: Refrigerator stage failed to reach base in time */
AlarmConditionCryodriveNotResponding, /* = 21: Cryodrive is not responding */
AlarmConditionCryodriveError, /* = 22: Cryodrive reports an error */
AlarmConditionNoNitrogen, /* = 23: No nitrogen available */
AlarmConditionNoHelium, /* = 24: No helium available */
AlarmConditionVacuumGauge, /* = 25: Vacuum gauge is not responding */
AlarmConditionVacuumReading /* = 26: Vacuum is out of range */
};