Converting 90-30 to RX3i, also need to convert comms to EGD

defcon.klaxon

Lifetime Supporting Member
Join Date
Feb 2015
Location
Far NorCal
Posts
616
Hi all,

I'm working on a project that is three-fold: replace GE 90-30 PLCs with RX3i, consolidate distributed program to master PLC (old PLC ran out of memory, so some of the existing program is executed on the slave PLC), and add some additional functionality (new pumps to recycle backwash water). This is my first project with GE and Machine Edition, so I'm still learning as I go. One of the things I'm trying to figure out right now is how to go from the old Genius Communications Module comms to ethernet.

I've accomplished the first step of taking the existing code and porting it over to RX3i (I've made sure the inputs and outputs are properly mapped, made sure the various modules are the proper p/n, etc etc). Now I'm trying to work out how to set up the comms, from GCM+ to ethernet. Looks like Ethernet Global Data is how the new system will be, but I have a few questions about how to implement it.

The old comms seemed straightforward; %G data is how it was shared, along with some %R registers. It seemed like as long as the data was set up, it would be shared between the two PLCs. Now, EGD seems to be a produce/consume model that needs to be scheduled, is that right? Also, do I now have to go through the entirety of the logic, figure out which data points are produced/consumed by which PLC, and create something more akin to a Message that contains that data?

I've got some info from my rep so I'm reading through it, but it's a bit dense...I'm trying to get a more plain english explanation of the differences between GCM+ and EGD, and realistically how much work it's gonna take to convert. Thanks all.
 
The Genius Communication modules also operate on a producer/consumer model. The only difference is that the block of data produced by the GCM is available to every device on the Genius network and not directed at a single consumer.

Let's assume the GCM in one PLC is at Genius SBA 16 and the GCM in the other PLC is at Genius SBA 17:
In the hardware configuration for the 90-30 PLC with the GCM at SBA 16, look under the Global Data tab for the GCM. The address and length assigned to SBA 16 corresponds to the produced data in the corresponding RX3i. The address and length assigned to SBA 17 corresponds to the consumed data in the RX3i.

In the hardware configuration for the 90-30 PLC with the GCM at SBA 17, look under the Global Data tab for the GCM. The address and length assigned to SBA 17 corresponds to the produced data in the corresponding RX3i. The address and length assigned to SBA 16 corresponds to the consumed data in the RX3i.

Genius limits the amount of data transmitted by a single SBA to 64 words. EGD lifts that restriction. Also, the GCM requires that the transmitted data be a contiguous block of memory. EGD lets you set up multiple blocks with different addresses.

I hope that helps.
 
It should be very straight forward as EGD was in part modeled after Genius. With EGD you can set producers and consumers in one PLC. One difference is that unlike GBC to GBC, EGD does not need to be configured on both ends of the communication.
Be sure to calculate data lengths correctly.
I suggest laying everything out from the Genius configuration into Excel, then have your dealer look it over or post it here.
 
The Genius Communication modules also operate on a producer/consumer model. The only difference is that the block of data produced by the GCM is available to every device on the Genius network and not directed at a single consumer.

Let's assume the GCM in one PLC is at Genius SBA 16 and the GCM in the other PLC is at Genius SBA 17:
In the hardware configuration for the 90-30 PLC with the GCM at SBA 16, look under the Global Data tab for the GCM. The address and length assigned to SBA 16 corresponds to the produced data in the corresponding RX3i. The address and length assigned to SBA 17 corresponds to the consumed data in the RX3i.

In the hardware configuration for the 90-30 PLC with the GCM at SBA 17, look under the Global Data tab for the GCM. The address and length assigned to SBA 17 corresponds to the produced data in the corresponding RX3i. The address and length assigned to SBA 16 corresponds to the consumed data in the RX3i.

Genius limits the amount of data transmitted by a single SBA to 64 words. EGD lifts that restriction. Also, the GCM requires that the transmitted data be a contiguous block of memory. EGD lets you set up multiple blocks with different addresses.

I hope that helps.

Thanks, it helps a ton! I'll look over the original code before I converted it and check out the tabs you mention.
 
It should be very straight forward as EGD was in part modeled after Genius.

OK great, I was hoping it wouldn't be too difficult since they seem to have streamlined the 90-30 to RX3i to be pretty painless.

With EGD you can set producers and consumers in one PLC.

And how exactly does that differ from GCM?

One difference is that unlike GBC to GBC, EGD does not need to be configured on both ends of the communication.

Two questions: first, what is GBC? Genius _ _? Second, why would EGD not need to be configured on both sides? Wouldn't you need to specify what is produced/consumed on both ends? Or do you mean you can specify that in the "master" PLC and the "slave" will follow along?

