Jump to content

Recommended Posts

I recently ran into this issue and wanted to know what the community has to say about it.

I have a main program that is a QMH that can launch a single actor (picked by the main program and loaded through PPL) to perform a task. I want to have that actor update a CVT for the main program to monitor.

I set up the CVT in the main program and had the actor write to CVT. When that call happens I get an error that it can't find that tag in the CVT. I have a CVT viewer that shows that exact tag, though.

For testing, I setup the CVT in the actor with the exact same tag list and it finds it just fine. This leads me to believe that the QMH main program lives in a different memory space from the actor. (Maybe things loaded through a PPL live in different memory?) The current work-around is to send the value back to the main program. I don't really like doing that but it is what it is. My next option will be to convert the main program to an actor and see if the child actor can see the CVT setup by the main actor.

Any thoughts on this? Maybe I'm doing something wrong?

Edit: Tested a QMH with an actor called directly, instead of through a PPL and the actor can see the CVT without error. Next up, trying a packed actor called directly instead of loaded dynamically.

Edit 2: Created a trivial PPL actor and called it directly from the main program and it could not see the CVT. Is there a good workaround for this?

Edited by Austin
Link to post
Share on other sites

I've never used PPLs, but my understanding is that they can only externally call other PPLs, and will include copies of any source code they call, including the Action Engine VIs that the CVT is based on.  To use the CVT for communication, one would need to make a PPL out of the CVT and call that from both your other PPL and the main program.

  • Like 1
Link to post
Share on other sites
10 hours ago, drjdpowell said:

I've never used PPLs, but my understanding is that they can only externally call other PPLs, and will include copies of any source code they call, including the Action Engine VIs that the CVT is based on.  To use the CVT for communication, one would need to make a PPL out of the CVT and call that from both your other PPL and the main program.

That seems perfectly reasonable, thank you. I created a new project to package up the CVT library so I could include this in my other project. When I try to load the PPL it also loads the original vi.lib CVT library and throws an error that Template_Read.vi could not be loaded because it could not load the front panel. When I look in the library itself all of the VIs in the Internal/Template Functions/ folders are missing except a few. This seems to be preventing me from building the main project, as it throws a file missing NULL error.  I've gone back to the CVT PPL project and tried adjusting the exclusion settings to include everything but it still removes them. Any idea how to deal with this?

Link to post
Share on other sites
3 hours ago, Austin said:

 Any idea how to deal with this?

You've reached the limit of my understanding of PPLs, other than they sound like a pain.  

  • Like 1
Link to post
Share on other sites

In one project we had setup with CVT ppl in main app, main all loaded plugins by PPLs and those plugins get/set some data in this CVT lib. It worked fine without problems. This CVT was based on simple FGV.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By drjdpowell
      I'm helping a new client that has existing code that heavily uses the Current Value Table (CVT) library and the network extension CVT Client Communication (CCC) Reference Library.  Does anyone use these libraries and what are peoples opinions on them?  I would particularly like to know if it scales well to large numbers of CVT values.  The authors of these packages seem to have moved on to DCAF, which makes me worry that there are issues in using CVT-CCC.  
    • By MikaelH
      Hi
      I have a very strange Actor Launch problem. I start an Actor to do some calculations for every attached DUT. And that has been working great, 1,2,3 Actors(DUTs) no problem.
      But now I’m starting to get problem when I have around 5 or more Actors that I start of the same type.
      The screenshot below shows my problem.
      The queue used to get the Actor’s Enqueuer back after the Asynchronous start of the Actor, didn’t receive anything.
      I debugged the code, and could see that the Queue-Reference was the same for the Enqueuer and the Dequeuer. Also no errors were found on the Enqueuer Error in.
      Has anybody seen something similar?
      The code only fails if there are too many started actors at the same time!

      Cheers,
      Mike
    • By amorris
      All,
      I am new to cRIO, Scan Engine, and the current value table. I am trying to create a TAG configuration file and am adding all of my data acquisition channels. Each channel is of course part of the Scan Engine. I need help understanding what to put as the address for each CIE tag. I am using the NI provided tag configuration editor. When I click "Browse" and select my project, the list of options comes up empty.
      Any help would be appreciated.
      Thanks!
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.