Python Scripting
About Python
While it is entirely possible to create a complete and powerful project in Ignition without writing a line of script, many designers will find that in order to complete projects with specific requirements, they need to learn at least a little Python. In our experience, most industrial projects involve lots of very complex and specific requirements.
The good news is that learning Python is easy and enjoyable. Python is one of the most beautiful programming languages we've ever encountered. It is very easy to read - even if you don't know it at all, you will probably be able to understand a basic Python script. It is frequently called "executable pseudocode". If you find yourself doing a lot of scripting, you may want to pick up a basic reference book about Python, or go through a simple online tutorial course.
This section is a short tutorial specifically for python, which should help get you started. It goes over all of the core concepts you will need for scripting in Ignition but then next section (Scripting in Ignition) goes over using Python directly inside Ignition.
- Python Variables, Datatypes, and Operators: Learn what a variable is and how to create it, what the various datatypes are, and what operators you can use on them.
- Conditions and Loops: Learn the common if/else type of statements, as well as loops.
- Functions: Learn about the built-in functions that can do complex work with a simple command, as well as user defined functions, which help compartmentalize the code.
- Libraries: Learn about our built-in system functions, as well as pulling in outside libraries.
Python or Jython?
You'll often hear Python referred to as "Jython" by advanced users of Ignition. Python is the language, Jython is the implementation of the language that we use. Most users of Python use the implementation called "CPython" - they just don't realize it. See http://en.wikipedia.org/wiki/Python_(programming_language)#Implementations.
One of the powerful things about using Jython is that your script has access to the entire Java standard library. In the Client, this will be Java 6 or above. When running under the Gateway, this will be Java 8 and above. For more information, see Accessing Java.
Many scripting users are blown away by their script's speed. We can't take credit for this - the Jython engine hot-compiles (compiles the code when it is run) your Jython code to Java bytecode, which means it runs natively in the JVM, which in turn can hot-compile it to machine code. It's fast.
Which Version of Python is Used?
Ignition uses Jython 2.5. Jython is the Python programming language implemented over the Java Virtual Machine. When looking at outside documentation, such as on www.python.org, verify that you are looking at the correct version.
Jython 2.5 allows us to use the standard functions and tools in Python 2.5, so if you want to look up something in the Python docs, make sure to use version 2.5 (https://docs.python.org/2/).
Scripting Basics
Python is very easy to learn, and with some understanding of its basic syntax, you can get started making your own scripts.
Hello World
Let's get right to everyone's favorite example, "Hello World." The following script will print out "Hello World" to the output console.
print "Hello World"
The print keyword is a handy tool in Python, allowing you to write text to the output console. This is useful for debugging your scripts. You can print multiple things by separating them with commas.
Variables
Variables are created by simply assigning a value to them. Variables do not need to be declared, because Python has a dynamic type system. That means Python figures out the type of the variable on the fly when the script is executed.
The following script would print out: 15
x=5
y=3
print x*y
Quotations
Python makes limited distinction between single and double quotes. As long as they are used consistently then there are few times when the type of quotation mark you use matters. Some of the rules are shown here:
print "This is my text" # Using double quotation marks
print 'This is my text' # Using single quotation marks
print "This is my text' # This will not work because python does not allow mixing the single and double quotation marks
print "My name is 'David'" # This will print: My name is 'David'
print 'My name is "David"' # This will print: My name is "David"
print 'My name is Seamus O\'Malley' # This will print: My name is Seamus O'Malley
Whitespace
Perhaps Python's most unique feature is logical blocks which are defined by an indentation in Python. A colon (:) starts a new block, and the next line must be indented (typically using a tab or 4 spaces). The block ends when the indentation level returns to the previous level. For example, the following will print out "5 4 3 2 1 Blast-off" with each value on a new line. The final print is not part of the while loop because it isn't indented.
countdown = 5
while countdown > 0:
print countdown
countdown = countdown - 1
print "Blast-off!"
Multi-Line Strings
You can start and end a section of comments with a triple quote (''' or """).
'''
This is a lot of text
that you want to show as multiple lines of
comments.
Script written by Professor X.
Jan 5, 1990
'''
print 'Hello world'
Comments
Python Comments
Watch the videoComments are a way to document your Python script. There are several ways to use comments, but the best advice we can give is to use them as much as possible! There are a few ways to make a comment in Python.
Individual Lines
You can start a line with a pound/hash (#) sign, or put one anywhere in a normal line of code.
# this is a comment
print 'Hello world' # this is also a valid comment
Blocks of Lines
While Python doesn't explicitly have a way to block comment (comment out multiple lines), multi-line strings are functionally similar.
Comment Many Lines with a Keyboard Shortcut
In Ignition, you can use the Ctrl-/ keyboard shortcut to comment several lines of code at once. Just highlight one or more lines of code and hold the Ctrl key and press "/". This will prepend all of the selected lines of code with the pound/hash (#) sign. Press Ctrl-/ again to remove the pound/hash sign.
Control Flow
Control Flow statements, that is the ifs and loops, make the language do things differently based on the various conditions. Python has all of the basic control flow statements that you'd expect from a programming language.
If and Else
An if statement allows you to check if a condition is true or not true. Depending on the condition, you can either execute a block of code, or do something else. Many of these can be chained together to determine under what conditions should certain code execute.
if condition == True:
print value1
For and While
Looping can be done with a for, which executes a block of code a set number of times, or a while, which executes a block of code until a certain condition is met. Both can be incredibly useful.
for item in myList:
print item