-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handle LabView-EPICS AIs, DIOs, State Variables #1
Comments
Several steps will be needed to implement this.
|
These could be output locally from LabView in a separate text file for each grouping (Motors, AIs, DIOs, SVs), or with all of them in a single file with some delimiter (Header rows) or JSON structure for the 4 groupings. @LeeYangLBLBCS What makes sense for your code updates in LabView? |
Here's where we'll need to brainstorm a bit. It could be as simple as storing the PV names (or prefixes) for the applicable PVs in each grouping (Motors, AIs, DIOs, SVs). This is probably the right first approach, but I suspect we will want to revisit this later to define structured ophyd devices that should be stored.
|
This is where some jointly defined structured ophyd devices will be most useful. |
In a chat with Dylan: Limiting the number of collections as much as possible is preferred. There is already a field in the record for each device indicating what it is. Searching and indexing across collections is quite tricky. Dylan recommends staying with one collection. |
Some background...MotorsOphyd provides built-in support for some EPICS devices. Of these, AI channelsBCS Analog Input channels are converted by the BCS-EPICS bridge into read-only PVs that end with State VariablesBCS State Variables are generally read/write (or sometimes read-only) variables, converted into PVs ending with
DIO channelsBCS Digital Input/Output channels are either read/write or read-only boolean (or tri-state?) values, converted into PVs ending with Additional reference |
|
You may want to reflect the EPICS Record classes for comparable LabVIEW records, as has been done with motor records. For example, there is an AI Record class. This will enable additional features for some clients (pyDM/Typhos/Xi-CAM, etc.) by providing a more familiar EPICS defined device structure. The EPICS AI Record includes a variety of meaningful adjacent fields, such as engineering units and alarm limits. |
A potentially helpful reference is the EPICS Record Reference Manual. Chapter 4 is AI records. For querying happi with a filter (i.e. find all AIs from labview), it could be helpful to agree on common language for various supplementary fields. The Also, I've been using a |
That is a great idea. I think these AI record fields are not currently created by the LV-Epics bridge, but hopefully I'm wrong about that. @ronpandolfi @LeeYangLBLBCS Are you currently getting this functionality from the bridge? |
Yes, this would be a good thing to do together. I think most of the LCLS fields don't apply to our conventions, so we'll need to put a bit of thought into what is most useful for our use cases.
Here are some examples to get us started...
Notes(1): I think there might be potentially 3 different beamline IDs depending on the use case:
For some beamlines/branchlines, all 3 could be the same, but not for others. I think we could include a grouping (dictionary) that provides all 3 in the metadata, so that downstream apps could knowingly select the one they need. Thoughts? Example:
|
Does anybody use these fields? labview2happi/write_pv_to_mongo.py Lines 63 to 64 in c430928
If not, we should consider removing them. |
@pshafer-als is |
Yes, That’s the version corresponding to the “from_roles” field above. |
@ronpandolfi It would be great to see how you are doing this at COSMIC. Is there a repository you could share? |
Currently only motor record PVs are exported from LabView for this package to store via happi.
Controls systems will also need to know which AIs, DIOs, and State Variables are active in the LabView configuration.
The text was updated successfully, but these errors were encountered: