From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Cannot call class member if Run Time Engine is selected as adapter

Solved!
Go to solution

I'm using Modbus class downloaded from here:http://www.ni.com/example/29756/en/

 

I want to call functions "Read Holding Registers", "Write Holding Registers" from teststand using Call Type = Class Member Call. 

If I have Adapters -> Labview Developement System selected, Teststand finds function and there is not any Error (See Image1)

 

image1.PNG

 

But when building Teststand deployment, I have to select Adapters->Labview Run Time Engine as adapter and if I do this Teststand cannot find functions anymore and returns error:

image2.PNG

 

If I go to Modbus Master.lvclass and check if function has public scope I see:

image3.PNG

Pleas help how to solve this issue

 

0 Kudos
Message 1 of 8
(1,939 Views)

Is your TestStand a 64-bit version?

CLA, CTA, LV Champion
View Cyril Gambini's profile on LinkedIn
This post is made under CC BY 4.0 DEED licensing
0 Kudos
Message 2 of 8
(1,903 Views)

It is 32-bit

0 Kudos
Message 3 of 8
(1,891 Views)

I also attached test sequence if anybody wants to reproduce my problem.

Download All
0 Kudos
Message 4 of 8
(1,885 Views)
Solution
Accepted by topic author AndrazS

Hey, Andraz!

 

The VIs in the Modbus Library API folder are all source-only VIs. To run source-only VIs in RTE, there should be entries present in LabVIEW's compiled object cache.

Since you mentioned that you're deploying them on to another machine, it's very likely that the LabVIEW on that machine does not have the compiled code for the source only VIs, so you're seeing that error.

 

Additionally, confirm that the VIs are saved in the LabVIEW version installed on your deployed machine. By LabVIEW version installed, I mean the run-time engine installed (e.g. 19.0).

 

To have the source-only VIs in the modbus lib work on your deployed machine, you can try some of these options:

1) Install LabVIEW ADE on your deployment machine, open up the VIs, hold the left control button your keyboard and hit the "run" button in the VI UI to force compile it.

2) If installing LabVIEW ADE on the deployment machine is a no-go, you can instead create a PPL build specification for the VIs in the Modbus lib, and deploy the built PPL to your deployment systems. You'll have to change up the paths to use the PPL path in this case, though.

3) Remove the source-only flag from the VI properties for the VIs you want to use and save them in the LV version on the deployed machine.

0 Kudos
Message 5 of 8
(1,872 Views)

Additionally to what Harsh says, the deployment tool is supposed to bring the compiled code back into the source code when building the image.

So everything that Harsh said is valid. The shortest path I would take is mass compiling the modbus Lib to ensure that your cache is filled with the compiled code. And then build the deployment.

 

CLA, CTA, LV Champion
View Cyril Gambini's profile on LinkedIn
This post is made under CC BY 4.0 DEED licensing
0 Kudos
Message 6 of 8
(1,867 Views)

Additionally, you need not change the adapter to RTE to use the TestStand Deployment Utility (TSDU).

0 Kudos
Message 7 of 8
(1,860 Views)

Hi

Harsh Had a couple of questions regarding this post:

 

https://forums.ni.com/t5/Example-Code/NI-TestStand-Featured-Examples/ta-p/3996417?profile.language=e...

 

Please let me know if it is OK to email you here regarding the same

 

Thanks
Srinivas

0 Kudos
Message 8 of 8
(1,504 Views)