PSCIP_PS - - TANGO Controls

This is historical information of device classes implemented in PSCIP_PS device server.

Use this link to find the valid information.

Development status: New development
Information status: New

Contact:



Class Description


<pre> Control of SR power supplies.. The Device Server is meant to provide control of PSI Power Supply Controllers. The DS is basic/universal, it means that it can be used as a base for developing Device Servers for PSI PSC intended for specific usage which requires implementing additional functions (ex. upload/ download waveform).

The Device Server can use two types of hardware connection to communicate with PSI PSC: serial (RS232) or fiber. The connection type is determined by setting the property: ConnectionType (0 for fiber and 1 for serial).

For simplicity, PSC DS connected by serial connection will be called serial DS, PSC DS connected by fiber connection will be called fiber DS.

Serial connection is considered as local and 'service', it is not supposed to be used on normal basis, just in extraordinary cases. Fiber connection is considered a default connection meant to be used most of the time.

Fiber connection uses PCI/cPCI Carrier Card. Each card carries two Industrial Pack (IP), each having two channels. Each channel of IP is connected to one PSC. One IP is represented in /dev/ folder as node called pscipX (X is number). If fiber connection is to be used, the property 'FODevice' needs to be set (ex '/dev/pscip0') along with 'Channel' property (0 or 1).

Serial connection uses PySerial Device Server. The property 'TangoDevice' needs to be set inicating the Py Serial name and localization (ex. 'ws/pc-test/ ocem00-serial ').

For the PySerial to work properly, the following attributes need to be set:

System Message: ERROR/3 (<string>, line 32)

Unexpected section title or transition.

_________________________________________________________________

System Message: WARNING/2 (<string>, line 33)

Block quote ends without a blank line; unexpected unindent.

|Attr_name|value__________________________________________________| |Bautrate_|115200_________________________________________________| |DataBits_|8______________________________________________________| |Parity___|odd____________________________________________________| |Port_____|Correct_port_to_which_PSC_is_connected_(ex._/dev/ttyR0)| |StopBits_|1______________________________________________________|

In theory, instead of PySerial DS, any DS can be used instead of PySerial without any changes to PSI SD as long as the following commands are implemented:

System Message: ERROR/3 (<string>, line 44)

Unexpected indentation.
  • 'ReadLine' for reading data,
  • 'Write' for writing
  • 'Open'
  • 'Close'
  • 'State'

System Message: WARNING/2 (<string>, line 49)

Block quote ends without a blank line; unexpected unindent.

Both connections can be used simultaneously only for reading. When writing, a priority is given to one of the Device Servers The priority can be only set Serial DS. It means that DS connected by fiber cannot regain writing priority , it has to be granted priority. For safety reasons the priority is granted to serial DS as long as it is connected to PSC. To be precise, the priority for serial DS is granted as soon as it attempts the first write. The priority is set to fiber DS only if serial DS is disconnected from PSC.

CAUTION: If the priority is set to serial DS and an attempt to write is made by fiber DS, the fiber DS gives no error message, it looks as if the operation was successful, however, the value is not written.

The following documentation is available, which can be useful for future developers/users: 1) Communication_protocol.doc is adescription of communication protocol between DS and PSC 2) DSP_SW_R4_User_Documentation_English.doc is a description of PSI Power Supply Controller (all registers and their meaning, meaning of leds, etc) 3) Messages_Codes_en.xls explains meaning of error codes from PSC 4) DS_Specification Architecture and Design of the TANGO device server for the Power supplies at ALBA Detailed documentation describing hardware used is provided with the PSCIP Linux Device Driver. Commands, attributes and properties detailed description. The following symbols are used:

System Message: ERROR/3 (<string>, line 74)

Unexpected indentation.

System Message: ERROR/3 (<string>, line 74)

Unexpected section title or transition.

_____________________________________________

System Message: WARNING/2 (<string>, line 75)

Block quote ends without a blank line; unexpected unindent.

|Symbol_|meaning__________|Attribute_/property| |I______|current__________|Attribute__________| |I_ideal|current_setpoint_|Attribute__________| |I_ref__|current_reference|Attribute__________| |o______|offset___________|Attribute__________| |f______|current_factor___|Property___________|

