anyone have experience with Prosoft Modbus cards on Allen Bradley PLCs?

defcon.klaxon

Lifetime Supporting Member
Join Date
Feb 2015
Location
Far NorCal
Posts
616
Hey guys,

I'm working on a proposal for a client, and long story short I need to suggest a new master PLC for polling existing RTU sites that are communicating via Modbus RTU. One option of course would be a Scadapack, but I'm not the biggest fan of them and if I'm getting to pick whatever, I'd much prefer a CompactLogix. Prosoft indeed does have Modbus expansion cards for the CompactLogix and I'm watching a video tutorial for how to set one up to get familiar with it, but was wondering if anyone had real world experience with them. Seems from the video that setting up the polling is mostly straightforward, but with some odd settings that I'm going to have to read up on.
 
I've used them (can't remember if I've used the compact logix version but used the control logix one for sure). There is a bit of setup on the plc side to get started but after that, the prosoft software for setting up the modbus polling etc is really easy to use (if a bit dated).

I found it to be very reliable as well.
 
I use Prosoft PLX and MV56 (?) for Modbus TCP in a few places.

I just got a demo of a gateway from Spectrum Controls that does modbus RTU . I can't connect to the devices yet so I haven't tested operation , but setting it up was really easy without additional software like Prosoft requires.

For me the Prosoft software is a little clumsy but I have no issue with it's performance. If I was to ding them, that's where I would say they could use improvement.

I also looked at the RedLion DA30D a little which is quite impressive, but requires software to configure and they didn't have a demo for me to try.

The Prosoft has an AOI for ETH I/P that is convenient.

The Spectrum model does not have an AOI but populates the PLC all by itself in tags you have previously set up and configured in the devices browser based interface. Not sure how it populates those tags just yet. Probably CIP messaging but I dont know.

Downside to Spectrum so far is that they require internet access to use an NTP server. No way to provision your own. That bugs me a little that they restrict that option to an external source considering the security isolation usually needed in a process environment.
 
I have used them a few times. In the end they work but I will say there is a little learning curve.

The biggest issue is converting the data you get through the gateway to something meaningful to your process. Data only goes in and out in one data type. Converting everything on both sides can be time consuming.
 
I have used the TCP models on CLX. You are limited to 32 device connections per module. Each device can have lots of tags, upto 4000 per module as I recall.

You have to use Prosoft software to set up the module, but it has a lot of features, byte or word swaps etc.... Plus Prosoft tech support is pretty good, and no cost.
 
I have used the MVI46-MNET (Modbus) and the MVI46-GSC Both for SLC500


There is some set up and a bit of a learning curve.
But the their manuals are good and they have some sample setup programs that work well..


Once you understand the set they work quite well..


I like them....
 
I used them a few times and everytime I had to re-learn it. They work solid once you get them to work but ProSoft isn't the most user friendly protocol gateway.

If you have a choice, I would 2nd others here by suggesting you look at RedLion Datastation or RTA Automation's product. Specturm Control's product also seems to be very easy to set up according to folks here.
 
Thanks everyone for the replies. Some notable comments that have me thinking:

The biggest issue is converting the data you get through the gateway to something meaningful to your process. Data only goes in and out in one data type. Converting everything on both sides can be time consuming.
Man that sounds like it could be a lot of work, a lot of headache and hassle. I was wondering how exactly the data would be provided to the CompactLogix controller being that the tutorial video I saw just showed INT arrays. Yeesh.

Another general quote was a "learning curve". I've used a Prosoft module for creating a Profibus connection and while it wasn't insanely difficult, it definitely took some work and there was a definite "learning curve" and every time I go back to that project I have to relearn everything.

If you have a choice, I would 2nd others here by suggesting you look at RedLion Datastation or RTA Automation's product. Specturm Control's product also seems to be very easy to set up according to folks here.
I absolutely have the choice, luckily. I can literally spec anything I want, so it sounds like checking out the suggested alternatives might be a better solution.

It seems like these modbus to ethernet/ip solutions are not really designed to take care of polling over radios and providing comms failure errors and etc. Seems like for what I'm trying to do, it would be most practical to just go with a Scadapack. I have pre-existing code that I can set up for all the radio polling and they're not *horrible*, they're just clunky and I hate having to keep track of register addresses compared to how Logix5000 just has names and all the address mapping is done behind the scenes. But I've done worse with Scadapacks, if I can get a full on water treatment filter plant to run on one then I can get this system of two wells, a few tanks and supervisory valves working too.

Thanks again everybody!
 
Last edited:
I used a ProSoft MVI69E ModBus RTU module in a CompactLogix chassis. It’s a solid setup that I would use again. Unless you know you will only need a small amount of data from one or a few devices and need to save money, I suggest the enhanced version over the lite model. At the time I bought it, I had no plans for the second serial port but ended up using it as a programming port for setting up a sensor from the HMI without needing to break out a computer to use special software to program a sensor. The lite has fixed 240 registers in and 240 out. The enhanced has 10000 registers for in or out. I used 900 in. That would have been a hassle to work around. My only complaint is I had to make my own mounting bracket for the DB9 breakout boards. We use several ProSoft MVI56E-MNET ModBus TCP ControlLogix modules that have been trouble free for years.

