HMI for a "dummy"

I just remembered a system I worked on a few years ago.

It consisted of an RSView PC, a micrologix, and a radio link.

I was sent out to troubleshoot a communication issue. What I found was that the HMI was programmed badly - I mean, it was not usable for alarming at all. So, digging in, I found:

One single graphics page.
Six tags, all IO.

Well, this confused me, so I went to the remote location, and hooked up to the PLC. Yep, no program.

This company had been sold a bill of goods consisting of an RSView PC with one inoperable screen, an unconfigured radio link, and a PLC with no program. 7 grand.

I fixed it (still no program), then they turned it off 5 months later when they manned the remote.
 
Marc,

I'm not trying to control the I/O tags. I'm displaying their values on the HMI. It is for the operators to monitor what goes on. The inputs (analog and digital) come from a source, processed by the Control Panel via PLC, and displayed on HMI.


I'm trying to generate a memory map from HMI. Any ideas how to do that?
 
That's exactly right, many people try to turn on input and outputs from the HMI when they first get started, I was just trying to keep you from going down that rathole.


Not sure what you mean by generate a memory map from the HMI. Have you created a bunch of HMI tags that you want to map out to the PLC?
Marc
 
Ok, the programmer tells me the integers cannot be scaled to floating numbers in PLC, i.e. from xxxx to xxx.x. It has to be done in HMI. How do I do that in HMI?
 
Divide your tag by 10.

EX: {[PLC]this_number_is_too_big} / 10

Use that in your "tag or expression" field.

Then make sure you use the decimal fraction in your numeric displays.
 
Novice,

Technically speaking he is right but there are a bunch of ways to get integer data to floating point in a plc. I personnaly prefer to do it in the PLC because it is more transparent (in my opinion).

Can you be more specific on what type of value you want to display? Since there are so many ways of doing this, we can help you choose what's best for your application.

Marc
 
For example, I want to display the liquid level of a containment unit in range of between 0.0% to 100.0%. An analog instrument measures the level (in some other unit), takes it to PLC where it is scaled from 0 (low measurement point at 0%) to 1000 (high measurement point at 100%). This value has to be multiplied by 0.1 to bring to between 0 to 100.

This isn't the only one. I've got a bunch of gauge pressures, position levels, liquid levels and temperature measurements that will have to be scaled like the above.

The engineers tell me it can't be done in PLC. I don't know how to do it in PLC either.
 
Novice,

Have him divide by 10 and put it into a floating point register.

Or

Have him Scale the input with parameters from 0 to 100.0% to a floating point register.

In the instance you are talking about I think the SCP instruction is what he should use.

I can post an example if you like

Marc
 
Novice,

Here is an example of the SCP instruction used as per your example of a storage tank, mine uses a reverse osmosis water storage tank.


NOVICE.JPG


Hope it's legible, Basically it is an output instruction that scales your input (interger, analog input, etc.) in this case analog input I:4/4 RO_STORAGE_LEVEL from a min of 4000 (4 mA) and a max of 20000 (20 mA) to a new range of 0% to 100% and dumps it into F8:4 as a floating point number called RO_STORAGE_SCL.

As you can see, no restriction on scaling to float in a SLC5/04.

Though I used I:4/4 you can use any word address you wish. From your previous statement I assume he is using the old SCL instruction out to an integer word which is limited to signed whole integers between +-32767.

NOVICE2.JPG


These are {EDIT; insert AT LEAST} two other ways to do it but I think the SCP is the best way to go in your application. Note if you use the DIV option above, be careful of divide by zero errors.

The reason I prefer to do all of this in the PLC is that I want to be able to see everything in one place. I have run into situations (on other peoples equipment) where the HMI can be in another building that is doing all of the scaling and moving decimal places around and if you are debugging the PLC, it's hard to see the reltionship between the numbers being acted upon. EG tank level at 872 in the PLC and not knowing the scale back at the HMI. Worse yet PSI in the PLC and HMI displaying BAR or GPM in PLC and LPM on HMI, really aggrivating.

If the guy doing the PLC code doesn't know about the SCP instruction and you tell him about it, he will either get really psyched about it or get really ****ed since it wasn't his idea.

You'll have to be the judge on how to handle letting him know about it.

Good luck and hope this helps

Marc
 
Last edited:
Wow! Very good stuff. Thanks very much. The SCP version is what the programmer is actually doing, except he's not using floating numbers because he doesn't know how to. He's relatively new to Allen-Bradley language, though not new to PLC programming.

For this project, I've decided to scale in HMI using "Edit HMI Tag". It should work. I'll keep your example in mind on the next project. :nodi:

Thank you all for your help and Happy New Year.
 

Similar Topics

Good people of PLCs.net, I am currently working with an HMI that is advantech 1250H, that communicates with a 1769 Compact logix and Currently...
Replies
0
Views
11
Hello all, I know its not good practice to have duplicate destructive bits when writing plc code, but I'm wondering about writing to the same tag...
Replies
2
Views
91
Hi All, As a precaution my company has been collecting copies all the HMI and PLC programs. I have recorded copies of most of our sites...
Replies
0
Views
63
Hello all! So I have one project with a S7-1214 and a MTP1500 "Project1" and one project with another S7-1214 "Project2". Both of these PLC:s need...
Replies
6
Views
88
I am using Factory Talk view Machine Edition Runtime HMI. I want to configure on button in such way that when i press this button I want to...
Replies
3
Views
149
Back
Top Bottom