Going from 500 to 5000

After using 5000 95% of the time for the last 4 years, the little bit of work I do in 500 seems a little more challenging than it used to be. Always going back to the help files and such. 5000 just seems to hold your hand where 500 will simply give you clues.

I am defiantly spoiled now with my AOIs and UDTs.

Thank you 5000
 
Hehe. Now that's just silly. "it" implies you are referring to the task of manipulating an AOI online and not the person per se. So your statement is perfectly fine here as it implies more a potentially wrong task. You could have alternatively said "...Way too dangerous if you were to incorrectly edit an AOI online..." or similar. But that's just me being fancy. Nope, you haven't even offended me here.

At least I've got you thinking about it now šŸ˜‰

......
Regards,
George

I will totally disregard your usage of "wrong" in your reply, even though you want to correct me in my usage of the word.

You said my statement was "perfectly fine", so why call it "silly" ?

And then you go on to suggest I should have reworded it....

I will not tolerate such nit-picking, and could so easily leave this forum right now... pick out errors in technical content, feel free to correct me if I am wrong, or in your preferred word "incorrect". Neither bothers me, they both mean the same thing....
 
This has all gone so wrong...

I so do not want to do this here but apologies thread...

Man you are very stiff? I was yanking your chain above! But it appears to be wound so tight? You are completely reading this upside down.

Leave the Forum? On my account? Over something so very trivial? Of which I said from the outset was a very small observation of mine?

Please take a breath and read...

This "conversation", I would like to hope, would have had a whole other tone and clarity if we were having it face to face where I could better and more quickly explain my intent.

I was being humurous above which has clearly gone over your, at this point, fuming head. All over one word?

I meant it was silly as in I never said never use the word wrong. You are taking me literally. It's a contextual decision I'm advocating here. Of course you can use it wherever you, personally, choose to. I was advising, only, and in as well intentioned a manner as I possibly could/can, that we, not just you (I was advising in general in the other thread for all readers while using an example) should in situations where the use of the word wrong, contextually, could possibly be interpreted as sounding terse or conceited; avoid using it so as to avoid potential friction.

Your above example, contextually, is not one of those situations. It is perfectly polite in delivery here because, contextually, it clearly refers to a task more so than any individual. There is no argument from me here, or anywhere else, on what the word wrong means or doesn't mean. I took pains originally to explain that your meaning was/is very clear, in all cases I've read, and that all I was focusing on was the potential for the delivery to, in specific cases, be perceived as terse. Not the worst a statement can be perceived as, granted, but subtly avoidable, in my honest opinion.

My efforts here, even as good intentioned as I believe them to be, are a prime example of how text can be perceived in many ways - often poorly or abhorently received. All I've written so far, and quite thoughtfully I'll add, was in the hope of helping. If you do not want to accept that fact, and it is a fact, that all I was trying to advise was a possible subtle change for what I believe to be the better, then you may prerogatively do so. And while doing so, there is certainly no need to take it so to heart. Laugh it off. Laugh me off if you wish. But please don't focus on a perceived negative that simply was never there.

A little constructive advice from one contributor to another. What's so terribly wrong with that?

I will, in this case, humbly apologise to you if you feel I have offended you. Nothing could have been further from my mind - a safer place I would imagine?

Respectfully yours,
George
 
I appreciate all the good advice.

I would like to thank every one for giving me such good information. I know you are all very busy. All this information has given me good ideas were I need to start. I work on a night shift and have some time to work on the RsLogix 5000 set up in our shop. I wish every one a Merry Christmas and a very Happy New Year.
 
I so do not want to do this here but apologies thread...

Apologies accepted, on one condition.... look up the meaning of the adjective "terse", and then explain why it's a bad thing in context....
 
How things can easily be read, or misread...

Geospark said:
I so do not want to do this here but apologies thread...

...I will, in this case, humbly apologise to you if you feel I have offended you...

daba said:
Apologies accepted, on one condition...

Possibly being misread? - The apologies at the top of my last post was for everyone else. I was not saying I did not want to apologise, like a reluctant surrender. I was apologising for derailing the thread and saying how much I did not want to do so.

The apology at the bottom is yours to accept, if you will?

