EPICS Home

Experimental Physics and Industrial Control System


 
1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: SNC Sequencer 2.2 not working when reading remote IOC variables?
From: "keith.thorne" <[email protected]>
To: EPICS mailing list <[email protected]>
Date: Wed, 23 Aug 2017 11:49:26 -0500
Dear EPICS team

	At LIGO, we use the EPICS SNC Sequencer to provide communication between our real-time code and the user variables, expressed in an EPICS IOC.
We use auto-generated SNC files to build and compile our EPICS executable.

We had been using SNC version 2.1 and all was working (even with latest 2.1 revision).  However, if we use SNC version 2.2, we are not able to get data from EPICS PVs on IOCs on other computers.

Our existing SNC code (elided for relevancy - see attached x2hpiboot.i ) is

ss monitorFilt{
state init
{
  when() {
...
pvGet(evar_X2_CDS_EXTERNAL_TEST);
...
  } state daqInit
}
state daqInit
{
  when()
    {
...
pvGet(evar_X2_CDS_EXTERNAL_TEST);
evar_X2_CDS_EXTERNAL_TEST_ERR = pvConnected(evar_X2_CDS_EXTERNAL_TEST);
...
   } state daqProcess
}   

This gets converted to (again elided - see attached snctest_2-2.c)
# line 4369 "x2hpiboot.i"
			seq_pvGetTmo(seqg_env, 552/*evar_X2_CDS_EXTERNAL_TEST*/, DEFAULT, DEFAULT_TIMEOUT);
...			
# line 6196 "x2hpiboot.i"
			seq_pvGetTmo(seqg_env, 552/*evar_X2_CDS_EXTERNAL_TEST*/, DEFAULT, DEFAULT_TIMEOUT);

# line 6198 "x2hpiboot.i"
			evar_X2_CDS_EXTERNAL_TEST_ERR = seq_pvConnected(seqg_env, 552/*evar_X2_CDS_EXTERNAL_TEST*/);

However, when we run it, we get X2_CDS_EXTERNAL_TEST_ERR become 1, but we never get any updates to the variable, but continuous log messages like

sevr=major pvGet(ss monitorFilt, var evar_X2_CDS_EXTERNAL_TEST, pv X2:CDS-EXTERNAL_TEST): user error (there is already a pvGet pending for this channel/state set combination)
sevr=major pvGet(ss monitorFilt, var evar_X2_CDS_EXTERNAL_TEST, pv X2:CDS-EXTERNAL_TEST): user error (there is already a pvGet pending for this channel/state set combination)
sevr=major pvGet(ss monitorFilt, var evar_X2_CDS_EXTERNAL_TEST, pv X2:CDS-EXTERNAL_TEST): user error (there is already a pvGet pending for this channel/state set combination)

I had thought the change to seq_pvGetTmo() merely implemented the existing behavior, but perhaps I am wrong?

How should we code thing that monitor external IOC variables for changes?

	Sincerely
		Keith Thorne

Attachment: x2hpiboot.i
Description: Binary data

Attachment: snctest_2-2.c
Description: Binary data


------
Keith Thorne <[email protected]>
CDS Software Engineer
LIGO Livingston Laboratory
Livingston, LA 70754
Phone: (225)686-3168 Fax: (225)686-7189


Replies:
Re: SNC Sequencer 2.2 not working when reading remote IOC variables? Ben Franksen

Navigate by Date:
Prev: Re: Trend graph partly not shown in Data Browser with Archiver Appliance Kasemir, Kay
Next: SNC Sequencer 2.2 not working when reading remote IOC variables? (no attachments) keith.thorne
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Trend graph partly not shown in Data Browser with Archiver Appliance Shuei YAMADA
Next: Re: SNC Sequencer 2.2 not working when reading remote IOC variables? Ben Franksen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024