Average: 0
Rating Count: 0

Development status: Released, Release: Release_1_1
Information status: New
Repository: http://svn.code.sf.net/p/tango-ds/code/DeviceClasses/Temperature/CryoConTempController

Class Description

CryoConTempController Class Description:

This device reads the temperature channels from a CryoCon temperature controller and controls its loops outputs. It does so by communicating with the hardware via a serial device, which must be correctly configured and setup.

Families: Temperature

Key words:

Platform: All Platforms

Language: Python



Class interface


Name Description
Loop2SetPointScalar: DevDouble
Loop4RateScalar: DevDouble
Loop4SetPointScalar: DevDouble
Loop2TypeScalar: DevString
Loop1RangeScalar: DevString Loop 1 range (HI, MID, LOW)
Loop3RateScalar: DevDouble
Loop1RateScalar: DevDouble
Loop3SetPointScalar: DevDouble
ChannelCScalar: DevDouble
ChannelBScalar: DevDouble
ChannelAScalar: DevDouble
Loop3OutputScalar: DevDouble Output power
ChannelDScalar: DevDouble
Loop2OutputScalar: DevDouble Output power
Loop2RateScalar: DevDouble
Loop1TypeScalar: DevString
Loop4OutputScalar: DevDouble Output power
TransientErrorsScalar: DevLong
Loop1SetPointScalar: DevDouble
Loop3TypeScalar: DevString
Loop4TypeScalar: DevString
Loop1OutputScalar: DevDouble Output power


Name Description
OnInput: DevVoid
Output: DevVoid
RunInput: DevString
Command to run
Output: DevString
OffInput: DevVoid
Output: DevVoid
SetChannelUnitInput: DevVarStringArray
channel and unit to set
Output: DevVoid



Name Description
CommTypeDevString eth or serial.
UsedLoopsStringArrayType The loops we really want to read and manage (ignore the others). Loops may be discontinued (i.e 1 and 4 but not 2 or 3), butthe channel that a given loops is using as source must be in UsedChannels. This is also useful to be able to control different CryoCon models which may have different number of loops but the same interface. If not specified, all loops will be used
UsedChannelsStringArrayType The channels we really want to read and manage (ignore the others). Channels may be discontinued (i.e if I want A and D but not B or C). This is also useful to be able to control different CryoCon models which may have different number of channels but the same interface. If not specified, all channels will be used
Eth_PortDevString Ethernet port of the instrument.
SerialDeviceDevString The serial device to connect to the instrument.
ReadValidityPeriodDevDouble Time in seconds (may include decimals or be 0) while the last read values from the hardware are consider to be valid. This is done to try to minimize the accesses to the hardware. If not specified, the display time constant of the instrument will be used.
IPDevString IP of the instrument.
AutoLockFrontPanelDevBoolean Front panel lock at init. If not specified False is assumed.
AllowedTransientErrorsDevUShort Some models (at least the M24C used at alba BL29) randomly answer NACK to valid command requests. The manufacturer was contacted but I got no answer so far. The only solution to avoid continuously going to FAULT is simply ignore these transient errors.

Please log in to comment.


b"This device server is used to control basic features of a CryoCon temperature\ncontroller.\n\nIt has been tested with M32 and M24C models, but should work with other models.\n\nThe SCPI syntax for controlling the instrument is very similar to that for\ncontrolling a temperature monitor, and hence these functions have been shared\nwith the CryoConTempMonitor project. These common functions are in CryoCon.py\nfile (this file should be exactly the same in both projects CryoConTempMonitor\nand CryoConTempController). Of course the temperature controller has many\nfunctions that the monitor doesn't contain, but simply these functions are not\nused in the temperature monitor code.\n\nA possible bug was detected on model M24C, and a mail was sent to CryoCon, but\nunfortunately I got not answer from them. To face this possible bug I had to\nmodify the device server to allow transient error answer from the instument\nThis is the mail I sent:\n***********\nHi,\n\nMy name is Jairo Moldes. I'm working as a software engineer at Alba \nsynchrotron in Spain. One of the end stations of the beamline I'm working on \ncontains a CryoCon M24C temperature Controller.\n\nWe have developed our own software which uses the serial for communicating \nwith the instrument. I have detected that sometime the answer to the command \n'CONTROL?;:SYSTEM:LOCKOUT?;' is incorrect (I didn't check if this happens with \nother commands). The answer sometimes contains a 'NACK', like for example: \n'NACK\r\n' or 'ON ;NACK\r\n'\n\nThe problem can be reproduced with the attached python code (you probably need \nto customize it). When I run it, after a random number of loops (it may take \nvery long) it finally fails. Note that the baud rate is set to 19200.\n\nHave you detected this problem? If so, which is the solution? If not, can you \nreproduce it?\n\nThanks in advance. Regards,\n***********\nAn this is the m24.py test script:\n#!/usr/bin/env python\n\nimport time\nimport serial\n\nif name == 'main':\n ser = serial.Serial('/dev/ttyS0', 19200, 8, 'N', 1, timeout=1)\n cmd = 'CONTROL?;:SYSTEM:LOCKOUT?;'\n answer = 'ON ;ON'\n while True:\n try:\n ser.write(cmd+'\n')\n time.sleep(0.5)\n line = ser.readline()\n print '%r' % line\n if line.strip() != answer:\n print time.ctime()\n ser.close()\n break\n except Exception, e:\n print e\n ser.close()\n*************\n"

16 Jan 2018, DS Admin
The device class has been added to catalogue.
Added by:dadmin on:16 Jan 2018, 1:24 p.m.