Hi Zen,
I don't think you can do that. The first order problem is that there is no connection from the asyn driver to the AO:SC record, since it uses soft device support, not asyn device support. I don't think there is a way to propogate alarm status between records at the database level except by using the MS qualifier on input and output links. But I'm not a database programming expert, perhaps there is a way to do this.
But if you want to indicate a problem to the user in the edm screen you can have another widget whose visibility or color is controlled by the AO record's alarm status.
Mark
________________________________
From: Szalata, Zenon M. [mailto:[email protected]]
Sent: Sat 3/26/2011 2:54 PM
To: Mark Rivers
Cc: [email protected]
Subject: asynPortDriver Question
Hi Mark,
I am using a four record set to write analog data to a set point register in a power supply and to keep reading and writing this register in sync. This technique is what you suggested as a solution to a question I had. Here are the four records:
#---- $(DESC) ------------------------------
record( ao, "$(P):AO:SC:$(ITEM)"){
field( DESC, "$(DESC):")
field( OUT, "$(P):AO:$(ITEM) PP")
field( DRVL, "$(DRVL)")
field( DRVH, "$(DRVH)")
}
record( ao, "$(P):AO:$(ITEM)"){
field( SDIS, "$(P):AO:$(ITEM):Sync.PACT")
field( DISV, "1")
field( DTYP, "asynFloat64")
field( OUT, "@asyn($(PORT),0,1)AO_$(ITEM)")
}
record( ai, "$(P):AI:$(ITEM)"){
field( DTYP, "asynFloat64")
field( INP, "@asyn($(PORT),0,1)AI_$(ITEM)")
field( SCAN, "I/O Intr")
field( EGU, "$(EGU)")
field( FLNK, "$(P):AO:$(ITEM):Sync")
}
record( ao, "$(P):AO:$(ITEM):Sync"){
field( DOL, "$(P):AI:$(ITEM) NPP")
field( OMSL, "closed_loop")
field( OUT, "$(P):AO:SC:$(ITEM) PP")
}
An EDM Text Control widget connected to the "AO:SC" record is used to write a new value to the set point register. Depending on some other configuration parameters that the power supply is set up with, write set point might fail. When that happens, my writeFloat64 routine returns asynError and the SEVR gets set INVALID in the "$(P):AO:$(ITEM)" record. I would like the EDM widget to reflect this alarm condition. It does not do it because it is not connected to the AO record that is in an alarm state and I don't know how to transfer this alarm information to the record the EDM widget is connected to.
I wonder if it is possible to control alarm state of an EPICS record via asynPortDriver, a record that is not being processed at the moment? That is, is there a way other than returning a failed completion code from a processing routine (like writeInt32) to put a record in an alarm state?
Thanks,
Zen
- Replies:
- RE: asynPortDriver Question Szalata, Zenon M.
- Re: asynPortDriver Question Ralph Lange
- References:
- asynPortDriver Question Szalata, Zenon M.
- Navigate by Date:
- Prev:
asynPortDriver Question Szalata, Zenon M.
- Next:
RE: GPIB DCL Mark Rivers
- 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:
asynPortDriver Question Szalata, Zenon M.
- Next:
RE: asynPortDriver Question Szalata, Zenon M.
- 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
|