VCC_POSITIVE_OPV
and VCC_NEGATIVE_OPV
to isegcommon.h, as these might be used from user code. New code should use VCC_POSITIVE_ANALOG1
and VCC_NEGATIVE_ANALOG1
nevertheless. (broken in v1.8.0):CONF:ETHERNET ON
could lead to changing voltage set values or turning the channel on or off.Supplies[*]
did not return correct values for the indexes 10 and greater.FanFollowUpTime
.Changed the "repeat command" function of the examples to not print the command again, as it is already contained in the output.
isegHAL> 0.0.FirmwareName
'0.0.FirmwareName': 'H101C1' (Q: 002 ...)
isegHAL> [ENTER]
'0.0.FirmwareName': 'H101C1' (Q: 002 ...)
*.1100
:
item_list.html
*.1000.FanSpeedHv
to provide the information about the lowest required fan speed for the HV modules. The item value can be between 5 and 100 percent.*.1000.FanFollowUpTime
to control how long the fan should run at higher speed after power off"*.1000.*
) and Fantray (*.1100.*
) Items.scpi/iseg-ethernet.py
script.Added additional internal positive (11) and negative (12) analog supply voltages for the E16F3 low cost floating ground modules:
0.15.Supplies[11] -> 27.1010
0.15.Supplies[12] -> -26.8571
Added support for Wiener LV MPODHR (high resolution) devices.
scpi/iseg-ethernet.py
script.EDCP_DATAID_MOD_CONFIGURE_SAVE_SET_VALUES
).Data-ID 0xC0
) and DCP Emergency off (Data-ID 0xD4
).iseg_connect()
, iseg_disconnect()
, iseg_getItem()
, iseg_setItem()
, or iseg_getItemProperty()
API calls.iseg_snmp.sub
file contained a 0
instead of 1000
for the CC24 address.--no-color
command line option.iseg_setItem(xxx, "x.y.z.Control:i", "value")
multiple times resulted in ISEG_ERROR
and did not accept the second and following values. This could for example happen with the following SCPI commands: :VOLT EMCY CLR,(@1);:VOLT ON,(@1)
Status.currentLimit
and Status.voltageLimit
had wrong values and units.-Vmax
and +Vmax
) and MICC which has the additional item HighVoltageOk
. For these devices, at least the item Article
and the properties for Control
, VoltageSet
and CurrentSet
were empty and with quality error.moduleRampSpeedCurrent
could not be written due to a datatype mismatch.:EVENT 1234,(@3)
to clear selected channel events.--color
command line option.Event.*
or Error.*
, which returned all events resp. errors. The query and the deletion of single module events and errors with Event.[eventName]
or Error.[eventName]
were previously rejected by the websocket server and not processed.The temperature unit was fixed to "°C" (degree Celsius). It was previously transmitted without degree symbol as "C". The unit of the following items is affected:
Setup.temperatureTrip
Setup.temperatureTripMax
Status.temperature
Status.temperature0
Status.temperature1
Status.temperature2
Status.temperatureExternal
The SCPI service can now be started, stopped and restarted via websocket. It is also possible to configure the autostart behavior of the service.
[]
.00:14:2d:00:00:00
. Affected devices should be reported to the iseg support as a matter of urgency.clientCommon.py
could not include the iseg library libicsClientPython3.so
. E.g. the iCSPythonDataLogger.py
example no longer worked. This was broken in iCS v2.8.0FactoryReset
could not be set by iseg_setItem
.Fixed that the item properties for legacy ECH238 crates with address 2001 and higher had bad quality ("000"). The item properties for the crate with address 2000 already worked correctly.
Old behavior:
'7.CrateList': '2000,2021' (Q: 002 TR: 1620301308.2720 TC: 1620301308.2720)
Object: '7.2021.Status' (Q: 000)
DataType: 'UI4'
Unit: ''
Access rights: 'R'
New behavior:
'7.CrateList': '2000,2021' (Q: 002 TR: 1620301308.2720 TC: 1620301308.2720)
Object: '7.2021.Status' (Q: 002)
DataType: 'UI4'
Unit: ''
Access rights: 'R'
Fixed that all item properties for legacy ECH238 crates (address >= 2000) had good quality ("002"). They now have error quality ("004") if the item is valid but no crate is connected or invalid quality ("000") if the item doesn't exist:
Old behavior:
'0.CrateList': '' (Q: 001 TR: 1620301307.0173 TC: 1620301307.0173)
Object: '0.2021.Status' (Q: 002)
DataType: ''
Unit: ''
Access rights: ''
Object: '0.2021.FanSpeed' (Q: 002)
DataType: ''
Unit: ''
Access rights: ''
New behavior:
'0.CrateList': '' (Q: 001 TR: 1620301307.0173 TC: 1620301307.0173)
Object: '0.2021.Status' (Q: 004)
DataType: ''
Unit: ''
Access rights: ''
Object: '0.2021.FanSpeed' (Q: 000)
DataType: ''
Unit: ''
Access rights: ''
:CONF:SERIAL:BAUD 115200;BAUD?
ECHO
, LOOP
, SLEEP
and STOP
have been added and the example is now compatible with isegHAL Terminal scripts using the notation 0.1.2.Item
to query and 0.1.2.Item=123
to set an item.Added support for system items to read the Ethernet configuration:
Item Return value
EthMac[i] 00:00:00:00:00:00
EthNetmask[i] 255.255.255.0
EthGateway[i] 192.168.16.168
EthNameServer[i] 127.0.0.1, 192.168.16.12
EthState[i] up/down
i: 0 - ethernet; 1 - wifi
Fixed that only 62 modules were working on one CAN line. If 64 modules (the maximum possible on one line) were connected, the item ModuleList was empty and no communication to the modules was possible.
Now allows walking over all items on a line or the whole system with the following command syntax:
w Walks on line zero
w 7 Walks on line seven
w 2-5 Walks on the lines two to five
w 1,3 Walks on line one and three
The commands ECHO, LOOP, SLEEP and STOP have been added, and the example is now compatible with iseg HAL Terminal scripts using the notation 0.1.2.Item
to query and 0.1.2.Item=123
to set an item.
OffInfo
. In this case an empty string was set to isegItem.SCPI is now available for all iCS-based devices, not only SHR, and supports multiple (up to 10) modules in a crate with a CC24 controller or iCSmini.
The additional modules are accessed by a new(#<slot>)
parameter, e.g. (#3)
for the module in slot 3. A channel in such a module can be specified by (#<slot>@<channel>)
, e.g. (#1@5)
for channel 5 in the module in slot 1. The new command :READ:MODULE:LIST?
can be used to get a comma-separated list of available slots.Added commands to control and supervise the CC24 controller in a crate:
:CRATE:POWER?
:CRATE:POWER {0|1}
:CRATE:STATUS?
:CRATE:EVENT CLEAR
:CRATE:EVENT:STATUS?
:CRATE:EVENT:STATUS <ResetMask>
:CRATE:EVENT:MASK?
:CRATE:EVENT:MASK <EventMask>
:CRATE:SUPPLY? (@0-8)
:CRATE:TEMPERATURE (@0-2)
:CRATE:FANSPEED?
Fixed the SCPI TCP server: When multiple command lines (separated by line feed) were sent to the device in short time, the answers did not match the commands:
:READ:VOLT?
:READ:CURR?
0.024000E3V
:READ:VOLT?
0.000001E-3A
:READ:CURR?
0.024000E3V
Now the commands are answered in the correct order:
:READ:VOLT?
:READ:CURR?
0.024000E3V
0.000001E-3A
:READ:VOLT?
0.024000E3V
:READ:CURR?
0.000001E-3A
Added the possibility to query the set value changed counter with the command:
:READ:MODule:SETVALUEchanges?
The following commands to query information about the systems Ethernet ports have been added:
:CONFigure:ETHernet:ADDRess?
:CONFigure:ETHernet:NETmask?
:CONFigure:ETHernet:GATEway?
:CONFigure:ETHernet:NAMEserver?
:CONFigure:ETHernet:STATe? {up/down}
:CONFigure:ETHernet:MAC?
All queries return the state of the wired Ethernet, but with the parameter (@1)
they return the Wifi configuration.
:CONF:RAMP:VOLTAGE
and :CONF:RAMP:CURRENT
(and their subtrees :UP
and :DOWN
) were not working, only the short commands :CONF:RAMP:VOLT
and :CONF:RAMP:CURR
did work.Added item Hardware.options[0] to read out the Hardware option bits Added item Option.inhibit to read out the configured INHIBIT:
"none", "IU", "ID", "NIU" or "NID"
Added display of INHIBIT option:
MENU: SETTINGS > DEVICE INFO > INHIBIT
Fixed changing time or date with the virtual keyboard.
e.g. SHR "Save configuration" to and "Restore configuration" from USB flash
<channelProfiles>
<channelProfile title="AutoSave" id="e143366b">
<channel id="0_0_0">
<item quality="2" value="0" id="Control.on" unit=""/>
<item quality="2" value="2.0E+03" id="Control.voltageSet" unit="V"/>
<item quality="2" value="4.0E-03" id="Control.currentSet" unit="A"/>
<item quality="2" value="5.0E+01" id="Control.voltageRampspeedUp" unit="V/s"/>
<item quality="2" value="6.0E+01" id="Control.voltageRampspeedDown" unit="V/s"/>
<item quality="2" value="2.0E-03" id="Control.currentRampspeedUp" unit="A/s"/>
<item quality="2" value="2.0E-03" id="Control.currentRampspeedDown" unit="A/s"/>
<item quality="2" value="4" id="Setup.delayedTripAction" unit=""/>
<item quality="2" value="0.0" id="Setup.delayedTripTime" unit="s"/>
<item quality="1" value="0.0E+00" id="Setup.voltageBottom" unit=""/>
</channel>
...
</channelProfile>
</channelProfiles>
Upload:
{
"i": "55005e1a49cad-46", // session id, received by login
"t": "request", // type request
"c": [ // content array, collects different request pakets
{ // request paket object
"c": "uploadFile", // command: save file
"p": {
"i": "icsConfig", // item (source file)
"s": "USB", // source
"n": "my-icsConfig.xml" // load file as current configuration
}
},
{ // request paket object
"c": "fileList", // command: file list
"p": {
"t": "icsConfig", // item (source file)
"s": "USB", // source
}
}
],
"r": "websocket" // session response type
}
Download:
{
"i": "55005e1a49cad-46", // session id, received by login
"t": "request", // type request
"c": [ // content array, collects different request pakets
{ // request paket object
"c": "downloadFile", // command: save file
"p": {
"i": "icsConfig", // item (source file)
"d": "USB", // destination
"n": "my-icsConfig.xml" // store current configuration to file my-icsConfig.xml
}
}
]
"r": "websocket" // session response type
}
Example sub file with CC24 and slaves controllers CC23 and ECH238 connected by CAN bus:
## this file is loaded via "dbLoadTemplate" from the IOC
file "/mnt/user/data/config/iseg_epics_system.db"
{
pattern {CONTROLLER_SN,CAN_LINE,PORT}
{5230449,0,"AUTO"}
{5230000,1,"AUTO"}
{490030,2,"AUTO"}
}
file "/mnt/user/data/config/iseg_epics_crate.db"
{
pattern {CONTROLLER_SN,CAN_LINE,CRATE_ID,PORT}
{5230449,0,1000,"AUTO"}
{5230000,1,1000,"AUTO"}
{490030,2,2001,"AUTO"}
}
file "/mnt/user/data/config/iseg_epics_module.db"
{
pattern {CONTROLLER_SN,CAN_LINE,MODULE_ID,CHANNEL_ID,PORT}
{5230449,0,1,0,"AUTO"}
{5230449,0,1,1,"AUTO"}
...
{5230449,0,1,15,"AUTO"}
{5230000,1,0,0,"AUTO"}
{5230000,1,0,1,"AUTO"}
...
{5230000,1,0,15,"AUTO"}
{7200076,2,0,0,"AUTO"}
{7200076,2,0,1,"AUTO"}
...
{7200076,2,0,15,"AUTO"}
{7800086,2,1,0,"AUTO"}
{7800086,2,1,1,"AUTO"}
...
{7800086,2,1,7,"AUTO"}
}
Example sub file for SHR:
## this file is loaded via "dbLoadTemplate" from the IOC
file "/mnt/user/data/config/iseg_epics_system.db"
{
pattern {CONTROLLER_SN,CAN_LINE,PORT}
{2300001,0,"AUTO"}
}
file "/mnt/user/data/config/iseg_epics_crate.db"
{
pattern {CONTROLLER_SN,CAN_LINE,CRATE_ID,PORT}
}
file "/mnt/user/data/config/iseg_epics_module.db"
{
pattern {CONTROLLER_SN,CAN_LINE,MODULE_ID,CHANNEL_ID,PORT}
{2300001,0,0,0,"AUTO"}
{2300001,0,0,1,"AUTO"}
{2300001,0,0,2,"AUTO"}
{2300001,0,0,3,"AUTO"}
}
Pattern entries | System 1st pattern | Line 1st pattern | Crate 2nd pattern | Module 3rd pattern | Channel 3rd pattern |
---|---|---|---|---|---|
CC24 | yes | yes | yes | yes / no | yes / no |
iCSmini2 | yes | yes | yes / no | yes / no | yes / no |
SHR | yes | yes | no | yes | yes |
iseg_epics.sub | iseg_epics_system.db | iseg_epics_system.db | iseg_epics_crate.db | iseg_epics_module.db | iseg_epics_module.db |
ipDynamicAddress
and ipStaticAddress
: read from the isegHAL item EthAddress
now (was hardcoded to 127.0.0.1 before). These items are read only in this version.EthName[i]
and EthAddress[i]
, where i = 0: eth0, i = 1: wlan0OutputMode
and OutputPolarity
.Read[2]
, kept backward compatibility of old double point separation Read:2
Also fixed the help, moved Write
and Read
items from line to system.ISEG:${CONTROLLER_SN}:${CAN_LINE}:${MODULE_ID}:${CHANNEL_ID}:Control:setOn
Setup.currentTrip
Control.currentBounds
and Control.voltageBounds
Setup.currentTrip
CurrentTrip
CurrentTrip
is an alias to the existing item CurrentSet
CurrentTrip
and CurrentSet
are two different data pointsicsConfig.xml
iseg_epics.sub
iseg_snmp.sub
<autoConfig>
for the automatic hardware configuration was added to icsConfig.xml
Setup.voltageBottom
, and Event.voltageBottom
Setup.voltageRampPriority
.voltageLowTrip
Setup.voltageLowTrip
Setup.voltageLowTripAction
Setup.voltageLowTripTime
voltageTrip
Setup.voltageTrip
Setup.voltageTripAction
Setup.voltageTripTime
Setup.voltageTripMax
voltageTerminalTrip
Setup.voltageTerminalTrip
Setup.voltageTerminalTripAction
Setup.voltageTerminalTripTime
Setup.voltageTerminalTripMax
powerTrip
Setup.powerTrip
Setup.powerTripAction
Setup.powerTripTime
Setup.powerTripMax
temperatureTrip
Setup.temperatureTrip
Setup.temperatureTripAction
Setup.temperatureTripTime
Setup.temperatureTripMax
timeoutTrip
Setup.timeoutTripAction
Setup.timeoutTripTime
currentTrip
Setup.currentTripMax
,iseg-iCS
on the connected USB flash driveip-config.txt
with the current network configuration is written to the directory iseg-iCS
icsConfig.xml
will be checked for existence of node icsConfig
before an an upload is possibleAttention: The format of the EPICS DB file has changed. "can0" must be replaced by ${PORT} which is defined in the SUB file after regeneration.
A default iseg_epics.db file is located on the iCS system under /opt/epics/linux-arm/db. If you use your own EPICS DB file, from a prior version, you must manually edit it.
Example: the following record for ModuleList
record( stringin, "ISEG:${CONTROLLER_SN}:${CAN_LINE}:ModuleList" ) {
field( DTYP, "isegHAL" )
field( INP, "@${CAN_LINE}.ModuleList can0" )
field( FLNK, "ISEG:${CONTROLLER_SN}:${CAN_LINE}:CrateNumber" )
field( TSE, "-2" )
}
must be changed to:
record( stringin, "ISEG:${CONTROLLER_SN}:${CAN_LINE}:ModuleList" ) {
field( DTYP, "isegHAL" )
field( INP, "@${CAN_LINE}.ModuleList ${PORT}" )
field( FLNK, "ISEG:${CONTROLLER_SN}:${CAN_LINE}:CrateNumber" )
field( TSE, "-2" )
}
voltageRampSpeedLimitDisabled
into outputStatus
and as control item to groupsSwitch
.is/EventVoltageBoundLower/Upper
is/EventVoltageLimit
is/EventCurrentBounds
is/EventTemperatureBad
is/EventMaxPower
is/EventInternalCommunicationBad
outputVoltageButtom
to reduce the output voltage after a discharge event. The new output voltage is calculated as outputVoltageBottom * voltageSet / 100
.outputVoltageRampPriority
WIENER-CRATE-MIB.txt
to the lastest version from W-IE-NE-RsysStatus
item for CC24 controller to handle bits like mainInhibit
and inputFailure
are handled. Before only the bit mainOn
was set. This introduces a regression for SHR and iCSmini, where sysStatus
can no longer be queried.moduleVoltageRampSpeed.maX
and moduleCurrentRampSpeed.maX
for X > 0VoltageBoundLower/Upper
VoltageLimit
CurrentBounds
MaxPower
isTemperatureBad
isKillEnable
isFineAdjustment
isVoltageRampSpeedLimit
ETemperature
ESetKillEnable
ESetFineAdjustment
EVoltageRampSpeedLimit
icsConfig.xml
instead the hardcoded defaults user
and pass
. The server will no longer start if one of these entries is empty.IdentifierList
which is used for firmware updates in iCSconfigVoltageBottom
, which reduces the voltage set value after a discharge event in order to protect the connected detector.VoltageRampPriority
which allows to set and query the value for priority controlled voltage ramps.1.234567E3V
.