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.

‘now we know how to count in octal’, hmmm…. that was a confusing ‘lesson’ in how to count octal for a guy who’s been doing it for two years! Especially the comment on how ‘8 and 9 are not valid in octal’.

Perhaps it would be better to say that in decimal, each column represents a power of ten: the first column is 10^0 (i.e. 1) (hence why it’s called the units column), the next larger column is 10^1 and so on, so that 10 is one lots of ten to the power 1 and 0 lots of 10 to the power 0, that is, just ten.

In octal, rather than powers of 10, you use powers of 8, so that 10 (when described in octal) is one lot of eight to the power 1 and 0 lots of eight to the power 0 (= 8 in decimal). To clarify, this means that 8 in octal, or 9 for that matter, would not be valid, becuase 8 units would become one times 8^1, so ’10’ in octal, and 9 would be one times 8^1 and one times 8^0: ’11’. Finally, just so you know what people are talking about, if you wanted to say the number nine in octal, you would say ‘one-one octal’, and the number eight would be ‘one-zero octal’. There, now you know the basis of octal counting.