RS485 issues and Exception from modbus master: Function code: 0x3f and 0x7f
Any one know what these exceptions mean? My system runs fine for minutes or hours, and when I sometimes when writing to one of the slaves, the whole network crashes (but the device is able to get that data and successfully writes it to its register), All the devices have to be rebooted, but not the mango master, to communicate again.
All my slaves are Isquare Istat6 thermostats. I have 6 units, each in a separate building, Each building has a BB-Electronics Optoisolator/Repeater (485OPDR-HS / line bias on units disabled on the network side, enabled on the side connected to the istat). I have line bias in the system running Mango (470 ohm resistors to 5v and ground), and 120 ohm termination resistors at each end. Line length is about 300 meters. Twisted pair with ground.
Cannot figure out why the network stops working. When it does, the light that blinks when receiving data on the RS485/RS232 converter stops blinking and just stays on. Converter is a CommFront RS232/RS485 optoisolated converter.
What do the exception codes mean? Anyone have ideas on this issue? I've spent weeks trying to figure this out and I'll get it working for an entire day, but the next morning, I write to a slave and the network dies. This is killing me!
Any info would be greatly appreciated!!
@dan-m said Can you explain with happens in a bit more detail?
the whole network crashes (but the device is able to get that data and successfully writes it to its register),
I don't understand how the network can crash but you are still able to read and write registers.
When you reboot your devices are you also rebooting the repeaters?
From what you are saying it sounds like everything works fine when you are polling the iStats but when you try and write to one of the registers the problem starts?
My guess is that those are incorrect function codes which would indicate Mango is possibly receiving bad data or a bad response.
Sorry I misspoke. I meant it sends data, data takes, and then a few seconds later the network stops working.
I've since changed the RS485 converter to a USB/RS485 converter (was an RS232/RS485 converter previously). I get drastically less CRC errors now, maybe 1 or 2 every ten minutes, but the network again stops working after a minute or an hour. Does not seem related to writing to the network, it just stops.
I think one of the units just stops transmitting and its driver stays enabled, though it is just a guess at this point. Restarting all the units fixes the problem for a little while. Wondering if a unit is messing up, or maybe an isolator. Just trying to get another set of eyes because I'm at a loss right now.
That's a conundrum!
Is it possible two devices have the same slave ID? Or perhaps one is responding to all IDs? Perhaps one device has an incorrect parity setting?
Have you made any more observations about its occurrence?
Yes, I have 6 devices, 6 different ID's. Runs exactly as I want it for a few hours so I think the settings are correct in terms of parity.
Unfortunately, I can only work on it every couple weekends so its hard to debug, especially when it fails after a couple hours, so I can't see it right away!
I'm going to next try lowering the baud rate, possibly try to disconnect an isolator and thermostat one at a time to see if it will run longer, potentially being the isolator. I tried to disable individual units in Mango and see what happens but couldn't isolate the problem. I also replaced all the thermostats from Temco Control units to Isquared iStat6 units, so do not think the thermostat itself is the cause, unless the iStat6 firmware has an issue. Both Temco and iStat6 units used the ControlCore firmware. By the way, before switching to Mango, I used ControlCore software and was seeing similar communication issues as I see now..
Reading the modbus logs, I see hex data coming in, and all of the sudden it stops. I don't see garbage data coming in or anything, just as if the istat stops sending data. When this happens, nothing can send data over the network (i think a driver stays enabled maybe?). I see voltages on the bus of 4 volts and 0 volts. When it communicates, it is typically in the 1-3 volt range.
If we think it is just one device holding down the network I would wait for the issue to happen and then unplug each device one by one from the network and see if communications restore.
Thanks, that's what I was going to try this weekend.