Ignition Community Live: Ignition Platform Demo

61 min video  /  57 minute read


Travis Cox

Co-Director of Sales Engineering

Inductive Automation

Because Ignition has so many capabilities and receives such frequent updates, presenting a thorough and up-to-date demo in under an hour can be challenging. Don’t worry though, because Ignition expert Travis Cox is here to demo the full range of what Ignition can do today. You’ll see how to effectively present Ignition’s power to connect, design, and deploy without limits. Don’t miss it!

Webinar Transcript

Travis: Hello, everyone, and welcome to Ignition Community Live. This is Episode Number 33, the “Ignition Platform Demo.” My name is Travis Cox, I'm the Co-Director of Sales Engineering here at Inductive Automation, and I'll be presenting the webinar today, and I'm really pleased to be here today. Our team, the Sales Engineering team, we're the solution architect team here at IA, and one of our jobs is to provide technical demonstrations of Ignition, and today we wanna show you a really good platform demo that gives you a good understanding of what Ignition can do, outlining a lot of the big features and the ease of use of the product. So I'm really excited to get into it, but before we get into the technical demo, for those of you who may be new to Inductive Automation and to our product Ignition, I feel it'd be good to get a little brief introduction to the products.

So Ignition is our software product, it is the new SCADA platform of the future, because it's the industry's first database-centric, cross-platform, web-deployed industrial application platform for SCADA, HMI, IIoT, MES, and a lot more. Simply put, Ignition is a development toolkit that allows you to build any kind of industrial application that you like. It is a single unified, unlimited platform for HMI, SCADA and MES. It's unlike any other SCADA solution, because it empowers users with these unique features. It has an unlimited licensing model, so you can buy a server license for whatever functions you want, and the use of that is completely unlimited. Unlimited tags, screens, clients, device connections, projects and more. It has a server-centric web deployment model, so we install Ignition on a central system, and from there we can connect out to all of the different sources of data.

And Ignition can connect to really anything, any kinds of PLC or other systems, and we can ultimately get data out to a lot of people on any device, whether that's their PC, their mobile devices, phones, TVs, and more. The Ignition is fully cross-platform, it can run on any flavor of Windows, Linux or Mac, and is built on open source technologies, so that we don't lock you into anything proprietary. We kinda allow you to take advantage of putting data into databases or get that data to other systems easily, integrate with other systems and also just allow you to use modern technologies, especially from the IT realm. We're gonna talk more about the modularity in a minute, but it is a modular platform, that's really key. You can think of the Ignition platform, much like your phone is a platform to install applications. Ignition is a platform where you can install modules and extend the functionality.

But one of the big unique things about it is that it comes with its development environment and it really has a rapid development and deployment model, and the Designer is included, it allows you to, in a single environment, build everything that you want to build and ultimately realize a solution that you wanna bring to the table. With the modularity, this is a diagram that shows a software stack of Ignition. As you can see here, the Ignition platform provides a lot of core functionality, it has down here, all the drivers to different PLCs, it has connectivity to OPC [UA] and databases, it has the tag system, it has alarming, as well as its core functionality, you could take advantage of. But the modules above add specific functionality, and we built Ignition to be modular for two reasons, one, is you can pick and choose the functions that you want. So if you just want to use Ignition as an historian, you can just get the Tag Historian Module.

If you want to use it for just visualization, you can use Perspective or Vision. But if you'd like to use it for a full SCADA solution, you can get a combination of multiple modules and ultimately build out the system you want. And the second reason we built Ignition in modules is, we can't predict the future, we wanted a platform that we can scale, that we can continue to add on to over time. So as new technologies come out, we can easily introduce a new module and you can plug in to the platform and you can easily take advantage of those new features. And everything is built again with that unified platform, the unified Designer, so it's very, very simple from an installation standpoint, simple to upgrade in the future and to continue to scale that system up as you go forward. We offer a lot of core modules within Ignition for visualization, historian and logic, the alarm notification and, of course, connectivity and enterprise functionality.

We also have a couple of partners who provide modules in certain areas, in IIoT, that’s Cirrus Link providing modules for MQTT and for cloud connectivity, and we have Sepasoft for providing MES modules. And so the idea is you could pick and choose modules you want, you can deploy Ignition to your site, wherever you want to have functionality, and ultimately you could build out your industrial application easily. So Ignition is server software, and it acts as a hub for everything on your plant floor to achieve total system integration. So no matter what brand, model, or platform, it talks to your plant floor equipment, just as natural as it talks to SQL databases, and it really bridges the gap between IT and OT. So we can connect all of your PLCs and devices through OPC. We have built-in drivers for all the major PLCs, we'll see that in a bit. We also can support connecting to third party OPC servers, whether that could be Kepware or Matrikon, or even devices that support OPC UA built-in.

It allows really good access to all of your industrial data, bring it into Ignition. We can work with any SQL database. That could be MySQL, Microsoft SQL Server, Oracle, Postgres and more. We can interface with MQTT to either publish data or subscribe to data or even be a broker. We can interface with other business systems. We typically do that through web services, REST or SOAP APIs, that could be other MES or ERP systems, could be maintenance management, could be anything there. We can bring in LIMS devices, barcodes, scanners and scales, and we could parse files and leverage that data, and of course, we can also integrate with the cloud with cloud services, whether that's in AWS or Azure, a lot of functionality, a lot of places that Ignition can connect to. The idea is, we can bring this data in and we can move it around, apply logic to it, and we can historize it, alarm on it, and ultimately we can get that data to people, and that could be, as I said before, on any device, touch panels, TVs, PCs, mobile devices, phones or tablets.

