PLC Math

This page assumes you understand the principles discussed on the Data Inside PLCs page.

The Basics

Addition, Subtraction, Multiplication and Division are what you’d expect.  If you haven’t done math in a programming language before, there are a couple of things you should be aware of.

  • Overflow:  Integers and Floating Point Numbers have size limits.  When you go beyond their size you’ll cause yourself problems.
    Example: 8 bit Unsigned Int with value 255 in bits looks like 11111111. If we add 1 to it we get 100000000. There isn’t storage for a 9’th bit, so we’re left with 00000000 or 0. So in this case 255 + 1 = 0
    Another Example: 8 bit Unsigned Int with value 0 in bits looks like 00000000. If we subtract 1 to it we get 11111111. So, we can get the opposite problem 0 – 1 = 255
  • Rounding:  Floating Point numbers aren’t perfect.  For this reason, you shouldn’t check to see if Floating point numbers are equal to a value, you should check to see if it’s within a range of numbers. 
    Example: 2 * 3 performed with Floating Point numbers may not result in exactly 6.  
    It could be 5.9999999999998 or something similar. So instead of asking is Example = 6, ask is Example greater than 5.9 and less than 6.1. Don’t worry about how to ask these questions, we’ll talk about that later in the tutorial

Boolean Math

Some programming packages allow bit manipulation by using Boolean Math.  The main operations are:

OR (symbol ‘|’ ):  A = B | C.  If either B is 1 or C is 1, then A is 1.  If both B and C are 0, then A is 0.

AND (symbol ‘&’): A = B & C.  If both B and C are 1, then A is 1.  If either B of C are 0, then A is 0.

Exclusive OR (symbol ‘⊕’):  A = B ⊕ C.  If either B is 1 or C is 1, but not both, then A is 1.  If both B and C are 1, or both B and C are 0 then A is 0.

Boolean Math can be performed on Integers.  
Examples using two Unsigned 8-bit Integers 229 (11100101 in binary), and 185 (10111001 in binary):