Question for the engineering folks

willxfmr

Lifetime Supporting Member
Join Date
Nov 2013
Location
Wisconsin
Posts
466
Hi Everyone.
First off, thank you all for giving me a much deeper understanding of PLC's then I would have ever gotten on my own. It has saved me many hours of ripping my hair out and cussing.

There have been a good number of threads along the lines of "what makes a good program?" This is another of those, but with a twist. One of my pet peeves with programs is that they seem to have no correlation to the prints. For example an ouput on the print is identified as "MOTOR 1 START", but in the program the tag will be called "CONVEYOR_ONE_RUN". As a side note, I work 99% of the time on AB PLC's ranging from 5's to 5K v21+. This has really gotten more common with the newer equipment, and the use of alias naming of tags.

So here is my question for those of you that write programs from scratch, or make major modifications to existing equipment. Do you consider the naming convention used on the prints when creating tag names, or is that not really a concern? I have always been on the end-user/maintenance side of things, and I'm just trying to get some insight from the builder/integrator side.


Thanks again for all the help over the years.
Will.
 
I do all my own design work, build the control panels, write the code and commission the job so things usually line up pretty well.

I do feel your pain though and am involved in a job someone else did at the moment. The people who designed the control panels employed a programmer. He did not understand - probably from a mechanical services background - these were generators! Differential Protection was Differential Pressure for example - I will not go any further - you get the gist - I have just spent a week re-commenting someone elses work so it sort of makes sense! Still do not know how the system works properly - will in due course I expect - going through drawings, theory and the like at the moment.
The biggest problem is what makes sense to one does not to another!
 
One way to minimize that is to use a P&I Diagram with tag numbers for components and devices connected to I/O. The tag number is in the nickname, tag name, or description of the program. That at least lets you cross reference.
 
One way to minimize that is to use a P&I Diagram with tag numbers for components and devices connected to I/O. The tag number is in the nickname, tag name, or description of the program. That at least lets you cross reference.

I'm going to have to admit that I have no clue what a "P&I Diagram" is. However if it gives us poor maintenance folk a head start in finding a problem, I'm all for them.
 
My P&ID's, prints and program would all match. M101 (motor 101) would be on all the the drawings. Program tag would be M101_RUN, M101_OL (overload), M101_RNG (running), M101_FLT (fault),etc... I always know exactly where to go look and didn't have to guess.
 
This is how we do it.
The real hardware that is connected to PLC I/O, is identified by the same name in diagrams, HMIs, PLC programs and in manuals.
However, that I/O may be connected in the PLC program to a standard program block, that uses other symbolic names on a higher functional level.

For example a contactor for a conveyor motor has the name =10+CC1-Q1 which is used in the diagrams, label on the contactor, PLC symbol etc.
=10+CC1-Q1 is then one of the symbols that are connected to a pin on the standard function block.
The higher level function is called "Conv10".contactor
"Conv10" is the symbolic name of the program instance for the conveyor.
.contactor is the standard name in the function block for the contactor.
 
If I can't name the tag the same as what is on the print, at the very least I put it into the description.
When designing, I use page and line number for device tags (say 1024PRS for proximity switch on line 24 of page 10) and the PLC tag will be an alias or symbol named PRS1024 referencing the h/w connection.
 
Good point, I am also for the most part an end user too. I have some equipment with the most logical way of labeling everything, then I have some with pretty much nothing ( rs500 without descriptions ) I feel your pain too.
 
This can be a real struggle for companies at times, and I've never understood why. Well, in my former company it's because people just didn't seem to 'get it' when I constantly complained that our prints and program never matched up well, it was like talking to a wall. Primary issue was that nobody besides me understood system integration, and we were scaling up into a system integration type of company.

Anyhoo, there are two issues I always see. First is the program reference. We would always follow the P&ID diagram.

M-101
M-102
FV-201
FV-202
TT-301
TT-302

That worked for the "most" part. Of course, what to do about the Hyphen? In the PLC program, we had to eliminate it. FV-201 became FV201. In the Prints it would remain hyphenated, then what if there was a prox associated with a valve? FV-202-ZSC, again that doesn't work well in the PLC program. So I constantly fought that. Then what about the wire labeling?

