07-06-2009 06:21 AM
Hi everyone, first post so please be gentle!
I've got a VI running with over 500 indicators and updating every 20ms. Only a few change at any given time, maybe a dozen or so, but the problem I have is that when that happens the PC starts to really struggle and slow down. It's only a couple of years old and is only used in the lab for LabVIEW so its pretty nippy normally. Unfortunatley it can't be upgraded as we need to keep costs down.
Does anyone know how I can speed this up? Is there a way to set the update rate of the indicators? Or to set labview to only update the indicators that have changed instead of the entire screen?
Any advice is welcome!
Cheers,
matt
07-06-2009 06:31 AM
Hi Matt,
welcome to the forum.
You can use the property "DeferFrontPanel Updates".
How do you update your controls? Do you use the references? You should only update the changed controls, but you have to handle it.
Mike
07-06-2009 06:32 AM
Eliminate overlapping indicators.
Disable screen refresh before updating and re-enable it after updating the indicators.
Reduce the frequency at which the controls are being drawn to screen.
Shane.
07-06-2009 07:56 AM
I deal with this using proper architecture, for example, a state machine that will only update the changed indicators in the state that the value is changed in. Also 500 indicatores seems extreeme for a user. Are you trying to minimize what a user is seeing at a given time. I would guess that a user can only handle looking at a handfull of indicators at any given time (I try to keep this 10-20 indicators max). This is probably not all that useful for this application if it is already done but can be useful in future development efforts).
07-06-2009 11:41 AM
It sounds like you're using indicators as variables, rather than wires. With 500 of them it sure won't be a simple matter to refactor, but NEXT TIME...
Anyway, your users can't see the FP updating every 20ms so deferring the panel updates should do what you need.