What is Ignition?

Ignition, by Inductive Automation, is a web-based deployment industrial application server software that acts as a central hub resulting in total system integration. This software platform can be used to build Industrial web based HMI SCADA, IIoT, and MES systems like FactoryPMI and Factory SQL. Almost any system you could create with ignition classic software. Several ignition modules can be used together to provide a complete system bridging the gap between production and IT. Often, users combine Ignition’s historical functionality with SCADA, HMI, IIoT, or MES functionality.

Strategies for Optimization Ignition System

Project Scopes and Network Latency:

  • The two primary scopes in Ignition are the client scopes (Vision, Perspective) and the gateway scopes.
  • The Vision scope is where the client is being used.
  • The Perspective scope is executed on the gateway.
  • Understanding how your scripts interact between the scopes is crucial to optimizing the performance of your system.
  • Poorly implemented scripts may work when network latency is low, but they will stop functioning as latency increases.

Testing Scopes and Latency

During this scope and latency test, we read sets of tags in a client script, and timed how long each implementation took.

We timed four separate methods of reading the tags:

  • The Individual tag read for each tag, in the client.
  • Read all the tags in one call, in the client.
  • The Individual tag read, in a gateway message handler, returned to the client.
  • Read all the tags in one call, in a gateway message handler, returned to the client.

Figure 1 shows of Issues and Causes during that testing:

Testing-Issues-and-CausesFigure 1 – Testing Issues and Causes

Localhost where clients the running on the same server on a gateway, LAN is for remote & network, WAN which means collected over VPN from the host.

Figure 2 show that Tag Read from Localhost Clients:

Tag-Read-from-Localhost-Client

Figure 2

Figure 3 show that Tag Reads from LAN Clients:

Tag-Reads-from-LAN-Clients

Figure 3

Figure 4 is show that Tag Reads from Remote Clients:

Tag-Reads-from-Remote-Clients

Figure 4

As shown in following figure 5.1, figure 5. 2, figure 5.3 & figure 5.4 which is a display of Locality Results:

Figure-5.1

Figure 5.1

Figure-5.2

Figure 5.2

Figure-5.3

Figure 5.3

Figure-5.4

Figure 5.4

Figure-6Figure 6

Here are Some Points which we have Seen in all Graphs (figure 5.1 to 5.4 & figure 6)

  • 200 UDT instances, 20 query tags, 1s poll rate.
  • Some queries were 2400 lines.
  • System dropped from 6000 up to 80 up.
  • 100% CPU dropped to < 10%.
  • 16 GB RAM dropped to 3 GB.
  • Project resource saving time dropped from 3 minutes to 2s.

The Impact of Query Tags

  • Query tags that are used to make point queries can impact performance if not controlled.
  • Network latency will impact overall system performance.
  • Queries to datasets are generally fine.
  • Extract values from dataset tags if point tags are required.
  • Works on tags and components.

Alternative to Query Tags

Alternative-to-Query-TagsFigure 7

  • Create a query tag, with the type of dataset.
  • Create an index tag. This can be dynamic or static.
  • Reference the cell from the dataset

UDTS

Using a UDT as a Property in Window

Using-a-UDT-as-a-Property-in-Window

Figure 8

  • Using a UDT as property has a negative effect on performance.
  • Indirect bindings provide a more performant option.

Improving Scripts Performance Using Zip and Izip

Improving-Scripts-Performance-Using-Zip-and-Izip

Figure 9.1

  • Zip is useful for joining multiple lists items into a single list
  • Useful for reading large lists of tags

Figure-9.2

Figure 9.2

  • Import once.
  • Import at the top
  • Imports inside of a loop will impact performance.
  • Varies based on the imported class.

Class Declarations

Class-DeclarationsFigure 10

  • Generate the class once.
  • Imports inside of a loop will impact performance.
  • Varies based on how complex the class is.
  • Cache if possible.

 Clients Properties

Clients-PropertiesFigure 11

  • Client properties allow arbitrary objects to be associated with a component.
  • Great for caching objects and classes that are expensive to generate.
  • Does not serialize

 

Recommended Reading:

Why Ignition is The Ultimate Platform for SCADA

Alarming Growth, the Benefits of Alarm Rationalization