Using actor framework 2014

I've used earlier versions of the actor framework just fine. Then I installed LabVIEW 2014, and I do not know how the new framework is supposed to function. Is there some example of how nested actors are supposed to work? I've been looking around but actor examples are strangely absent.
Lars Melander
Uppsala Database Laboratory, Uppsala University

> You don't need to call two extra VIs to launch an actor.
Sorry, I don't see how the number of VIs changes.
> Launching becomes easier to understand, because the concept now is that each actor creates its own queue and nested actors have implicit access to their caller's queue. The naming of the enqueuer terminals on the subVI also confused some people (including me) about which enqueuer belongs to which actor and this solves that.
Unfortunately, it seriously mucks up my design. I have a network of actors, and that does not translate to the new VIs. It's not obvious in any case.
> In general, if you want AF discussions, the AF group is the best place, as that also includes the NI people working on it. Here's one example thread also requesting an example - https://decibel.ni.com/content/message/94190#94190
I will look there, thank you.
Lars Melander
Uppsala Database Laboratory, Uppsala University

Similar Messages

  • Actor framework 2014

    Does Launch Root actor VI in LabVIEW 2014 replaces Lauch actor? If not when to use one over the other? Similarly what is the screnario to launch nested Actor? Don't beleive Lauch Nested Actor VI is same as Read Self enqueuer.
    CLD,CTD
    Solved!
    Go to Solution.

    The new design is supposed to make it simpler to launch actors. Before, you had to create or get an enqueuer and pass it to the launcher and there was a lot of confusion about how to do it correctly. Now, you basically have two cases:
    Root - this is an actor that has no calling actor. It is essentially the root of the actor tree, which is why it got that name and why it doesn't have an enqueuer for a caller. I think the expectation is that most people will have at least one (depending on the number of trees). You could also have zero if you want the root actor to report back to a non-actor which listens on an enqueuer, and then you do things like you did them until now - create an enqueuer and launch the actor using the old VI.
    Nested - this is an actor launched by another actor. When it's launched, it gets the enqueuer from the caller and keeps it, so that it can report back to the caller. This is probably the VI you would use most of the time if you have an actual actor tree.
    The basic concept of this design is that each actor creates an enqueuer when it's launched and that if A launches B, then B has A's enqueuer, so it can report back to it.
    Also, I believe that an actor now collects the enqueuers of all the nested actors it launches, so that it can send a stop command to all of them when it terminates.
    Try to take over the world!

  • Actor Framework executable creation problem

    I am created an application using actor framework and trying to build an executable using Application Builder. I just take Launcher as a startup vi for creating executable. 
    But after run the executable file the launcher imidiately closed. Nothing will happen after that.
    Can anyone please help me on that matter.

    I am attatched the entire project
    Attachments:
    Actor FW - EXE.zip ‏361 KB

  • References are becoming invalid when passed to an actor using the Actor Framework

    I have having an issue with passing a couple of references to an actor using the actor framework 3.0.7 (LabVIEW 2011 & TestStand 2010 SP1). 
    Some background:
    My application has three main components:
    Main VI -- is not part of any class and Launches UI Actor.
    UI Actor -- Launches the teststand actor
    TestStand Actor -- Initializes and starts teststand.
    The two references showing similar behavior (invalid reference) are the TestStand App Manager control and the "Current VI's Menubar" reference.  The App Mgr control is on the front panel of the UI Actor's Actor Core.vi.  The menubar reference is retrieved in the block diagram of the UI Actor's Actor Core.vi
    Now,
    When I run the Main VI I get an error in the TestStand Actor's Actor Core.vi (Remember Main VI launches UI Actor launches TestStand Actor) because the App Mgr and menubar references are invalid (.  I have checked and verified that in this scenario the references are valid in the UI Actor before it launches the teststand actor. 
    If I run the UI Actor's Actor Core.vi stand alone (i.e. run it top level) the App Mgr and menubar references are passed to the teststand actor, no error occurs, and the code functions as expected. 
    Why would these references be invalid by simply starting a different top level VI?  Could it have something to do with when the references are passed vs. when the front panel is loaded into memory?
    I tried putting the App Mgr control on the front panel of the Main VI and passing it to the UI Actor and then to the TestStand Actor.  This works.... 
    Anyone have any experience or knowledge to why this is occurring?

    Generally, references in LV are "owned" by the hierarchy they are first created in, and the hierarchy is determined by the top level VI. Once the hierarchy goes idle or out of memory, the references created by that hierarchy are automatically closed. That's usually what causes something like this - the reference is created in one hierarchy (let's say the main VI hierarchy) and then that hierarchy stops running.
    I don't know the AF well enough to say if that's really the case (I actually thought that it always launches a separate top level dynamic process, which I assumed is where the UI actor's core VI would always be called), but that might help explain it. If not, you might wish to post to the AF group in the communities section.
    Try to take over the world!

  • Correct use of the actor framework?

    Hi all,
    I was hoping for some advice before I start developing an application.  I want to try using the actor framework so I thought I would give it a go for this project.
    It is a relatively simple application:
    Update rates are at 1Khz max so the cRIO is in scan mode.  The cRIO will communicate with the host using 2 network streams.  One for sending and one for receiving data.
    I want to use actor because there will be 3 screens used.  One to display the digital inputs, one to display the analogue inputs and one to set the digital outputs.  I thought this would be a good chance to have a go at using the framework because I could have 3 IO actors with one on each screen..  My initial ideas are as follows.
    Host Application
    Handle all the communication to the cRIO
    Send any data it receives from the cRIO to the:
    Digital out actor as a message
    analogue out actor as a message
    Input Data Logger actor as a message
    Send any data it receives from the digital out actor to the:
    cRIO
    Ouput Data Logger actor as a message
    I have attached the project file I am working with.  I have knocked something up using tabs which gives an idea of how the UI will look for each screen.
    I’m really not sure if this is even remotely close to the way to do it.  Help please.
    Lewis Gear CLD
    Check out my LabVIEW UAV
    Attachments:
    Working Code.zip ‏93 KB

    I'm not sure you need to split all of the outputs into separate actors. You could potentially wrap those up into one actor and create a method or small set of methods for each output type. Or, you could create a "Physical I/O" actor, and have that talk to the AO, DO, AI, and DI...then your top level application only needs to send messages like "DO : True" to the Physical I/O actor. Essentially, it abstracts it one more level, and might make things easier in the future if you decided to add other physical I/O (other cards, USB devices, etc.). This way, the Phsical I/O actor could handle the changes, and your top level application remains intact.
    Wes P
    Certified LabVIEW Developer

  • Actor Framework 4.1 with GOOP 4.8 problems

    Hi, Im running Labview 2014 f2 + GDS 4.8 + Actor Framework 4.1. When I create a simple project with with two actors (EndevoGOOP400 class provider) and a launcher vi It gets on a loop of the parent actor calling the nested actor and nested actor calling the parent. I used GOOP + Actor Framework 4.0 on Labview 2013 with no problem.
    Some help?
    Solved!
    Go to Solution.

    Solved, I was calling the wrong way.

  • Best way to transfer large datasets between actors (Actor framework)

    Hi everyone
    I am in the planning / design phase of a larger application for which I wish to use the Actor Framework. It seems like a good "design pattern", easy for multiple developers to work on, easy to expand and easy to maintain.
    In this application I need to transfer data betweeen actors/modules at a considerable rate. The data is the continous measurements from a DAQ device (or multiple devices) sampling at 200kHz. That's 200 kHz * 8 byte = 1.5 Mb/s per device.
    There is no way this is done using the messages of the actor framework - those messages are designed to signal start, stop, select tasks etc. within the application. So how to transfer that amount of data between actors?
    I've thought about using TCP/IP on localhost - this could also easily be expanded to allow different parts of the program to run on different machines on a network. I've even tested it and it works quite well. But I would like to hear some opinions or alternatives before I decide to go with this solution. Any thoughts or alternatives?
    Thanks
    Jonas

    JonasCJ wrote:
    Could this be done without TCP/IP and just a LABVIEW queue? Passing the queue in a message from one actor to another?
    If it's in the same process then yes, and it would be more efficient, because with TCP you have to create a copy when converting the data to a string, another copy when receiving and a third one when converting back. Unless you really are planning on distribtuing it, I would suggest avoiding that. Sidebar - AQ has been talking about networked actors and I believe there should even be an experimental branch in the AF group in the community area. You might want to check that out.
    Incidentally, if you are planning on splitting it and don't actually need the real time processing, you might consider saving the data to a network drive and then simply having the other side loading the data from the file. It should be simpler.
    Try to take over the world!

  • GUI - Actor Framework - Decisions

    "Hi there,
    I think I am pretty clear about how to use the Actor framwork's and I would like to
    have some guidance about to use the framework in my project.
    This VI is a very simplified version of the actual layout.
    Basically, there is only one hardware performing different types of measurements, send TX and RX messages through CAN and LIN.
    My development strategy is
    I intend to create an actor for everything related to the hardware measurements that I consider as the measurement bench.
    This hardware will have to perform some asynchronous operations and will eventually send some messages / commands to others actors.
    Those commands will contain for instance, the stuff (value type of course, I'm not willing to message everything with references) related to the information do display to the end-user in different VI.
    The other actors representing different VI in some containers will send commands to this actors
    In short, I was thinking about creating about 10 actors and more:
    1) The most important one: the Bench (containing the settings and parameters in the class cluster) and performing the actions related to the hardware, inputs  and outputs and inform other actors about what it just (if doing performing actions synchronously) or what is available (if some things are asynchronously in a  loop). [Not sure if splitting the concerns of the Bench purposes into additional actions is really wise or not (especially since it will embed a VISA reference), it  will probably require to additional lock accros the different Bench related actors with something like below:
        - Bench Master Actor (to send and receive message to the enduser actors and dispatch the work with the two other Bench related actors)
        - Bench Synchronous Actions Actor
        - Bench Asyncrhonous Actions Actor
        It's also in charge of receiving orders to start, stop, notify, performing actions asynchronously and / or synchronously.
    2) Actor (especially the core as): VI ML
    3) Same strategy for VI BRC
    4) Same strategy for VI TRC
    5) Same strategy for VI 1
    6) Same strategy for VI 2
    7) Same strategy for VI 3
    8) Same strategy for VI 4
    9) Optional: VI TM ... not really necessary I guess except to go with full actor everywhere..
    Thank you."
    Attachments:
    GUI Actor Framwork.jpg ‏137 KB
    GUI Actor Framwork(2012).vi ‏21 KB
    Actor Architecture.jpg ‏83 KB

    I would post this question to Actor Framework community rather than here, as active Actor Framework users are likely to be subscribed for discussions happening there.
    https://decibel.ni.com/content/groups/actor-framework-2011
    I am also interested in what people say about it. 
    TailOfGon
    Certified LabVIEW Architect 2013

  • Actor Framework Message Maker Icons

    I’d like to suggest a small change to the way the actor framework message maker works.
    At present - regardless of the icon of the method for which the message class is being produced - the following VI icons are created:
    Do.vi
    Send <Method>.vi
    <Method> Msg.ctl
    How about if instead the message class takes its VI icons from the method (with the existing glyphs layered on top). So if the method icon is:
    The following icons will be produced:
    Do.vi
    Send <Method>.vi                           
    <Method> Msg.ctl
    OK, its not gorgous and may need a bit of tweeking but I think this might make the Actor Framework quicker and more intuitive to use. 
    Dan
    Dan
    CLA

    Might be useful to bring it to the attention of the Actor Framework enthusiasts: ni.com/actorframework
    - Cheers, Ed

  • Actor Framework Help!

    Hi all, 
    I am trying to figure out how to use the actor framework. Being new to LabVIEW, I am not very confident on how to use OOP properly either, but I do have a basic understanding. I have found many resources on actor framework, and I am trying to create a new  project from scratch, as I found the template seems confusing to me before I can make all of that by myself. My goal is to make a VI that generates random number data, and 2 actors, one to gather the data and one to display the data. I don't have anything right now, but if anyone can get me started/help explain or give me some more resources to learn besides https://decibel.ni.com/content/docs/DOC-17193, it would be greatly appreciated.
    Thanks!

    Your link was malformed and didn't work
    https://decibel.ni.com/content/docs/DOC-17193
    I personally avoid NI's implementation of Actor, so sorry I don't have more help for you.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • Actor framework strictly typed message queues?

    I'm just getting to grasps with the Actor framework.  I have implemented "similar" stuff in the past but I've approached it differently.
    One thing I noticed was how easy it is to send a message to an incompatible actor core which results in a nasty run-time "to more specific class" error.
    In the example project included with LV 2012, if I make the change shown below (OK, I am purposely senidng a wrong message on the given queue) I get no feedback from the IDE that an incompatible message is being sent ont he queue.  I think this has to do with the Message queues being for the base actor class.
    Is there no way to have the actual queues more strictly typed so that we can say that Launching Actor Beta will result in a Queue reference which is only compatible with Beta (or children) objects or does this ruin the entire concept?  If possible, it would prevent the ability oto send incompatible messages completely which IMHO would be an enormous benefit.
    The presentations on the Actor framework have shown huge benefits in strict typing of state machines (I'm referring to a couple of videos I've seen ont he NI website) but this element of things seems to be just a pokey as a string flatten and unflatten.  Send the wrong message to the wrong receiver and >bang< run-time error.
    Just thinking out loud.
    Shane.
    Say hello to my little friend.
    RFC 2323 FHE-Compliant

    So two days and no reply...
    I'm referring in essense to this part of the actor framework white paper as included with the template in LV 2012.
    Messages from Callee to Caller
    When a caller wants to send a message to the callee, the caller knows the type of the actor that it launched, so caller can easily choose the right type of message to send. But when an actor wants to send a message to its caller, the actor does not necessarily know what type of caller it has, so it does not know what type of message to send. Ideally, actors should be usable by many different callers. That maximizes code reuse. But making the actor truly independent of the caller requires more effort than is warranted for the situation. There are three techniques for defining messages that an actor sends to its caller
    The High Coupling Solution—In this solution, the callee actor is written specifically for one type of caller, and can never be used with any other type of caller. In this case, the callee knows details about the caller's interface, so it may simply call the Send Message VI of the appropriate message. The message type is thus hardcoded into the actor.
    The Low Coupling Solution—This solution works best when you have a known inheritance hierarchy of callers. In this solution, you create a matching hierarchy of callee actors. So suppose you have callers Hard Drive, Air Conditioner, and Fire Suppression, each of which needs to launch a Fan actor. You would create the Fan class, and then inherit from it Fan For Hard Drive, Fan For Air Conditioner, and Fan For Fire Suppression. Each caller launches its specific callee actor. All of the main Fan class' code is shared, but when it comes time to send messages, the Fan class has a dynamic dispatch method for doing the sending, and each of the children overrides that method to send the message appropriate for its caller. Each callee is still coupled to a specific caller, but the system as a whole is flexible to accommodate new caller types.
    The Zero Coupling Solution—In order to make the callee actor independent from the caller, the caller must tell the callee what types of messages to send so the callee avoids picking a type itself. The best implementation of this solution has the caller record a message into the callee at the time the callee is launched. The callee provides a Set <Type> Message.vi method, where <Type> is the particular event that will trigger the message to be sent. The caller sets the exact message it wants to receive when this event occurs. When the event happens, the callee sends the chosen message, without any knowledge of what kind of caller is receiving that message.
    Often the callee will define an abstract Message class that it uses as the input type for Set <Type> Message.vi. Callers create their own specific child of this abstract class. This setup gives the callee a way to set data into the message through the API defined by the abstract class, and gives the message a way to deliver that data in a form the caller can consume through the various overload and extension VIs.
    Would it be possible to get some examples of the three different approaches to typing of the messages?  I'm aiming for the high coupling solution (with the option of slipping to option 2 through common ancestors) in order to provide the ability to detect wrong messages on wrong queues at edit time.
    Shane
    Say hello to my little friend.
    RFC 2323 FHE-Compliant

  • Actor Framework auto generate actor

    Hello,
    I'm starting to use the actor framework for a large application. I am wondering if there is a way to auto generate a new Actor?
    I understand I can auto generate messages for an actor using Tools -> Actor Framework Message Maker...
    I make an Actor by making a new Labview class say:
    Test Actor.lvclass
    Then set the inheritance of this class to Actor.lvclass
    Make the Actor Core.vi Method
    Make a Write waveform method
    Set the scope of Actor core to protected, and other methods to public (just like the Simple Actor example) and make actor core reentrant
    I am making the structure EXACTLY like the Simple Actor example, but I get the following errors in my new Actor Core.vi:
    "This VI doesn't match other VIs in the method, Connector Pane Terminal(s) are different. All VIs that implement a method of a LabVIEW class must match Connector Panes. To correct this, compare Connector Pane of both this VI and the VI of an ancestor class that implements this method."
    and
    "The owning VI is not a dynamic member VI of a LabVIEW class. The Call Parent Method node should only be used in a dynamic member VI of a LabVIEW class."
    I tried to read into this message, but it appears my connector pane is the name. I'm not sure whats going on.
    (1) Can someone show me what I am doing wrong here?
    (2) Is there a way to auto generate the Actor?
    Every time I try to construct an actor from scratch I get the above errors. I have attached my project (LV2012).
    Any help is greatly appreciated!
    Solved!
    Go to Solution.
    Attachments:
    Simple Actor Example Mod.zip ‏179 KB

    I know this is old, but just to update this thread with info to others that are starting with Actor Framework and LabVIEW 2013.
    The GOOP Development Suite is free now, free to download from NI's website.
    With this you can make an actor. It is described here how to use GOOP to do it.

  • Using Photoshop CC 2014 on a Windows Tablet without a keyboard and mouse

    Using Photoshop CC 2014 on a Windows Tablet without a keyboard and mouse can be quite a challenge. Even if you use the experimental 2x UI. You can not use your fingers or to quickly change tools and change settings. You have no shortcut without popping up Windows touch keyboard or leave it up taking a great deal of screen space.  If you're using the 2x UI Photoshop uses the screen at half resolution so it displays 1/4 the amount of pixels it could.
    Fortunately I found a little touchkey utility on the web the lets you design your own touch keyboards. The can be transparent and you can even paint under them as long as you start the stroke  outside the keyboard area. The keyboards can be toggles on and off so you can actually use Photoshop.  The utility is small and requires not installation can be run form anywhere.  I purchased a Surface Pro 3 a week ago.  Its a full fledge PC.  Through the home group I can access all machines in my house and using network shares I can access all files on my machines and the network drive on my router,  I can print on my Epson 4800 printer. I can show slideshow on my HDTV via   Bluetooth using a Microsoft wireless display adapter.   I can plug in my Wacom Intuos Pro wireless receiver into the USB  3 port and use my Wacom tablet.  Have a very touchy machine.  Touch on the keyboard touch pad touch on the Display display and on the Wacom tablet.  Could have touch on a mouse but I prefer the Microsoft comfort bluetooth mouse that has six buttons and a four way wheel.
    As a tablet its under two pounds.  Its quite impressive cost why mor the an iPad but worth the cost to me for with windows I can get at the file system.   If you have a Surface Pro 3 you should check out  "Touchkey" its handy.

    Do a screen screen capture and post it here so we can see what you stating about a white layout...

  • I am using photoshop cc 2014.2 And when I use save for Web it gives me a dialog box that says it is using Latin characters I've never seen this before. Does anyone have an answer for this problem or do I need to go back to the older version of Photoshop.

    I'm using Photoshop cc 2014.21 I you save for Web and dialog box comes up that says that Photoshop is using Latin characters and that servers cannot recognize Latin characters in webpages and you may have trouble viewing these pages does anyone have an answer for this problem?

    What Firefox version is currently installed on the computer?
    You can find the full version of the current current Firefox release (37.0.2) in all languages and all operating systems here:
    *https://www.mozilla.org/en-US/firefox/all/
    If you have a very old Firefox version then you could consider to uninstall that version to clean up existing registry keys (especial the uninstall key).
    Make sure NOT to remove "personal data" when you uninstall Firefox, because that will remove all profile folders and you lose personal data like bookmarks and passwords including data in profiles created by other Firefox versions.
    Check the Firefox program folder and remove the Firefox program folder if there are still files left in it.
    *(32 bit Windows) "C:\Program Files\Mozilla Firefox\"
    *(64 bit Windows) "C:\Program Files (x86)\Mozilla Firefox\"
    It is important to delete the Firefox program folder to remove all the files and make sure that there are no problems with files that were leftover after uninstalling.
    *http://kb.mozillazine.org/Uninstalling_Firefox
    Your bookmarks and other personal data are stored in the Firefox profile folder and won't be affected by an uninstall and (re)install, but make sure NOT to remove personal data when you uninstall Firefox as that will remove all Firefox profile folders and you lose your personal data.
    *http://kb.mozillazine.org/Profile_folder_-_Firefox
    *http://kb.mozillazine.org/Profile_backup
    *http://kb.mozillazine.org/Standard_diagnostic_-_Firefox#Clean_reinstall

  • How to send HTML email using alert framework? Kindly help!

    Hi Experts,
          I am using alert framework (alert category) to send email. In the email message I want to use HTML content along with some hyperlinks.
         How can I do this?
         kindly help!
    Thanks
    Gopal
    Message was edited by:
            gopalkrishna baliga

    Hi,
    To send hyper links, you can add the links in the FollowUp Activity.
    The content of the mail from the alert framework will be a text mail.
    One option would be to check in your SCOT settings if it would be possible to set the Content Type as TEXT/HTML . If yes, then maybe this should be possible.
    Regards
    Bhavesh

