(West/Partlow) Modbus Desperation

Hello everyone,

I’ve been trying to get West/Partlow brand Modbus serial temperature controllers to communicate reliably with KepWare through TCP/IP converters for a full three months. I’ve tried extremely slow polling rates (5000ms), separating transaction groups, rewiring, 2 different B&B converters (Ethernet to Serial and Modbus TCP/IP to Modbus RTU) , and I’ve even tried their Modbus TCP/IP modules which worked great until they missed a read- and required a power cycle to re-establish communications. I have a few questions and would be genuinely grateful for any feedback…

1- Are there any Modbus TCP/IP to RTU (or general Ethernet to Serial w/ Ethernet Encapsulation) converters that anyone can recommend to handle a large amount of information?

2- Are there any multi-loop Temperature Controllers (Modbus TCP/IP) that have a good reputation for working with OPC Servers?

3- Any other ideas?

Thank you.

Matthew Newberry

Define “large amount a data”.

There are four RS485 devices connected to the TCP/IP - Serial Converter on port 2, 1 RS-232 device is connected to port 1.

Port 2:

Device #1 is polled for 54 Tags (32 are Read-only)
Device #2 is polled for 68 Tags (32 are Read-only)
Device #3 is polled for 32 tags (24 are Read-only)
Device #4 is polled for 3 tags (all are Read-only)

Port 1:

RS-232 PLC is polled for 240 tags, ~80% are read-write

There are transaction groups set up for transferring data back and forth between the RS-232 PLC and each of the RS-485 devices on a Tag-Change-Only basis. These consist of 10-20 tags each and are set up so that data that changes frequently (< 1 time per minute on average) and infrequently are set up in different groups.

Additionally, there are remote HMIs set up as Modbus TCP/IP slaves that receive mostly Read-Only data, but have a few tags that act as triggers for separate Tag-Change-Only triggered transaction groups (making the HMI a separate Master by proxy). Although this seems like it would be the most likely part to fail, it actually executes perfectly- just with a noticeable delay due to waiting for feedback from the server, which is in-turn waiting for feedback from the attached slave serial devices. We actually have discontinued testing the HMIs to concentrate on the aforementioned issue with Serial devices.

I apologize for the wordiness! I hope that I’ve explained everything well enough… I really do appreciate the look at my post.

Matthew,

Did you try the Modbus optimizations that Kepware recommends? Also in that document it goes over exactly how their Modbus driver works, which may give some clues in what would help your situation. I remember there are some changes to the timeout values that helped me quite a bit with some power monitors. Is the PLC separated out as a different connection (channel) in Kepware? That could also help quite a bit, since it is on a separate port on the TCP converter.

I have been using an adapter from GE, which does not require me to restart Kepware, but over a 24 hour period there will be some missed reads show up in the log file on Kepware.

Darren

Here is the list of GE protocol converters. The one I am using is the single serial port. Although these do not look like a good fit, since I think they only support RS485 for the serial.

gedigitalenergy.com/multilin … erters.htm

Darren

I’ll give the GE protocol coverters a try. I honestly believe that the issue lies in with the slaves…

I’ve been through Kepware’s documentation a number of times and have tried everything that they recommend in documentation- but I’ll give it another look to make sure that in my “progress” I haven’t regressed. Every device is set up as a separate channel, and now I actually have 2 converters in line so that each port has only one slave attached to it. It’s working great- but I don’t understand why all of my RS-485 devices can’t work on the same port…

Thanks for the feedback. We should be able to pick up one of those converters locally.

Another converter you can try is the Lantronix UDS2100. I switched to this after having similar problems with a Sena brand converter. If you continue to have timing issues you could always solve it with a communications gateway like the Red Lion DataStation. The serial communications is not encapsulated over ethernet. It is a hardware device that reads the data from devices then passes it on to the next device. I am using it as a Modbus RTU/DeviceNet bridge but it has an ethernet port and can be setup as an OPC server. It also has a built in web server for building an HMI but I just use it to get the data to kepware. It is not cheap though.

