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  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  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  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Sending PVs commands on multiple IOC at specific time
From: "Kasemir, Kay" <[email protected]>
To: Benoit Rat <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Tue, 22 Sep 2015 14:17:07 +0000
Hi:

The accuracy of what you describe is of course determined by how you can ‘wait’ on each LLRF IOC for the scheduled time, but in general I think what you describe would work.

As for he error reporting, you can look into supporting put-callback.

When you write to the LLRF_x:myWriteTimeCmd, that could wait until it actually executes the command, and then perform the put-callback. If the time has already passed, i.e. not “enough time”, it can perform the put-callback right away with an error.

Your LLRF_ALL:myWriteCmd could then trigger a sequence that accesses all the individual LLRF_x:myWriteTimeCmd with put-callback, checking the results.

Thanks,
Kay

On Sep 22, 2015, at 9:52 AM, Benoit Rat <[email protected]> wrote:

Hi everybody,


For the IFMIF/EVEDA project we are using White Rabbit to synchronize our different LLRF modules.
Now we would like to be able to send a PV command that should be executed at the same instant in all our modules.

So we have 8 LLRF modules with 8 independent IOCs that are synced to the same time reference.
I was thinking to:

  • Create a new "Fake" IOC to run on one of the 8 modules (LLRF_ALL)
  • Send a command LLRF_ALL:myWriteCmd from CSS/GUI
  • When this command is received by the LLRF_ALL, 
    • Get the timestamp when this command was received (rcvTimestamp) 
    • and forward to the 8 modules other LLRF ioc modules:
      • LLRF_x:myWriteTimeStamp= rcvTimestamp+2s  (The 2 extra seconds are added to be sure that we have enough time to receive the message at all the other IOCs) 
      • LLRF_x:myWriteTimeCmd=LLRF_ALL:myWriteCmd
  • Then on each IOC of the 8 module (LLRF_x when x=[1-8])
    • Receive the two PV values forwarded by the Fake IOC
    • Wait until LLRF_x:myWriteTimeStamp to execute the command LLRF_x:myWriteTimeCmd on our device.

I try to search if something similar was already done but did not find anything that fit my exact need.
Another nice feature would be to know if all the LLRF have correctly received the instruction with enough time in order to execute it. However this might be more complex.


References:
Sending PVs commands on multiple IOC at specific time Benoit Rat

Navigate by Date:
Prev: Sending PVs commands on multiple IOC at specific time Benoit Rat
Next: ADPerkinElmer R2-3 released Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Sending PVs commands on multiple IOC at specific time Benoit Rat
Next: ADPerkinElmer R2-3 released Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 16 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·