Productivity 1000 Series PLC AdvancedHMI Modbus TCP Ethernet Communication

Advanced HMI is a powerful, adaptable HMI/SCADA (Supervisory Control and Data Acquisition) development package that takes advantage of Visual Studio. There is no coding required and you can simply drag and drop items onto the page. The best thing is that the software is free. We will look at using AdvancedHMI with the Productivity 1000 Series PLC.

Our sample Productivity 1000 PLC program will display a digital panel meter and a gauge of a value in the PLC. Stop and start momentary pushbuttons on the HMI will allow this number to increase or stop. An indication will turn green when the number is increasing and red when it has stopped. The AdvancedHMI package will communicate Modbus TCP over Ethernet to the Productivity 1000 PLC. We will be able to monitor our process via the AdvancedHMI window. Let’s get started.

Previously in this Productivity 1000 series PLC we have discussed:
System HardwareVideo
Installing the SoftwareVideo
Establishing CommunicationVideo
First ProgramVideo
Documenting the ProgramVideo
Monitoring and Testing the ProgramVideo
Online Editing and Debug ModeVideo
Numbering Systems and Tag DatabaseVideo
Contact and Coil InstructionsVideo
Timer InstructionsVideo
Counter InstructionsVideo
Math InstructionsVideo
Data Handling Instructions Part 1Video
Data Handling Instructions Part 2Video
Array Functions Part 1Video
Array Functions Part 2Video
Array Functions Part 3Video
Program ControlVideo
Drum Sequencer InstructionsVideo
Data LoggerVideo
Web ServerVideo
Modbus RTU Serial CommunicationVideo
Modbus TCP Ethernet CommunicationVideo
Firmware UpdateVideo

Visual Studio Community 2017
A fully-featured, extensible, free IDE (Integrated Development Environment) for creating modern applications for Android, iOS, Windows, as well as web applications and cloud services. AdvancedHMI will run on this Visual Studio package. Download and install this from the link below.
Download Visual Studio Community 2017
Here is a post that will guide you in installing visual studio.

Download AdvancedHMI. The current version of the software is 3.99x.

Watch the video below to see AdvancedHMI in action with the Productivity 1000 PLC.

Productivity 1000 Series PLC – Modbus Address Map
The following table shows the Coil/Register numbers and the associated Productivity 1000 PLC address for Modbus that we will set up.

Coil/Register Numbers Data Addresses Type Productivity PLC Table Name
000001-000002 0000 to 0001 Read-Write MC1 to MC2 Discrete Output Coils
010001 0000 Read-Only Out1  Discrete Input Contacts
440001 0000 Read-Write MHR1  Holding Register

Note: The Productivity Series PLC allows us to specifiy the Modbus address to communicate. This is accomplished through the Tag Database in the Productivity Suite Software.

Productivity 1000 PLC Setup

The following program will be used in the PLC to display and control our incrementing value in register MHR1. The following named tags are assigned through the Tag Database window.

MC1 is our start input from AdvancedHMI
MC2 is our stop input form AdvancedHMI

Out1 is our output to our AdvancedHMI indicating we are incrementing

MHR1 is our incrementing value. This value will increment from 0 to 1000 and then reset back to 0 again. This is done every 100 msec on the done bit (STMR1.Done) of our simple timer instruction.

Call up the Hardware Configuration window. This can be selected under the setup heading in the applications tools. You can also do this from the main menu | Setup | Hardware Config.

Double click on the CPU module. This will call up the P1-540 window. Select the Ethernet Port tab in the window.

We will use the following settings:
TCP/IP Settings
– IP Address –
– Subnet Mask –
– Default Gateway –
Timeout between data query and response – 5 x 100 msec (default)
Modbus TCP Port – 502 (Modbus TCP Default)
Comm Heartbeat Value – 2 sec (default)
Note: Modbus TCP (Ethernet) protocol is similar to Modbus RTU (Serial). Names of the Master (Client) and Slave (Server) can get confusing. Just remember that the two ‘S’ are the same thing. Slave / Server

