0

Slow MD4-7 display and logic issues when cycle utilization is higher than about 55%

toby 2 months ago in IQANdesign updated by Gustav Widén (System support) 2 months ago 2

I would like to reduce my cycle time if possible, though once cycle utilization gets above approx. 55%, display pages take longer to load and logic that requires precise calculation order starts to have issues. From what I can tell you should be able to safely run up to 80% utilization without issue. Any suggestions or fixes would be appreciated.

Cycle utilization is a measurement of the the percentage of an application cycle that is used for calculating the application logic.

After the MD4 is done calculating the application logic, it performs the other tasks such as drawing display pages, sending measure values to IQANrun and writing to logs.


The effect is that with higher cycle utilization, display pages will be slower.

Increasing the cycle time is the quickest way to improve the situation.

By running the application logic at lower frequency, a higher fraction of the time is available for display pages.

It also helps by increasing the absolute time available at the end of each cycle, more of the display pages can be updated before the MD4 has to switch back to running application logic.

What I do not understand in the post is the claim that "logic that requires precise calculation order starts to have issues".

Is this functionality related to interaction between display pages and application logic?

Calculation order within the application logic does not change. But some channels depend on value from the display pages and can have old data, for example VDIN and the system information channel for Active display page. 

+1

Thanks for responding. Ok I suspected that's how it worked, just wanted to confirm, so basically I need to balance the page loading time with the application logic cycle time. Yes the calculation order issue seemed odd to me, the situation was an on screen button would convert to a number (for one cycle only) using an integer calculation block and then get stored in an array, the calculation order was all grey lines indicating it would all happen in the same cycle and it would as long as my loop time was long enough, I managed to fix the issue by holding the value over multiple cycles, so I suspect it was getting delayed 1 cycle somehow. I also tried disabling some other logic to get utilization down, but the issue still remained so it seems the utilization didn't matter but it only depended on the cycle time. But I'll play around with the cycle time a bit to get a good balance.