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.
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.
02-08-2018 11:51 AM
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?
02-08-2018 12:18 PM
It sounds like you might want to use a conditional disable structure.
02-08-2018 01:02 PM
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.
02-09-2018 09:28 AM
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
02-09-2018 09:34 AM
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.
02-12-2018 08:01 AM
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
02-16-2018 09:53 AM
Unfortunately, your first link doesn't appear to work. Retry?
02-16-2018 04:02 PM
Sorry about it. I am adding it below along with other links I found along the way
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000PAhpSAG
http://digital.ni.com/public.nsf/allkb/466EA9705F98E07786257687005E081B
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P9mySAC
Regards,
PedroR
02-18-2018 12:33 AM
A fixed version of the original link http://digital.ni.com/public.nsf/allkb/C242CF9F0512DF6186257434000DBCBA