first question is do you have terminating resistors on both ends of the 485 network? your 485 network should be daisy chained and not a star network.

next, I would go with either a digi one iap or a lantronix xpress dr. you have some timeout and transmit delays that you may need to set correctly for your application. besides that, how fast are you trying to poll the devices?

I just reread, I would go with the digi one iap for this application. the digi is an extremely good piece of equipment.

Well, the termination brings up a good point. The GE manuals recommend a 120Ohm resistor (1/4W) with a 1nF ceramic cap in series. I have seen the resistor in most documentation, but the cap is not typical. Maybe that would help if your devices are having issues with noise.

Darren

I’ve never seen anything about a cap before… that sure would be a cheap fix if it worked for us.

Right now each device has its own communications port for fault isolation, but we’re still having issues. I’m using Ignition v. 7.1.2
Kepserver Ex v. 5.3

Once every minute or so, Kepware loses every single one of my devices (these are all running through separate B&B VESR converters). We think that it might have something to do with the HMIs that are currently used for redundant control, but when we removed them from Kepware it only resolved half of the issues (we had ON/OFF buttons that would return to a specific state when communications were reestablished).

Still, though- every time it drops out and comes back, certain (word) registers are being zeroed out. I actually programmed a transfer group to trigger off of a certain register = 0 to reload a recipe to the PLC.

We have some more Lantronix converters on order, so we’ll see how that goes. We’re also looking into using touch screen thin clients in place of the HMIs, which I’m confident will be a huge improvement.

Can anyone tell me why certain (retentive) registers would be reset to zero when comms are lost and reestablished? I’m having a hard time figuring that one out.

Thank you everyone for all of your help so far, we definitely appreciate it.

I am attaching an app note from B&B Electronics about RS485 communications. It was helpful to me in finding a biasing problem.

Do you mean each device has its own physical port or Ethernet port? I ran into a problem a while ago in Kepware and I solved it by giving each device a separate Ethernet port number (setup in Kepware).
B&B 485appnote.pdf (433 KB)

Each device has its own RS485 port; each converter has a different port number assigned to each of its two ports.

By assigning a different port number in Kepware- do you mean overriding the default 502 setting? Is there setup anywhere else that needs to be done in order to do this?

Thanks!

I am assuming you are using ethernet encapsulation instead of creating virtual com ports on your pc. Each serial port on the converter is setup with it’s own ethernet port number. some defaults I have seen are 9600, 2101, 10002, 20000, etc. Within KepServerEX, each device is setup using the same cooresponding port number. see below for a brief description.

This is the method and setup I am using for an RS485 single device using Modbus RTU.

Device is connected to the Lantronix RS485 port 1
Enter the IP address of the converter into a browser and login
Go to channel 1 serial settings and set communications parameters
Go to channel 1 connection settings and set ethernet parameters
Under the “Endpoint Configuration” enter the local port number
This will be the same port that KepServerEXuses in the device configuration.

Right-Click the left pane of KepServerEx
Select ‘New Channel’
Enter Channel name and click next
Select Modbus Serial
Enable diagnostics

Do not worry about com settings just click "Use Ethernet encapsulation
click next
Network adapter
default (if only one exists)
click next
click next
click finish

Now to setup a device
Under the new channel, ‘Click to add a device’
Device Model = Modbus
Set device ID to match yoru device
Enter IP address of converter
Enter port number of converter
This is the ethernet port number eg: 2101, 9600, 10002.
Leave timing parameters at default
Autodemotion - your choice
Uncheck automatically generated subgroups
Click next until finished

Good luck.

Just an update- I finally got approval to try a Modbus TCP/IP native device today.

It’s wonderful.

I thought that’s what you meant when you mentioned different ports. We do have them all on separate port numbers. I think that the focus has finally shifted to where I want it- replacing the devices themselves for critical tasks.

If you are still experiencing issues with your setup, I suggest you contact Kepware Support through email:

Technical.Support@Kepware.com