Every so often the AdvancedHMI code is optimized for speed and efficiency. The most recent is some optimizing of the ControlLogix driver for the upcoming version 3.99a.
To gauge how well the optimizing is working, I created a very simple test. An array of 1000 DINT tags are created in the PLC. To get a timing, Wireshark is started. Then a read is done of 1000 elements using:
EthernetIPforCLXCom1.Read("DINTArray",1000)
Then using the time stamps of Wireshark based on the first read (service code 0x4c) until the success response of the final partial read, the total time is calculated. The latest tests has shown a total time of 44ms to read all 1000 DINTs.
So how does this compare to other drivers? The same test was done with RSLinx and was taking several hundred millseconds, so no further testing was done. The next test was done with the Kepware OPC driver and resulted in 54ms. And finally the Automated Solutions driver was tested with a result of 55ms.
This simple test shows an almost 20% faster rate than its nearest tested competitor. If anyone has other software they can perform the same test, I would be very interested in hearing the results.
The hardware I tested with is a CompactLogix L35 and a laptop with a core i7 at 2.2Ghz.
Another quick test I did was to put 5 BasicLabels on a form and point them to 5 different tags of different types, then set the PollRateOveride to 0. Based on Wireshark captures, the update rate averages a little over 4ms. Watching CPU usage, it held around 1%. So what does this really mean? A very fast update rate with very little CPU means an HMI can be very responsive even on low end hardware. For example, I ran the same program on a low cost touch panel with a 1.8Ghz Atom processor. At that extremely fast update rate, it still only used 10% of the CPU.