The apology is there and is sincere, but it is unconditional. Accept it as is, or not. It's a token of regret if I had offended you while dispensing some advice. A proverbial olive branch, if you will? All else you might want to discuss or debate should come after the apology and not be conditioned to your acceptance of it. My viewpoint on this ever so slight matter still stands. I am not apologising for that.

daba said:
...look up the meaning of the adjective "terse", and then explain why it's a bad thing in context...

If I could not, satisfactorily, explain what you have conditionally asked, does that mean you will not accept my apology? That would be a strange stance to take? But I don't really think that's what you mean. It's just one way that your statement could be construed. It's another example of how our word choice and statement structure can convey undesirable meaning.

However, with regards to continuing here, I feel I have more than explained what I was trying to point out. I don't need to look up the meaning of words I have carefully chosen. I could have chosen stronger adjectives than terse, but I did not. At this stage, if you cannot accept or agree with my point of view here, then that is fine. But I really don't see what more I can offer you on the matter.

I do wish you a Happy Holiday season.

Regards,
George
 
Some unsolicited advice to Geospark and Daba.
The only person whose behavior you can change looks back at from the mirror.
The congenitally thin-skinned will always find an excuse to take offense at what you say, no matter your choice of words. Attempts to prevent someone else from taking offense at what you say are doomed to failure.
There will always be people who take pride in pointing out every mistake you make. Their motto seems to be, the more the truth hurts, the more it needs to be told.
Most of fall somewhere between the two extremes described above.
The world needs both diplomats and firebrands.
Let it be.
 
As DABA said, the ladder is pretty much the same, but the data tables have changed.

Gone are the various tables (I:, O:, B3:, N7:, etc). Instead, there is one big "table" of "Controller-scoped" tags. These are referenced by name, not number, and you can give them whatever name helps you best. (More on that in a bit).


I/O
The I/O tags are based on the name of the rack in which the I/O card resides. The rack in which the PLC processor lives is called "LOCAL". Remote racks can be anything you want.

Actual I/O addresses would then take the form of "Local:6:I.Data.2, for the channel 2 discrete input point in slot 6, for example. Like with a SLC, 5000 adds all the relevant data when you add the module into the PLC configuration.


DINTs
Your most common data type to store integers is now the 32-bit DINT ("Double Integer"). No longer do you need worry about exceeding 32767; you now can manage values of over 2.1 billion. This makes life much easier.


Timers
Gone are the various time-bases. Everything is in milliseconds. But because .PRE and ACC are now DINT datatypes, 2.1 billion milliseconds translates to about 25 days, rather than the 9-hour limit that 32767 sec gave you.


Arrays
In the SLC, you may have taken advantage of the fact that registers were next to each other, and used indirect addressing and file instructions (FAL, FSC, COP, FLL) to efficiently manage data.

In a tag-based system, you do the same thing by defining a tag as an array ("DINT[256]") data type. You could create an array tag, called N7, and now, where in the SLC you might reference N7:13 you would reference N7[13]. In fact, that's exactly what the SLC-CLX conversion tool does.

But you don't really need to. I don't know if you've ever run into times in working with arrays in the SLC where you had a "file" from something like F8:50-75 and were pointing to it with an indirect address, but later wanted to increase the size of that array to 50 elements, only to discover in your "Usage Table" that F8:76+ were used elsewhere in the program, so you couldn't without a lot of rewriting.


Usage Table
That's probably the biggest culture shock when going from 500 to 5000. It doesn't exist. That's because you don't have a need to find unused memory to store data, you create that memory instead.

You can find out if whole tags are not referenced in the code (to clean up memory allocation), and there are even tricks to find out if what elements haven't been used yet, if you like to do things like create a "Onshots" DINT and take unique bits from within that word. But there's nothing like the old Usage view of a data table.


Programs and Program Tags
In the SLC, you could put all your code in a routine called LAD2, or you could break up your code into functional groups, putting them into separate routines (LAD3, LAD4) and call them with JSRs.


You can still do all that with 5000, but additionally, you can organize your code even more, with the creation of multiple "Programs", each of which have their own children routines under them.

That way, you can have a "LINE1" program, with "MOTORS", "PHOTOEYES", and other routines under it, and a "LINE2" program, with its own "MOTORS", etc., routines under them. You don't have to, but you can. It makes things easier to find, and identical things can be identical, with maybe only a simple search-replace of tag names.

