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.
09-19-2016 01:11 PM - edited 09-19-2016 01:39 PM
In 30 years of LabVIEW development I've not seen such a strange problem. Maybe some one can help me out.
Here's the problem:
Large 1,000 ms delays intermittently occur across two instances of a LabVIEW executable at the same exact system time. (SEE ATTACHED TIME STAMPS SCREEN CAPTURE FOR COM 11 and COM 14 where there was a > 1000 ms delay)
Would love to hear from somebody on this.
Thanks,
Brad Whaley
Electrical Engineer @ Boeing
Solved! Go to Solution.
09-19-2016 01:19 PM
If you are running Time-critical Code in Windows (as opposed to inside a Real-Time OS, such as LabVIEW RT), you have to be wary of Windows processes/services deciding "It's my time to have the CPU". Not only does this include things like Antivirus/Malware software, but "automatic updates" and other routines that do "who knows what or when".
Have you considered repurposing a PC as a LabVIEW RT platform? Have you looked to see what tasks and services are running in the background? Do you know if there is a burst of network activity from your PC at the time of the "pause" (could be innocent or nefarious)?
Bob Schor
09-19-2016 01:20 PM
Time Critical = You should be using an RT!!!
The fact that it happens with just one executable tells me that Windows is just deciding to do something else for a little bit of time. With both, I could make the case that you were competing with each other for resources due to VISA or something.
09-19-2016 01:26 PM
Why does the C program not have this problem?
09-19-2016 03:21 PM
I'm not sure why, but LabVIEW graphics has always seemed to be very CPU intensive if you do stuff like resizing a window while it is executing, or if controls are overlapping. I think that's because of the way LabVIEW redraws stuff.
Maybe something on the front panel is causing LabVIEW to do a bunch of redraws, enough so that you are occasionally late, and with resizing, any hopes of being on time are dashed?
09-19-2016 03:31 PM
@bdwhaley wrote:
- The executable has a time critical "subroutine" loop that drops CRITICAL data if there is more than a 100ms delay.
Can you be a bit more specific with the terms:
09-19-2016 06:48 PM
@altenbach wrote:Can you be a bit more specific with the terms:
- Is the subVI set to "time critical" or "subroutine" priority? (and if so, why?)
Well, it cannot be "subroutine" priority if VISA or Serial is involved (asynchronous nodes are illegal in subroutine priority VIs).
09-19-2016 11:21 PM
How are you communicating with a satellite if you have to operate within 100ms? The time to travel there and back is closer to 700ms.
If you're looking for 100ms, you're going to be talking to something in between the PC and satellite aren't you?
Beyond that, it's hard to really say what's different between the C and LV code. We've seen neither. You say "ported." Did you duplicate the code? Did you turn the C code into DLLs and call those? How did you port the code?
Why would it happen at the exact same time? That does sound like the OS looking to do something more time critical. Why wouldn't this impact the C code? Hard to say without seeing the code. Do you have a GUI associated with the C code?
09-20-2016 10:18 AM
@crossrulz wrote:
@altenbach wrote:Can you be a bit more specific with the terms:
- Is the subVI set to "time critical" or "subroutine" priority? (and if so, why?)
Well, it cannot be "subroutine" priority if VISA or Serial is involved (asynchronous nodes are illegal in subroutine priority VIs).
I just was trying to understand the terminology used. The term "subroutine" is used as a priority in LabVIEW, while code is typically called a "subVI". We definitely need to see some code to help further....
09-20-2016 09:06 PM
Hello - this is a follow up post from a previous topic some of you may have already addressed, but I realize that I didn't lay out the situation well enough and I want to start fresh.
OBJECTIVE: I am trying to match the performance of a C program doing high speed RS232 communication with Satellites through Modems.
Background:
Note: There are hundreds of PCs running this program and doing SQL, FTP, RAS Dialing, and other stuff, so we can't easily convert them all over to LVRT.