all articles

[Rant] Modbus hell and the legend of the "manufacturer technician"

3 October 2026 · 4 min

#humeur,#modbus,#rs485,#bacnet,#mise-en-service,#retex

Hello BMS folks! 👋

No tutorial today. Let’s take a little dive into the joys of fieldwork, and more precisely into that magical step called commissioning. You know, the moment where, on paper, everything should snap together like Lego bricks… and where, in real life, you step on them barefoot.

On today’s menu:

  • 3 AHUs on BACnet,
  • 5 PureClass units from S&P (Soler & Palau) on Modbus,
  • a good twenty 2-way valves for zoning.

The production side, we’ll cover another day. Anyway, routine stuff.

Act 1: the PureClass units and the cursed bus

I show up on site, all smiles. I’m told the manufacturer’s technician came by to commission the PureClass units while I was on leave. Nice. He even left me a little note: “I didn’t really know what Modbus settings you wanted, so I went with the classic ones”, photo attached.

I look: address 1, 19,200 baud, even parity, 1 stop bit. Clean. Works for me.

I adapt my controller, grab the register map off the web (yes, off the web: it wasn’t even in the OpenGTB Modbus catalog! Shame on me. So I added it: here’s the PureClass CL page 😅), and fire off a quick test request to the first unit to read the outdoor temperature. BAM. One shot! The value comes straight back. Absolute bliss.

I start calmly listing the points I’ll read/write, and treat myself to a well-deserved coffee break. ☕

And then, disaster.

The HVAC contractor drops: “So, we’re good on all the PureClass units?”

My brain goes tilt. Why is he asking, if everything was configured? I go back to my PC to check the other 4 before going any further. And there… radio silence. Nothing. Nada. WTF.

Spoiler: our friend the manufacturer technician had set address 1 on ALL the PureClass units on the network. 🤦‍♂️

Anyone who eats RS485 for breakfast knows the sentence: five slaves answering at the same time on the same address means guaranteed bus collisions. And you can’t rewrite the address remotely, since everyone is talking at once. Result? You have to go to each unit physically and change the address by hand. Joy. Bliss. 😡😡😡

For the record, on a Modbus RTU bus, every slave must have a unique address (1 to 247). It’s the basic rule, the one you learn before you even know what parity is. But hey.

Act 2: the BACnet gateway on factory config

But wait, don’t leave, it’s not over.

While I’m cursing the universe, the technician in charge of commissioning the AHUs is there to do his airflow settings and check his installation. I nicely tell him: “As soon as you’re done with the first one, let me know, and we’ll test BACnet right after.”

Which he obviously doesn’t do.

At the end, he comes to me and hands me a scrap of paper: “Here, that’s the AHUs’ IP address.”

I look… a sad default IP address. “Uh, no, the planned network range is this one…”

Digging a bit, I understand the scam. To keep it simple: the AHU natively speaks Modbus, and the manufacturer installs a gateway to turn it into BACnet/IP. Except the guy has no idea how it works. He followed the factory manual with the default parameters, and that’s it. I don’t even know if he had a PC in his bag, but he never took it out.

End result? Yours truly got stuck changing the IP addresses, plus the whole config between the BACnet gateway and the Modbus network. On “manufacturer” equipment, let’s remember.

The sentence that sums it all up

The HVAC contractor, my client, who watched the whole scene, comes to me and drops THE sentence that sums up our industry:

“But actually, why am I paying for a manufacturer commissioning service when you’re the one doing it?”

Exactly.

All of this is one huge responsibility problem. If we had to wait politely for the right person to come back and change the right Modbus address, or find THE technician willing to get his hands dirty, projects wouldn’t be 6 months late. They’d be 2 years late.

My little cheat sheet (so it happens to you less)

I won’t lie to you, it will happen again. But a few reflexes limit the damage:

  • Send the addressing plan BEFORE the manufacturer’s visit. Slave address, speed, parity, IP range, BACnet device instance: everything in writing, device by device. No plan, no improvised “classic”.
  • Ask for a commissioning report with the parameters actually entered, not just “it’s OK”.
  • Test each device one by one, not only the first. The “the first one answers, so everything works” trick, I just showed you where it leads.
  • Prepare your addressing plan with a tool that yells on its own. The OpenGTB mapper flags, for instance, two devices with the same address on the same bus. It doesn’t replace the manufacturer tech, but at least you have a clean document to put under his nose.
  • And for register maps, check the Modbus catalog before digging around the web. The PureClass CL is there now, with its 105 registers translated.

The documents

For those who end up with the same gear, here are the two manuals that helped me on this job:

Wrap-up

A good half-day lost, not counting travel time, doing subcontractors’ after-sales support. Anyway, the day is off to a great start.

And you, what’s your worst “manufacturer commissioning” story? Come tell it on the message board, it’ll do me good to know I’m not alone. 😅

Right, I’m going back to dismantle my PureClass units. Ciao! 🔧

$ gtb react

Did this article resonate?

$ gtb comments --tail

Comments

// loading…

open/gtb · MIT · hosted in France
visitors github roadmap messages contact
SYS OK 15/18 tools online uptime — Rack temp 21.3 °C