System Message: WARNING/2 (<string>, line 81)

Block quote ends without a blank line; unexpected unindent.

In most of the cases the default values of 'offset' and 'current factor' should be set: o = 0 f = 1 Change of the default setting should be done only in the case User knows what he/she is doing !!!! Attributes:

System Message: ERROR/3 (<string>, line 88)

Unexpected indentation.

System Message: ERROR/3 (<string>, line 88)

Unexpected section title or transition.

_____________________________________________________________________________

System Message: WARNING/2 (<string>, line 89)

Block quote ends without a blank line; unexpected unindent.

|Name____________|Description_________________________________________________| |Current |current calculated out of measured ( by PSC ) current | | |according to the following formula: | |________________|__________I_=_I_ideal_+_(_I_ref_-_I_measured_)_/_f__________| |CurrentSetpoint |the ideal current which is intended to be acquired, it is | | |not the current set to the hardware, the current set in the | | |hardware is calculated according to the following formula: | |________________|(_I_ideal_+_o_)_____________________________________________| |CurrentOffset |a value added to the current written to the 'current | |________________|setpoint'_attribute_________________________________________| |CurrentReference|the_current_value_written_to_the_hardware___________________| |CurrentMeasured_|current_measurement_read_from_the_hardware__________________| |Errors |returns readable information about all the errors which have| | |occurred. If error occurs more then one time, it is not | |________________|duplicated_in_the_return_table______________________________| |ErrorCodes |returns codes of the latest errors detected according to | |________________|categories_stored_in_ErrorLabel_attribute___________________| |ErrorLabel______|returns_the_categories_of_the_error_codes___________________| |RemoteMode |is glued to 1 (means remote mode) because PSC can only be | |________________|operated_remotely___________________________________________| |State___________|returns_device_state_(short_message)________________________| |Status__________|returns_human_readable,_textual_description_________________| |Voltage_________|returns_voltage_measured_on_the_load________________________| Properties:

System Message: ERROR/3 (<string>, line 113)

Unexpected indentation.

System Message: ERROR/3 (<string>, line 113)

Unexpected section title or transition.

________________________________________________________________

System Message: WARNING/2 (<string>, line 114)

Block quote ends without a blank line; unexpected unindent.

|Name___________________|Description_____________________________| |Channel |(0 or 1) defines IP channel used to | |_______________________|connect_PSC_by_fiber____________________| |ConnectionType |(0 - fiber; 1 - serial) determines which| | |hardware medium is used to connect | |_______________________|industrial_PC_with_PSC__________________| |FODevice |defines device used for fiber optic | |_______________________|connection_(ex._/dev/pscip0)____________| |TangoDevice |defines name and location of PySerial DS| |_______________________|used_for_serial_communication___________| |Current_factor_________|multiplier______________________________| |InterlockFlowBit |'flow' interlock and 'temperature' | |InterlockTemperatureBit|interlock signals are represented in | | |'Digital_Input_Signals' register of PSC | | |as bits. The properties allow user to | | |determine which bits of the PSC register| | |are associated with this interlocks. If | | |correctly defined, these properties | | |enable DS to recognize Flow and | | |Temperature interlocks and provide user | |_______________________|with_appropriate_error_message__________|

Commands:

System Message: ERROR/3 (<string>, line 137)

Unexpected section title or transition.

_____________________________________________________________________________

System Message: WARNING/2 (<string>, line 138)

Definition list ends without a blank line; unexpected unindent.

