Gateway dependent data polling for Easy Chart in place of client based polling


I am trying to create a real-time SPC chart for operators within ignition using Easy Chart. The data populating the charts is fed via Tag Historian through Cell Update bindings to allow the chart to display data specific to a selected machine. Each machine has its own set of tags for any given parameter (e.g. there is a separate flow tag for every machine to which the cell update binding is setup to dynamically select from based on the chosen machine).

The current poll rate is 5000ms. When testing on a single client, the server load is more than acceptable; however, when pushed to production of several hundred clients, there was a noticeable load on the server.

Does anyone know of a solution to this problem? With several hundred clients querying the same data, is there a way to query the data at a given frequency at the gateway level and have the clients use the same data so that there are not hundreds of duplicate queries running at the client level?

It depends on your version somewhat, as the Tag Historian has had caching upgrades in the past year or so. If you are open to an architectural change, the combination of the SQL Bridge module and two of my modules, NoteChart and Time-Series DB Caching, using DB Pens in EasyNoteChart, give you a highly optimizable shared-query environment. However, most of the benefit comes when many clients are looking at the same trends. There would still be a benefit in that the actual queries to the DB that support realtime displays limit themselves to a (configurable) sliding timespan centered on “now”, caching prior rows.

Side note: You might find it easier to maintain your charts if you ditched the cell bindings and instead bound your chart’s pens, tagPens, and axes datasets to custom properties on the window’s root container. Then you can pass a complete set of pens and axes as parameters when opening the window. And different machines can have different numbers of pens and/or different axes. Such custom properties could also be driven from buttons or other elements on a window already open.