I don't think the fact that variable 1 was set to variable2 is relevant.
But if you do a pvPut on variable1 that could cause variable2 to change
in your IOC, depending on the database logic, etc. When the event flag
is set on variable2 is the value changing?
Here is a way to help figure it out: run the following EPICS command
from the shell:
camonitor variable2
That will print a message every time a monitor is sent for variable2.
It should print a message each time you get an event on variable2 in
your SNL program.
Mark
-----Original Message-----
From: Patrick Thomas [mailto:[email protected]]
Sent: Friday, October 02, 2009 4:47 PM
To: Mark Rivers
Cc: [email protected]
Subject: Re: state notation code flags
I think I have it narrowed down. It appears that when I set variable1
equal to variable2 and variable2 has a flag synced to it (variable1 does
not), and then do a pvPut on variable1, sometimes the flag is set on
variable2 and sometimes it isn't. Am I correct? Why does this occur?
Thank you,
Patrick
Mark Rivers wrote:
> Patrick,
>
> Event flags can be explicitly set, which is typically used to allow
> communication between state sets. Or event flags can be synced to a
PV,
> and will be set whenever a monitor is received for that PV, as in the
> example I sent you.
>
> You can use the efTest() function outside of a when statement, just
like
> any other function.
>
> Mark
>
>
> -----Original Message-----
> From: Patrick Thomas [mailto:[email protected]]
> Sent: Thursday, October 01, 2009 5:20 PM
> To: Mark Rivers
> Cc: [email protected]
> Subject: Re: state notation code flags
>
> Hi Mark,
>
> Are the flags on a monitored variable set whenever the monitored
> variable is used in the code, including a pvPut, pvGet, assignment,
> calculation, or print statement? Is there a way to test if the flag is
> set besides an efTest in a when statement?
>
> Thank you,
> Patrick
>
> Mark Rivers wrote:
>
>> Hio Patrick,
>>
>> Here are some code snippets from one of my SNL programs. It has a
>>
> variable nelements assigned to a PV, and a monitor on that PV. It has
> an event flag, nelementsMon that is synced to nelements. Whenever
> nelements changes the event flag will be set. In the init state I
clear
> the event flag, just to be sure it is clear when the SNL code starts
> running (after all PVs connect). I then use efTestAndClear in a when
> statement to take actions when that event flag is set, and to clear
it.
> This works fine for me.
>
>> int nelements; assign nelements to "{P}{R}Nelements.VAL";
>> monitor nelements;
>> evflag nelementsMon; sync nelements nelementsMon;
>>
>>
>> /* Initialize things when first starting */
>> state init {
>> when() {
>> /* Clear all event flags */
>> ...
>>
>> efClear(nelementsMon);
>> } state monitor_inputs
>> }
>>
>>
>> ...
>>
>> state monitor_inputs {
>>
>> ...
>>
>> when(efTestAndClear(nelementsMon) && (nelements>=1)) {
>> /* If nelements changes, then change endPulses to this
>>
> value,
>
>> * since this is what the user normally wants. endPulses
>>
> can be
>
>> * changed again after changing nelements if this is
>>
> desired. */
>
>> if (moveMode == MOVE_MODE_RELATIVE)
>> endPulses = nelements;
>> else
>> endPulses = nelements-1;
>> pvPut(endPulses);
>> } state monitor_inputs
>> }
>>
>> Mark
>>
>> ________________________________
>>
>> From: [email protected] on behalf of Patrick Thomas
>> Sent: Wed 9/30/2009 10:35 PM
>> To: [email protected]
>> Subject: state notation code flags
>>
>>
>>
>> Hi,
>>
>> I was wondering if there is a way to track at what point in the state
>> notation code evflags are getting set and cleared, or if someone
could
>> clarify under what conditions they get set. I'm having trouble with
>>
> them
>
>> getting set somewhere and not being cleared, but I'm not sure where.
>>
>> Thank you,
>> Patrick
>>
>>
>>
>>
>
>
- Replies:
- Re: state notation code flags Patrick Thomas
- References:
- state notation code flags Patrick Thomas
- RE: state notation code flags Mark Rivers
- Re: state notation code flags Patrick Thomas
- RE: state notation code flags Mark Rivers
- Re: state notation code flags Patrick Thomas
- Navigate by Date:
- Prev:
Re: state notation code flags Patrick Thomas
- Next:
Re: state notation code flags Pete R. Jemian
- 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:
Re: state notation code flags Patrick Thomas
- Next:
Re: state notation code flags Patrick Thomas
- 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
|