|Name______________|Description_______________________________________________| |ClearError |clear Disorder register in PSC, Error and ErrorCodes | |__________________|attributes_in_DS__________________________________________| |Disable_interlocks|write Digital_Input_Signals_Mask with 0xE070 value. I | | |causes all the interlocks, except one, to be disabled. The| | |not disabled interlock has input at the rear of PSC and | | |can be disabled hardware-wise. The change of Mask register| |__________________|value_is_temporary._______________________________________| |Enable_interlocks |write Digital_Input_Signals_Mask with 0xF877 value. | |__________________|Interlocks_are_enabled____________________________________| |Interlocks_state |shows the current value of Digital_Input_Signals_Mask, | | |Three states: 'Interlocks enabled', 'Interlocks disabled' | |__________________|or_'Interlocks_customized'________________________________| |Init |default function which re-initialize Device Server not | |__________________|affecting_the_state_of_the_hardware_______________________| |Off_______________|turns_off_the_device______________________________________| |On________________|turns_on_the_device_______________________________________| |Read_PSC_register |enable user to read any PSC register which is read- | | |enabled. The address and (optionally) format of output | | |data need to be specified. The default format is | | |hexadecimal. Example input data '0x00' will read register | | |0x00 and output it data as hexadecimal, '0x00 f' will read| |__________________|register_0x00_and_output_it_as_flaot______________________| |Reset |resets PSC by turning it off, an attempt to reestablish | | |connection with hardware is taken if it has been lost. It | |__________________|also_calls_ClearErrors_command____________________________| |State |the same as attributes | |Status____________|__________________________________________________________| </pre>

Docutils System Messages

System Message: ERROR/3 (<string>, line 33); backlink

Undefined substitution referenced: "Attr_name|value__________________________________________________".

System Message: ERROR/3 (<string>, line 33); backlink

Undefined substitution referenced: "Bautrate_|115200_________________________________________________".

System Message: ERROR/3 (<string>, line 33); backlink

Undefined substitution referenced: "DataBits_|8______________________________________________________".

System Message: ERROR/3 (<string>, line 33); backlink

Undefined substitution referenced: "Parity___|odd____________________________________________________".

System Message: ERROR/3 (<string>, line 33); backlink

Undefined substitution referenced: "Port_____|Correct_port_to_which_PSC_is_connected_(ex._/dev/ttyR0)".

System Message: ERROR/3 (<string>, line 33); backlink

Undefined substitution referenced: "StopBits_|1______________________________________________________".

System Message: ERROR/3 (<string>, line 75); backlink

Undefined substitution referenced: "Symbol_|meaning__________|Attribute_/property".

System Message: ERROR/3 (<string>, line 75); backlink

Undefined substitution referenced: "I______|current__________|Attribute__________".

System Message: ERROR/3 (<string>, line 75); backlink

Undefined substitution referenced: "I_ideal|current_setpoint_|Attribute__________".

System Message: ERROR/3 (<string>, line 75); backlink

Undefined substitution referenced: "I_ref__|current_reference|Attribute__________".

System Message: ERROR/3 (<string>, line 75); backlink

Undefined substitution referenced: "o______|offset___________|Attribute__________".

System Message: ERROR/3 (<string>, line 75); backlink

Undefined substitution referenced: "f______|current_factor___|Property___________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "Name____________|Description_________________________________________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "Current |current calculated out of measured ( by PSC ) current | | |according to the following formula: | |________________|__________I_=_I_ideal_+_(_I_ref_-_I_measured_)_/_f__________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "CurrentSetpoint |the ideal current which is intended to be acquired, it is | | |not the current set to the hardware, the current set in the | | |hardware is calculated according to the following formula: | |________________|(_I_ideal_+_o_)_____________________________________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "CurrentOffset |a value added to the current written to the 'current | |________________|setpoint'_attribute_________________________________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "CurrentReference|the_current_value_written_to_the_hardware___________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "CurrentMeasured_|current_measurement_read_from_the_hardware__________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "Errors |returns readable information about all the errors which have".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "occurred. If error occurs more then one time, it is not | |________________|duplicated_in_the_return_table______________________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "ErrorCodes |returns codes of the latest errors detected according to | |________________|categories_stored_in_ErrorLabel_attribute___________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "ErrorLabel______|returns_the_categories_of_the_error_codes___________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "RemoteMode |is glued to 1 (means remote mode) because PSC can only be | |________________|operated_remotely___________________________________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "State___________|returns_device_state_(short_message)________________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "Status__________|returns_human_readable,_textual_description_________________".

System Message: ERROR/3 (<string>, line 89); backlink