Using ProSoft Configuration Builder, it’s easy to create a AOI rung to import that creates all associated PLC tags. The learning curve for me was understanding memory allocation. I was still confused after watching their videos. As the project developed and I understood better, I deleted my first import and imported a new version.

I’ll try to summarize memory: The module has internal memory, register locations 0 to whatever. You setup a range to be read data that’s big enough for data to read plus module and command status that you want to monitor. If you will be sending data, choose a register range for write data. In the example below, module registers 0 to 899 become PLC tags MBS.DATA.ReadData[0] to MBS.DATA.ReadData[899]. Module registers 900 to 959 become MBS.DATA.WriteData[0] to MBS.DATA.WriteData[59].

That was the part that took me a while to understand. The rest is normal ModBus commands. In the example below, I'm reading 22 registers each from a network of 20 or 24 sensors on module port 1. This data goes to module registers 0-599. I'm wasting three bytes between each sensor to have the data start at 0, 25, 50, or 75. Module registers 600-624 are for a single sensor on port 2 of the module.

You can monitor status of the module and commands. For whatever you want to monitor, you will choose a range of your read registers to put that data. I didn’t care about module error/status block pointer and disabled that with -1. I did want to see port 1 command errors and started that data in register 710 to match up with node 10. (command error offset) I'm essentially using part of registers 700-799 and wasting the rest. In registers 800-899, some are used for port 2 command status, the rest are unused.

Module registers 900 to 959 in this example are not used in the module commands. I have a routine that populates some write data to trigger a ModBus write to change node number of a sensor on port 2.

I posted some examples from this project here. http://www.plctalk.net/qanda/showthread.php?p=785758#post785758 This was before the project was complete and these screenshots show different register numbers than the final version.

Port 1 is reading data from the network of 20 sensors. There’s four more setup if we expand the system. Port 2 is trying to read a range of node numbers to determine if one is connected.

There’s probably some situation where you could read data to a module register that’s not mapped to a PLC tag if you only wanted to write it to another device.

Here’s copy / paste from the final build of ProSoft Configuration Builder:


# Module Information

# Last Change: Jul. 28, 2018 00:00
# Last Download: Never
# Application Rev:
# OS Rev:
# Loader Rev:
# MAC Address:
# ConfigEdit Version: 4.4.17.0

# Module Configuration

[Module]
Module Type : MVI69E-MBS
Module Name : MVI69E-MBS


Module Name : MVI69E-MBS
Read Register Start : 0
Read Register Count : 900
Write Register Start : 900
Write Register Count : 60
Backplane Fail Count : 11
Error/Status Block Pointer : -1
Initialize Input Image : No
Block Transfer Size : 60
Slot Number : 1

[Modbus Port 1]
Start Active : Yes
Type : Master
Protocol : RTU
Baud Rate : 19200
Parity : None
Data Bits : 8
Stop Bits : 1
RTS On : 0
RTS Off : 0
Use CTS Line : No
Response Timeout : 500
Retry Count : 0
Minimum Command Delay : 0
Error Delay Counter : 10
Inter-character Timeout : 0
Command Error Offset : 710
Enron-Daniels : No

[Modbus Port 1 Commands]
START
# Enable Internal Address Poll Interval Register Count Swap Code Node Address ModBus Function MB Address in Device Override Value Upon Error Comment
1 3 0 5 22 0 10 3 5200 0 # Pump 1
2 3 25 5 22 0 11 3 5200 0 # Motor 1
3 3 50 5 22 0 12 3 5200 0 # Pump 2
4 3 75 5 22 0 13 3 5200 0 # Motor 2
5 3 100 5 22 0 14 3 5200 0 # Pump 3
6 3 125 5 22 0 15 3 5200 0 # Motor 3
7 3 150 5 22 0 16 3 5200 0 # Pump 4
8 3 175 5 22 0 17 3 5200 0 # Motor 4
9 3 200 5 22 0 18 3 5200 0 # Pump 5
10 3 225 5 22 0 19 3 5200 0 # Motor 5
11 3 250 5 22 0 20 3 5200 0 # Pump 6
12 3 275 5 22 0 21 3 5200 0 # Motor 6
13 3 300 5 22 0 22 3 5200 0 # Pump 7
14 3 325 5 22 0 23 3 5200 0 # Motor 7
15 3 350 5 22 0 24 3 5200 0 # Pump 8
16 3 375 5 22 0 25 3 5200 0 # Motor 8
17 3 400 5 22 0 26 3 5200 0 # Pump 9
18 3 425 5 22 0 27 3 5200 0 # Motor 9
19 3 450 5 22 0 28 3 5200 0 # Pump 10
20 3 475 5 22 0 29 3 5200 0 # Motor 10
21 0 500 5 22 0 30 3 5200 0 # Pump 11
22 0 525 5 22 0 31 3 5200 0 # Motor 11
23 0 550 5 22 0 32 3 5200 0 # Pump 12
24 0 575 5 22 0 33 3 5200 0 # Motor 12
END