FV201 works great as a AOI name for the device control. But what about the actual IO label? Can't use FV201 again, so do you call it inputFV201? outputFV201? Didn't make much sense to use those so we defaulted back using a Chassis Rack Slot identifier on the actual IO and wire label. This way if you looked at a wire label on a field device you would know where it was physically wired too. Labeling the field device wire as FV201 at the field device doesn't make much sense when you already know it's FV201, I think most people troubleshooting would prefer something that told them where the wire went.

Took me a year to get that concept across. Prior to that it was 'name it whatever-the-hell-the-electrical-designer-wanted' never mind the fact that their attempt at aligning with the PLC IO address was wrong because they insisted on designating AI, DI, DO, AO in the address when that isn't how a Logix PLC works. So you'd look at the address they put on the prints, and it was simply wrong because the syntax was wrong and therefore the reference didn't exist in the PLC!!! Oh, and then the software guys would name the items in the hardwrae tree whatever-the-hell-they-wanted so nothing aligned. Not to mention that the wire labels could be 20+ characters long, the electrical designers didn't seem to understand that an electrician in the field might not have a labeler that could handle that. I've seen labels 2+ inches long, at a field device it gets buried int the conduit, what good is that?

Then what if the IO isn't directly wired to an output? It's on a network like Ethernet or ASI?

In the end I proposed the Chassis-Rack-Slot, or Chassis-Class-Instance convention that I feel works really well and addresses both wired and networked devices. Plus it kept character length to a reasonable 12 characters for a wire label, granted you had to understand how to decode but it works well. The IO mapping logic clearly connects the dots of the two, and in the end the prints had FV-201 on them, and the wire label indicating something like C04R01S08/9.

Don't even get me started on matching descriptions.....I always felt bad for the end user getting our prints. The systems we did were so large and the process engineers never provided good descriptions for the initial electrical design so again it was 'make-it-up' to get the prints done while the software guys where writing the functional design spec and creating the descriptions there. Electrical guys *****ed about having to re-work it after. I'm sorry but that's how it goes!!
 
Last edited:
I think it's very important to make correlation between the schematic and the program easy. In fact, I've seen process applications where literally everything was tied to a loop number. The P&ID was the master and everything flowed down from there. So if I had, say a Temperature Transmitter designated as TT711003, then everything associated with it was called TT711003. That's what it would be called on the electrical schematic. The conductors on the analog signal cable would be labeled TT711003+ and TT711003-. And the tag in the program would be called TT711003 or some variation of it.

Obviously this convention works better for process applications rather than machine applications, but I think the principle holds true for all panels and programs. Descriptions in the program should match the schematics as closely as possible if not exactly.
 
This can be a real struggle for companies at times, and I've never understood why. Well, in my former company it's because people just didn't seem to 'get it' when I constantly complained that our prints and program never matched up well, it was like talking to a wall. Primary issue was that nobody besides me understood system integration, and we were scaling up into a system integration type of company.

Anyhoo, there are two issues I always see. First is the program reference. We would always follow the P&ID diagram.

M-101
M-102
FV-201
FV-202
TT-301
TT-302

That worked for the "most" part. Of course, what to do about the Hyphen? In the PLC program, we had to eliminate it. FV-201 became FV201. In the Prints it would remain hyphenated, then what if there was a prox associated with a valve? FV-202-ZSC, again that doesn't work well in the PLC program.

Why not? Also, I think standard P&ID convention would label it ZSC-202 for valve closed switch and ZSO-202 for valve open.

So I constantly fought that. Then what about the wire labeling?

I've seen the wires that control a device be labeled with the device's loop number. So if you had a modulating valve called FV201, the conductors in the shielded cable that modulate it would be called FV201+ and FV201-.

FV201 works great as a AOI name for the device control. But what about the actual IO label? Can't use FV201 again, so do you call it inputFV201? outputFV201?

If you're using an AOI, couldn't you just make one of the parameters the physical I/O address assignment without having to alias it?

Didn't make much sense to use those so we defaulted back using a Chassis Rack Slot identifier on the actual IO and wire label. This way if you looked at a wire label on a field device you would know where it was physically wired too. Labeling the field device wire as FV201 at the field device doesn't make much sense when you already know it's FV201, I think most people troubleshooting would prefer something that told them where the wire went.

