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> 2025 | 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> 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: PVXS IOC Philosophy |
From: | "Cobb, Tom \(DLSLtd,RAL,LSCI\) via Tech-talk" <tech-talk at aps.anl.gov> |
To: | Dave Bracey <dbracey at fnal.gov>, "Kasemir, Kay" <kasemirk at ornl.gov>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, "Johnson, Andrew N." <anj at anl.gov> |
Date: | Thu, 21 Mar 2024 12:18:07 +0000 |
Hi Dave,
I'm going to respond to this from the perspective of runtime introspectable Devices.
Our current stack is based on an EPICS V3 IOC, with EPICS support modules containing C and C++ code compiled in, then static databases instantiated based on the prior knowledge of what the device is capable of doing. We are then adding PVXS to the IOC (via
QSRV2) so we serve the records over PVA as well as CA.
However we have some devices where we don't know at build time what features it has, as they are only known at runtime, like in the case of
PandABox. For this we use
pythonSoftIOC to
construct a V3 IOC with python device support, which introspects the device at runtime and makes records based on what the device says it can do. We also add PVXS to that IOC so it serves records over PVA as well as CA. We also plan to try this approach
for GigE cameras, constructing the
ADAravis database by talking to the camera at runtime rather than generating it at build time.
This approach means we get a V3 record for every field that the device supports, including things like
.DESC , .EGU , .HIHI etc.
Having said that, we don't actually need any of those record fields: only the record PV appears on the UI, not any of its fields. We just use them to insert metadata into the resulting structure, so we could move to using PVXS (via p4p for the python
support) to serve just the PV for the record (with its metadata), and not any of its fields.
We would like to leave this decision open in the future, so we are writing
FastCS, a control system agnostic framework for building Device support in Python IOCs, with pluggable backends for pythonSoftIOC, PVXS, or PyTango. This last one is important for the PandA collaboration so we can expose the same functionality to facilities
that run Tango as those that run EPICS.
Thanks,
Tom
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Johnson, Andrew N. via Tech-talk <tech-talk at aps.anl.gov>
Sent: 20 March 2024 18:38 To: Dave Bracey <dbracey at fnal.gov>; Kasemir, Kay <kasemirk at ornl.gov>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: PVXS IOC Philosophy Hi Dave,
Yes, PVXS is evolution, not revolution.
That's also why our version numbers jumped from 3.16.x to 7.x back in 2017 — EPICS 7 is the combination of the IOC developments up to Base 3.16.2 with the new PVA protocol from what was then being called EPICS V4. We realized once V4 was becoming functional that to support our existing users (who were also the employers of most of the core EPICS developers) we had to provide a path for upgrading existing IOCs and control systems, without forcing them to be significantly rewritten — none of the US DOE sites would have been able to do that. Some work had been done to develop an EPICS V4 IOC (in Java), but it wasn't designed to be backwards-compatible at all and there was no way it could have ever run databases from an existing V3 IOC.
We are thus being careful to implement changes by evolution instead of revolution, and PVXS was how Michael Davidsaver chose to fix some of the major issues with the architecture and APIs implemented in pvDataCPP and pvAccessCPP. We haven't decided how and when it might be integrated and included in official EPICS releases, but I'm sure it will happen sometime. Users who rely on on the pvDataCPP and derived APIs will continue to be able to build against and use those libraries, but there isn't much development being done on them now.
Replacing the GNU make-based build system would be a revolution since there are so many existing IOCs and control systems based on it. We have considered a proposal to permit builds using meson, and if enough members of the EPICS community express interest and offer to provide long-term effort to maintain an alternative build system we could include one, but removing the existing build system would be hard to do given all the EPICS installations around the world that have thousands of applications, many with customized Makefiles and local build rules. Maybe AI…
- Andrew
|