And really the idea is to quickly deploy Ignition, get connected to your sources of data, get connected to a database, build out your application and then give people access to that. That's what we're gonna see here today. We're gonna show you a full example of how we can build a complete system from scratch, from installation to realizing an application with a lot of power in between, with taking advantage of the functionality that we have with Ignition. So we're gonna do a simple, quick, easy install, and it's important to notice that you can go to our website and you can download Ignition and you can easily get it installed and play around with all the functions and all the features that it offers, and we run it in a two-hour trial grade. So, that's what I'm gonna use today, is our trial software download and fully build out our system. And all you gotta do is install it in one place and then instantly deploy that application to anybody within your organization.

So I'm gonna minimize this for a second, and if I look at this diagram I have up right now, this is an architecture, a standard architecture of ours. So what I'm gonna be showing you is deploying Ignition to my laptop, and from there, I'm gonna connect it to some PLCs. So we can bring in some data, and figure tags in Ignition. We're gonna connect it to a database, we can log historical data, use the historian, use the alarm notification. And we're gonna build out an application that we can launch as a run time, so we can see the data in an application and make that really, really easy to make available to our entire organization. So, that's the idea. So first and foremost, what to mention is that you can go up to the top on the website, you can go to the downloads area, and you can download Ignition. And with it being fully Flash platform, there's installers for Windows, Linux, Mac, you'll see all of those binaries on there.

You can simply download that and get installed. Another method you could use is to use our Docker container, how we have a Docker image that you can go, you can see it at hub.docker.com, and it's super easy to get that up and running and in fact, that's what I'm gonna show here today. I'm going to use Docker and get it installed that way. So I don't have any containers running right now, what we're gonna do is simply run this command here, which is gonna run the Ignition 8.1.14 image. I run on my machine and basically, we're getting access... We'll be able to get access to Ignition through HTTP over at port 8088, that's the port that we're gonna allow here.

Again, I could do the installation from that installer, it's very, very simple to do that as well, and it just takes a couple of minutes, you'll get installed, and then from there, you can open it up and start really configuring it a lot further. So, I now have the container running and how we access or how we work with Ignition is by going to our web browser. And so we can manage Ignition anywhere on our network, where I simply open our browser and pointing it to that server. So if I open my browser, I can see here on my local machine, I'm now connected to Ignition and it wants me to select the version of Ignition to install. I wanna use a standard Ignition, but I wanna mention that we have an Ignition Edge, which is a light weight addition of Ignition for the edge of the network to provide functions at the edge of the network.

We also have a Maker Edition, which is free for personal use, so non-commercial projects, so hobbyists or if you wanna use it for home automation or students, use it to really learn Ignition at their own pace. Maker Edition is a completely free version of Ignition where you can do all of that. Now, I'm gonna use our standard Ignition offering here, go ahead and choose that and accept our agreement, go next, and put a... Give it a root account, so I'm gonna give an admin user and a password. I'll finish that up, and now I'm gonna start Ignition for the first time, and so that's it. That's really how simple it is to get the Ignition up and running. And if you use the installer, it just takes a couple of seconds for the installation to happen, you're in the same area. And once this is done, it's gonna point me to the Ignition gateway web page, and that's our entry into Ignition.

From there, we can launch projects. From there if we're a designer, we can go and launch a Designer, we can build out our systems and again, ultimately provide those applications to folks around the organization. And there we go. It's now ready. So, Ignition's installed and configured, you see, that's how simple it is. And no matter where we want to deploy it, whether we deploy it to a site at a central server, on a physical server, whether we deploy it on an edge device, whether we deploy it to the cloud or a combination thereof, it's simple to get Ignition out there. And when you first install it though, there is a quick start that you can enable and the quick start, add the sample application and configure some tags for you, it gets you up and running so that you can play around and see some of the possibilities. I'm gonna go ahead and do that. Rather than starting from scratch, I'll enable the Quick Start, I'll use my login there that I created and it's not adding this to the application, configuring the devices and adding some tags and configuring history and so on, and now it's ready to go.

You'll also notice on the right hand side that we have a little menu to explore Ignition, where we can look at some videos from the University on how to get going. We also can get quick links to go and start building by launching a signer or opening that starter project, and that's what I'm gonna do first. I'm gonna go down here to our view projects area, and this came with an example project that we can launch. I'm gonna go ahead and do that. So all that I need to do from a client perspective, if I'm somebody who wants to access the application, I can simply just put in this URL, which is the IP address of that server or the host name of that server, and then this is the direct link to this particular project. And you can see it's running in my browser, this is a complete pure web native HTML5 clients, so it's super, super easy to get it out there. Anybody who has a modern browser, again, their phones or tablets or Smart TVs, all we gotta do is simply direct to that URL, and you'll see that as we go along here, we build out our own project, similar thing, get right to it.

This Quick Start is great, it has an Ignition 101 section, it really shows you about some of the features of Perspective, this is our visualization module, and it shows you how some of the configuration would work, and some of the examples of what you can do with that. It also has a couple of example applications, so it shows you some real-time status control, we can see equipment and we control it. Shows an example of looking at historical data, so we log that to a database where you can see some trends and see what's happening there. The example of alarming, so I can see alarms that are configured in the current state of those alarms, it shows an example of some data entry, just putting some data in there, as well as an example of an actual formatted report.

We're gonna show how all of this works today from scratch, we're gonna see how these things are configured, but this Quick Start is a great way to explore all of this, and it really gives us a sense to see if all the types of... From a visualization standpoint, all the kinds of things that we can bring into our application, so whether it's from different charts, let's see here, our range selector, or looking at different kinds of pie charts, or if I wanna look at different kinds of display components and say, I wanna look at different LED displays or I wanna look at using icons, whatever it might be, it shows you examples of the types of visualization you could put together.

Along with a Perspective, it's completely mobile-responsive. If we're opening this application up on our desktop, I'm gonna see it in a certain way, and if I open it up on my phone or tablet, I want to be optimized for that device. Again, we're gonna show how this works, but this area, this layout area allows us to kinda see some of this in action. So for example, if I open this component grid, I can... From here, if I were to get my browser to switch to a phone, as you can see, all of that, all those components are now presented in a different format, in a different organization, and this is vertical where if I go back to this response, if you go back to the full, you can see as I make the screen smaller, you see that the screen adapts and it automatically moves things around, lets me optimize how I want that display to happen. So we can have one application that everybody can use that's fully mobile-responsive, and that will work on all the different devices that we want to show it on, so it's a really, really cool feature, and it's very, very simple to configure.

