Hi,
To throw in my 2 cents:
It helps at least me to think in the following way, assuming some familiarity with SQL databases:
Channel Access with DBR_XXXX types, as well as pvAccess with simple (scalar, vector) Normative Types work like a pre-defined query to a single
record.
With pvAccess and structured types one can create (pre-defined) queries to
multiple records. Queries can be atomic, i.e., guaranteed that the constituent records are not manipulated when the data is assembled for transport.
This is done with group definitions. See e.g.
https://mdavidsaver.github.io/pvxs/qgroup.html#qsrv-groups
(can be found with some clicking from https://docs.epics-controls.org/en/latest/pv-access/overview.html)
When you think about it, it is a very powerful method to combine the advantages of EPICS records (initialization, templating, alarm logic, device interfacing, ….) with efficient
structured data transport.
Finally, to my favorite topic:
I agree that the documentation can be hard to find and often “programmer-friendly” but there are a number of examples. I hope we can add more.
“We the community” are working to try to improve the documentation and make it easier to find but it requires quite a lot of effort and interest.
All contributions are highly appreciated, including (and especially) pointing out areas that are the weakest.
Cheers,
Timo
From:
Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of "Kasemir, Kay via Tech-talk" <tech-talk at aps.anl.gov>
Reply to: "Kasemir, Kay" <kasemirk at ornl.gov>
Date: Thursday, 25 July 2024 at 17:49
To: Pierrick M Hanlet <hanlet at fnal.gov>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Subject: Re: IOC with Normative Types
>
At present NTs do not have a database equivalent.
I would rephrase that as “All records map to NTs”.
Ai, ao, calc, … map to NTScalar
VAL -> valueEGU -> display.units
..
Similar to a combination of DBR_STS_DOUBLE and DBR_CTRL_DOUBLE for channel access.
Plus DESC -> display.description, where there was no DBR type that included the description, had to create a separate channel for that.