Undefined substitution referenced: "Voltage_________|returns_voltage_measured_on_the_load________________________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "Name___________________|Description_____________________________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "Channel |(0 or 1) defines IP channel used to | |_______________________|connect_PSC_by_fiber____________________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "ConnectionType |(0 - fiber; 1 - serial) determines which".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "hardware medium is used to connect | |_______________________|industrial_PC_with_PSC__________________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "FODevice |defines device used for fiber optic | |_______________________|connection_(ex._/dev/pscip0)____________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "TangoDevice |defines name and location of PySerial DS".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "_______________________|used_for_serial_communication___________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "Current_factor_________|multiplier______________________________".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "InterlockFlowBit |'flow' interlock and 'temperature' | |InterlockTemperatureBit|interlock signals are represented in | | |'Digital_Input_Signals' register of PSC | | |as bits. The properties allow user to | | |determine which bits of the PSC register".

System Message: ERROR/3 (<string>, line 114); backlink

Undefined substitution referenced: "are associated with this interlocks. If | | |correctly defined, these properties | | |enable DS to recognize Flow and | | |Temperature interlocks and provide user | |_______________________|with_appropriate_error_message__________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Name______________|Description_______________________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "ClearError |clear Disorder register in PSC, Error and ErrorCodes | |__________________|attributes_in_DS__________________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Disable_interlocks|write Digital_Input_Signals_Mask with 0xE070 value. I | | |causes all the interlocks, except one, to be disabled. The".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "not disabled interlock has input at the rear of PSC and | | |can be disabled hardware-wise. The change of Mask register".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "__________________|value_is_temporary._______________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Enable_interlocks |write Digital_Input_Signals_Mask with 0xF877 value. | |__________________|Interlocks_are_enabled____________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Interlocks_state |shows the current value of Digital_Input_Signals_Mask, | | |Three states: 'Interlocks enabled', 'Interlocks disabled' | |__________________|or_'Interlocks_customized'________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Init |default function which re-initialize Device Server not | |__________________|affecting_the_state_of_the_hardware_______________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Off_______________|turns_off_the_device______________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "On________________|turns_on_the_device_______________________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Read_PSC_register |enable user to read any PSC register which is read- | | |enabled. The address and (optionally) format of output | | |data need to be specified. The default format is | | |hexadecimal. Example input data '0x00' will read register | | |0x00 and output it data as hexadecimal, '0x00 f' will read".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "__________________|register_0x00_and_output_it_as_flaot______________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "Reset |resets PSC by turning it off, an attempt to reestablish | | |connection with hardware is taken if it has been lost. It | |__________________|also_calls_ClearErrors_command____________________________".

System Message: ERROR/3 (<string>, line 138); backlink

Undefined substitution referenced: "State |the same as attributes | |Status____________|__________________________________________________________".

Families: PowerSupply

Key words:

Platform: Unix Like

Language: Cpp

License:

Contact:

Hardware


Manufacturer: OCEM

Bus: PCI

Class interface


Attributes:

