Oxford Cryosystems 700 series serial line communications    home | protocols | wiring diagram

Cryostream | Cobra | PheniX | HeliX   status packets | command packets

HeliX status packet

typedef 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;

notes

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  */
};