RX3i and Modbus

NetNathan

Lifetime Supporting Member
Join Date
Nov 2011
Location
Corona, CA
Posts
2,199
I have 3 devices that I am talking to with Modbus from an ETM module.

12 registers from each of 2 devices and 8 registers from the other device, all temperature signals.
I am only reading data (3003) on a 1 sec interval, no need to write to the devices.

Can I keep all 3 comm requests open?
 
I would zero the COMMREQ status word just before you trigger the COMMREQ instruction and then monitor it and not permit triggering another COMMREQ until it has a nonzero value. If you're using absolute addressing for the COMMREQ data block, the COMMREQ status word is defined by IN3 and IN4 of the first BLKMOVE instruction that you use to populate the data block.

It may be possible to have a COMMREQ for each channel. I've developed the habit of making sure all my COMMREQs are triggered by one-shots and that there is never more than one active simultaneously.
 
Last edited:
As Steve said. Also if the Status Register is >1 there is an error or warning, keeping track of these will help in troubleshooting future problems.
 
This is a long read, but it isn't simple to explain and I want to make sure I give enough information.

Okay,
Presently I have only installed 1 Modbus COMMREQ for 1 channel. I have not installed the other 2 channels till I get this 1 working.

I am getting success on the COMMREQ open command (3000), but the COMMREQ read command (3003) is not working.

I am trying to read first 12 registers of the device every second using a 1 second 1 shot (bit is %T00001 in rung 7).
This logic has worked fine on other installations reading from same device and even reading 16 registers every second (Sixnet EtherTrak 2, 16 point TC Module).

Logic Information:
ETM001 is in Rack 0 Slot 8, IP is 192.168.1.10, Subnet mask is 255.255.255.0, Status address starts at %I00129, Ethernet cable is plugged into top port of ETM.

Sixnet is at 192.168.1.2, 255.255.255.0 and pings okay, plus I can see it at its web interface, with PC (192.168.1.50) plugged into 2nd port of ETM.
I have opened Channel 20 for the Sixnet.


I have verified that none of the registers in the comm request logic are used any where else, same for location of where read registers for Sixnet are to be placed.

I have tried stopping and starting the controller (to reset everything), both with and without the 1 sec timer, and I cannot get a 1 in the read register COMMREQ logic.

With the 1 second OST I get AB90H (Hex) in the COMMREQ status word, I have even tried a 1 minute timer for the OST and I still get the AB90H.
(AB90H means the COMMREQ was discarded because the COMMREQ logic happened before the previous COMMREQ request status word was set) This makes since because I have not been able to get a 1 in the status word.

Regrettably....I cannot remember what I got when I removed the 1 shots to operate the read request, but it was not a 1. This will not work any way, because I obviously cannot leave the COMMREQ read command (3003) open all the time.

Attached is working logic routine example from a different project (Sixnet-V4, ETM is in slot 11), so I am fairly sure the 1 sec 1 shot operation should be valid for COMMREQ read time.
The other attached logic routine (F20_Sixnet) is the problem one.
Maybe someone can load this exported routine and see what is wrong.

I hope this is enough information...
I am in Singapore and it is night time here, so any other questions for online information will have to wait till approx this time tomorrow.
 
Okay I have an update...
I set up the Read Command (3003) logic with a bit that I could just force off and on. and removed the 1 sec 1 shot.
I stop and start the CPU to reset everything and close the channel.
The Open Command (3001) still gives me Open Success and a 1 in the related CRS word (R07071).

The odd part...
The first time I fire the read command (3003) I get a 0 in the CRS word??
After that I get the AB90H, which seems normal, since because i did not get a 1 the first time.

What am I missing in the setup (see above post)??

Also..
I find it odd, that in the GE Modbus users manual (GFK-2224L), they use the same registers for the Block Move and Comm Request logic in the Open and the Read Command logic?? Is this required or can I use different registers?
I understand that as the scan runs it will fill different information in these registers, but I would like to see this data separated so I can hold what is in these registers for monitoring.
 
The value of 4 at IN2 of the second block move for the "Read" (code 3003) COMMREQ configures a read of 3xxxxx Modbus memory. Does the device you're reading from map data to that address range or should you be trying to the read 4xxxxx address range? If so, you should be using a value of 3 at IN2. Isn't that intuitive, code 3 to read 4xxxxx memory and code 4 to read 3xxxxx memory!!!

You can use any register address you want to set up the COMMREQ data block. When the manual uses the same addresses for multiple examples it just underscores the need to only be executing one COMMREQ at a time.

BTW, it would have easier for me if you had simply made a backup of your entire program and posted that. I had to create a new project and import your .XML file into it. Had I been pressed for time, I might have more inclined to blow you off. Having said that, I completely understand if your employer frowns on posting the full project file.
 
3 for 4xxxxx and 4 for 3xxxxx...that does make a lot of sense.

The logic that works has a 4 in IN2 of the second block move.

If it helps... and you send me your email address, I will send you the logic.
I just don't want to spread it all over the world.....that is why I didn't post it.
1 of them I wrote from scratch (the 1 that works), the other (the one that does not work) was supplied to me by the customer as a base file to adapt to the equipment my company supplied.

Thanks for not blowing me off...
 
Sixnet.com (Kudo...Sixnet is owned by Red Lion)
Type: EtherTRAC-2 Ethernet I/O Module
Model: E2-16ISOTC
Part Number: EBI6ISO TC-D
Description: 16 Point Isolated TC module, range: 250 mV, Thermocouples supported J,K,E,R,T,B,L,N & S

http://www.sixnet.com/product/ethertrak2-ethernet-io-module-149.cfm

Modules (digital and analog IO also available) are supplied with VERY impressive dual Ehternet Ports, supporting switch technology (Pass-Thru), ring technology, and even dual Ethernet supporting 2 completely independent networks for full redundancy. They also support PoE (Power over Ethernet).
They sell an RTU also that programs in ISaGRAF, so you can build a full PLC.

Another kudo...
If you have more than 2 Sixnet modules...you get to use KEPServerEx for FREE. (Not much help in my case, since I want the info to be read directly into the PLC, but nice to know) You get the license number when you register the SixnetIOTools software.

PDF manuals are just a little too big too upload, even zipped. But they are available at the link.
 
Last edited:
The problem was that the "Unit Identifier" was wrong. It is Word 14 in the 3003 read word.
Even though the Sixnet module has its own IP address, it also needs a "Station Number" assigned (ODD). This "Station Number" is known as the "Unit Identifier" to GE PLC Comm Request.
This "Station Number" is mainly used in Modbus RTU communications, BUT the "Station Number" is ALSO used in the Modbus TCP message block.
 

Similar Topics

I'm trying to talk Modbus TCP/IP from a redundant system using Lan 2 inthe CPE330's to a CPU310 using ETM001. I've had the system talking before...
Replies
17
Views
2,397
I'm trying to get an rx3i system with a IC695CMM002 card to talk to a Moxa Io-logik module over rs485 modbus. I can get my computer to talk to it...
Replies
1
Views
500
How can a timeout be handled in an RX3i communicating Modbus TCP over an ETM? I have a CRU320 (firmware 8.95) setup in dual redundant mode...
Replies
1
Views
1,237
Good Day, I am Experimenting with Some more Modbus had had a few questions Regarding the Rx3i and Modbus. I have a big solar project At My home...
Replies
1
Views
2,216
Hey guys, I'm working on an existing system for a client where a GE RX3i at a tank/pump station is sending data to their office HMI through a...
Replies
1
Views
3,834
Back
Top Bottom