Again, we're gonna show this here today from scratch, how all of this works. So again, the Quick Start is a great way to get started, anybody can see how... And you can go in there, inspect how all these things are put together, that's the big part of it, open the Designer and see how this stuff works. What I'm gonna do though, is I'm going to do all my configuration from scratch. So we're gonna show how this kind of project was built out. So now I'm gonna be in my Designer shoes. First, I was looking at it from a run-time perspective, now I'm gonna be the person in charge of designing an application, I'm gonna go into the configuration section, and the first thing we'll do is get connected to some devices. So I'm gonna go down here to our device connections, and we can utilize our device drivers, so if I create a new device, we have all sorts of drivers here from Allen Bradley to Siemens, BACnet, MP3, Modbus and more, and we can select the driver we're looking at and get it configured. So my first example, I have a MicroLogix PLC, I wanna connect to, wanna choose that, go next, I'm gonna call it MicroLogix and the IP address is 10.20.777, I'll go ahead and get that connected.

And, we should see it go from disconnected to connected, we're all good on that device. I wanna connect to a CompactLogix PLC that I have... And that's the first driver there, I'm gonna call it CompactLogix, and the IP address is 10.24.55 in my case, I'll go ahead and create that device, so now we have connected to a CompactLogix, that has a lot of name tags and objects that we can use. We'll also connect to a couple simulators. If you don't have a real PLC and you wanna play around with Ignition, we have a great programmable device simulator and it allows you to simulate any kind of process data, so I'm gonna create a dairy simulation. I'm gonna go into our program and I'm gonna load a program that I happened to have created earlier for this, and you'll see it's pretty simple. And this is instructions here, let me load it, it just has these tags, here there's these refrigeration tags from our discharge pressure to discharge tank fill levels, things like that, that we can use. So I now have four PLC connections or four devices that we can work with, that we can create tags within Ignition.

Now, I wanna go further than just being able to do real-time status control, I wanna show historical... Logging historical data and also configuring alarms. So I'm gonna do a couple of other settings here in the gateway. There's a lot of different areas of configuration. I'm gonna go into our alarming journal and I'm gonna set up alarm history, so I'm gonna go to... And I wanna go to a database, but in order to do that, I've gotta have a database to configured, and there's, the sample gives us a SQLite device that we could use, but I wanna connect to an external database, a real one, and for that, I'm gonna go to MySQL. And first and foremost what I'm gonna do is install the MySQL driver real quick, and we'll have that going, and then now I'll go to my connections and I'll create a connection to a MySQL database, so I'll call it MySQL, it's on my local machine. Actually, I'll just go to my IP address,, and the database is called Demo, and I'll put my credentials in to get connected, and that's it, I should have a valid connection, all you need is a blank database, we'll create all the tables we'll manage and log all that data for you.

So now, I can go in and create my journal profile, I'm gonna log alarm history to that database, so I'm gonna call it Journal and go to that MySQL database, get that configured. We can do the same thing for auditing, if you wanna audit everything that's happening in Ignition, you can create an audit profile and simply go there, call it audit, that logs that MySQL database as well, and I can use that audit profile with various things in Ignition. Now, I also wanna show certain security aspects. We're gonna log in to our application to our clients rather than making it public, we're gonna have people log in and we wanna tie into our federated identity provider. And so for that, I might go here to identity providers, I wanna use my corporate credentials. So we're gonna connect to an identity provider. In my case, I'm gonna connect to Okta, so it's an OpenID Connect, I'm gonna call it Okta. And that, whatever IDP you're connected to, they have, you can ask your IT Department or whoever is in charge of that to give you the URL for the metadata. I'm gonna import that, so that's now down here, and of course, I've gotta put in my specific client ID and secret so that I can have this being connected.

And I'm gonna... I need to get the profile for this, so I'm gonna use the profile scope, and that's it. I'm gonna go ahead and save it. I now have a connection to OpenID, or to Okta through OpenID Connect. And what I wanna do with it real quick is when the username comes back, the username is actually gonna be a user and then profile, it's gonna be the name property. And we can map all sorts of things that come back from the identity provider to Ignition user, but now I'm ready to go. And if I wanted to test this out, I can go here and test a login, but we'll come back and do that in just a bit. So I set up now PLC connection, set up a database connection for login history, I have a journal alarm history profile, I have an audit history profile. We're now really ready to start designing a project, and for that, we're gonna get the Designer. Up at the top right there's a 'Get Designer' link, and this is where you can download the Designer launcher, and we can get connected to one or more Ignition servers that we may have.

Now, I already have that installed on my machine, the launcher, so I'm gonna go ahead and launch it, and I have a connection to my local Ignition here already, but you could simply add it to any... Add a connection to any one of your servers you may have, again, by its IP address there. I'm gonna go ahead and open the Designer, the Designer is included with the system. It supports concurrent development. We can have multiple people working on the same project at the same time, really being able to deliver a full solution, leveraging all the different functions and modules that Ignition can provide. And we'll show in a little bit later how we can extend that functionality, we can add a module in and use that to our advantage.

So I'm gonna log into my Designer, I'm gonna create a new project, there's that Quick Start that was already there. I'm gonna create a brand new one though, I'm gonna call it Demo, and I will use our Okta identity provider. I'll use the MySQL database, and I'll start with one of our project templates. It has some navigation and some screens already built out for me, so I'm gonna go ahead and create that project, and now my Designer is going to open up here. And from here, it's gonna open up on my other monitor, and I'll move it over here. But this is our... Again, our single Designer to do all of our development, we're going to create tags, we're gonna create screens, we can set up history, alarming, we can set up reports, alarm notification pipelines, all sorts of things.

