Actor Framework Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

AF on RT targets - why not base Actor core on Timed Loop

Solved!
Go to solution

Hi, maybe this is a stupid question but IMO AF would benefit a lot if it was based on Timed Loop in the Actor core instead of a normal while. We could just add an extra configuration method for the caller of the actor to invoke, and this method could specify all the inputs for the Timed Loop to be usable.

I wanted to ask if there allready is an idea like that and if not I can gladly implement it.

Piotr Kruczkowski
Certified TestStand Architect
Certified LabVIEW Architect
0 Kudos
Message 1 of 14
(7,739 Views)

IIRC, Timed Loops are not available in the Mac version of LabVIEW (at least as of LV 2012).

Cheers,

Matt Pollock
National Instruments
0 Kudos
Message 2 of 14
(4,115 Views)

Well yeah, that would break everything. I was not aware of this limitation. Do you know if its going to change?

Piotr Kruczkowski
Certified TestStand Architect
Certified LabVIEW Architect
0 Kudos
Message 3 of 14
(4,115 Views)

Consider designing an RTActor, derived from an Actor, that would spin up a Timed Loop responsible for the RT work (the Actor core loop is handling messages, so doesn't need to be RT).

Message 4 of 14
(4,115 Views)

Processing any message with a variable-sized array or string will blow up your determinism. So will casting to a different Message on every call of Do.vi().

0 Kudos
Message 5 of 14
(4,115 Views)

Perhaps this was meant for the other thread posted by OP in the last few minutes?

David Staab wrote:

Processing any message with a variable-sized array or string will blow up your determinism. So will casting to a different Message on every call of Do.vi().

Cheers,

Matt Pollock
National Instruments
0 Kudos
Message 6 of 14
(4,115 Views)

1 timed loop per CPU core is all that is recommended in RT.

http://zone.ni.com/reference/en-XX/help/370622K-01/lvrtbestpractices/rt_priorities/

I do have one actor that needs to pet a FPGA watchdog and I spin up a parallel timed loop in an Actor Core.vi override.

Casey Lamers


Phoenix, LLC


casey.lamers@phoenixwi.com


CLA, LabVIEW Champion


Check Out the Software Engineering Processes, Architecture, and Design track at NIWeek. 2018 I guarantee you will learn things you can use daily! I will be presenting!

0 Kudos
Message 7 of 14
(4,115 Views)

MattP wrote:

Perhaps this was meant for the other thread posted by OP in the last few minutes?

No.

0 Kudos
Message 8 of 14
(4,115 Views)

My mistake, then.  Carry on 

Cheers,

Matt Pollock
National Instruments
0 Kudos
Message 9 of 14
(4,115 Views)

David Staab wrote:

Processing any message with a variable-sized array or string will blow up your determinism. So will casting to a different Message on every call of Do.vi().

Can you explain this a bit more?  (By "casting" I assume you're referring to dynamic dispatching.)

My understanding is dynamic dispatching is a fixed time operation, and I read your comment as meaning the dynamic dispatching itself will destroy the determinism.  I can see how different code in each Do method would cause the time to vary on each iteration through the message handling loop.  I don't understand why dynamic dispatching itself would cause problems.

0 Kudos
Message 10 of 14
(4,115 Views)