Experimental Physics and Industrial Control System
On 7/25/24 08:29, Dave Bracey via Tech-talk wrote:
If I generated an IOC with makeBaseApp.pl, how would I add a PV which is an NTScalar? What record type would map to that? How would I add device support to service the record?
I’m not finding any substantive documentation. I feel I must not be understanding how this works. Do the existing record types map to NT PV’s?
I suppose this is because "behaves like CA" assumes a knowledge of how CA conventionally behaves.
Additions
By default QSRV exposes all Process Variables (fields of process database records).
... This is all accessible record fields. So all data which is accessible via
Channel Access is also accessible via PVAccess.
https://urldefense.us/v3/__https://epics-base.github.io/pva2pva/qsrv_page.html__;!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8nhWNfQwTQ$
or
When QSRV is enabled, access to individual/single PVs in the global process database is automatic
and equivalent to the access provided by the Channel Access server in the IOC (aka. RSRV).
https://urldefense.us/v3/__https://mdavidsaver.github.io/pvxs/ioc.html*single-pv__;Iw!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8ngU_vw06A$
I’m expecting to see a new set of record types for the NT types, and to specify those in an IOC’s DB. Is this not the case?
The automatic mapping between DBR and PVA types happens at
the level of database field.
Remember that "pvget record:name" is equivalent to
"pvget record:name.VAL".
eg. the VAL field of an aiRecord has type DBF_DOUBLE.
QSRV will map this to an NTScalar where 'value' is 'double'.
field(VAL,DBF_DOUBLE) {
https://urldefense.us/v3/__https://github.com/epics-base/epics-base/blob/91e1d0ab8022d610bb12b5536a7a6a21644d47f7/modules/database/src/std/rec/aiRecord.dbd.pod?plain=1*L247__;Iw!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8nig9FnJ1Q$
Beyond the automatic mappings, there are Groups
https://urldefense.us/v3/__https://mdavidsaver.github.io/pvxs/qgroup.html*understanding-groups__;Iw!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8ngZCgDKug$
And as a last resort custom handlers can be added directly to the PVA
server, bypassing the process database.
*From: *Kasemir, Kay <kasemirk at ornl.gov>
*Date: *Thursday, July 25, 2024 at 10:01 AM
*To: *Dave Bracey <dbracey at fnal.gov>, tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
*Subject: *Re: IOC with Normative Types
[EXTERNAL] – This message is from an external sender
> How does one build an IOC that integrates the NT types?
In short, you do almost nothing.
Instead of “softIoc” you use “softIocPVA” to run your database.
Instead of “caget” you can then use “pvget”, and instead of the Channel Access DBR.. types you get NT.
> I’m having a hard time finding any such material.
See PV Access intro on https://urldefense.us/v3/__https://controlssoftware.sns.ornl.gov/training/2022_USPAS/__;!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8nhc645zLA$ <https://urldefense.proofpoint.com/v2/url?u=https-3A__controlssoftware.sns.ornl.gov_training_2022-5FUSPAS_&d=DwMGaQ&c=gRgGjJ3BkIsb5y6s49QqsA&r=-F5ElEx0xTIzUkth_6VDnd86lqN2rUgF0GIN-S3DMY4&m=BQm-Z_UgRU-KdsXwN2brdV0aW1BbgMrdv2_i73F795QMPk1Bws_VuoJPKo-GX9bs&s=Xr2UjZe2bMU0IFCmp1o4z_Y9aXYf3mwSq1zTixe1fiI&e=>,
or watch the video from 2022 EPICS meeting,
https://urldefense.us/v3/__https://indico.cern.ch/event/1173788/page/25739-workshops-and-trainings__;!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8ngn4A6LFQ$ <https://urldefense.us/v3/__https://indico.cern.ch/event/1173788/page/25739-workshops-and-trainings__;!!G_uCfscf7eWS!aXvD7tHl8QPzmvCM1DDABTkYIf74rN1KF5j8eLKmTxHN9K129tT4uU9l87lKBpbsKy0AsmSKmfj57rgFzkOa_8M$>,
https://urldefense.us/v3/__https://indico.cern.ch/event/1173788/page/27020-video-material__;!!G_uCfscf7eWS!er3VKkj8trnpZi-UMkCWoFMyDFtoe4TJCjXRA46Fb0qfYISzp6tZtByEKZJmkqcK_KIm-IAxD8HydEDZ8nhA-BF71w$ <https://urldefense.us/v3/__https://indico.cern.ch/event/1173788/page/27020-video-material__;!!G_uCfscf7eWS!aXvD7tHl8QPzmvCM1DDABTkYIf74rN1KF5j8eLKmTxHN9K129tT4uU9l87lKBpbsKy0AsmSKmfj57rgFqwPhsN0$>
If you build your own IOC, check the output of “makeBaseApp.pl -t example” for the crucial Makefile section to add PVA, as shown around 28 minutes into the video.
Thanks,
Kay
*From: *Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Dave Bracey via Tech-talk <tech-talk at aps.anl.gov>
*Date: *Thursday, July 25, 2024 at 10:50 AM
*To: *tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
*Subject: *[EXTERNAL] IOC with Normative Types
How does one build an IOC that integrates the NT types?
Are there any guides or examples - i.e. a “Hello World” project anywhere?
I’m having a hard time finding any such material.
Dave Bracey – Fermilab Accel Dept Instrumentation
- References:
- IOC with Normative Types Dave Bracey via Tech-talk
- Re: IOC with Normative Types Kasemir, Kay via Tech-talk
- Re: IOC with Normative Types Dave Bracey via Tech-talk
- Navigate by Date:
- Prev:
Re: how to inititial VAL field in motor record Peterson, Kevin M. via Tech-talk
- Next:
field(OUT, "Bdeta PP") worked only the first time Tran, Phi Dung via Tech-talk
- 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
- Navigate by Thread:
- Prev:
Re: IOC with Normative Types Pierrick M Hanlet via Tech-talk
- Next:
field(OUT, "Bdeta PP") worked only the first time Tran, Phi Dung via Tech-talk
- 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