Each Program has its own collection of locally-scoped tags as well. This feature actually exists in the SLC, where you can assign a data-table to only being exposed to a particular routine, but no one ever used it (that I ever saw). Here, however, it can be very useful. Controller-scoped tags are exposed to every program; program-scoped tags are scoped only to that program.

So if you were to have a "Oneshots" DINT tag in your LINE1 program, and also have a "Oneshots" tag in your LINE2 program, when you copy your code for LINE1 into LINE2, each [ONS] instruction is only referring to its local tag, and doesn't interfere with the other line. You didn't have to "find new unused addresses" for the "new" oneshots.

By keeping all the "placeholder" tags, for oneshots, interim calculation holding registers, certain timers, and so forth in the Program instead of the Controller, makes the Controller tag folder a lot less cluttered.

UDTs
In addition to the "Atomic" types that DABA meantioned (BOOL, DINT, REAL, etc.), and arrays above, you can create your own data type.

This can greatly improve the organization of the program, because you have all the elements that you need wrapped up in a single tag.

You're actually quite used to this concept already. A T4 data type in the SLC consists of 2 integers (.PRE & .ACC), and 3 bits (.DN, .EN, & .TT). With UDTs, you create a similar mix of other data types, but with anything you want.

For example, if you have 10 motors, and each motor can be controlled via the HMI by having an Auto and Manual Mode, with a Start and Stop command, an output and an aux contact, failure alarms, and so on, rather than make a bunch of tags for each motor ("M101_Start", "M101_Stop", "M101_Oper", etc), you can create a single tag ("M101") of a "Motor" data type that has elements ("M101.Start", ""M101.Stop", etc.) for what you want.

If you create a routine for M101 that does all the start/stop logic, mode & alarm handling and so on, now all you have to do is create a tag ("M201"), copy the whole routine to a new one, search/replace M101 for M201, and the only thing left is to tie the in the different I/O points.

Asynchronous I/O Scans
In the SLC, there was one execution thread: Read Inputs >> Scan Logic >> Write Outputs >> Do Housekeeping >> ((repeat)).

There could also be an STI routine that could periodically interrupt this sequence with the execution of its logic.

The CLX handles the I/O updates periodically, outside of logic scan. In theory, this could cause problems, because a --| |-- referencing an input module could be true on one rung but not on the next, rung if the I/O scan happened to arrive between the logic scans of the two rungs.

The hype about this is largely overblown, IMO. HMI communication has always been asynchronous to scan, but only rarely have I see that cause problems. But people will insist that you "have to" buffer I/O --- that is, map the I/O to internal registers, using the real address once and only once.

That's not a bad thing to do, mind you, especially if using UDTs anyway. But it is not strictly required. Just be aware of the asynchronous nature of I/O. If the only thing you use the Aux contact input is for alarming, and you compare both the On and Off state to your motor starter coil to run a "failed" timer, nothing is going get screwed up because for one scan both the XIO and XIC were true. The timer will only accumulate a few milliseconds, not enough to cause a "false alarm".

There are a zillion more tricks, trips, and traps, but this is more than enough to get you started.

Enjoy, good luck, and Merry Christmas.
 
I hate that they got rid of the SCP instruction, but once you have the AOI it's no different. Just wish when you had the AOI installed, it would convert the old SCPs into the new SCPs when running the auto conversion instead of making them into long nonsensical CPT statements instead.


IIRC you can accomplish the same thing using the SCL function block. I thought it was still a fairly clean way to get the function of a SCP and broke up the monotony.
 

Similar Topics

When I connect to a SLC 5/05 via ethernet. It will go offline after a few minutes. And, will not stay connected. I am using RSLogix 500 V12.00...
Replies
12
Views
3,011
Hi, i am using tia v15. i am able to communicate with my plc and also can load the program to the plc. but when i am trying to go monitor mode...
Replies
3
Views
3,851
Recently, our copy of RSLogix 500 began acting strangely. It opens fine, but when a processor is selected to go on-line, we get an error message...
Replies
2
Views
2,001
Software Ver. 22.00.00, After the 1st time of being true the EQL. instruction is still allowing the rung to be true even though the inputs are...
Replies
7
Views
186
Hello all, I am brand new here :cool:. I'm limited in my controls knowledge but always trying to learn more. I recently started working at a...
Replies
14
Views
325
Back
Top Bottom