From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
10-14-2016 02:58 PM
Hello,
My company is looking to move from traditional AMC to the actor framework. Before fully committing, I am exploring what reusable architectures around the actor framework already exist. Has anyone attempted to build a sequencer around the actor framework yet? If so, and it is public, could you point me to it? Or if you have done some thinking on this topic before, I'd greatly appreciate discussing this further.
The majority of our projects require a sequencer of some sort which controls when to query sensors, process data, trigger motor movements, etc. Some steps require that steps be run in parallel and some sequentially. We've built a basic framework around AMC, but want to extend a similar architecture across all projects moving forward and the actor framework seems like the right direction.
Thank you,
Lynn
10-17-2016 05:12 AM
Hi
Within or CS++ priject, an AF based class library published under EUPL at https://github.com/HB-GSI/CSPP , my colleage developed the CS++MessageMaker,
https://github.com/DN-GSI/CSPP_MessageMaker, which supports asynchrounous callback messages that take the public subVI return parameters and are send to the desired enqueuer, which can be the caller enquerer or any other enqueuer known by the caller actor.
I started the development of an Sequence-Editor. It is in an really very early stage, playing with the UI, Tree-Control and Drag& Drop, https://github.com/HB-GSI/CSPP_Seq. It will make use of the asynchronous return messages. The development of the sequencer engine has not been started.
Maybe this info gives you an idea or is at least the starting poiunt of a fruitfull discussion.
Holger
10-18-2016 03:15 PM
Hello Holger,
Thank you for the response. Unfortunately I only have LabVIEW 2015. Is it possible for you to send me a copy in that version?
Thank you again,
Lynn
10-18-2016 03:30 PM
Take a close look at the Messenger Library. And work through some of the examples.
https://lavag.org/files/file/220-messenger-library/
10-18-2016 08:44 PM
I'm engaged in a similar task, but I'm moving from a code base that made little use of queued message handlers. I think Elijah's Measurement Utility is the only thing I've seen built on AF that I might use, but I haven't had the time to grok it.
I've written two or three versions of an aggregator class, but haven't settled on which one to use. I need it to collect data from multiple instruments as nearly simultaneously as possible with the hardware I have. My instrument actor has an abstact message for reporting results. The calling actor's implementation includes a "key" which the instruments cannot alter. The key ensures that instrument responses are grouped correctly. The items are read from the aggregator when it indicates it has received the expected number of items.
In my initial implementation, the key was a cluster containing a time stamp, the expected number of items, and a number for ordering responses. I've since removed the expected number of items from the key, since it did not seem to be necessary. I've also written an aggregator which foregoes ordering--the key is just a time stamp--but I haven't decided to switch to it yet; I'll need to order the results some other way if I do. In an earlier version of the instruments, they returned their results as just an array of doubles, so I needed to keep order while aggregating them. Now I have them returning name-value pairs, so I can order them later. I'm just the only person working on this code and I still have lots of non-code duties.
10-19-2016 04:46 AM
I prepared two downgrade zip-files, CS++MessageMaker and an example project containing the CS++Sequencer stuff (which is at the very beginning.)
The message created by the CS++MessageMaker will give the hint where we want to go.
Anybody else interested in the snapshot? Please contact me with your eMail and I will send the zip-files.
Holger