Inductive automation offers a great free learning system called "Inductive University"
This is the default entry point into Ignition for many people. However there is one recommendation I would make to anyone starting out with Ignition: don't just go through the videos and listen. Instead, have some real hardware you can work with to make it more interesting and applicable.
Some people may be lucky enough to have high end PLC's available to them (and the licensed software needed to program them) but unless its through work, most people will not. If you really want to work with a PLC, Automation direct offers a great PLC for working at home:
These will still cost about $150-200 dollars once all is said and done (you might find one cheaper on eBay or craigslist, but they're quite popular so probably not).
Here I will show a much less expensive alternative that lets you connect a real device to Ignition via Modbus TCP which is a very useful protocol used in every facility we integrate at.
ESP32 Feather ~ $20
Feather Relay ~$10
So for a total cost shipped to your house probably around $35, its an inexpensive way to have a real device to work with. You don't really need the relay but if you have one you can do actual control of anything that is powered by single phase 110VAC. There are many versions of the ESP32 feather board, including S2 and S3 which allow you to program in Circuit Python which is super cool. The example below will be written in C++ using the Arduino IDE.
Code
This example sets up one single coil to control the relay. This can easily be expanded on using "Hreg" to setup and write to and/or read from holding registers. For example you could add a LM34 or LM36 temperature sensor and log the data with Ignition using SQLite DB.
#include <WiFi.h>
#include <ModbusIP_ESP8266.h>
//Wifi Crednetials
char ssid[] = "Network Name";
char pass[] = "Password";
ModbusIP modbusTCPServer;
//Modbus coil mapping
const int modAddOnOff = 0X00;
//Program global variables
int onOff; //0 = off, 1 = on
void setup() {
Serial.begin(9600);
while (!Serial);
connectToWiFi();
pinMode(LED_BUILTIN, OUTPUT);
//Set this device as a server (slave)
//Declare modbus coils and holding registers
modbusTCPServer.slave(502);
modbusTCPServer.addCoil(0x00, 0);
}
void loop() {
modbusTCPServer.task();
onOff = modbusTCPServer.Coil(modAddOnOff);
digitalWrite(LED_BUILTIN, onOff);
}
void connectToWiFi(){
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
Then once the board has been programmed, you can grab the IP address from the serial monitor. An alternative to this is to hardcode the IP address in the program but you'll need to ensure its not used by any other device:
Device Settings
Now the device is on your local home network; setup a Modbus TCP Device:
If all is well, you will see connected:
OPC Tag Addressing
Ignition Modbus Addressing Guide
In order to control the coil or bit that turns the relay on and off, setup a single Boolean OPC tag. Addressing to the coil is done like this:
At this point you can already start to use the power of Ignition which allows you to control data and devices with scripting. Here is a quick script that will toggle the relay on and off:
path = "[default]Adafruit ESP32 Feather/control"
system.tag.write(path, not system.tag.read(path).value)
But you don't want to be limited to the designer, so its time to make a simple view. Below is a flex container with a total switch in it. The switch is bi-directionally bound to the control tag and the display text shows what state the coil is in, on or off:
On your desktop machine you can then access the view at the following:
http://localhost:8088/data/perspective/client/Test
But that is not what you want. You want to control the coil from your mobile device. To do that, simply replace local host with the IP address of your machine. You can also do this using the perspective app, but it is not required, you can do it from any browser.
Firewall Settings
If you find that you cannot access the view from your phone, you may need to setup incoming and outgoing firewall rules that allow traffic on port 8088, for example:
Finally you are able to control the relay state from your mobile device:
Cheers,
Nick