Okay, so it opened up over here for us. That's great. A couple of things I wanna do real quick. I'm gonna set this doc here to be auto, this is something we need to update with our project, and I also... For mobile-responsive design, there's this alarm screen, and this has a component that needs to be set to allow the mobile-responsive enable, so I just wanna do that real quick, so don't worry about those pieces. But now I have my project ready to go. This is a skeleton project, this is something that's already been ready to go, so we could launch this and we can play around with it. And if I go up here to tools, I go to “launch session” and I go over here and you can see that there's a direct link to this project, and I'm in. There's the... There it is, there's the home section charts, alarms. I can see the different screens that are provided by the skeleton project. Now, you'll notice that I didn't have to log in to that project. But I did connect to the Okta, and I want that to be a part of this.

So what we're gonna do is go back in the Designer, and I'm gonna set up a property, the permission for this project. I'm gonna make it where it'll have to be authenticated in order for us to see that project. I wanna have more security on it, so if I save that and now come in to launch the session, you'll see that I have to log in. And when I do that, I'm gonna continue, it's gonna bring me over to Okta, and this has single sign on already enabled for me, and it will send a push notification to my phone, so I'm gonna go ahead and do that, and I'm gonna say, "Yep, that's me," I just got it on my phone, and now it'll allow me to log in to that application, and I'm now this Ignition user up here, and I'm ready to go. So now I have a secure login to my application, and we're now gonna... We're gonna customize, we're gonna build this out, make this and do more with this project.

But just to kinda give you a sense of the ease of development to deployment, if I go to my home screen here, I can see there is the label that I've got. I'm gonna take these labels, I'm gonna delete them, and I'm gonna move this down a little bit here and just press save. You'll notice that when I press save, we push that out. I can have hundreds of people looking at this application at the same time. When we make those changes, whether it's from a development environment and push it to our production, or whether we make it a change to production directly, those changes will propagate out, you don't have to worry about going to walk around the client's stations, it's instantly available. So it's very simple, we'll manage everything from that server, one place to install it, to back it up, to license it, one place to do all the management. And it... Really, it just makes it very, very easy to scale out some systems and again, to get data to more people.

Now we're gonna do something a little bit more fun, and that is we're gonna create some tags, and we're gonna build out some screens with this. The first thing that I wanna do is go over here to our tag browser, and I'm gonna go and browse our devices, and you'll see that I got connected earlier to a MicroLogix. Yep, there's all the tags that are coming to MicroLogix, there's my dairy refrigeration tags, and then there's my CompactLogix with all of their name tags that we can bring, and I'll come back to that CompactLogix in a moment. But I'm gonna take all the refrigeration tags and bring them over here. I'm gonna create a new folder, you can have any hierarchy you want. I'm gonna call this folder MicroLogix, and I'm gonna take the N7F8, and we're gonna put those into the MicroLogix folder there. And then I'm gonna anticipate... Well we'll just... Actually, I'll just create these two here, and we're good to go, press okay, now these tags are configured. If I expand it, you'll see the live values of these tags, so if I look at the MicroLogix there is all the tags from that PLC and by default, we're pulling these things at a one-second rate, but our Designer is live, we can see what's happening before we go into the run time. And really, I can start using these tags. I can put them on screens and historize and so on.

There's a lot of configuration that's here within these tags, so I could set up scaling, engineering units, alarming, scripting, history, all sorts of things that can be configured on that. So let's do something real quick, let's take all of these refrigeration tags, let's edit them and let's log history, turn on history, say "Yes," go into our MySQL database. Now, these tags are being logged. In particular though these pump and valve, I'm gonna set these to a discrete mode for the deadband because they are just steps. I wanna... They're just gonna zero, one, two, the three values. So now these tags are logging, simple to get those in the history. Same thing is for doing alarms, it's very easy to configure alarms. I could go on the pump, configure an alarm, I could have one or more, I'm gonna call this a fault and this is gonna be a pump fault.

And I'm gonna have this go into alarm when the value is equal to two. So we'll get that configured. There I've got a pump fault, let's go on my valve. We'll do the same thing on the valve, I'll call this one fault as well. But it will be what's displayed is the valve fault. And this will be when the value goes to two. And again, we put some notes in… Here are some notes for when that goes active, we can see those notes on the screen. So there we go, I've got Allow Alarms configured on these tags. And the simulation project, the Quick Start project has a bunch of alarms configured too, that we can use. Now, these tags are all ready to go. Now, the tags we've built so far are just kind of straight tags from PLCs. It's possible that we can actually leverage UDTs and instances where we can build objects and use those objects and have them defined in one place. My ControlLogix PLC, it has that notion. If I look at the CompactLogix, if I expand that, I've got tanks in here. Every tank is the same, and I've got a whole bunch of different tanks and I wanna build that object. Well, one thing that's really cool is, from using RSLogix 5000 we can export the program to an L5K file and that basically has all those objects defined, and we can bring that into Ignition.

There is a great resource that we have on our Exchange, called the Logics L5K Parser. And this allows us to take the L5K file, parse it and build those objects for us very quickly. So, I'm gonna import that in from the Exchange. The Exchange is an online repository of things that people have built out that they've shared with the Ignition community. And so, I can leverage what other people have created and used, and bring it into my project. So I'm gonna import this L5K Parser and we're gonna go over to it. It's a little bit smaller here. And so I'm gonna go and browse for my CompactLogix L5K file that I've already exported, and there we go. Here's all the UDT definitions, here's all of our tags. My PLC that I created was called CompactLogix, that was the name of it. I'm gonna export all the UDTs, I'll save those UDTs. I'm going to then export only a certain set of tags. We're gonna go to our tank 100, tank 101, 102, 103. Let's do those four right now. I'll export these, you could export everything if you wanted to. But now, I kind of created these JSON files which are... We can import export tags through any format we want. Through this JSON format.

