Development status:
Released,
Release: Release_1_1
Information status: New
Repository:
http://svn.code.sf.net/p/tango-ds/code/DeviceClasses/Temperature/CryoConTempController
Contact:
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
Contact:
Class interface
Attributes:
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 |
Commands:
Name | Description |
---|---|
OnInput: DevVoid Output: DevVoid |
— |
RunInput: DevString Command to run Output: DevString Results |
— |
OffInput: DevVoid Output: DevVoid |
— |
SetChannelUnitInput: DevVarStringArray channel and unit to set Output: DevVoid |
— |
Pipes:
Properties:
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.
README
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"
Created:
The device class has been added to catalogue.