From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Is it possible to build and deploy a project with missing hardware without errors?

I have a hardware system consisting of a cRIO-9030 and a NI 9144 EtherCAT expansion, and an additional NI 9145 EtherCAT expansion which is necessary for an optional subsystem.  On the shop floor, I have multiple identical controllers comprising the cRIO-9030 / NI 9144 base configuration, but only one NI 9145 expansion with additional functionality.  At present, the only way for me to make this work is to maintain two separate projects, one with the NI 9145 included and one without, and build and deploy them as appropriate depending on whether the expanded functionality is necessary for a particular project.

 

What I want to do is have a single master LabVIEW project with all hardware included, and have the RT application on the cRIO determine whether the NI 9145 is present, and if not, disable the expanded functionality accordingly.  This way I would only need to maintain one LabVIEW project, and a rebuild / redeployment wouldn't be necessary every time the hardware is reconfigured on the shop floor.

 

Unfortunately, it seems that having IO nodes in my RT application which correspond to a hardware target which is not physically present will not work.

 

Is what I want to do possible?

 

 

0 Kudos
Message 1 of 9
(3,212 Views)

It sounds like you might want to use a conditional disable structure.

0 Kudos
Message 2 of 9
(3,199 Views)

That's what I thought originally, (or a case structure, since I need the application to determine its configuration at runtime), but it appears as though having any I/O nodes for hardware which is not present, even if disabled, breaks the VI.

0 Kudos
Message 3 of 9
(3,187 Views)

Hi CFER_STS,

 

It might require some changes to the code but you could try acquiring the data in the FPGA of that specific target and the RT only decides if acquire the data from the DMA FIFO (you could use another communication method depending on the application) or not.

 

If the code tries to open a reference to an FPGA target that is not present, you will see an error. Otherwise, the code should compile and run with no problems. 

 

Regards,

PedroR

0 Kudos
Message 4 of 9
(3,146 Views)

I thought that communication with the NI 9145 EtherCAT slave was only possible through the use of (scalar) User-Defined Variables?  (i.e. no DMA).  It is the presence of the UDV I/O nodes that is breaking the VI.  Presently, I have to remove all references to the missing hardware in order to build the project.

0 Kudos
Message 5 of 9
(3,144 Views)

You are right, sorry for the confusion. In that case, I would have 2 executable or RT VIs so the main application would call the one depending on the case. Check this link below

http://digital.ni.com/public.nsf/allkb/C242CF9F0512DF6186257434000DBCBA 

 

Another more complicated way would be using VI Scripting for generating the VI depending on the presence of the Expansion Chassis.

 

Regards,

PedroR

0 Kudos
Message 6 of 9
(3,131 Views)

Unfortunately, your first link doesn't appear to work.  Retry?

0 Kudos
Message 7 of 9
(3,103 Views)