Good question, why the inverter doesn't come with either
1 Termination resistors built in and switchable/jumper-able
2 Instructions.
I have to deal with RS485 and installers, it's all the time:
- A/B swapped
- GND missing
- Termination resistor missing
- And my favorite: We connected them together without checking with you first if it would even work, can you please change your firmware?
Now I just build 120Ohm (and failsafe biasing) into the device by default. It's unlikely they would place 3 termination resistor, and then I think it would still work.
This is so close to my experience I could have written the same word-to-word.
As it happens, in our design I have this three-position switch: termination only, nothing, and termination+bias. And we set it to T+B in production, and remind to set to T+B in install instructions anyway. Our product is master 99.5% of the time, and at the end of the bus 99% of the time, so could have just hardwired termination + biasing, though, but it's good to avoid painting one into a corner, hence the switch.
While blame game is sometimes fun, I don't truly know whom to blame for all the A/B confusion. Most Chinese manufacturers of actual products seem to follow the same naming as transceiver manufacturers mapping A->A, so if you try not to overthink it and design your product similarly, naming per transceiver pins, no extra signal inversions between the typical MCU UART peripheral and the transceiver, then it will work with most of the devices A->A, B->B. Except when some unique snowflake product pops up designed by someone who tried to read the standard, or the Wikipedia explanation thereof, and got it the opposite way (my head still hurts when I try to decipher if that is correct
literally by standard, or not).
I also absolutely love those guys at the sales companies who sell our product. They never check the specifications or ask us about which devices are supported. So we get a call from a sparky (often very capable people
) who is at a customer site, with a new whatever Growatt hybrid inverter this month, sold to a customer to be controlled by us. That's fine, sales is sales, and this forces me to add a driver which then simplifies future sales, but it's a very hectic and stressful way to deal with it.
And the customer is calling all around and refusing to pay the bill (obviously) for a nonfunctional system. It would be so much easier if the sales folks gave us a quick call along these lines:
"We have a new inverter we want to sell, how about we send you one for testing, we are expecting annual sales of x?"
Writing the driver itself is anything from 2 hours to a week depending on the quirks of the product, but that is pretty damn hard to do if the only unit in existence is at some remote North-Eastern Finland 2-hour drive away from the folks who installed it, so that me calling "can you swap A and B" during firmware development becomes quite expensive pretty soon.
And installers need to install these unsupported devices "blind". If only had they given me
one freaking day to prepare for it, I could have made a very simple piece of test code polling one known register and worked on the phone with the sparky swapping A&B for my heart's content while they are there, on-site.
And to us, these customers are only worth a few hundreds of €. Luckily most of them require very little care and luckily out of the difficult cases come improvements in firmware, such as new supported devices. Necessity is a damn good motivator and customers like this pretty much make sure I don't need to think about what to prioritize, they took care of it for me.