AdvancedHMI Setup
Now that we have our Productivity 1000 PLC configured and programmed we will now look at the steps for our HMI display using AdvancedHMI.
Visual Studio must already be downloaded and installed on your computer from the link above.
The project is similar to our BRX Series PLC AdvancedHMI Communication Modbus TCP that we have completed before.
When we downloaded the AdvancedHMI software it was one file called If you right click this file and select Extract All… , the files will be extracted.

Double clicking on the AdvancedHMIv35.sln file will call up this programming software.

You will notice that the screen is blank. The toolbox is empty. Call up the main screen by clicking on the MainForm.vb under the Solution Explorer.

Notice that there are a six steps listed on this page to help guide you to building your HMI project.
The first thing to do is build your solution. From the main menu select Build | Build Solution or use Ctrl + Shift + B.

Output window will automatically appear and display the process of the build. When completed, you can close the output window by the X in the upper right corner of the Output window.
Your toolbox will now be populated with AdvancedHMI Drivers and Control components.
Add the ModbusTCPCom1 driver from the toolbox.

Clicking on the driver will display the properties for that component. We will set the following:
IP Address – – Address of Productivity 1000 PLC Ethernet Port
PollRateOverride – 100 (500 default) – This is the communication in msec that the program will communicate to the PLC.
Let’s now add a digital panel meter from the toolbox.

You select the control from the toolbox and place it on the main form. Here you can then resize the item by clicking and dragging the corner of the control.

We will change the following properties on the DigitalPanelMeter.
BackColor – Black – This will get rid of the white around the edges (transparent is the default)
Text – MHR1 – This is the title on the digital panel meter.
PLCAddressValue – 440001 – This is the address that is mapped to MHR1 register.
Verify ComComponent – ModbusTCPCom1 – This should be the default after the communication device is added.

We will now add a gauge to our project from the toolbox.

The following are the properties on the Gauge.
Text – MHR1 – This is the title on the gauge.
Maximum – 1000 – This is the maximum number that will be in register MHR1.
PLCAddressValue – 440001 – This is the address that is mapped to MHR1 register.
Verify ComComponent – ModbusTCPCom1 – This should be the default after the communication device is added.

Add two MomentaryButton’s onto the main screen from the toolbox.

Here are the properties for the momentary buttons. (Pushbuttons)
Text – Start – Name of the button
ButtonColor – Green – Colour of the button
PLCAddressClick – 000001 – This is the address for MC1 coil.
Verify ComComponent – ModbusTCPCom1
Text – Stop – Name of the button
ButtonColor – Red – Colour of the button
PLCAddressClick – 000002 – This is the address for MC2 coil.
Verify ComComponent – ModbusTCPCom1

The last control component we will add to our AdvancedHMI screen is the BasicIndicator.

Here are the properties for the BasicIndicator.
Color1 – Red – This is the off condition
Text – ‘Blank’ – This is left blank so that no test is shown.
PLCAddressSelectColor2 – 010001 – This is the address for Out1 coil.
Verify ComComponent – ModbusTCPCom1

We now have our AdvancedHMI screen complete. Select the save icon or use the main menu | File | Save All to save our program.
To run the program, select the start button.

The following will show the screen upon starting:

Ensure that we can start our program by forcing the contact be X1 on in our logic above. We can then click the start momentary button on our screen to start the process.
You will see the indication go from red to green when we start the incrementing of MHR1. The digital panel meter will display the value. The gauge will show you the value on the dial as well as the number in the center of it. Stop and Start can be used on the HMI screen to start and stop the incrementing of the value.

See the video below to watch our AdvancedHMI screen in action with our Productivity 1000 PLC.

Download the AdvancedHMI and Productivity 1000 PLC programs here.

Here are some posts that we have discussed AdvancedHMI:

Productivity 1000 Series PLC form Automation Direct
Overview Link (Additional Information on the Unit)
Configuration (Configure and purchase a system – BOM)
User Manual and Inserts (Installation and Setup Guides)
Productivity Suite Programming Software (Free Download Link)
This software contains all of the instruction sets and help files for the Productivity Series.

Next time we will look at the Email instruction in the Productivity 1000 Series PLC.

Watch on YouTube : Productivity 1000 Series PLC AdvancedHMI Modbus TCP Ethernet Communication
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.

Leave a Reply

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