[Modbus Port 2]
Start Active : Yes
Type : Master
Protocol : RTU
Baud Rate : 19200
Parity : None
Data Bits : 8
Stop Bits : 1
RTS On : 0
RTS Off : 0
Use CTS Line : No
Response Timeout : 500
Retry Count : 0
Minimum Command Delay : 0
Error Delay Counter : 0
Inter-character Timeout : 0
Command Error Offset : 801
Enron-Daniels : No

[Modbus Port 2 Commands]
START
# Enable Internal Address Poll Interval Register Count Swap Code Node Address ModBus Function MB Address in Device Override Value Upon Error Comment
1 1 600 5 22 0 1 3 5200 0 #
2 1 600 5 22 0 2 3 5200 0 #
3 1 600 5 22 0 3 3 5200 0 #
4 1 600 5 22 0 4 3 5200 0 #
5 1 600 5 22 0 5 3 5200 0 #
6 1 600 5 22 0 6 3 5200 0 #
7 1 600 5 22 0 7 3 5200 0 #
8 1 600 5 22 0 8 3 5200 0 #
9 1 600 5 22 0 9 3 5200 0 #
10 1 600 5 22 0 10 3 5200 0 #
11 1 600 5 22 0 11 3 5200 0 #
12 1 600 5 22 0 12 3 5200 0 #
13 1 600 5 22 0 13 3 5200 0 #
14 1 600 5 22 0 14 3 5200 0 #
15 1 600 5 22 0 15 3 5200 0 #
16 1 600 5 22 0 16 3 5200 0 #
17 1 600 5 22 0 17 3 5200 0 #
18 1 600 5 22 0 18 3 5200 0 #
19 1 600 5 22 0 19 3 5200 0 #
20 1 600 5 22 0 20 3 5200 0 #
21 1 600 5 22 0 21 3 5200 0 #
22 1 600 5 22 0 22 3 5200 0 #
23 1 600 5 22 0 23 3 5200 0 #
24 1 600 5 22 0 24 3 5200 0 #
25 1 600 5 22 0 25 3 5200 0 #
26 1 600 5 22 0 26 3 5200 0 #
27 1 600 5 22 0 27 3 5200 0 #
28 1 600 5 22 0 28 3 5200 0 #
29 1 600 5 22 0 29 3 5200 0 #
30 1 600 5 22 0 30 3 5200 0 #
31 1 600 5 22 0 31 3 5200 0 #
32 1 600 5 22 0 32 3 5200 0 #
33 1 600 5 22 0 33 3 5200 0 #
END

[Ethernet 1]
IP Address : 192.168.0.181
Netmask : 255.255.255.0
Gateway : 0.0.0.0

[Module Comment]
# Put Comment Here
 
I have used them too on several jobs. The Configuration Builder Software is ok and works good once you get use to it. I am a fan of the Point I/O ILX34-MBS485 cards. They are all set up in the PLC Tag Database so you don't have to mess with the software. Wish they would migrate all the cards to that kind of set up.

As for 5618's comment
My only complaint is I had to make my own mounting bracket for the DB9 breakout boards.
I just finished a job using the MVI69E-MBS with the dual serial ports. I like you hate the break out boards Prosoft Gives you. This is what I ended up using this from AutomationDirect https://www.automationdirect.com/adc/shopping/catalog/wiring_solutions/ziplink_pre-wired_connection_cables_-a-_modules/connector_-a-_communications_modules_(complete_list)/zl-rtb-db09
They work great!!
 
Get the addon instruction for the Prsoft MNET card and use that

Alternatively look at the Hilschler NT50-RT-EN which gives you a Modbus RTU to EthernetIP interface
 
What I like the most from prosoft is their customer support, they have support in spanish which is not common. I have used modules to connect AB plcs to profibus and AB plcs to modbus tcp in both cases that took me no more than two hours after reading the manuals.
 
The biggest issue is converting the data you get through the gateway to something meaningful to your process. Data only goes in and out in one data type. Converting everything on both sides can be time consuming.

I'm not clear what you mean. Are saying that there is only one word format that can be used (INT for example) and if so which device are you talking about?
 

Similar Topics

Hi all, I am experienced with Rockwell by have recently encountered a Bosch PLC. It’s an IndraControls XM21 V14. I installed the software and...
Replies
2
Views
757
Hi all, Client called saying that the turbidity readout on the HMI is 0.0000 but on the local readout, it shows an actual value. Sure enough...
Replies
12
Views
5,337
Specifically Sm10/20-TC. I have a customer that has a setup running a crosslapper, and this module runs the outfeed apron. They were having a lot...
Replies
0
Views
1,319
Hi We are looking to implement some label checkers on some production lines. We want to check bar codes and best before dates. Just looking to...
Replies
12
Views
3,355
Hello, I'm a big fan of the HART potential in getting multivariable off of complex instruments like flowmeters and some pressure sensors, but...
Replies
7
Views
2,387
Back
Top Bottom