EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: RE: record linking question
From: "Mark Rivers" <[email protected]>
To: "John Sinclair" <[email protected]>, "Tech-talk" <[email protected]>
Date: Tue, 12 May 2009 23:09:26 -0500
John,
 
I suspect that this is because the EtherIP is asynchronous device support, and the second time you ask the output records to process they are still busy processing the first request.  In that case the second caput does not get sent to the device.  If I remember correctly if you change the dfanout output links from PP to CA then the records will process again after they are done.  
 
record(dfanout,"dfout") {
   field(SCAN, "Passive")
   field(OUTA, "slave1C CA")
   field(OUTB, "slave2C CA")
}

There is not really a queue, but a second request will be honored (but if a third request comes in before the first is done, that will be sent, and not the second one).
 
Mark
 

________________________________

From: [email protected] on behalf of John Sinclair
Sent: Tue 5/12/2009 5:58 PM
To: Tech-talk
Subject: record linking question



My first message was incorrect - sorry.

I meant to say that the slave pvs update but the device does not. So, I
guess this is an EthernetIP device support question.

So, I will instead ask if anyone has seen this behavior?

John

-----------------------------------------------------------

The following is an attempt to control two slave pvs by a master pv via
a dfanout record.

The desired behavior is that wiggling masterC should cause both slave1C
and slave2C to follow.

record(ao, "masterC") {
   field(DTYP, "SoftChannel")
   field(OUT,  "dfout PP")
   field(SCAN, "Passive")
}

record(dfanout,"dfout") {
   field(SCAN, "Passive")
   field(OUTA, "slave1C PP")
   field(OUTB, "slave2C PP")
}

record(ao,"slave1C") {
   field(SCAN,"Passive")
   field(DTYP,"EtherIP")
   field(OUT, "@cpu epics_outputs[0]")
}

record(ao,"slave2C") {
   field(SCAN,"Passive")
   field(DTYP,"EtherIP")
   field(OUT, "@cpu epics_outputs[1]")
}

---------------------------------

If I create a script as follows:

caput -t masterC 1
caput -t masterC 2

When executed, the result is that sometimes it works (i.e. slave1C and
slave2C have the final value 2) and sometimes it does not (slave1C and
slave2C have the final value 1).

Is the record linking in the above example flawed? If so, is there a way
to make this reliable?

TIA,
John Sinclair




Replies:
Re: record linking question Kasemir, Kay
References:
record linking question John Sinclair

Navigate by Date:
Prev: record linking question John Sinclair
Next: Re: record linking question Kasemir, Kay
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: record linking question John Sinclair
Next: Re: record linking question Kasemir, Kay
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·