Name Description
CurrentSetpointScalar: DevDouble
VoltageScalar: DevDouble
RemoteModeScalar: DevBoolean
CurrentScalar: DevDouble
CurrentOffsetScalar: DevDouble
IScalar: DevDouble
VScalar: DevFloat
ErrorCodeScalar: DevLong
WVFAutoTriggerScalar: DevBoolean <pre> Wavefrom will indefinitely repeat once triggered (True) or it will run only once (False) See WVFStart command doc for more information </pre>
WVFPartitionStartScalar: DevLong <pre> Indicates the start position of the current partition. </pre>
WVFRampingScalar: DevBoolean <pre> If true, then the end value of a waveform is taken over on encountering a new trigger signal as an offset value </pre>
WVFScalingScalar: DevFloat <pre> Scaling factor of the waveform: data points are multiplied by this value (default is 1.0) </pre>
WVFSelectedScalar: DevUShort <pre> To select a waveform or read currently selected waveform. Note that number waveform 0 is RAM waveform (and hence it is volatile and gets overwritten whenever an operation uses the temporary RAM). Waveforms 1..11 are stored in a flash memory inside the hardware controller and hence they are non volatile. NOTE that you cannot select RAM waveform: this is because the hadware will go to alarm even if you don't immediately write WVF0 after selecting RAM waveform: in order to select RAM waveform you have to write WVF0 with the target waveform and then WVFSelected will automatically go to RAM. After hardware restart WVFSelected is invalid and hence neither Start nor Trigger would have any effect. However WVFSelected is a memorized attribute and should restore the last selected waveform (provided the hardware is OK). </pre>
WVFStepSizeScalar: DevULong <pre> Time betweeen points in the waveform (default is 80 micro secs) NOTE. If you write when a waveform is active the waveform is restarted and the change is applied. However it looks like there is some kind of bug in the hardware: if you increase step size then it seems to work fine, but if you decrease it then it does not. </pre>
WVFStoppedFlagScalar: DevLong <pre> Read: Indicates when an existing stop flag is reached within a waveform. Write 1: Jumps to the next partition in the waveform. Write 0: Jumps back to the start of the waveform. </pre>
DAC1SettingScalar: DevLong <pre> Address of displayed signal on DAC1 </pre>
DAC1OffsetScalar: DevFloat <pre> DAC 1 signal offset </pre>
DAC1ScalingScalar: DevFloat <pre> DAC 1 scaling factor (1/V) </pre>
DAC2SettingScalar: DevLong <pre> Address of displayed signal on DAC2 </pre>
DAC2OffsetScalar: DevFloat <pre> DAC 2 signal offset </pre>
DAC2ScalingScalar: DevFloat <pre> DAC 2 scaling factor (1/V) </pre>
SoftwareWaveformSpectrum: DevDouble
ErrorCodesSpectrum: DevShort
ErrorLabelSpectrum: DevString
ErrorsSpectrum: DevString
WVF0Spectrum: DevFloat <pre> Waveform stored in temporary RAM. NOTE that any operation that uses temporary RAM will overwrite this waveform! This will happen for example when you start a waveform different than the RAM one. The hardware also considers that RAM waveform is invalid after reading or writing any other waveform or even simply writing WVFSelected attribute. I checked that actually the RAM waveform only gets actually overwriten when a different waveform is started, but since the hardware reports ALARM state and ``data not copied`` disorder then we follow the hardware rules. NOTE that prior writing RAM waveform we will set WVFSelected to RAM (see WVFSelected documentation to find out why). We do not do that for waveforms stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF1Spectrum: DevFloat <pre> Waveform 1 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF2Spectrum: DevFloat <pre> Waveform 2 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF3Spectrum: DevFloat <pre> Waveform 3 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF4Spectrum: DevFloat <pre> Waveform 4 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF5Spectrum: DevFloat <pre> Waveform 5 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF6Spectrum: DevFloat <pre> Waveform 6 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF7Spectrum: DevFloat <pre> Waveform 7 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF8Spectrum: DevFloat <pre> Waveform 8 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF9Spectrum: DevFloat <pre> Waveform 9 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF10Spectrum: DevFloat <pre> Waveform 10 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>
WVF11Spectrum: DevFloat <pre> Waveform 11 stored in flash memory. REMEMBER that FLASH memories have a limited number of write cycles, so do not write them unless necessary. We recommend to test your new waveforms by writting them to RAM (WVF0) and then, once you`re happy, write them to any other free sector. PARTITIONS can be set inside a waveform. Datapoints with a NaN value are interpreted as stop flags, hence allowing segmentation of a waveform into several partitions. When such a stop flag is reached, the waveform is stopped. The next partition can be switched to with a corresponding write on the WVFStoppedFlag attribute. Take into account that 2 consecutive NaN values are considered as a partition. </pre>

Commands:

Name Description
StateInput: DevVoid
Output: State
State Code
This command gets the device state (stored in its <i>device_state</i> data member) and returns it to the caller.
StatusInput: DevVoid
Output: ConstDevString
Status description
This command gets the device status (stored in its <i>device_status</i> data member) and returns it to the caller.
OnInput: DevVoid
Output: DevVoid
OffInput: DevVoid
Output: DevVoid
ResetInput: DevVoid
Output: DevVoid
ResetInterlocksInput: DevVoid
Output: DevVoid
DisableInterlocksInput: DevVoid
Output: DevVoid
EnableInterlocksInput: DevVoid
Output: DevVoid
InterlockStatusInput: DevVoid
Output: DevString
Interlocks Status
Read_PSC_registerInput: DevString
Register address and return format (f-float,i-integer,x-hex, by default x), ex input: 0x00 x - address 0, return value hex
Output: DevString
Data, hexadecimal
StopSoftwareWaveformInput: DevVoid
Output: DevVoid
StartSoftwareWaveformInput: DevVoid
Output: DevVoid
ConnectInput: DevVoid
Output: DevVoid
UpdateInput: DevVoid
Output: DevVoid
WVFStartInput: DevBoolean
AutoTrigger parameter: if true then WVFAutoTrigger will be enabled just before
starting the waveform, what will start playing the waveform forever.

Output: DevVoid
<pre> Starts the selected hardware waveform. WVFSelected attribute must be used to select the waveform you want to start: it will be checked that it has a correct value before starting the waveform. Note that the waveform may be triggered or not depending on if WVFAutoTrigger is enabled or not: 1. If WVFAutoTrigger is enabled then the waveform will inmediately be triggered and repeated forever until stopped. 2. If WVFAutoTrigger is not enabled then the waveform will not be triggered: it will simply be set in ready state (ready to be triggered) but then you have to use WVFTrigger command (or wait for external optical trigger to be activated) in order to actually trigger it. 3. The optional AutoTrigger parameter can be used to force situation 1 described above: WVFAutoTrigger will be set to true just before starting the waveform. Important notes to take into account when working with waveforms: - AutoTrigger is automatically disabled by the hardware when stopping a waveform - Start will immediately start playing the waveform if AutoTrigger is enabled - After hardware restart WVFSelected is invalid and hence nor Start nor Trigger will have any effect. However WVFSelected is a memorized attribute and should restore the last selected waveform if the hardware is OK when device server is restart or initialized. - Note that calling trigger when no waveform is started will have no effect. - When waveform is stopped (with false argument) last written CurrentSetpoint is restored. - When wvf is stopped(with true argument) then the last played waveform point is set as setpoint. Note that CurrentSepoint will be overwritten - Note that after changing the selected waveform you will have to start it. If you trigger but didn`t start the new waveform then the latest selected waveform will be played. However, if WVFAutoTrigger is enabled then after you start then new waveform will be immediately played. - Note that when a waveform is triggered then it will start to be played from the beginning regardless if the waveform was already been played or not. </pre>
WVFStopInput: DevBoolean
False: Stop
True:  Stop, but, the most recent waveform data value is however transmitted as
       an offset value. Note that CurrentSepoint will be overwritten

