The First Look at Ignition’s Perspective Module

The thing we have all been waiting for…Ignition natively in the browser. Let me tell you it does not disappoint. In my opinion, Perspective brings about the biggest change in SCADA software since Ignition first came on the market. It will completely change how we develop projects.

Secret Sauce

As far as I can tell, this is the first post on the entire internet about Inductive Automation’s Ignition 8.0 Perspective Module with any technical information. I’m asking for forgiveness rather than permission on this one in case we aren’t supposed to pull back the curtain just yet, but I don’t think we will need much once you see how awesome the things in Perspective have shaped up to be at least on the 2nd day of access to the 8.0 Beta Program.

First off, the Ignition Designer has been pushed into full modern styling with the new theme. It is a beautiful piece of software. It wasn’t ugly to begin with, it just pops in a new and exciting way.

I’m not going to lie, having to manage multiple sets of windows is a little bit of a hurdle. I completely understand the technical reasons why, and my hope is as Perspective grows into a fully-featured piece of software we will be able to build everything we need using it, it is still a ways before we are comfortable pushing it out as the main interface for a plant-wide SCADA system.

The first amazing piece of the puzzle is Styles. These allow you to set up CSS styles for all of the components, and then apply these styles globally to all of the components. You have access to various states for each component, and can get into a great level of granularity here. To apply a style, or multiple styles to an object is simply a checkbox property on the component itself. We

We have been doing this already with style tags we created at the client level, this bakes it into the software to begin with saving us time and resources to develop from scratch for each project.


Next is breaking things out into events and scripts. This gives you the same capability to execute code with events on components such as a button press to execute an action. Same Python scripting language, ability to get/set properties from components, etc. This does make things a little more easy to understand by breaking the events up into a separate area away from scripting, removing the “Custom Methods” below the events on most components. This is a solid choice.

Events are as you would expect, and give you plenty of options for things to do, here is an example for a button component. Tons of granularity here, even more than we had in the 7.9 event structure. These are using the React event handler engine, giving us all the options we could ever need.

The events option also has a lot more options for what you can do on an action, including “Scan Barcode” which makes me wonder where the barcode scanner module will fit into everything post-Perspective.

For scripting,  you will notice we have “Custom Methods” like before, as well as “Message Handlers”. Custom methods are the same as before, while Message Handlers have changed the game.

What You Have All Been Waiting For

What are message handlers? Basically this is a way to set up something on the component itself to receive messages from other components. Essentially it is a message bus running in the background allowing you to easily pass data and actions back and forth between components. This GREATLY improves troubleshooting time, and makes it easier to follow the flow of things through a window by exposing the code directly on a component and executing everything there instead of doing the code on the event elsewhere. This also makes it possible to write less code, because you can simply call a message handler on a button press, and update all of the components on a screen if you want to.

From what I have seen in the few minutes I have spent with Perspective, this is the most powerful tool since Ignition first let you dump data from a PLC into a database. This will completely revolutionize how we can develop our projects.

Here is a quick demo window I threw together. Clicking the button will update the label text with what you enter in the text field. It will also change selected property of the checkbox, and a second message handler on the checkbox will call a custom method and update the text depending on if it is selected or not. Notice I have the same message handler name on the checkbox and the label, and am passing in a dictionary to the label to update the text, while I am updating the checkbox text based on data from the custom method. This is simply to show you the flexibility we have with message handlers.

Here is the code from the button, notice I am calling the “updateText” message handler only one time, but both components will be updated from a single click because this will fire all of the message handlers on any component listening. This can be configured for various scopes as well.

Next, let’s see the message handlers on the checkbox, as well as the custom method:

The message handlers are triggered by the button press, and the getSelected() call is called in the updateText message handler, simply to show things tied together.

For the label, we simply have an updateText message handler, using a Python dictionary value to update the text. We can send the dictionary to the message handler from the button and it simply is ignored by the checkbox component’s message handler, and is used by the label component. Again, this is not necessarily a best design practice, just an example to show you how we can execute code on multiple components with a single message handler call from a button press or other event.

What’s the Verdict?

From what I have seen so far the Perspective Module is a ridiculously awesome piece of software. Yes we are going to have a learning curve industry-wide, it will require people to step up their development game if they haven’t been exposed to web development before, and it is a leap forward for our industry. Yes it is going to have some bugs and kinks to work out, still it is going to be a game changer not only for Corso Systems, but for manufacturing, and business software as a whole.

If I have ever felt it was an awesome time to be an integrator before, that feeling is tenfold now.

Read our review on the Ignition 8.0 Beta Demo.

Check out THE ULTIMATE MES Guide!