Experimental Physics and Industrial Control System
I found way to do that.
# dbDevice.db
record( longout, "$(Place):$(Device):TimeEvent"){
field(FLNK,"$(Place):$( Device):TimeEventString")
field(SCAN, "Passive")
field(PINI,"YES")
field(DOL,"46")
field(OMSL,"supervisory")
}
record( stringout, "$(Place):$( Device):TimeEventString"){
field(VAL,"$(Place):$( Device):TimeEvent")
field(OUT,"$(Place):$(Hardware):TimeEvent.DOL CA")
field(FLNK,"$(Place):$( Device):TimeEventProc")
field(SCAN, "Passive")
field(PINI,"YES")
field(DOL,"$(Place):$( Device):TimeEvent")
field(OMSL,"supervisory")
}
record( ao, "$(Place):$( Device):TimeEventProc"){
field(OUT,"$(Place):$(Hardware):TimeEvent.PROC CA")
field(SCAN, "Passive")
field(PINI,"YES")
field(DOL,"1")
field(OMSL,"supervisory")
}
#dbHardware.db
record( longout, "$(Place):$(Hardware):TimeEvent"){
field(DTYP,"SMLong")
field(OUT,"@$(Place)$(Hardware)TimeEvent")
field(SCAN, "Passive")
# field(PINI,"YES")
# field(DOL,"46")
field(OMSL,"closed_loop")
}
#st.cmd
dbLoadRecords("db\ dbHardware.db","Place=Test_Diag,Hardware=TestComputer")
dbLoadRecords("db\ dbDevice.db","Place=Test_Diag,Device=Device01,,Hardware=TestComputer")
dbLoadRecords("db\ dbDevice.db","Place=Test_Diag,Device=Device02,Hardware=TestComputer")
...
dbLoadRecords("db\ dbDevice.db","Place=Test_Diag,Device=Device0N,Hardware=TestComputer")
Thanks, Andrei.
________________________________________
From: Liyu, Andrei [mailto:[email protected]]
Sent: Friday, July 07, 2006 1:33 PM
To: [email protected]
Subject: record programming and share oblects
Hi,
Sometimes IOC has share object. As example, ADC-digitizer has 2 channels
and once delay from external trigger or sampling rate for both channels.
I can handle that easy in C/C++ like system has 4 objects
- Device 1 has pointer pDAQ (middle layer)
- Device 2 has pointer pDAQ (middle layer)
- pDAQ has pointer pADC and handles sharing
- and ADC
In pDAQ I can provide simple logic like
- set only the latest value (according timestamp)
- Device 1 catches pDAQ and another Device 2 waits its turn (it is
useful for long measuring)
or a little complicated ...
Client (OPI) has "virtual device with full possibilities", readback
values are always correct, and (PVs) set is the same. So I don't need to
have deal with PV like ***.Device1&2.Delay or ***.Device5&8&12.Delay
I handle just sets of Devices and ONE set PVs for that Device type! That
gives EDM screen with just one macros Device name!
I understand that I can't have all features :-(
But maybe I can have feature with "ONE set PVs per Device type"?
Ok, I am ready to handle "Device1&2.Delay" on IOC level. But I go to
infinite loop with FWD or INP (with CA) :-(
Have anyone found way or trick to simplify life?
Thanks, Andrei.
- References:
- record programming and share oblects Liyu, Andrei
- Navigate by Date:
- Prev:
record programming and share oblects Liyu, Andrei
- Next:
error while building ChannelArchiver2.8.1 in RedHat9 Liu Shu
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
record programming and share oblects Liyu, Andrei
- Next:
error while building ChannelArchiver2.8.1 in RedHat9 Liu Shu
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024