Understanding & working with RS485 serial data

Hi,

I have an old ventilation system that has a RS485 interface (non-modbus). Currently, there is one control panel attached there which can change speed, set temporary boost etc. Multiple control panels can be connected to the same bus as per original documentation.

I connected to the bus with an USB-RS485 adaptor, 8N1 and various speeds, and data output as HEX. It seems that the unit sends the current settings (visualized with leds on the control panels) few times per second. The data is rather consistent, and looks as follows:

F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00 80 00 F8 00

When I manually change the speed from the control panel, I get first what I assume is a command to change speed (1E), and later on similar regular data but for a different setpoint (80 instead of F8).

F8 00 80 00 1E 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00 80 80 00 00  

When I change the setting back to the initial one, the data looks similar, but with a different commands. Which seems logical.

What I find challenging is that I don’t know the serial settings. I have tried multiple (2400, 4800, 9600). If I go higher, the data seems to be more inconsistent. I can repeat the same pattern when going through different setpoint levels regardless of baudrate, however if I repeat the commands, nothing happens (setpoint doesn’t change). However, once when I connected the bus cable to the panel, the setpoint changed. So I assume the protocol is rather simple, as it seems.

Any tips on how to proceed with this? In the end, I would like to have a ESP to control & monitor the unit. I think that so far the 4800 baud seems most promising, as data is fully consistent (same commands for up/down regardless of setpoint), but as repeating the commands doesn’t work, I am puzzled.

9600 baud, 8N1:

0 status: 80 00 00 00
1 status: 78 80 00 00
2 status: 00 80 00 00
3 status: F8 00 80 00
4 status: 00 80 80 00

Commands
0-1: 0F
1-2: 1E
2-3: 0F
3-4: 1E

4-3: F0
3-2: E0
2-1: F0
1-0: F0


4800 baud, 8N1:

0 status: 78 00
1 status: 78 06 
2 status: 78 18
3 status: 78 1E
4 status: 60 78
5 status: 78 66

Commands:
0-1: 03
1-2: 03
2-3: 03
3-4: 03
4-5: 03

5-4: 0C
4-3: 0C
3-2: 0C
2-1: 0C
1-0: 0C

2400 baud, 8N1

2 status: 22 00
3 status: 23 00
4 status: 24 00

Commands:
2-3: C0
3-4: C0

4-3: 81
3-2: 81


EDIT: Added date for 2400 baud. I think this makes most sense, as the values (22, 23, 24) are practically the setpoints (2, 3, 4) for respective value. However, when I try to send commands, it doesn’t work. I am thinking therefore if there are any timing issues or similar to take into consideration when sending data on the bus that could cause that? Or if I just have wrong communication settings.

Perhaps the silent interval between characters marks the end of the message.

You should timestamp received bytes and display that to investigate.

Then, when sending, make sure to add some wait time after the last byte in the message.

I had a similar project with an RF remote, bought a cheap oscilloscope to get the timing info.