There may well be a better way to do it, but this does work, using a stringout record as an intermediary:
record(mbbi, "PressureUnit") {
field(DESC, "Vacuum measurement unit")
field(PINI, "YES")
field(SCAN, "Passive")
field(NOBT, "2")
field(ZRVL, "0")
field(ZRST, "mbar")
field(ONVL, "1")
field(ONST, "Pa")
field(THVL, "2")
field(THST, "Torr")
field(FLNK, "sendUnit")
}
record(stringout, "sendUnit") {
field(DOL, "PressureUnit")
field(OMSL, "closed_loop")
field(OUT, "_Pressure.EGU")
}
record(ai, "_Pressure") {
field(DESC, "Get device pressure")
field(PINI, "YES")
field(SCAN, "Passive")
}
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Marco A. Barra Montevechi Filho via Tech-talk <tech-talk at aps.anl.gov>
Sent: Monday, March 14, 2022 12:30 PM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Linking PVs to EGU field
Hello all.
I have an IOC that controls a mvc3 pressure gauge controller and retrieves its information. Between many PVs, the IOC has one that is responsible for taking the pressure values and one that is responsible for taking the units in which these pressures are expressed.
Both use the stream module to send commands to the gauge and retrieve its response. I want to make the units end up automatically in the _Pressure.EGU field, but i dont know how.
I've tried:
record(mbbi, "$(BEAMLINE):$(DEVICE_NAME):PressureUnit") {
field(DESC, "Vacuum measurement unit")
field(PINI, "YES")
field(SCAN, "Passive")
field(DTYP, "stream")
field(NOBT, "2")
field(ZRVL, "0")
field(ZRST, "mbar")
field(ONVL, "1")
field(ONST, "Pa")
field(THVL, "2")
field(THST, "Torr")
field(INP, "@mvc3.proto PressureUnit $(PORT)")
}
record(ai, "$(BEAMLINE):$(DEVICE_NAME):_Pressure") {
field(DESC, "Get device pressure")
field(EGU, "$(BEAMLINE):$(DEVICE_NAME):PressureUnit")
field(PINI, "YES")
field(SCAN, "1 second")
field(DTYP, "stream")
field(INP, "@mvc3.proto RPV$(CHAN_NUM) $(PORT)")
}
But, although cagets to PressureUnit and to _Pressure do return their values, any call to $(BEAMLINE):$(DEVICE_NAME):_Pressure.EGU returns no actual value.
Are there any suggestions? I also tried FLNK or DOL but im not sure if im using them correctly. Thanks in advance.
Aviso Legal: Esta mensagem e seus anexos podem conter informações confidenciais e/ou de uso restrito. Observe atentamente seu conteúdo e considere eventual consulta
ao remetente antes de copiá-la, divulgá-la ou distribuí-la. Se você recebeu esta mensagem por engano, por favor avise o remetente e apague-a imediatamente.
Disclaimer: This email and its attachments may contain confidential and/or privileged information. Observe its content carefully and consider possible querying
to the sender before copying, disclosing or distributing it. If you have received this email by mistake, please notify the sender and delete it immediately.
|