And so, I'm gonna create a folder over here. I'm gonna call this Tanks, and I'm gonna go to my UDT definitions, I'll import a UDT which is our UDTs that we got from this L5Ks. All the UDTs my ControlLogix, there's my tank. And then we go to my tanks, I'm gonna import the tags which is all four of those tanks. And you can see that they are now working, pointing to those four tanks references in that PLC, and we just use that parser to help generate that very quickly so, I'll have to do that manually. The great thing about using a UDT definition, if I go over here to the UDT and I say, all these tags I wanna historize them, I do it on the definition in one place. We're gonna go to our MySQL database, and that's it. Come back over here, all of these tags are now being logged. So let's expand it, you see those tags have little history icons to the right. Any configuration we do in there, if I add an additional tank to this, and so it will be really easy for me if I wanted to create another one. I'll create Tank 104 and I'll specify the parameter to be tank 104 in that PLC. And now I'm going to take 104 and all the history, everything's set up for me, it's done.

So, very, very simple to build out our tags, add history, add alarming, have these values that we can bring on the screens. That brings me to the next piece that I wanna do, is I want to build a real-time status to control screen. I wanna show this data out there for people. So on this home screen, we'll use our home screen as our real-time status control screen. I can take these tags, and I go to refrigeration for this. I'm gonna take this fill level tag, drag it over here as a cylindrical tank. Now, we could take tags or we could drag it on the screen as different components. This helps us get started with Perspective very quickly, building out our screens. We could also go over here to the right, on our components list so I could search for a label, and put a label next to this. Let's move on and call this 'Discharge Temperature' and I'll make it a little bigger here and we'll just put these side by side. I'll take these two things, I'll duplicate them. Just doing quick duplication and on here, I'll call this one 'Inlet Temperature', I'll call this one 'Suction Temperature' and what we could do is simply take our tag, drag it over to the LED for the inlet, drag it over for the LED for the suction pressure.

Those are all set up. Take these two, drag them over, duplicate them, put them over here, line these back up and we'll now say this is 'Discharge Pressure' and then we'll do this one as 'Inlet Pressure'. Same thing. I'll take the pressure tag and drag it over there, and the pressure inlet, drag it over there and I've just now built out that pretty quickly. I got my tank. I wanna see the process though, like a little P&ID. So, we have symbols in Perspective we can use. I'm gonna take a pump, put a pump on the screen, and I don't wanna see the actual value of the bottom there, I just want to see the pumps. I'm gonna hide that value. Do the same thing for a valve, wanna put a valve on here and I don't want to see that value at the bottom either, and then I'm gonna put a vessel to the right, make the vessel a little bit bigger.

And I wanna hook all these things together, and hook them up to the tag. So pump, I'm gonna take my pump tag, drag it over to the state. The state is a string and the pump is an integer 0,1,2, so I wanna map that from a number to that state. So 0,1,2, 0 is gonna be stopped, 1 is gonna be running and 2 is gonna be, in my case, faulted. I have that state now set up on the pump, I'm gonna copy that same binding over to my valve state, paste that binding. I'm gonna just change tag now, change that to valve so we can kind of rapidly create this out. And then on the vessel, I want that to be linked to the tag. I'm taking the mixer level and drag it over to the value, so I have that vessel setup. And a lot of times you wanna use some high-performance HMI techniques. We have a lot of different components for high performance HMI. I'm not necessarily building the screen that way, but it's easy to do. I'm just gonna take this moving analog indicator, make it a little bit smaller here, move it to the right of that vessel, and I wanna take that mixer level, drag it over to the process value, and I'll set my desired high to 80, and my desired low to 20, so now it's within the range that I want it to be in.

And so there we go. So I've got these different components. I wanna hook them up with pipes. So we have a great piping tool built into Perspective. And so I can take this tank, drag this pipe here and just hook it up to that pump, drag it over, hook it up to our valve, and from the valve, I'm gonna drag it over to our vessel, and there we go. I now have a little process screen set up, ready to go and we could deploy this out. And so let's go ahead and move it down here, and I'll bring over my application again, so we can see this. Let's save it. And there you go. Now, I've got that update on the screen. Now, all this is control or status right now, you probably wanna do control as well, and so we're gonna do something simple, and we're gonna put a multi-state button here, like a hand-off auto button, I'll make it a row here, go like this, and the states are gonna be... 2 has faulted, I'm gonna change the states, so I'm just modifying these properties to reflect what I want them to be. So 0 has stopped and 1 is running, and what we're gonna do is, of course, link them up to their proper tags.

So I'm gonna link this to the pump tag, just drag it over to the control property, to the indicator property, I'll make that then bi-directional, so we can write back, and I'll do the same thing over here, just duplicate it for the valve and we're gonna just drag the valve over to the same properties, and I'll make that bi-directional, so now I've got control on here. So if I go back to my application, I can turn us into a fault, which would make it go into an alarm condition. I can go back to stop, so we can go this one we're running, you can see a change in those states within this very easily, so we can do real-time status and control with it. Now, we have already set up alarms, we've set up history, and you'll notice that at the top right, I have this little status, there's one alarm active right now, if I were to make this valve go into a fault state, I should have two alarms active, there it is. If I go to my alarm screen, I can see, there's my valve faults and I can go look at the details of that with the notes that are there, see everything about that valve fault that's happening.

It's a medium priority alarm, or sorry, a low priority alarm there, but if I wanna click on it and then go down, acknowledge it, I can acknowledge it, we can see what's happening and all that is being historized as well. We can see all these states, we know what's happening with these alarms. We'll come back to that in just a bit here. So we also have logged histories. So I can go to our charts and I can see that in the MySQL database, I have all of my tanks are logging all of that data, and here I've got my other values that are being logged. So I can take the skill level, mixer level, and I'll add these, I'll take that, add the mixer and I'll add the pump, put them over here and I'll look at the last eight minutes, I don't have that much data logged so far, so there we go. But then maybe I wanna put the... Have a second plot. And that will add that plot to it, and we'll make the first one three times the weight. So what I'm gonna do is make that second plot, we're gonna put the pump into plot one and we're gonna make it a step, because that is what it is, right? It's a discrete value.

