In our current system, the operators can set a tag to Manual, then force a value. The tag won't update from the PLC and holds the manual value until they set it back to automatic. We use this when they are calibrating analyzers so that the false values won't get sent to the historian and mess up the monthly reports.
Trying to figure out a way to replicate this in Ignition and can't find it. The "enable" is no good as that sets a null value.
Any ideas?
Can you further explain the use case? Doing this makes little sense to me. So in manual they type in a value that does not go anywhere? Then they go back to auto and the value reverts to the tag
Value in the Plc?
You also mentioned values won’t go to the historian. If it is an Ignition system using Ignition historian the tag value will still go to historian in auto or manual, it doesn’t care if the tag is an opc tag or memory tag. If tag is set to be historized it will be logged either way.
Technically, you could change the value source to memory with system.tag.configure()
. The OPC props would still be there, so when you then use system.tag.configure()
to change the value source back to "opc", it will pick right back up again.
That said, it isn't really recommended, as it can disturb other tags in the group as the group's OPC subscription is re-optimized.
You may want to do this in the PLC rather than the SCADA side. We have that option for our AIn and DIn blocks, but it is PLC concentric rather than SCADA.
Sorry, I worded that poorly. It goes to the Historian. So the historian records the flatlined value (or manually inputted value) instead of recording the false spike caused by calibration. Otherwise, they would have to spend a lot of time manually correcting the reports to weed out the calibration spikes.
Hmm, this is a good point. Looks like we will have to go this route. Our project scope doesn't include PLC programming, so we'll be over budget, but looks like there is no way around it.
If the PLC is "holding" a value, presumably based on a bit called "analyzer in manual", Can the operator still overwrite that value somehow even if it is an OPC tag? or do you use a separate OPC address for the "manual value" versus the analog I/O value and then have the PLC select between them?
Ok, Thanks. We'll keep this as a last resort.
We have a couple of different levels.
Our digital block and analog block though both have 3 different levels of data in this order of hierarchy:
Raw Value
Raw Simulated Value
EU Substitute Value
Each analog and digital block has an option if that value can be substituted or not. That way values that are critical to safety, ie E-Stop, Disconnects etc... cannot be overridden by the operator.
In regards to OPC, the Operator writes to a substitute value tag, and then the PLC will either use that or discard that based on whether substitute is enabled and available for that device. Then the value actually shows on the screen is the final value that comes out of the block. Also, the value that is used int the PLC is also this final value, which makes it nice if a downstream process depends on that value to operate properly. IE a tank level, temperature, etc...