On the flip side, if you're looking at the panel, labeling the wire I:1/1 according to the I/O address doesn't make sense when you already know it's I:1/1. If it were labeled FV201, you'd know "this is the wire that turns on FV201."

Took me a year to get that concept across. Prior to that it was 'name it whatever-the-hell-the-electrical-designer-wanted' never mind the fact that their attempt at aligning with the PLC IO address was wrong because they insisted on designating AI, DI, DO, AO in the address when that isn't how a Logix PLC works.

Do you mean they would start over as soon as the IO type changed? So like if there were two DI and two DO cards, they'd label them as DI0, DI1, DO0, DO1? If so, that's terrible, I agree.


So you'd look at the address they put on the prints, and it was simply wrong because the syntax was wrong and therefore the reference didn't exist in the PLC!!! Oh, and then the software guys would name the items in the hardwrae tree whatever-the-hell-they-wanted so nothing aligned. Not to mention that the wire labels could be 20+ characters long, the electrical designers didn't seem to understand that an electrician in the field might not have a labeler that could handle that. I've seen labels 2+ inches long, at a field device it gets buried int the conduit, what good is that?

That's pretty insane. Loop numbers can get pretty long. I generally prefer to number everything according to schematic line number, even the I/O. That way, you always know exactly where to find the wire you're looking at.

Then what if the IO isn't directly wired to an output? It's on a network like Ethernet or ASI?

In the end I proposed the Chassis-Rack-Slot, or Chassis-Class-Instance convention that I feel works really well and addresses both wired and networked devices. Plus it kept character length to a reasonable 12 characters for a wire label, granted you had to understand how to decode but it works well. The IO mapping logic clearly connects the dots of the two, and in the end the prints had FV-201 on them, and the wire label indicating something like C04R01S08/9.

I would say this could add confusion because Chassis-Rack-Slot doesn't really mean anything with Ethernet I/O, but it is at least a convention of some kind that can be applied consistently.

Don't even get me started on matching descriptions.....I always felt bad for the end user getting our prints. The systems we did were so large and the process engineers never provided good descriptions for the initial electrical design so again it was 'make-it-up' to get the prints done while the software guys where writing the functional design spec and creating the descriptions there. Electrical guys *****ed about having to re-work it after. I'm sorry but that's how it goes!!

It amazes me how often prints get neglected, despite how important they are. They are your first and most important line of defense in troubleshooting a machine.
 
It is very easy for an engineer to bury themselves in their own acronym language. In the end that one person is the only one who can decipher their own code. I prefer the English language. If you have a Transfer Conveyor One, call it that! Not TC1. Acronyms are way overused in programs and company communications in general. I think it stems from the old days when you could only use 8 characters to make a tag name. Hello, the alphabet is free, feel free to use all of it. Type it like you would speak it. Just say no to the acronym. That's my little rant.
 
It is very easy for an engineer to bury themselves in their own acronym language. In the end that one person is the only one who can decipher their own code. I prefer the English language. If you have a Transfer Conveyor One, call it that! Not TC1. Acronyms are way overused in programs and company communications in general. I think it stems from the old days when you could only use 8 characters to make a tag name. Hello, the alphabet is free, feel free to use all of it. Type it like you would speak it. Just say no to the acronym. That's my little rant.

I would say for the descriptor that works fine, but if I use Transfer_Conveyor_One_Overload as the tagname, and i have 10 of those in series on a rung from multiple pieces of equipment, it gets a little crazy IMHO. I try to use ISA standard nomenclature but I came from a field that was more process design vs. machine design.
 

Similar Topics

We have added a new feature to our latest motion control product. Our new product can do EthernetI/P I/O or implicit messaging at 1 millisecond...
Replies
9
Views
2,560
Hello again..trying something on an existing poorly written program and just wanted to double check something system is an A-B MicroLogix 1200 In...
Replies
5
Views
118
Good morning! Let me start by saying, I am still learning about this type of HMI programming. I recently watched a video about recipes and how it...
Replies
0
Views
53
I have some logic that I have written within a 5380 series controller that tracks the time an event is started, while the event is running an RTO...
Replies
2
Views
81
I have an HMI 2711R - T4T Series B, and I want to know which PLCs, besides Micro 820, can communicate with it.
Replies
2
Views
80
Back
Top Bottom