And so now I'm configuring this, and so there I've got my trends and I can see things, I can zoom in, I can add annotations to charts, we can see what the values are at given times. We can do ranges, we can see statistics on the ranges, we can easily go in and add annotations like what happened here, some issue, and I could store it historically for that history, so really simple, you see all these things are really powerful, really easy to get configured there. Now, I've got a real system, a full system built out, real-time status control, history and alarming, but I want to make sure this is mobile-friendly, and if I'm on a mobile device, that I can see this data. And this screen here, this is not too busy, but I've seen a lot of process screens that are quite detailed.

And on a mobile device, you want to be able to make it show better and show in a different form, and so that's what I wanna do now, is show you how we can do some mobile-responsive design, very, very easily within this, and it will show the effect afterwards, what it looks like in desktop form, and what it looks like in a mobile form. And so I'm gonna take this, everything we've done with this, this is great, I'm gonna use it, but now I'm gonna add... In Ignition, we have... In Perspective, we have various containers, and the containers are the different ways we can do layouts. And there's a container type we have called Breakpoint, and the Breakpoint allows us to specify a size, which by default is 640 here, and when I'm on the large size, I want it to be this container here, which is our process.

If I'm on the small size though, I want it to be a different form. And so what I'm gonna do is, I'm gonna create another screen or another template that I can use multiple times. So I'm gonna show the idea of parameterization, just like UDTs and tags, I'm gonna show parameterization on our screens. I'm gonna call this Process Value and it's gonna be a certain layout, and we'll make this height here 40. And what this is gonna do is, I'm gonna do... It's gonna be a row, and I'm gonna have some parameters we pass into it, so I'm gonna have a parameter for the label, so for example, if it was mixer level, and then have a parameter for which tag I wanna point to. I wanna do indirection on the tag pass. So let's say I take this mixer level, I copy that path and I put it over here to the tag path, I wanna show a label on the screen first that is going to be certain size, but it's gonna reference, I'm gonna link that label, the text to the label that's being passed in, so it'll be a mixer level. I'm gonna put LED display, that is gonna be showing the value of this, so I want that to be 140 pixels there. And I'm gonna bind the value to a tag, but I'm gonna do indirection.

Indirection allows us to use parameters to point to various tags, so we can take advantage of what we have. And I'm gonna point to... Or bring in the tag path that's passed in, in which case right now it's gonna link to that mixer value. And then lastly, what we're gonna do is add a sparkline chart, which is a nice way to see history of a particular pen. And we're going to... Oops. Change this to an object. Okay. This is gonna allow me to specify the path that I wanna bring in. You'll see I'm gonna actually have it... Look at history of this. I'm gonna bind the points of the sparkline to tag history, and look at the last 10 minutes of data. And I'm gonna pull it every 60 seconds, I want it to update every 60 seconds. And I want it to be referenced, the tags that I'm passing in there, which in this case is just one tag. But there we go, I now have this row set up. Though, I can point this template to any tag and any label that I want, and it would show that data.

The reason I went through that trouble is that, when I'm on the smaller display I want to be able to show the data in a different form. We're gonna take a Flex Repeater that we have, and I'm gonna use that process value, and we're gonna add a couple instances here. So I'm gonna sync these params. I got my... There's my mixer level, I'm gonna duplicate that a couple of times. And we're gonna get mixer level, we're going to get fill level, and I'm gonna take the fill level tag, copy that path, put it over here. We're gonna do discharge temperature. And get the discharge temperature, copy that path over here. And then I'll get the... How about the... The inlet temperature... Call it inlet. And then we'll duplicate one more, why not? And this is gonna be the suction temperature, and we'll get that over there. What you're not seeing right now, is that they're all there, but I need to do this as a column. And then I'm gonna put a little bit of a padding between them, so right in between... Right below it, I'll put some padding. And so now I've got this view.

I'm just showing the process value as a different form. If I come back and look at my application, if I am on a mobile device... Here, I'm on a desktop, and I can see the screen in the desktop form. If I go to a mobile device, you're gonna see that it switches to a different view of that. Now, I can see this as vertical form. I get this data, and I could add as much of this as I want. We could shrink down the process value too, the P&ID. But ultimately, I might wanna see it in a different form like this. So you have lots of options for how you could do mobile-responsive design. And every part of the application now is done that way. Here's my chart, I can go in, select a tag I'm interested in, add it, see that data easily, if I look at the last eight minutes. There we go. If I wanna go to my alarm, my alarm is all the cards for all the alarms that are happening. So it's very... Now very easy, no matter where I'm at, to look at this data.

Alright, so I have a couple more things that I wanna show. We did create these tanks here. And what I wanna show is, the same kind of thing. If I build a tank template, so basically I'm gonna have a property for, again, the tag path, which is gonna be a reference to one of our tanks. I'm gonna build something, make the tank a little bit smaller here. I'm gonna add a style around this, so I'll set the background of this to white, and I'll make a border, a solid border around it. And we'll do it with... Nice gray border, and we'll do a radius around there, so it's nice rounded corners. And what we're gonna do is put a label here at the top, and I want the label to show which tank I'm referencing. And actually, in the tank object, I have a tank number I can use, so I'm gonna bind this to a tag indirectly. I'm gonna use the tag path that I'm passing in, and I'm gonna go to the tank num tag that's inside of it.

