I am using LabVIEW to communicate with a Eurotherm 2216 temperature controller. I am using this driver to communicate with this device via RS485. While the driver is for Eurotherm's 24xx series of devices, all the functions I am using are compatible with 22xx devices. I am using a USB to RS485 converter.
So far, I have confirmed that the RS458 converter is wired correctly to the device, the baud rate and parity are the same in LabVIEW and the device, and I am using the correct instrument address. Despite this, I am consistently getting the error 0xBFFF0015, "timeout expired before operation could be completed" at the VISA Read command. This suggests to me that the device is not sending any data back. As I am new to instrument control, I don't know what the problem might be and would appreciate any help. Thank you!
Solved! Go to Solution.
EDIT: I was looking at the example code for RS485 and observed that there's a property mode that sets the wire mode (rs232, rs485/wire4, rs485/wire2, etc), and that the driver I was using doesn't have this and sets the default to rs232. This would explain my communication problem, as I need rs485, but when I tried to create a property node to set the wire mode to rs485/wire2, I got the error 0xBFFF001E "the specified state of the attribute is not valid, or is not supported as defined by the resource". What does this error mean and how can I fix it?
Update: I have found the solution to this problem. Eurotherm's labeling of RS-485 wires is not consistent with the labeling on the USB adapter I was using. Eurotherm labels the data+ and data- channels as A(+) and B(-), while the adapter labels them as Data- (A) and Data+ (B). I had matched them based on + and -, but it turns out the correct configuration is matching them based on A and B. Apparently, this is a common problem with RS485. All I had to do was switch the data wires and it worked perfectly.