Using Symbol Factory to create a momentary pushbutton, Ignition Edge machine HMI

I'm using Ignition Edge (Vision) to design the HMI on Extruder #2, but copying the layout of Extruder #1, which was created on a Red Lion touch screen. The customer wants this design to simplify operator training. Extruder #1 uses a lot of circular momentary push buttons that I've been trying to replicate in Ignition. Is there an easy way to combine the "Momentary Button" from the component palette with a Symbol Factory graphic? I've been trying to work it out on my own, but I feel like I'm trying to recreate the wheel.

...I'm thinking one strategy is to put the momentary button on top of the green Symbol Factory push button and change "visible" to false. (I'm assuming that it is still an active control, even when it is false) I have the Min Hold Time to 1000 ms, and in a perfect world, I'd figure out how to change the color of the green to a couple shades darker while the push button is activated. ...all the time I'm wondering if there is a simpler, or better way to do this.

If a component is not visible you lose control. You want a transparent control.

Are you sure you can't talk the client away from the current design? High Performance HMI can be a hard sell, but in the end is just so much better.

Ok... visible also means active (just like Red Lion). That didn't work. I did change the fill color of the green when the start PB tag is 1. I just need to figure out how to turn that graphic into a momentary button. I suspect it's easy, but I can't find it in any of the videos. Such a basic thing... a little frustrating at the moment. I've got about 20 start/stop momentary push buttons in this HMI.

Why can't you just handle an event on the symbols?

Event handlers exist on the graphics just like everything else:

image

Yes! That's what I've been looking for. I figured it was simple, I saw "Scripting" and it seemed too complex of a choice to be something to consider (based on experience with other software). I'll play with this a little.

Thanks!

You can also use your original plan and plop a button on top, set transparency to 0. You can then remove the border and text and the button should be invisible.

image

Thanks for that! I needed to keep moving forward, so I just went with the momentary, square buttons. I like the simplicity of using them, and I like the visual feedback when pushing the button and the frame changes color for the amount of "min hold time". With the amount of momentary push buttons in this project, it was going to be a hassle to do them all this way, even with copy/paste. I'll do a couple of screens and see what the customer says. Good to know about the transparency possibility. I've seen that used in other HMIs that I've worked with.

Learn and use templates. Never copy/paste the same thing/script twice. If you are coming from the RedLion Crimson world, these are like Widgets on steroids.

1 Like

Thanks! I've decided to keep things simple until I get more familiar with using this platform. I'm skipping the scripts as much as possible, also using a lot of momentary push buttons, putting calculations in the ControlLogix PLC. I'll review the templates video when the need arises. I've watched over 50% of the videos, but retention will be better when I'm looking for a solution to a problem.

You should break this habit.

http://forum.inductiveautomation.com/search?q=stuck%20momentary%20button

1 Like

Oh geeze... Skimming the posts, am I correct to say to use One Shot buttons instead? I'll have to dig deeper and see what other safeguards you've figured out, if you end up with a stuck 'One Shot'.

I'm a little frustrated right now trying to 'One Shot' a float value increase of 2.0. I'm trying to exhaust my tries before bringing it here. Stand by... I'm almost there.

One shots, or plain buttons with an actionPerformed script.

I suppose I could also use a One Shot in the PLC program, next to all the XIC contacts. I like to do seal-ins, versus toggle values, so that works.

I'm sure Phil will scold me, but if you are resetting the action in the PLC using a momentary button shouldn't matter. I have used momentary buttons with no problems (again cleaning up in the PLC). The issue(s) can occur if you are using them as a jog or action with no "gate keeper".

...I'm a fan of physical input Jogs on machines like this. Latency bothers me. I want to feel more connected to the action.

Stand by... I need some help with adding a value to another value. I'm just putting a visual together to explain it. I've struck out.

I'm working on "+2" and "-2" buttons. I'm using one-shot buttons, in hopes that it can bump the value of the tag incrementally. I don't have enough experience to see what is wrong. It works once, but never completes "writing", so it can't be used again. Any thoughts?

Just to get it to work using what you chose, uncheck disable while writing and make Idle text and writing text the same. That should get it working, although I don't consider that a fix. For me, I would script it. But many ways to skin this one.

Edit, look at the doc, Vision - One-Shot Button - Ignition User Manual 8.1 - Ignition Documentation, it should explain the behavior you are seeing.

I took a lunch break and realized that, along with changing the value of that tag, I also needed to one-shot a boolean to "start ramp". So... back to the PLC to add and start. I really am trying to keep the ignition part as simple as possible. My lack of experience, good and bad, makes me a bit more cautious... especially after learning about the "stuck" momentary PB. Yikes!

Btw... you were right. I unchecked "disable while writing" and it worked like a charm.

Completely unrelated to the topic, but I suggest you take a look at the ASM standards for colour usage on HMIs. Tl;dr: keep colour usage to a minimum, don't use distracting colours for normal conditions or buttons. Distracting colours should be limited to alarms and alarm conditions only to avoid diverting oeprator focus. Too much colour will mean operators miss important indicators of malfunction

Also, back on topic, quick note: expressions are for value supply only; you can't use expressions to write to tags (expression tags are the only exception which will write the result of the expression into the tag itself)

You can write to things from a binding either via a tag binding with no-directional set, a property binding with bidirectional set, or via scripts.