Maybe you are looking for

  • How run the run the BI Publisher report for current/active/selected record

    Hi, I have one requirement to generate a BI Publisher report in Siebel, which will run on SR's List view. Report should fetch the active SR and its audit trial entities. I know this was achieved easily using Actuate (simply setting "current Recrod on

  • In Transaction code va41 how to set default sales contract start date

    Hi , In Transaction code " VA41 "  how to set default sales contract start date and end date. Can any one tell me the correct user exit for the same. Thanks Basu

  • Can i migrate from a corrupt OS

    I'm trying to prepare my current Macbook (late 2008) to migrate to a new Macbook I just purchased.  Both macs will have Yosemite 10.10.2. My current macbook seems to have a corrupt OS somewhere in that it won't boot under normal conditions.  It hangs

  • How to design a chat applet?

    Hello, I have to design a chat applet in such a way that two users on different systems should be able to chat to each other after they login into a site. The applet should be able to save the transcript after the chat gets over (and that is consider

  • XG270HU freesync monitor flicker and graphical artifacts at 100,120, and 144Hz

    Hello, just picked up this monitor from Newegg and a bit bummed. looks like I might have a defective monitor, anytime I switch to the higher refresh rates (100,120, 144Hz) I get audiable pops and a horizonal line checkboard artifacts on the screen at