I am working on developing a test system using LabVIEW 2017 to communicate with a Battery Monitoring System. I using a NI USB-485/4 as my Master and the slave has a standard RS-485 UART. The slave's UART is running off of a +5V supply while the NI USB-485/4 uses a 3.3V supply. While RS-485 devices with +5V & +3.3V supplies are generally considered to be compatible, I am having difficulties receiving data back from the slave. I have scoped the signal lines and can see that the slave is responding to my commands. However, the NI USB-485/4 fails to receive the response.
The configuration is a standard 2-wire connection with a 3rd ground reference. I have programmed the National USB-RS485/4 device to communicate with 2-wire auto mode which causes the Master device to go to tri-state mode at the end of the transmission and listen for the slave to respond. I am able to send a command to the BMS and get it to respond. I am able to see the response occur using the o’scope. However, I am unable to receive the response with the National USB-RS485/4.
I have attached photographs of the scope traces of the VBUS and VBUSN lines at pins 6 & 7 of the DRS4485 UART. You will note that during the first half of the scope trace the voltage levels from the NI USB-RS485/4 are swinging between ground and 2.8 volts (1V/div.) and then it appears to go into tri-state mode at about 73 millisec. after the initial trigger point. I found it odd that the Master is swinging about 1.5V (referenced to ground) and the DRS4485 is swinging about 2.5V. I have confirmed with NI that the NI USB-RS485/4 uses a 3.3V supply. The DRS4485 is powered from +5V supply. When the DRS4485 then transmits the response starting at about 75 millisec. after the trigger, the Master never sees the response signal.
You will notice that when the DRS4485 transmits, both the VBUS and VBUSN lines seem to be unable to swing below about 1.75 volts. These waveforms were captured with scope probe connected to pins 6 & 7 of the DRS4485. It occurs to me that the VBUS and VBUSN lines are swinging +/- .8V Pk from 2.5 volts which is ½ the +5V VCC. This would seem to correlate with the Voc spec. of 2.55V. The spec. indicates typical Differential Driver Output Voltage should be 3.0V p-p. When one looks at the signal on the o'scope set to do a differential measurement between the VBUS and VBUSN lines it is about 3.2 volts which meets spec.. Now, assuming that the NI USB-RS485/4 is using a 3.3V supply, if the signal from the DRS4485 was larger, such that it went below the (assumed) 1.5V threshold the NI part uses, would it allow the NI device to receive the signal?
I believe that if I were able to turnoff the bias resistors it would result in less attenuation of the signal at the Master. I have been consulting with NI's support line and thus far, they have not been able to tell me how to Programmatically Disable Bias Resistors on NI USB-485/4. I am wondering if anyone out there knows how to turn off the Bias Resistors?
The supply voltage difference should be no problem. As long as the differential voltage is Ok. Typical common mode range is -7 - +12V.
Removing terminators would rise the signal but I don;t think it will solve your problem. Beside that, the terminators are there for a reason. Driving a balanced line with 120Ohm terminator at each side (are a failsafe one at one side) is no problem for a RS-485 device.
When I look at your picture I see different polarities !! Some manufacturers make a mess regarding the + and the - connection (A and B) of a RS-485 interface.
Sure you have the the + to + (A to A) Did you try to cross the connection ? I noticed once that a manufacturer was absolutely sure that RS-485 wires must be crossed !! He was right because he reversed the naming of the pins !!
How do you receive the data in LabVIEW. Can you post the VI ? Maybe you should start with this because you're device is sending something back. So you should receive some data.
The two scope traces are the + and - signal lines. I expect them to be different polarities. Also, my slave device requires a very specific set of data to get it to respond. If I had the + & - lines reversed I would not expect it to be responding at all.
Also it is the bias resistors I want to disable, not the termination resistor. The bias resistors are provided to pull the signal lines to the + and - rails during idle time to improve noise immunity when idle.
I have attached a copy of my test vi.
Ok, that explains the difference in polarity.
Together, the bias resistors is the fail-safe terminator.
I will have a look at the VI, but at a first glance I don't see anything wrong
Is 'SLS' the product you try to connect ? No, wrong command
Found two things:
Initially the string to write also have a CR-LF as a terminator. The termination char. is disabled and in your data there is no CR-LF.
You set the flow control to 'none' maybe this is in conflict with the Auto mode of the RS-485 interface. I would leave out the second property node since both settings are not necessary here.