Modbus to BACnet/IP
The gateway as one BACnet device: numbers as Analog Inputs, booleans as Binary Inputs, for a building management system to read.
The data flow
A server-style output, like OPC UA: the gateway answers Who-Is with I-Am, and ReadProperty and ReadPropertyMultiple for every object. Each routed tag is one object with its name, units, present value and status flags. Read-only: writes are refused.
In the editor
BACnet/IP out carries the listen address, the UDP port, the device instance, the device name, description, location, vendor and model, and whether to broadcast I-Am at start-up. Numbers become Analog Input objects with the tag's unit mapped to a BACnet engineering unit where one exists; booleans become Binary Inputs.
Test it with the Modbus Simulator
You do not need the PLC to try this flow. The Modbus Simulator answers as a Modbus slave on your own PC, with registers that move, so the whole path from polling to the output can be watched before any hardware is involved.
- Start the Simulator and add a slave: Modbus TCP, bind host set to this PC's LAN address (the prefilled one), port
1502, unit ID 1. Add a few holding registers, say40001–40010as FLOAT32 or INT16 in random mode so the values change, and press Start. - In the editor, set the source node's host to that address, port
1502, unit ID 1, and the same addresses and data types. Poll interval1sis fine. - Deploy the design to a device on the same network, or to this very PC: the Edge Gateway Console installs on a laptop as readily as on an edge computer, and the gateway polls the Simulator over the LAN.
- The Simulator's request log shows the gateway's reads arriving: function code 03, the start address and quantity, once per poll interval. Neighbouring registers arrive as one read.
- A BACnet explorer (YABE is the usual free one) on the same subnet discovers the gateway on Who-Is and lists one object per tag; its Present_Value follows the Simulator's register.
Registers in fixed mode make a deadband or a condition easy to exercise: change a value by hand and watch what is, and is not, published. A register set to a value the Simulator refuses (uncheck Fill unmapped and read an address that is not there) shows what a BAD quality looks like at the output. The Simulator's own page has the rest.
From design to device
- Validate. On the design page, Run validation. The editor's rules, the tag document and the runtime binary itself check the design; every issue names its node. Details: Validating a design.
- Install. From the Devices panel download the installer for the device's platform (Windows x64, Linux x64 or Linux ARM64). Windows: extract and run
Edge-Gateway-Console.exefrom an administrator terminal. Linux (Debian, Ubuntu, Raspberry Pi OS):sudo dpkg -ithe .deb, thensudo edge-gateway-console. It shows the device code. Details: Installing on the device. - Device code. Enter it in the Devices panel, choose a trial or one of your purchased licences, and press Download activation bundle: one small zip with the design and a licence bound to that machine, sealed so only that machine can open it. Details: Downloading.
- Bundle. Give the zip to the console (drag it onto the program, pass its path, or put it beside the program and run it again; a USB stick is fine for a device without internet). It opens the bundle with its own code, installs the runtime as a service and starts it. The device never contacts the site. Details: Activation and the licence.
The console then opens the gateway's web view in a browser (on a device without a desktop it prints the address instead) and stays attached with the live view: devices up or down, values as they change, what was published, and the log.
- The live view shows the BACnet device as listening on its port and counts the requests answered.
- The BMS or explorer finds the device instance and reads its objects.
Ctrl-C leaves the gateway running as a service. Run edge-gateway-console again at any time: it shows the service, the licence, every device and destination with what to check, the web view, and the live log. Running covers the data directory, secrets and the diagnostics.