BRX PLC Numbering Systems and Addressing

The BRX PLC like all of the PLCs in the Do-More Series use strong data typing. This means that there are fixed memory structures to work with in your program. Errors will be displayed if you try to put the wrong type of value in the memory location. The data structures will automatically assist you in your automation system.
Memory can now be as flexible as you want and need. You can define and allocate all the data memory the way you want it up to specific maximums. As a system integrator you determine what best fits your automation framework.
We will be looking at the addressing and numbering systems in the BRX Series PLC. Let’s get started.

Previously in this BRX series PLC we have discussed:
System HardwareVideo
Unboxing – Video
Installing the SoftwareVideo
Establishing CommunicationVideo
Firmware Update – Video

When we go online to our BRX PLC or develop a new project and select the controller, the dashboard will show us a picture of our controller.

When we highlight the DI (Discrete Inputs) you will see the input number, address and filter value.

Input 0 (X0): 25 Hz
Similarly, when we highlight the DO (Discrete Outputs) you will see the output I/O Mapping (Y0 – Y7)

Highlight the AIO (Analog Input/Output) and it will show you the addressing for the analog signals.

Another way to view the I/O addresses is to use the system configuration window.

Here you can display the addresses and change the features of the I/O such as filters, Interrupts and High Speed I/O.

As mentioned before the BRX PLC uses strong data typing. These are called Data Blocks in the Do-More Controller. We have a number of built-in data blocks that are pre-configured, but we may change through the memory configuration window.
The following tables will give an overview of the data block areas.

System Status Bits / Values and Date / Time Structure
Note: System areas are not configurable. (Fixed)

Data Block Data Type Default Range Description
ST Bit ST0 – ST1023 System Assigned Bits – Clock Flags etc.
DST DWord DST0-DST511 System Assigned DWords – Scan Times etc.
SDT Date / Time Structure SDT0 – SDT7 System Assigned Date / Time locations
UDT Date / Time Structure UDT0 – UDT31 User Date / Time locations

Physical Inputs and Outputs

Data Block Data Type Default Range Description
X Bit X0 – X2047 Discrete Inputs
Y Bit Y0 – Y2047 Discrete Outputs
WX Signed Word WX0 – WX255 Analog Inputs (-32768 to 32767)
WY Signed Word WY0 – WY255 Analog Outputs (-32768 to 32767)
RX Real (floating point) RX0 – RX255 Scaled Analog Inputs (-3.4e+038 to +3.4e+038)
RY Real (floating point) RY0 – RY255 Scaled Analog Outputs (-3.4e+038 to +3.4e+038)

Internal Bits and Numeric Values

Data Block Data Type Default Range Description
C Bit C0 – C2047 Control Relays
V Unsigned Word V0 – V4095 16 Bit Unsigned registers (0 to 65535)
N Signed Word N0 – N4095 16 Bit Signed registers (-32768  to 32767)
D Signed  DWord D0 – D4095 32 Bit Signed registers (-2147483648 to 2147483647)
R Real (floating point) R0 – R4095 32 Bit Real registers (-3.4e+038 to +3.4e+038)

Timers and Counters / Strings

Data Block Data Type Default Range Description
T Timer Structure T0 – T255 Timers
CT Counter Structure CT0 – CT255 Counters
SL String SL0 – SL63 Long Strings – 256 characters each
SS String SS0 – SS127 Short Strings – 64 characters each

Communications – Peerlink / KSequence Client(Master) / Modbus Client(Master)

Data Block Data Type Default Range Description
PL Unsigned Word PL0 – PL255 Used to share data with PLC’s (Peerlink)
PL Peerlink Structure PL – Header
DLX Bit DLX0 – DLX777 KSequence – Octal – Referenced by ERM modules
DLY Bit DLY0 – DLY777 KSequence – Octal – Referenced by ERM modules
DLC Bit DLC0 – DLC777 KSequence – Octal – Referenced by ERM modules
DLV Unsigned Word DLV0 – DLV3777 KSequence – Octal – Referenced by ERM modules
MI Bit MI1 – MI1023 Modbus – Numbered in decimal
MC Unsigned Word MC1 – MC1023 Modbus – Numbered in decimal
MIR Bit MIR1 – MIR2047 Modbus – Numbered in decimal
MHR Unsigned Word MHR1 – MHR2047 Modbus – Numbered in decimal