I'm gonna add transform, and I'm gonna map that, or be able to put tank number and then whatever that tank number actually happens to be, so Tank 100. I'm gonna go and bring in a cylindrical tank, and we're gonna have that show the value. I'll be binding the value of this to tag indirectly again. And we're gonna choose, now inside of there, the level PV tag. I can type here. Here we go, level PV. It's gonna show the level, and then maybe I wanna have an LED display that's gonna show the temperature, so I'm gonna bind that one more time, one more binding, to indirect. And we're gonna choose that, to get a tag path passed in, and we're gonna go to temp PV. Okay. To make this look a little better, let's put a little bit of a label right above here that shows temp... Temperature. Alright, so there's my template that I built out. And what's cool about this is, I can actually... I made a UDT, a tank UDT. And I've got a bunch of them. I can easily say, "Hey, you know what? I want to... " UDT is special, so at tank one, I can drag and drop onto a screen, a tank, and it would know that it would create... This is the object I wanna create from that.

So there we go, I've set this up to drop a UDT on a screen, so let me just create another screen here, call it Tanks. And you'll see real easily, I can just drag a tank on the screen, and boom, there we go, Tank 100, Tank 101. And it's super easy to get that going and we can leverage these UDTs further. Now, just like with anything, with the Exchange, we have all sorts of power up there, there's a great resource we have on the Exchange called the Alarm Analysis Dashboard. So I have logged a lot of my alarms now to the database, and I wanna see an analysis of that, so I'm gonna go in my Designer, I'm gonna import the alarm analysis resource, and what we're gonna do then is I'm gonna kinda make a new page for this, we're gonna call this Analysis. And I'm gonna just drag that one that came from the Exchange right on the screen, and it's ready to go, we'll call this Alarm Analysis. And I'll have this be analytics for the icon. And there we go.

And maybe I'll do a little bit of a padding in here as well, just so that it's not scrunched up to the edge. And so then, now what we'll do is add it to our menu navigation, we have menu navigation in our application, I'm gonna add a new menu item, and this is gonna be /analysis, and we'll go Alarm Analysis and we'll make the icon be the analytic one. Oops, analytics. Here we go, so I've got that there. Now, I also wanna have this be URL-friendly, so I'm gonna create a URL for that analysis screen as well, which is that one. And so now, I'm ready to go, I've just added a new screen to my application. Let's go back into it. And over here, you see there's a new one called Alarm Analysis, click on that, and now I get my alarm history analysis of what's going on there. That would be super easy then to also be able to historize this or, sorry, notify people when these alarms occur.

I'm seeing how the alarms are working, I wanna notify someone through email, SMS, or voice when this happens, and so I wanna connect it up. In my case, let's do alarm or email, excuse me. We're gonna go and get that configured, so we can go into our configuration section, and I'm gonna set up an alarm notification profile. I'm gonna create a new one, we're gonna do email. There's email, SMS and voice, just gonna do email. And we're gonna go... I have an email server that I'm gonna go to mail, and 587. I have my own account here that I'm gonna use for an SMTP server, and that's it. I'm going to choose our audit profile that we got this. We can audit all that's happening through that, so I got email set up. Now what we do is we have to have users that we can send an email to, so I'm gonna go and add a user to this, and this is gonna be... It'll be Travis. And I'm gonna put an email address in here, which is the ignitiondemo@mailinator.com. I wanna send it to that. So I've added my user, then I can go over here and add an on-call roster, so we're gonna have a roster that can send to these two certain people on certain conditions.

So I'm gonna go manage this one, I'm gonna put Travis in that roster. And the last thing we gotta do is simply figure out how we wanna notify, and how we wanna set that up. So I'm gonna create a pipeline, and that's gonna be called my alarm pipeline or email pipeline. And I'll put a notification block in there quick and easy, we're gonna notify through email, and it's gonna come from alarms@ia.io, and we're gonna have it go to my roster. And there we go, that simple. Then on a particular tag, like my pump tag, let's say my pump alarm that I have, I'm gonna tell that alarm, you know what? I want you to go into the email pipeline when it becomes active, and notify that out. So let's do that and send it, and that's it.

Now, if I come over to my application, let me log back into this one. Send my push. I have over here, mailinator. I'm looking at that Ignition demo email. If I were to go and set my pump to a faulted state, there in my case, then that is gonna be sent out, and there we go, there's Ignition alarm notification, and I can see that at this time, alarm fault... Pump fault transitioned to active. You can change what you want that message to be, but that is as easy as it is to get notification out there. But I may wanna do more than that, maybe I wanna get data to the cloud, I want to leverage that data for all tags we have set up, all that data, I wanna bring it to the cloud. That's also really simple to do. We can leverage MQTT for that. If you remember the module stack that I showed earlier, we can plug in modules to add more functionality, and that's what we're gonna do here. We're gonna go to modules and we're gonna add... Install a module, and we're gonna choose our MQTT Transmission Module. This module allows us to take data and publish it to an MQTT broker, and I have a broker and an Ignition application in the cloud already set up for this. So you see over here, I've got this tag dashboard project.

This is another Exchange resource we have called the Perspective Tag Dashboard, and that just allows us to see the tags that are there. And right now, I don't have anything configured with MQTT, there's nothing in there yet. But, what we're gonna do is come to our local Ignition, MQTT Transmission’s now up and installed. I'm gonna go to settings for this, and I'm gonna go to servers. I would point it to my MQTT broker, so I'm gonna point it securely using SSL to my cloud broker. And that's it, come down here to save changes, and it should get connected. We should see this ready to go here, one of one. But it created an example transmitter... Instead of doing this, some example MQTT tags, I'm gonna use all the tags we have configured, everything that's in our system, all of our tags in our default provider, I'm gonna publish that up. And I'm gonna do that. I want it to go to... Be represented from Inductive Automation demo note and my demo device. And I'm going to save that. Now, all these tags are now being published up to the cloud.

And it's now available in that Dashboard, so if I come over here to my Dashboard and look at my MQTT Engine, go to Edge Nodes, I have the Inductive Automation Group, Demo Node, there is my Demo Device, there are all of my tags, they're now being published up, simple as that. I just have to point it to my cloud broker and I'm now looking at all this data, it's automatically discovered and usable. And it's also writable. If I wanna go edit this and change this to a value of one, I can do that, and you'll see that that gets reflected back here. My pump is one. If I go set it to... Back to stopped, got to my Tag Dashboard, you'll see that it's now zero. Set it to faulted, you're gonna see it go back to a value of two. Simple as that, we now have this data represented in the cloud, we could leverage that a lot further. If we wanna go straight and edit Lustre Azure, we could do the same thing in various services that are there.