Output: DevVoid
<pre> Stops hardware waveform. Parameter meaning: False: Stop True: Stop, but, the most recent waveform data value is however transmitted as an offset value. Note that CurrentSepoint will be overwritten </pre>
WVFTriggerInput: DevVoid
Output: DevVoid
<pre> Manually Trigger the selected hardware waveform. The waveform should also be automatically be triggered on hardware optical input trigger activation. Note that this command will have no effect if the waveform has not been prepared using the WVFStart command (remember that WVFSelected attribute can be used to select the waveform you want to start). See WVFStart command documentation for more information </pre>

Pipes:

Properties:

Name Description
ChannelDevShort Channel used of PC
FODeviceDevString BName of the Linux character / block device.
Interlock1DevString Defines which bit of digital input register indicates temperature interlock
Interlock2DevString message to be shown for external interlock 2
TangoDeviceDevString name of the python serial device server responisble for serial communication
ConnectionTypeDevShort You can choose the kind of connection the DS ``talks`` with PSC: 0 -> fiber 1 -> serial (RS232) To run RS232 you need to create pySerial DS
CurrentFactorDevFloat scaling factor ( f ): Iref = f * ( I_idal + o )
Interlock3DevString message to be shown for External Interlock 3
Interlock4DevString message to be shown for external interlock 4
Interlock1DevString
Interlock2DevString message to be shown for external interlock 2
Interlock3DevString message to be shown for External Interlock 3
Interlock4DevString message to be shown for external interlock 4

23 Feb 2017, Piotr Goryl
Updated:
The device class has been updated.
You can see previous version here .



19 Jan 2017, Piotr Goryl
Updated:
The device server has been updated.
You are looking at this version now.



3 Jan 2017, Piotr Goryl
Created:
The device server has been added to catalogue.
Added by:pgoryl2 on:19 Jan 2017, 10:52 a.m.