In the BRX Do-More Controller there are three types of casting.

Extraction casts will isolate a bit, byte or word from a larger element.

Access Size Syntax Range Description
Bit :# # = 0 to 7 (Bytes), 0-15 (Words), 0 to 31 (DWords) Isolates a Bit from a Byte, Word, or DWord element
Byte :B# # = 0 to 1 (Words), 0 to 3 (DWords) Isolates a Byte from a Word or DWord element
Word :W# # = 0 to 1 (DWords) Isolates a Word from a DWord element

Aggregation casts will group multiple elements into a larger element.

Access Size Syntax Description
Byte :B Combines 8 bits into a Byte
Word :W Combines 16 bits or 2 Bytes into a Word
DWord : D Combines 32 bits, 4 Bytes, or 2 Words into a DWord

Format casts will reinterpret the format of data in the element.

Format Syntax Description
Unsigned Integer :U Reinterprets data as Unsigned Integer
Signed Integer :S Reinterprets data as Signed Integer
Real :R Reinterprets data as Floating Point

Cast Builder
The Do-More Designer software has a built-in cast builder that will help you in casing different elements. This is done by the Element Browser window. You can get to the Element Browser window by the main menu. Search | Element Browser… The short cut key is F9.

Hit the Show Cast-Builder button to show the cast builder.

Let’s select the source element as V0. The picture above will automatically show you that V0 is a unsigned word. We will now select under the cast builder size (#) – Bit and under the offset 3. This means that we want the third bit in V0.

The result V0:3 specify the bit that we are looking for in the word.
Now let’s take the same word and cast it as a DWord Real value. This means that our instruction will use V0 and V1.

Our resulting cast is V0:RD.

Indirect Addressing
Indirect addressing allows the memory addressed used by an instruction to be varied so that it can point to more than one location when running.
All of the data blocks in the CPU can be used as arrays. This includes the ones that you can define yourself. The array index must be in the range of 0 to 65535 and must be stored in the V memory location.
In this example we are using V0 as the pointer in the array. Its value ranges from 1 to 6. We are using the instruction Move V[V0] to V100.

The following post have further information on indirect addressing:

Creating Data Blocks (Tables)
Creating and modifying data blocks can be accomplished by the system configuration window. Main menu PLC | System Configuration… You can also hit the Configure symbol on the toolbar.

Lets edit the C block of memory. Double click on the C block (#9) or click and select Edit Memory Block.

You can see the parameters for this block of memory. Lets change the size of the block to 4095 and make them non-memory retentive.

Once the parameters are changed select OK to save your configuration.

Our modification of our memory block is complete.
To create a new memory block in our BRX controller, select the Add Memory Block button on the system configuration window.

We can now put in the parameters that we want for our new memory block.
Name: DM
Data Type: Unsigned Word
Block Size: 2048
Entire Block Retentive – When power is removed from the PLC or the mode of the PLC changes from Run to Program, the information is retained.

We can now see our new block on the system configuration window.

Changing and adding memory blocks is a great feature on this new BRX series PLC.

You can watch the video below to see the different numbering systems and addressing on the BRX Series PLC.

BRX Series PLC from Automation Direct – Power to deliver
Overview Link (Configure and purchase a system)
Manuals and Product Inserts (Installation and Setup Instruction)
Do-More Designer Software v2.0.3 (Free Download Link) – The software will contain all of the instruction sets and help files for the BRX Series PLC.

Next time we will look at our first program using the BRX PLC.

Watch on YouTube : BRX PLC Numbering Systems and Addressing
If you have any questions or need further information please contact me.
Thank you,

If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.

Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.

2 thoughts on “BRX PLC Numbering Systems and Addressing”

  1. Hi,

    In the “Aggregation Casts” table, the third entry in the “syntax” column displays as an emoji (on firefox 67 and chrome 74 on windows 10).

    Your website is an excellent resource for PLC programming. Thanks.

    1. Hi David,
      Thank you for the comment and for picking up that error.
      I think that I have fixed this issue with the emoji showing up with :D. I put a space between the characters. : D

Leave a Reply

Your email address will not be published. Required fields are marked *