Be sure to calculate data lengths correctly.
I suggest laying everything out from the Genius configuration into Excel, then have your dealer look it over or post it here.

I will keep this in mind. Can you tell me more about laying everything out in Excel? Do you mean there's a way to export the data, or do you mean doing this manually? I think the existing Genius is pretty straightforward, it's just a block of globals and a block of registers. What I'll do is check the remote PLC and compare what it has versus the local PLC and see if that gives some additional insight.

Thanks!
 
OK, so I've done some more digging and think I've got most of this figured out. According to the Global Data tab, it appears that the communications are very simple. SBA 16 is the Filter Control Panel, which can be thought of as the "master". SBA 31 is the Chlorination Control Panel which can be thought of as the "slave". So it looks like SBA 16 produced data is %R01700 and a length of 64, And SBA 31 produced data is %R01800 and is also a length of 64. I am assuming that the "produced" data is "consumed" at the other side. Here's a link to a screen grab.

The next part of the puzzle is the various %G global data references I see...how do those work into this? Are they manually packed into the various %R registers, or are they natively shared?
 
Last edited:
In the image you posted, the Filter Panel PLC (SBA 16) transmits 64 words of data at address %R1700 - %R1763 as global data available to any device on the Genius network capable of receiving it. Furthermore, it expects to receive 64 words of global data from the device at SBA 31 and it will put that data at address %R1800 - %R1863.
You have to look at the configuration for the chlorination panel to determine the address where it puts the data from the filter panel and the address of the 64 words that PLC transmits.
%G memory could have been used for the addresses of the global data, but it does not appear that is the case here. The term "global' as applied to %G memory is somewhat of a misnomer here.
When I was writing new programs for 90-30s I got into the habit of using %G addresses for HMI buttons. That way, when I had to come back to a program I had written some time ago, I knew when I saw a %G address that it was coming from the HMI, as long as nobody else had tinkered with it.
 
GBC is a Genius Bus Controller. The GCM for the Series 90 PLCs is an inferior module that does not possess the full functionality of a GBC.
A little bit of history. When the 90-30 and 90-70 PLCs were introduced in 1990, GE's flagship remote I/O network was Genius. The 90-70 was the top-of-the-line PLC and the 90-30 was marketed as the successor to the popular Series One PLC. The Series One was manufactured by Koyo and when GE and Fanuc announced they were developing the 90-30, Koyo announced it was teaming up with Texas Instruments and would henceforth market their product as the TI-305. That product is still available as the DL305 line from Automation Direct, which is a US subsidiary of Koyo.
At the initial Series 90 product introduction, only the 90-70 had a Genius Bus Controller module which was required for full control of Genius I/O. The 90-30 had a limited functionality Genius Communications Module which allowed a 90-30 to reside on the Genius network, but only to share data, not to control the outputs on a Genius block. When asked why they didn't provide full functionality in the 90-30, the response I heard was that if they did that, they'd never sell enough 90-70s to recoup the development costs. It was a few more years before they introduced a Genius Bus Controller module for the 90-30.
 
In the image you posted, the Filter Panel PLC (SBA 16) transmits 64 words of data at address %R1700 - %R1763 as global data available to any device on the Genius network capable of receiving it. Furthermore, it expects to receive 64 words of global data from the device at SBA 31 and it will put that data at address %R1800 - %R1863.

Thanks for confirming, this is making sense.

You have to look at the configuration for the chlorination panel to determine the address where it puts the data from the filter panel and the address of the 64 words that PLC transmits.

Do you mean the configuration on the Global Data tab of the chlorination panel target? If so, it's identical to what I posted so I think it's putting everything in the same place address-wise.

%G memory could have been used for the addresses of the global data, but it does not appear that is the case here. The term "global' as applied to %G memory is somewhat of a misnomer here.

Interesting. Is this because you're not seeing any %G memory in the Global Data, only the %R? Here are a few things I've noticed that might have confused me. First, in the comments of the code there is something in the _MAIN block of the Filter Control Panel that says the following: "Global addresses (%Gxxxxx) are used to communicate discrete data between PLCs. Registers 18xx and 17xx are used to communicate real time data between the PLCs." Second, in the _MAIN block, I do notice that there seems to be some packing/unpacking? What I see is a few MOVE INT blocks; at the CL2 PLC, I see a MOVE INT block whose input is %R01757, the move count is 4, and the output is %G00129. Conversely, there's a 3 move count MOVE INT whose input is %G00001 and the output is %R01829. And the opposite is at the FCP PLC. So it looks like there might be some packing/unpacking of %G memory? But overall there is a ton more %G than just seven, so I'm not sure exactly what's going on yet.

