Sign in to follow this  
Followers 0
binfordw

RS5000 question/ Help understanding arrays

8 posts in this topic

Hi,

I'm new to RS5000-  I'm wanting to learn more about it, some equipment we have uses it and is requiring more frequent troubleshooting as time passes.

 

A recent issue left me with something I don't understand, I was hoping to get some assistance here to help me figure it out better.  In the attached image, the "Loader magazine high lvl ring px" is a sensor- one of 3, for 3 duplicate stations on the machine- that can be assigned different station numbers as original setup requires.  I believe- I understand that the "[plug_index] is an array value, but I don't understand where that value is assigned.  In short- out of the 3 duplicate sensors- how can I tell which I am viewing when monitoring?

I appreciate any help understanding this.  I think my main hang up understanding these machines better is figuring out the use of these arrays.

 

rs5000_1.thumb.JPG.9582e9946e904ba4c5790

 

Share this post


Link to post
Share on other sites

The value of PLUG_INDEX is indeed the array index and will determine which sensor you're looking at. Find that tag in the tag database and cross-reference it. Either select it and hit CTRL-E or right-click on it and select cross reference. That will give you a list of where it's used. Look in the "Destructive" column for entries marked "Y". Those instructions change the value of the tag. If there aren't any...it's a little more complicated and may be changed by the HMI. Hopefully it only changes on machine setup/startup...

Note: there are at least 2 tag databases in the controller: controller-scoped tags and program-scoped tags. Each program will have its own tag database and you can have multiple programs per task and multiple tasks per controller. Look first for the tag in the tag database for the program you're looking at, then look at the controller tag database.

Share this post


Link to post
Share on other sites

Ctrl+E I wasn't aware of, Thanks for that

After looking into it more, all I can see are jump instructions if a selected station matches the used stations, i.e, stations  1, 5 and 9- which all 3 will match.

When 1 eq's 1, it looks like the sensor input is "In.D[Byte_1].0", but it is the same for all 3 stations.  Cross ref'ing In.D[Byte_1].0 just looks to return every "In" in all tasks.

 

In the image, I did/cut/paste the rung with" In.D[Byte_1].0", just so everything was visible in one pic.

rs5000_2.JPG

Share this post


Link to post
Share on other sites

It looks like they're using some user-defined-types (UDTs) to buffer the physical inputs. "Input Table for cyclical data" implies to me that they have a subroutine somewhere that maps the physical inputs to byte registers inside the tag called "In". Inside the tag "In", there's an array of registers called "D" that the inputs are copied into.

Can you share the ACD file?

Share this post


Link to post
Share on other sites

I'd be happy to send it, I can't add here as its over the size limit 

 

I caught on to the buffer use reading through the I/O and tag manual from Rockwell I found, so that's making some sense now, I need to find where they map the inputs to bytes as you said though.

 

Share this post


Link to post
Share on other sites

I sent you a PM with my email address if you want to send it that way.

Share this post


Link to post
Share on other sites

Wow, that thing has 41 programs in the continuous task...that seems like a lot. It's also a SoftLogix processor (running on a PC instead of a dedicated PLC).

So, the UDT "In" tag is controller-scoped, which makes sense since it's holding Input data. As an entire tag, it's used destructively (written to) about 20 times by external routines. These are only available in SoftLogix and I have no idea what they're doing since they're not part of the ACD file. All of the other destructive instructions refer to individual bits except one place in one program where an array of all 0s is written to UDT member In.D when INPUTS_BYPASS is active.

Short answer...you're past my experience now. I've only ever worked with SoftLogix once, in my first automation-type job when I was a multi-craft maintenance and all we could do was go online to look at the ladder code for troubleshooting (not change anything). And that was about 15 years ago. The online help refers to DLLs and to the SoftLogix5800 System User Manual (1789-UM002) for more information. As an example, the first JXR is in the program FirstRoutine, subroutine CallScheduledJxrs and calls the routine ValveGFileStatus. That shows up in the controller organizer as a routine under the FirstRoutine program. Double-clicking on it gives you the configuration dialog which shows the path and filename of the DLL file. A quick look in the user manual shows that the DLLs are standard Windows DLLs that are developed using any standard software development software like Visual Studio. I don't know how much access you'll have to the actual DLL from within RSLogix without having a source code version of it.

I'm afraid I'm going to have to hand you off to someone else at this point.

 

Share this post


Link to post
Share on other sites

I appreciate you taking the time to look at this, atleast I feel a little better about not understanding it now.

These are the only machines I've had experience with running pc based logic, which has kept an ominous veil of confusion in place anytime troubleshooting is required.

I have browsed the .exe that runs on the operator panel with VB, editing some error information and etc, but just don't understand it enough yet.  Thanks for linking the softlogix manual, I'll start reading through it in my free time.

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0