Connect AdvancedHMI to a Velocio PLC


What is AdvancedHMI?
Powerful, easy to use HMI package built on Visual Studio.
Runs on Windows PCs.
Free and distributed using the GPL. Read more on their licensing on their FAQ page.

New to Visual Studio?
Not a significant problem. It is entirely possible to create a simple HMI without knowledge of Visual Basic or C#.

Worked with Visual Studio for years?
AdvancedHMI takes care of the difficult Driver aspects for you. You can then focus on building your application.  Customers periodically come to us with questions about MODBUS RTU communication. They want to develop their own .NET application and are looking for advice.  We have a tutorial showing the basics, the problem is there is more to it than can easily be discussed in that tutorial. Issues like: MODBUS doesn’t have a message identifier showing which message you’re getting a response to, thus you must send one at a time and keep track of what you’ve asked for. What happens if you don’t get a response in a reasonable amount of time. Issues like this make it a non-trivial task. Often it’s best not to reinvent the wheel.

Getting Started:
You’ll need Visual Studio, which you may download here:
Download AdvancedHMI software:

Installation instructions form AdvancedHMI:

MODBUS RTU Addressing
To communicate with AdvancedHMI, we need to set MODBUS addresses on the PLC side and match them on the HMI side. Be sure that Tags you want to be Writable are setup as writable in vBuilder’s Tags Tool. Then download the program to the PLC and press run. After that, close our vBuilder, as vBuilder and AdvancedHMI aren’t allowed to share the COM Port.

  • Bits: 0XXXX, where XXXX is your bit’s MODBUS RTU address. Ex: 00001 would be used for address 1.
  • UI8: 4XXXX, where XXXX is your UI8’s MODBUS RTU address. Ex: 40001 would be used for address 1.
  • I16: 4XXXX, where XXXX is your I16’s MODBUS RTU address. Ex: 40001 would be used for address 1.
  • UI16: U4XXXX, where XXXX is your UI16’s MODBUS RTU address. Ex: U40001 would be used for address 1.
  • I32: L4XXXX, where XXXX is your I32’s MODBUS RTU address. Ex: L40001 would be used for address 1.
  • Float: F4XXXX, where XXXX is your Float’s MODBUS RTU address. Ex: F40001 would be used for address 1.

Setting up data in vBuilder side

Click to download vBuilder code used in this example.

Building the AdvancedHMI side: