Author Topic: What is the design capacity of the product for various drivers (no. of tags)  (Read 1538 times)

ianfinlay_aus

  • Newbie
  • *
  • Posts: 21
  • www.earthed.net.au
    • View Profile
    • Earthed Solutions Pty Ltd [Custom Software for Engineering]
Hi Support (& Users)

Just wanting to know in advance before I take on any bigger jobs with AdvancedHMI what the comfortable design capacity is?

I imagine the capacity varies from protocol to protocol and affected by poll rate, baud rate, and tag type (bool vs long)  etc

Has a survey been conducted or white paper on this topic available?

I'd hate to agree to do a project to find I've gone beyond the capacity of the product

I'd love to hear from ANYONE who has a working system with details on tag counts

Your experiences Welcome




Former Citect SCADA Developer, and integrator
now specialist in bespoke\custom engineering software for scientific and automation sectors

ianfinlay_aus

  • Newbie
  • *
  • Posts: 21
  • www.earthed.net.au
    • View Profile
    • Earthed Solutions Pty Ltd [Custom Software for Engineering]
PROTOCOL:                MODBUSRTU 
THROUGHPUT:           115200 BAUD
POLL RATE:                1000 MSEC
TAGS.READ.INT16:   16
TAGS.WRITE.INT16:  3 (@ 1000 MSEC)
O/S :                          WIN10
Former Citect SCADA Developer, and integrator
now specialist in bespoke\custom engineering software for scientific and automation sectors

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5323
    • View Profile
    • AdvancedHMI
Understanding how the drivers work may help answer this. When you set the PollRateOverride on a driver instance, it only applies to subscriptions and it is a target rate because the communication is what limits most things. Take for instance you have a serial communication link at 1200 baud. Then you add a driver and set the PollRateOverride to 10ms. Obviously the software will not be able to refresh your subscriptions at a rate of 10ms when the round trip read may take 100ms.

Now let's add 2 BasicLabels, one with an address of 40001 and the other 40101. It will take the driver 2 separate reads to refresh both BasicLabels. If each read takes 100ms, then the screen refresh rate will be 200ms, no where near the 10ms put in PollRateOverride.

We now modify the BasicLabels to use addresses 40001 and 40002. The driver optimization now comes into play. The driver will perform this with a single read, parse the values, then send the appropriate values to each BasicLabel. So now we have 2 BasicLabels on the form, but our refresh rate is now 100ms instead of 200ms.

Since the driver is set to 10ms poll rate, but the communication bottleneck does not allow this, there is no "down time". As soon as the driver receives the data, it immediately initiates another read. This all happens on a continuously running background thread. If that thread has no sleep time, it begins to use more CPU time. If running on a less powerful PC, you may start to see an increase in CPU usage, which in turn may begin to decrease the response to user input.

I do very little work with Modbus, so I don't have any real figures to post. But I do a lot of work with the ControlLogix driver. I have tests with 5 BasicLabels all pointing to various tags that are not in an array. I set the PollRateOverride to 0 just to make it refresh as fast as possible. On my laptop, it acheives an average refresh rate of 5ms over a wireless Ethernet connection. Running this same app on a PC with an Atom processor at 1.8Ghz will use 10% CPU and not show any noticeable effect on user input response.

All of my apps that I develop typically have 10 or less forms and typically less than 15 items on each screen, so I can't speak for very large applications. But I have assistants users that have used hundreds of controls on a form. Not too long ago someone posted on here stating they had 600 DigitalPanelMeters on one form.

The short response is that there is no limitations built into the software, but only limitations created by hardware bottlenecks.

ianfinlay_aus

  • Newbie
  • *
  • Posts: 21
  • www.earthed.net.au
    • View Profile
    • Earthed Solutions Pty Ltd [Custom Software for Engineering]
Thanks Archie
Former Citect SCADA Developer, and integrator
now specialist in bespoke\custom engineering software for scientific and automation sectors

Archie

  • Administrator
  • Hero Member
  • *****
  • Posts: 5323
    • View Profile
    • AdvancedHMI
I did some optimizing of the Modbus drivers and some testing to start to get a bench mark of its performance.

The test setup:

PLC : AutomationDirect Click PLC

ModbusRTUCom driver
38400 Baud
Odd Parity
8 Data bits
PollRateOverride : 0

MainForm:
BasicLabel1 : 40001
Dial : 40001  (this is a control that will be part of a future expansion pack)
Slider1 : 40001
BasicLabel2 : 40050
Slider2 : 40050
BasicLabel3 : 40100
Slider3 : 40100
BasicLabel4 : 40003

The address selections were made in order to require 3 separate reads to update all controls.

Used a Stopwatch component to time the refresh of all controls. Average was taken over 100 refreshes. The average refresh rate was 65ms