SystemLink Forum

cancel
Showing results for 
Search instead for 
Did you mean: 

Upload log file stored on RT target from Teststand

Hi There, 

 

I have a remote RT target running linux RT. I am controlling this from a windows host PC running teststand 2019. Both the host PC and RT target are connected to system link. I want to be able to upload a TDMS log file (logged from Veristand on the RT target) to system link. Is there a way to do this using the upload file teststand step for systemlink, on the host PC? I just dont know how to pass the file path to the TDMS file stored on the remote target.

 

Any help appreciated!

jdkdev_0-1661371312682.png

 

 

Thanks

0 Kudos
Message 1 of 11
(3,454 Views)

Would anyone care to have any input on this one😁

0 Kudos
Message 2 of 11
(3,417 Views)
I'm not familiar with VeriStand, but in general you either need to get the TDMS file on the Windows PC in order to upload it with the SystemLink step or you can upload the file from the RT target using the SystemLink LabVIEW API (not sure how this would integrate with VeriStand) and then return the file ID that you get back from the API and use the TestStand SystemLink API to link the file ID to the test result.
0 Kudos
Message 3 of 11
(3,411 Views)

Hi jdkdev - 

 

My name is Darin, I'm the lead Product Owner for VeriStand. I see two options here:

  1. Write Custom Devices. It sounds like you are using the Embedded Data Logger to log data on the RT target. This is the preferred way to snag lossless data logs from the VeriStand RT side, however we have nothing built out of the box to connect those log files with the SystemLink file ingestion service. It is possible, but it requires that you use LabVIEW to write a Custom Device. I recently encountered a user that solved this themselves by writing two Custom Devices.  The first custom device was a "File Mover" Custom Device. It was very simple and its only job was to move logs from one directory to another when certain criteria was met; and delete old logs that accrued so that the drive did not reach capacity.  The second Custom Device was a SystemLink Connector Custom Device. Its job was to wait on TDMS files to show up in a known RT target folder (filled up by the file mover CD) and then upload those to the SystemLink server using the LabVIEW SystemLink APIs on RT. This solution works and it scaled to a very large system. Unfortunately this customer did not decide to open-source their Custom Devices so there is not code for you to leverage; you'd have to author a solution yourself.
  2. Log on the host PC side. If you didn't need the lossless data logging to happen on the RT side, you could use VeriStand's host-side logging, configured via "logspec" documents in the VeriStand Editor. The main concern with this method is that the host-side logging doesn't see every data point; it is possible that the data has been decimated (at the VeriStand gateway middle-man) by the time it reaches the VeriStand editor logging code & screens. If you don't need that lossless guarantee, this is a simpler method for getting the desired TDMS file to show up on the Windows host PC. Once its on your host PC in a known folder location then you can follow Josh's advice to upload it with a 'SystemLink Step' as he explains in his comment.

I hope that helps explain enough so that you can evaluate these two and understand the tradeoffs between each approach.  Best of luck and please let us know how you go forward, happy to continue the discussion.

Darin Gillis
NI - Chief Product Owner - VeriStand
Message 4 of 11
(3,402 Views)

So I was trying to access the system link API from the RT controller, however I get the error pasted below stating that the library is not installed. When I try to add the SystemLink Labview API under the software tab of the RT controller (Linux RT System Image 21.5) I don't get any option to install it since it is not listed. The SystemLink Labview API is definitely installed on the host however. So is it possible to install this on the RT controller? Any ideas what I am doing wrong here?

Error -251046 occurred at NI Skyline Configuration Library.lvlib:Open Configuration (Desktop).vi

Possible reason(s):

Unable to load the LabVIEW HTTP client library. Ensure the HTTP Client is installed on the target system.


Complete call chain:
NI Skyline Configuration Library.lvlib:Open Configuration (Desktop).vi
NI Skyline Configuration Library.lvlib:Open Configuration API Key (Desktop).vi
NI Skyline Configuration Library.lvlib:Initialize From Auto Configuration.vi:4270001
NI Skyline Configuration Library.lvlib:Open Default Configuration.vi
NI Skyline Utilities.lvlib:Execute HTTP Verb.vi:7500001
NI Skyline File HTTP Library.lvlib:Get Version.vi
NI Skyline File HTTP Library.lvlib:Send File Core.vi:40001
NI Skyline File HTTP.lvclass:Send File HTTP.vi:5980001
target - single rate.vi

 

My goal here is to have a custom device just upload a file to system link directly from the RT target.

 

Thanks

0 Kudos
Message 5 of 11
(3,362 Views)

From MAX or SystemLink you need to install the generic HTTP Client with SSL Support for the SL LV API to work on RT.

 

Screen Shot 2022-09-13 at 7.36.27 AM.png

0 Kudos
Message 6 of 11
(3,339 Views)

Hi JoshuaP,

 

I tried to install this and it works if I deploy a VI from a project. However I get error 1003 when I try to add the system link labview APIs into a veristand model or custom device (compiled in LabVIEW). It seem like it is still missing the system link labview APIs on the RT target. Do you know if there is a way to manually add the system link labview APIs to the NI Linux RT?

0 Kudos
Message 7 of 11
(3,330 Views)

jdkdev - 

 

There's a lot of things that could lead to this.
Can you take a closer look at the Custom Device build spec in your LabVIEW Project?
One potential cause would be if the build spec is excluding VIs from vi.lib -- this would lead to VIs which call the SystemLink API being broken.
If that wasn't it maybe you could share the build spec settings here in more detail.
Darin Gillis
NI - Chief Product Owner - VeriStand
0 Kudos
Message 8 of 11
(3,309 Views)

Hi Darin,

 

I am actually trying this in a very basic veristand model. See the screen shot below. My biggest question here is that this VI obviously calls the SystemLink API, so I can see how this wouldnt work since there isn't an option to install this SystemLink API on the RT target when I try to install software in NI MAX. Can you help me understand how this is expected to work without installing the SystemLink API on the RT target? Do I need to install it manually perhaps?

 

Thanks

 

jdkdev_1-1663171598771.png

 

0 Kudos
Message 9 of 11
(3,298 Views)

Theoretically, you can do file I/O and network comms in a lv model.

But you really shouldn't -- because we treat all models as deterministic and so any network comms or file I/O can wreak havoc.

 

Instead we would recommend creating an async Custom Device for this code, as explained here:
https://niveristand-custom-device-handbook.readthedocs.io/en/latest/Custom_Device_Types.html#asynchr...

and be sure the build spec for building this is set up correctly.

 

This approach will get you where you need to go fastest.

Darin Gillis
NI - Chief Product Owner - VeriStand
0 Kudos
Message 10 of 11
(3,286 Views)