So hopefully, you found this very informational demo of what's possible. If you guys wanna play around with this Cloud Dashboard, you can actually visit this QR code, I'll leave it up here just for a second. If you live up here, you can go straight to that Dashboard, see that Perspective project, and you can look at all the data that's being published from my machine up to the cloud and even interface with some of those values. So you can just scan that QR code on your phone or if you wanna do it on your browser, go into that URL right there, you can get right to that project that we have running in the cloud and see all the stuff that we just configured here today, that's being brought up there. I didn't bring the screens up there, it's just a generic Tag Dashboard, but I could have easily brought those screens up there as well, and used that.

Alright, so I'm now gonna come back over here. So again, thank you very much for watching the demo, hopefully it was insightful for you. We do have a lot of other great resources that you can go and visit. There's a lot of capabilities in Ignition, there's more that's possible. You can go to our Inductive University to learn all about Ignition. There's over 600 videos on how to do things in the product, from simple to more complex. There is the Ignition Exchange, which I leveraged today to bring in some of the resources that added more power to my project. You can visit that and see all the resources that are up there, that people have contributed. You can also apply the resources for your own private use that you've developed, or for your organization you've developed in Ignition. We have a great user manual, great documentation, you can learn more about Ignition. There's an awesome Online Forum where you can go ask questions and talk to peers in the community, as well as we have an Ideas Forum, where you can contribute and provide us feedback of what you'd like to see in the product, different features you'd like to see added from there.

We're now gonna go to our Q&A section. Question here is from John. He says, "Does Ignition support Phoenix Contact RFC 430?" So Ignition's driver set is the Alhambra Ethernet Suite, DNP3 Modbus, BACnet, Omron NJ, Omron CJ, Modbus TCP, Modbus RTU over TCP, and we have a couple of specific oil & gas drivers and a TCP Driver. So there's not a specific Phoenix Contact Driver. However, if that device supports Modbus, of course we can connect to it. Otherwise, we might have to look at a third-party OPC server for access to that data. Another question here, "Is it possible to use MQTT with a Service Bus, Qlik, RabbitMQ or Kafka?" Yes, there are ways you could do that, there are services that can go from MQTT and convert it over to other like Kafka, there's like Apache 95, various systems like that related to go around and do those kind of things. Another question is, "Does Ignition support IEC 61850?" That's a great question, because we're actually in the middle of development of that driver right now. We are actually developing two new drivers, a Mitsubishi MELSEC Driver and a IEC 61850 Driver that we're looking at going into Beta in this quarter, in Q1 of this year.

So we are very close to getting that driver out there for people to play around with. Let's see, there are some very specific questions around how some of the configuration works, and I'll point out in general that if you guys... You can reach out to our team, the Sales Engineering Team if you'd like any deep dives, you wanna get into deep dives of products, you wanna look at how things are done, we'll talk best practices, architecture, our team is here to help you. So please reach out to your Sales Rep or if you don't have one, reach out to Inductive Automation, we'll get one assigned, so that we can get on the phone and help you with all of your questions that you may have. Another question here is, "Is Ignition SCADA Software limited to process control or power systems as like complex power applications for distribution network?" No, so Ignition is not limited to any specific vertical. It is a product backing that crosses all verticals, has lots of functionality in there from different modules that we provide.

There's just so much that Ignition can do for you, and obviously, SCADA is a big part of it, but you could build really any kind of industrial application that you'd like, but it is definitely not limited. We have good case studies and examples out there from all sorts of industries. One more question here, it says, "Does Ignition SCADA and data point limitations or a number of points can be configured?" So that's a great question. The license does not limit you in any way. Ignition is completely unencumbered, unlicensed, or unlimited, because you... As many tags, screens, clients as you want. So that means that if you install Ignition on a big beefy server, you can actually get a lot more configured on there, more tags and more stuff, than if you install on a Raspberry Pi as an example, right? So the more beefy the server, the more you could do there. Now, we can also scale out systems that are really, really large because there is limitation on a single piece of hardware or how much we could do.

There's only so much you could configure on one computer. But if you have a big system, we can separate out our IO, our backend from the frontends, we can scale this out horizontally, we have systems out there with eight million tags and thousands of people looking at data that's spread across a few different Ignition servers rather than running on just a single one. But again, you buy... When you buy a license for Ignition, you're buying it for the modules that you need on there, so you could have servers specific to a certain kind of functionality. So that's a great question. We could talk more about that if you have more questions on that, with architecture discussions. Well, I apologize I was not able to get to all the questions that were here today, but thank you so much for coming. Before I go, I want to let you know that... Let everybody know that we are now taking project submissions for the Ignition Community Conference 2022 Discover Gallery.

This is the gallery that showcases various projects out there that you have built, and all the submissions are due by April 30th. So again, submissions are due by April 30th. The form will be available really soon, but mark that day on the calendar, because you wanna get yourself ready and get permission from your customer to be able to show your project, and you have an opportunity to win the coveted [Firebrand] Award from the Discover Gallery. So the Firebrand award winners, so definitely check it out. You can also go to the website and check out the previous year winners as well. If you have any questions about it, you could email us at icc@inductiveautomation.com. I also wanna mention that our next webinar is on February 24th, it's gonna be about Digital Transformation, that is a big trend, a big theme. So be sure to register and watch that in a couple of weeks. So then, stay connected to us by following us on social media and subscribing to our weekly news feed and monthly podcast. Bye for now, thank you so much for being here. Hopefully, you enjoyed it. Have a great rest of your day. Thank you.

Posted on February 3, 2022