Analog Faceplates - Rockwell L8X vs InTouch Standalone

dalporto

Lifetime Supporting Member
Join Date
Jun 2021
Location
Montreal, QC
Posts
262
Hi all.

Customer wants analog faceplates really bad, even if we explained that it doesn't make much sense in his process.

What he wants to see when he clicks on an analog value:

  • PV
  • SP (Can be modified)
  • LL value SP (can be modified) + timer (can be modified) (starting values are in the PLC)
  • L value SP (can be modified) + timer (can be modified) (starting values are in the PLC)
  • H value SP (can be modified) + timer (can be modified) (starting values are in the PLC)
  • HH value SP (can be modified) + timer (can be modified) (starting values are in the PLC)
  • Engineering Units (that doesn't come from the PLC but is written in InTouch)
  • Scaling Low from PLC
  • Scaling High from PLC
  • Graph bar showing PV, SP and alarm location
  • Buttons to enable / disable alarms (both ways)
  • Name it
So I'm thinking ok. I could use a data structure on the PLC, and pass it to InTouch. But then I'm thinking that I have a limitation; Since their remote control center works jn Modbus, we went all Modbus and now to "address" the data I need to use integers only since it's the only format that the ProSost module is accepting, so I'd maybe need to de-construct the structure to pass it to SMC for InTouch, making the structure useless. So maybe not a great idea to build a structure only to have to deconstruct it.

So, let say the customer accept that we go ABCIP for that part; would SMC/OCMC accept the structure as a tag? I really don't know.

But anyway, even if that work, how can I use the data inside the structure inside InTouch StandAlone? Can it be done? Like the 2 first integers are the PV in REAL, 2-3 are the LL SP, x-x.0 is whatever and so on. I really don't see it working. Is there a way to have a matching data structure on a InTouch Standalone installation?

It doesn't seems like there is an easy way to do that, looks like a lot of busy work and Excel sheets to do.

Right now, with that setup, I think that the only way I can do it is to send every piece of information from the PLC using a different tag so I can build a template in InTouch with indirect tags, using Modbus or ABCIP, meaning a lot of useless tags (most analogs doesn't have setpoints nor alarms).

I saw that in gold mining, but it was Archestra with Schneider PLC's, maybe it was easier to do.

Any advise or opinion on that?

I mostly want to shovel that ahead the more that I can.

Thanks.
 
Ive done many common faceplates for Intouch. Do as you said, create tags with an Indexed identifier...for example value1, LAlarm1, HAlarm1, etc. Then construct your faceplate popup using indirect tags. In the on open script of the window, construct the indirect by passing an index value in a tag. So your script would be:

IndValue.Name = "Value" + Text(IndexTag, "#").
IndLAlarm.Name ="LAlarm" + Text(IndexTag,"#")

Etc.

Now let's say there is no Tag LAlarm for this particular analog. You can hide visibility or disable an entry in the faceplate for LAlarm by interrogating the IndLAlarm.Reference=="" which will be true for the non existent tags.

The alternative is to use a super tag structure but then you'll have alot of tag structures for tags that may not really exist. Also super tags are limited as far as individual alarm configuration if you need that ability. I personally don't like super tags, and I'll use DBdump and DBload with excel to create all the tag instances I need that are repetitive.
 
Now let's say there is no Tag LAlarm for this particular analog. You can hide visibility or disable an entry in the faceplate for LAlarm by interrogating the IndLAlarm.Reference=="" which will be true for the non existent tags.

Thank you Robert.

That part is really interesting, I'm not quite seasoned with that syntax yet.

I started something to test how indirect tags are working:

Show "I30_Analog_Faceplate";
TEST_ANALOG_INDIRECT.Name = TEST_ANALOG1.Name;
TEST_ANALOG_INDIRECT.EngUnits = TEST_ANALOG1.EngUnits;

To show the analog, I need to use TEST_ANALOG_INDIRECT, I cannot use TEST_ANALOG_INDIRECT.Name, that confused me a bit. I guess that I maybe could use TEST_ANALOG_INDIRECT.Name as a String to have it working. It's not actually something I really want to do, I was just wondering why it's acting this way.



Other thing I tried to do is the mouse (h)over thing. I can have it appear (the popup) using the "mouse over" under actions, but it latches open after the 500 ms I set it, which I don't want, I just want it to latch open when I click on it, and only appear after a delay of hovering over, then disappear once the mouse moves away from it.

Any idea on how to do it?
 
Think of indirects as pointers to real tags. To set the pointer you can either assign the indirect the tag, or assign the indirect tags name to the tags name. But you'll display the indirect tag in your widgets and animations.

When constructing free form tag names, it's easier to use the .name assignment because that's just a string to the tag name. So per my example if you have a tag named Value1 and an indirect named indValue then all these are equivalent:

IndValue = Value
IndValue.Name = Value.Name
IndValue.Name = "Value"

So by using the string assignment you can construct the tag name dynamically in real time by passing an index as part of the name construction. In my example I passed an integer and converted it to string to form the name, but it could also be a string directly. Just make all your different tags for each analog have a common prefix and then form the rest of the name with a passed value whether a number or string.
 
One other tip. I'm OCD in regards to the unused tags report...there should be no unused tags. However if you construct indirect to point to tags using strings like IndValue.Name = "ValueTag", then even though ValueTag is used, it will show up in the unused tag report and someone could accidentally delete it in the future, rendering your popup inoperable. This is because InTouch doesn't resolve the string name in the use counts.

To get around this, create a conditional script that never executes. Something like 10==11. In that script, list all the tags and assign them a bogus value. Since the script never executes, the tags don't get the value, bit they will now be included in the use counts and will no longer show up as unused tags.
 
To get around this, create a conditional script that never executes. Something like 10==11. In that script, list all the tags and assign them a bogus value. Since the script never executes, the tags don't get the value, bit they will now be included in the use counts and will no longer show up as unused tags.
I'll sure do that.

Thanks again.

I'm taking a break now.
 

Similar Topics

Hi all. I have 1793-IE4 (4)analog inputs modules in a 1794-ADN IOFlex DeviceNet Rack. I cannot find if I can I have access to individual channel...
Replies
1
Views
34
Good afternoon, I am currently working with an HMI/PLC LP-a070 and I require at least one analog output, but the PLC does not have one. I was...
Replies
5
Views
129
I'm having trouble calming down 2 Tempo Sonics. I'm using Studio 5000 CompactLogix my Raw value is jumping around from 8575.0 to 8755.0 at a...
Replies
30
Views
1,207
I cannot add SLC500 analog input tag (I: 8.3) to EZSeries Touch Panel Editor (V 5.3). I used all the listed tag datatype but it all says "Invalid...
Replies
10
Views
285
Hi, I have questions. I have Analog Input that need to put into Ignition Designer. But I don't know how to put?
Replies
1
Views
136
Back
Top Bottom