When I was writing new programs for 90-30s I got into the habit of using %G addresses for HMI buttons. That way, when I had to come back to a program I had written some time ago, I knew when I saw a %G address that it was coming from the HMI, as long as nobody else had tinkered with it.

Interesting. The original programmer may have done something similarly minded. I'll keep looking around to see what I can figure out.
 
GBC is a Genius Bus Controller. The GCM for the Series 90 PLCs is an inferior module that does not possess the full functionality of a GBC.

A little bit of history. When the 90-30 and 90-70 PLCs were introduced in 1990, GE's flagship remote I/O network was Genius. The 90-70 was the top-of-the-line PLC and the 90-30 was marketed as the successor to the popular Series One PLC. The Series One was manufactured by Koyo and when GE and Fanuc announced they were developing the 90-30, Koyo announced it was teaming up with Texas Instruments and would henceforth market their product as the TI-305. That product is still available as the DL305 line from Automation Direct, which is a US subsidiary of Koyo.
At the initial Series 90 product introduction, only the 90-70 had a Genius Bus Controller module which was required for full control of Genius I/O. The 90-30 had a limited functionality Genius Communications Module which allowed a 90-30 to reside on the Genius network, but only to share data, not to control the outputs on a Genius block. When asked why they didn't provide full functionality in the 90-30, the response I heard was that if they did that, they'd never sell enough 90-70s to recoup the development costs. It was a few more years before they introduced a Genius Bus Controller module for the 90-30.

Thanks for the history lesson guys! I am continually amazed at the level of knowledge you all have. Thanks for the insight and helping me understand the bigger picture here.
 
at the CL2 PLC, I see a MOVE INT block whose input is %R01757, the move count is 4, and the output is %G00129.
That instruction copies four words (64 bits) from %R1757 - %R1760 to 64 consecutive bits at address %G129 - %G192.
there's a 3 move count MOVE INT whose input is %G00001 and the output is %R01829
That instruction copies 48 bits of %G data at address %G001 - %G048 to %R1829 - %R1831.

If you would like, and your company permits, make a backup of your project file and post it here. If you have more questions I'll be in a better position to answer them if I can see the full picture. If you'd rather not (or aren't allowed to) post them to a public forum, send me a PM and I'll give you my email address.
 
Last edited:
That instruction copies four words (64 bits) from %R1757 - %R1760 to 64 consecutive bits at address %G129 - %G192.

That instruction copies 48 bits of %G data at address %G001 - %G048 to %R1829 - %R1831.

Sorry for the delayed response, got caught up with a few other projects.

OK so I'm a bit surprised to hear that this instruction would move four words, rather than integers. Can you explain why a MOVE INT block would actually move words? I must be missing something.

If you would like, and your company permits, make a backup of your project file and post it here. If you have more questions I'll be in a better position to answer them if I can see the full picture. If you'd rather not (or aren't allowed to) post them to a public forum, send me a PM and I'll give you my email address.

That's a generous offer, thanks. I'll send you a PM.
 
In the 90-30 both WORD and INT data types are 16 bits. For any INT instruction such as ADD_INT, the most significant bit will be interpreted as the sign bit. WORD instructions such as OR_WORD are unsigned.
The Rx3i will be more strict about type casting than the 90-30. In a 90-30 you would be allowed to use a variable with a %R address in both an ADD_INT and an OR_WORD instruction. In the Rx3i you will be forced to create both an INT variable and a WORD variable with the same %R address to do the same thing.
 
Last edited:
Another thing to keep in mind is that in the GE PLC/PAC world %M and %G data types can be used as BOOL, INT, DINT or Real data types this makes it very flexible although the programmer needs to keep closer track of what they are doing. Also addressing must be on a byte boundary.
The PAC simplifies this by allowing a mix of addressing and symbolic variables.
 
Last edited:

Similar Topics

Hi, I'm in the process of upgrading 90-30 to Rx3i, and the 90-30 has instructions lists in the program that are not supported in the...
Replies
5
Views
1,889
I have been researching on how to go about starting for converting from 90-70 to Rx3i and found GFK-272 doc...
Replies
31
Views
9,198
Hello everyone, can anyone help me with covert the STL code to ladder. Iam using plc s71200. A %DB1.DBX33.7 // angel of vaccum...
Replies
2
Views
200
Hello PLCs Forum, I am in a bit of a pickle and was hoping someone could offer me some help. I have a .rss file and just need to see the ladder...
Replies
2
Views
113
Hello nice to meet you, im new in here, I'm currently trying to convert code written in STL for a S7-400 to SCL for an S7-1500, because when i run...
Replies
5
Views
295
Back
Top Bottom