Development status:
Released,
Release: 1.0
Information status: New
Repository:
https://github.com/gerard-af/tango-controls-wiener-mpod-server
Contact:
Class Description
Device Server controlling the Wiener MPOD and it`s power modules such as - Wiener LV power supplies - iseg HV power supplies
It contains low level access functions for directly accessing the SNMP protocol. These functions are named snmp....
It also contains high level access functions for controlling:
- the crate functionality. The functions are named crate....
The crateGet... functions don`t take arguments. The crateSet... functions need the new value as argument.
- the module functionality. The functions are named module....
The moduleGet... functions need the slot_index as argument. The moduleSet... functions need the slot_index and the new value as argument.
- the channel functionality. The functions are named channel....
The channelGet... functions need the slot_index and the channel_index as arguments. The channelSet... functions need the slot_index, the channel_index and new value as arguments.
- the group functionality. The functions are named group....
The groupGet... functions requires the group_index as argument. The groupSet... functions need the group_index ant the new value as argument.
Further information can be found on the manufacturer`s web sites and in the user manuals for MPOD and the inserted modules.
Families: PowerSupply
Key words: iseg,EHS
Platform: Unix Like
Language: Cpp
License: GPL
Contact:
Hardware
Manufacturer: Wiener
Product:
MpodC
Bus: Ethernet
Class interface
Attributes:
Name | Description |
---|---|
IsMibFileLoadedScalar: DevBoolean | This value is set when th device server is initialized. It is true if the file WIENER-CRATE-MIB.txt was found. The functionality of the device server will be restricted without this file. |
SysDescrScalar: DevString | The system description. This string also contains the firmware version. |
SysMainSwitchScalar: DevULong | The crate`s main switch. Possible values are 0 (off) or 1 (on). |
SysStatusScalar: DevULong | The crate`s status. Possible values are: mainOn (0) , mainInhibit (1) , localControlOnly (2) , inputFailure (3) , outputFailure (4) , fantrayFailure (5) , sensorFailure (6), vmeSysfail (7), plugAndPlayIncompatible (8), busReset (9), supplyDerating (10), supplyFailure (11), supplyDerating2 (12), supplyFailure2 (13) |
SysStatusAsStringScalar: DevString | The crate`s status as string. Only the most important flag of SysStatus is reported. |
SerialNumberScalar: DevString | The crate's serial number. |
FanSpeedScalar: DevULong | The crate`s fan speed. For most crates the allowed values are 0 or 1200 - 5000. |
NumberOfModulesScalar: DevULong | The number of modules inserted and recognized. This is only valid when the crate has been switched on. |
NumberOfChannelsScalar: DevULong | The number of detected HV and LV channels. Requires that the crate has been switched on. |
NumberOfGroupsScalar: DevULong | The number of groups defined for HV and LV channels. Requires that thecrate has been switched on. |
Commands:
Name | Description |
---|---|
CrateGetSysStatusInput: DevVoid Output: DevLong |
— |
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. |
ChannelGetConfigMaxCurrentInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetConfigMaxSenseVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetConfigMaxTerminalVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetCurrentInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble Output current or trip current (HV). |
Returns the output current for the specified channel. It this current is reached, the channel operates in current regulation mode. The corresponding flag is set in the channel status. If current trips are enbled for HV modules, the returned current defines the trip current. |
ChannelGetCurrentFallRateInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetCurrentRiseRateInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetIndexInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevLong |
— |
ChannelGetMeasurementCurrentInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetMeasurementSenseVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetMeasurementTemperatureInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetMeasurementTerminalVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetStatusInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevLong ChannelStatus |
Return the channel status as integer for a given module slot and channel index. |
ChannelGetStatusAsStringInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevString |
— |
ChannelGetSupervisionBehaviorInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevLong |
— |
ChannelGetSupervisionMaxCurrentInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetSupervisionMaxPowerInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetSupervisionMaxTerminalVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetSupervisionMinSenseVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetSwitchInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevLong |
— |
ChannelGetTripTimeInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevLong |
— |
ChannelGetUserConfigInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevLong |
— |
ChannelGetVoltageInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetVoltageFallRateInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelGetVoltageRiseRateInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevDouble |
— |
ChannelSetCurrentInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetCurrentFallRateInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetCurrentRiseRateInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetSupervisionBehaviorInput: DevVarULongArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetSupervisionMaxCurrentInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetSupervisionMaxTerminalVoltageInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetSupervisionMinSenseVoltageInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetSwitchInput: DevVarULongArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetTripTimeInput: DevVarULongArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetUserConfigInput: DevVarULongArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetVoltageInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetVoltageFallRateInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
ChannelSetVoltageRiseRateInput: DevVarDoubleArray ModuleSlotIndex, ChannelIndex, Value Output: DevBoolean |
— |
CrateGetFanSpeedInput: DevVoid Output: DevLong |
— |
CrateGetNumberOfChannelsInput: DevVoid Output: DevLong |
— |
CrateGetNumberOfGroupsInput: DevVoid Output: DevLong |
— |
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. |
CrateGetNumberOfModulesInput: DevVoid Output: DevLong |
— |
CrateGetOccupiedSlotsInput: DevVoid Value Output: DevVarULongArray |
Returns the slot indices of the slots occupied by a HV or a LV module. |
CrateGetSerialNumberInput: DevVoid Output: DevString |
— |
CrateGetSysDescrInput: DevVoid Output: DevString |
— |
CrateGetSysMainSwitchInput: DevVoid Output: DevLong |
— |
CrateGetSysStatusAsStringInput: DevVoid Output: DevString |
— |
CrateSetFanSpeedInput: DevLong Value Output: DevBoolean |
— |
CrateSetSysHardwareResetInput: DevULong Value Output: DevBoolean |
— |
CrateSetSysMainSwitchInput: DevULong Value Output: DevBoolean |
— |
GroupGetIndexInput: DevLong Group index Output: DevLong |
— |
GroupSetSwitchInput: DevVarULongArray Group index, Value Output: DevBoolean |
— |
ModuleGetAuxiliaryMeasurementVoltage0Input: DevLong Slot index Output: DevDouble |
— |
ModuleGetAuxiliaryMeasurementVoltage1Input: DevLong Slot index Output: DevDouble |
— |
ModuleGetDescriptionInput: DevLong Slot index Output: DevString |
— |
ModuleGetEventChannelStatusInput: DevLong Slot index Output: DevLong |
— |
ModuleGetEventStatusInput: DevLong Slot index Output: DevLong |
— |
ModuleGetEventStatusAsStringInput: DevLong Slot index Output: DevString |
— |
ModuleGetHardwareLimitCurrentInput: DevLong Slot index Output: DevDouble |
— |
ModuleGetHardwareLimitVoltageInput: DevLong Slot index Output: DevDouble |
— |
ModuleGetIndexInput: DevLong Slot index Output: DevLong |
— |
ModuleGetIsHvModuleInput: DevLong Slot index Output: DevBoolean |
This command returns true if the module in `slot index` is a HV module. |
ModuleGetMeasurementTemperature0Input: DevLong Slot index Output: DevDouble |
— |
ModuleGetMeasurementTemperature1Input: DevLong Slot index Output: DevDouble |
— |
ModuleGetMeasurementTemperature2Input: DevLong Slot index Output: DevDouble |
— |
ModuleGetMeasurementTemperature3Input: DevLong Slot index Output: DevDouble |
— |
ModuleGetNumberOfChannelsInput: DevLong Slot index Output: DevLong |
This command returns the number of channels for the module in slot `slot index`. |
ModuleGetRampSpeedCurrentInput: DevLong Slot index Output: DevDouble |
— |
ModuleGetRampSpeedVoltageInput: DevLong Slot index Output: DevDouble |
— |
ModuleGetStatusInput: DevLong Slot index Output: DevLong |
— |
ModuleGetStatusAsStringInput: DevLong Slot index Output: DevString |
— |
ModuleSetDoClearInput: DevVarULongArray Slot index, Value Output: DevBoolean |
— |
ModuleSetRampSpeedCurrentInput: DevVarDoubleArray Slot index, Value Output: DevBoolean |
— |
ModuleSetRampSpeedVoltageInput: DevVarDoubleArray Slot index, Value Output: DevBoolean |
— |
SnmpGetDescriptionInput: DevString OID as string Output: DevString Description from MIB file. |
This function simplifies debugging when working with the low level snmp functions. It returns a description for a given OID or the corresponding human readable string. |
SnmpGetNextOIDInput: DevString CurrentOID Output: DevString NextOID |
For a given OID variable the next OID is returned. Rhis allows to iterate over all OIDs exposed by the MPOD controler. This is mostly a debug function. It can be used to implement a functionality similar to ``snmpwalk``. |
SnmpGetValueDoubleInput: DevString OID name Output: DevDouble Double value |
Reads the SNMP variable defined by an OID or an equivalent human readable string. Returns a double value. |
SnmpGetValueIntInput: DevString OID name Output: DevLong |
Reads the SNMP variable defined by an OID or an equivalent human readable string. Returns an unsigned integer value. |
SnmpGetValueStringInput: DevString OID name Output: DevString String variable value |
Reads the SNMP variable defined by an OID or an equivalent human readable string. Returns a string value. |
SnmpSetValueDoubleInput: DevVarDoubleStringArray Variable name (string) and value to set (double). Output: DevBoolean True on success, false otherwise. |
Set a SNMP variable defined by an OID to the double value passed as an argument. |
SnmpSetValueIntInput: DevVarLongStringArray Variable name and value to set Output: DevBoolean True on success, false otherwise. |
Set a SNMP variable defined by an OID to the integer value passed as an argument. |
SnmpTranslateFromOIDInput: DevString OID as string Output: DevString Human readable string |
For a given OID variable the human readable form of the variable is returned such as defined in the file WIENER-CRATE-MIB.txt |
SnmpTranslateToOIDInput: DevString Human readable string Output: DevString OID as string |
Inverses TranslateFromOID. |
ChannelGetMeasurementCurrentVectorInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevVarDoubleArray |
— |
ChannelGetMeasurementSenseVoltageVectorInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevVarDoubleArray |
— |
ChannelGetMeasurementTerminalVoltageVectorInput: DevVarULongArray ModuleSlotIndex, ChannelIndex Output: DevVarDoubleArray |
— |
ChannelGetMeasurementTimeVectorInput: DevVoid Output: DevVarDoubleArray |
— |
Pipes:
Properties:
Name | Description |
---|---|
IpAddrDevString | IP Address for the MPOD controller. |
SnmpCommunityNameDevString | Used SNMP community. This property can limit the access to SNMP variables. By default `guru` defines the read-write community. The community `public` prohibits write operations. These default settings can be changed. |
SnmpTimeoutDevLong | This value is passed to the net-snmp library. For values <= 0 the library default is used. The value is given in ms. Appropriate values are 500 ... 2000. |
ThreadPollingIntervalMsFastDevULong | The communication to the MPOD can be run in a thread. This property defines a time intarval for periodic polling of all data in milliseconds. The defined interval should be 200 ms or greater. If the value of this property is 0, the thread is not started, all commands are directly sent to the MPOD, the device server waits for the response from the MPOD. The property ThreadPollingIntervalMsFast concerns the measured voltages and currents. |
ThreadPollingIntervalMsIntermediateDevULong | Like ThreadPollingIntervalMsFast. The property ThreadPollingIntervalMsIntermediate concerns the polling for status flags and most other SNMP variables. |
ThreadPollingIntervalMsSlowDevULong | Like ThreadPollingIntervalMsFast. The property ThreadPollingIntervalMsSlow concerns the polling of SNMP variables that are set by the user. These variables are read if ThreadPollingIntervalMsSlow has expired or a value has been set. This represents an important speedup for the communication with the MPOD. |
Please log in to comment.
README
b"# tango-controls-wiener-mpod-server\nTango controls device servers for controlling a Wiener MPOD crate and inserted high- or low-voltage modules.\n\n# WienerMpodLvHvCtrl\nThis is the main device server class. It makes use of the net-snmp library to communicate with the MPOD over a network connection. \n\nThe SNMP crate variables are available as attributes.\nThe module and channel SNMP variables can be accessed over functions.\n\nSee the README.txt file in the WienerMpodLvHvCtrl directory for information about compilation.\nThe included html documentation gives further details about the device server configuration and the exposed functions and attributes.\n\nThe DS configuration is also illustrated in the wiki.\n\nThe DS might not run if your MPOD controller runs old firmware. We tested version MPOD 2.1.2212.0 and everything was fine. If your version is older a firmware update might be necessary.\n\n# WienerMpodHvModule\nThis device class simplifies working with a single Iseg high-voltage modules by exposing the module's and the channels' SNMP \nvariables as attributes. The channel attributes are generated dynamically for a given number of channels.\n\nIt requires a running WienerMpodLvHvCtrl device server.\n\nSee the README.txt file in the WienerMpodHvModule directory for information about compilation.\nThe included html documentation gives further details about the device server configuration and the exposed attributes.\n\nThe DS configuration is also illustrated in the wiki.\n\n# Other Software\nOther software for controlling MPOD crates is available. Using this software will familiarize you with your MPOD crate and help you to optimize your Tango-controls setup. You can also run this control software in parallel with you Tango setup.\n Easy LV|HV is available from the Analog Flavor website.\n iseg SNMPcontrol can be downloaded from the iseg support page.\n\n# Support\n contact Physical Instruments for support in France.\n contact Analog Flavor for international support.\n\n# Further Information\n the WIENER-CRATE-MIB.txt file from the Wiener website explains all used SNMP variables in details.\n the MPOD manual from the Wiener website explains how to use an MPOD.\n* the user guide of your Iseg module explains how to use your high-voltage module.\n"
Created:
The device class has been added to catalogue.