If you are a new programmable logic controller (PLC) user, you will find that each PLC manufacturer has their own conventions on the use of numbers. PLCs store and manipulate numbers in binary form: ones and zeros. Numbers typically represent a size or amount of something. In PLCs, numbers are referred to as registers.

Control4 Home Automation

PLCs offer a fixed amount of registers, depending on the model and configuration. Most modular PLC registers are counted in octal. Its easier for PLCs to count in groups of eight then ten, because eight is an even power of 2.

Octal means simply counting in groups of eight things at a time. In the figure below there are sixteen circles. The first eight circles in decimal format is ‘8’, but in octal it is ’10’ (8 and 9 are not valid in octal). In octal ’10’ means one group of eight circles.

The second eight circles in decimal format is ’16’, but in octal it is ’20’. Don’t say “twenty”, say “two-zero octal”. This makes a clear distinction between number systems. The number zero is important to a PLC, because the PLC starts counting at zero.

Now that we know how to count in octal, we now have to learn how to use octal numbers to access PLC registers. For example, ‘1005’ is a valid address, while ‘1008’ is not valid.

Each data register in one data word wide, meaning 16 bits (ones and zeros). The least significant bit (LSB) will be on the right, the most significant bit (MSB) on the left. The word ‘significant’ refers to the relative binary weighting of the bits.

Register data is a 16-bit binary, but we rarely program the data registers one bit at a time. The register address is a storage box, it does not convert or move the data on its own. The CPU instruction set accesses data registers of the PLC using octal addresses.