The communications server in the Interact Xpress product is set by default to update data (tags) when ever the data changes. So, to only update a parameter in my device when an operator wants to requires using a particular button type.
The Set Value button type would seem to be the correct option, however this only allows you to set a 'constant' value and not a 'variable' value from another tag. So . . .
The Increment or Decrement buttons will provide you this functionality.
This example shows you how:
Act_Pos is a tag getting actual position from my device.
Teach_Pos is a tag that I occasionally want to set with the actual position.
I create a button that is type Increment.
My Switch Input field is set to Teach_Pos. This is where the data will be written to when the button is pressed.
My Increment By field is set to Act_Pos. This is the data I want to grab and then write to my Teach_Pos tag.
My Base Value is set to 0 (zero). This way, each time I press the button it will take Act_Pos and add it to 0 and then update Teach_Pos with this value.
You could also use the Decrement button if you wanted to negate the value in Act_Pos as it would subtract it from 0 (zero) before writing it to Teach_Pos.
Or, another way...
Since the above would require 2 different buttons if the value is positive or negative, if you wanted to only transfer TAG1 to TAG2 when Trigger button is pushed:
TAG2= TAG2+ ((TAG1 - TAG2) * (ABS(Trigger)))
One example of an application is teaching a position from a motor to a controller:
Compax_Position_Register2 = Compax_Position_Register2 + ((MotorPosition2 - Compax_Position_Register2) * (ABS(Trigger)))
glh June 2013
updated jh July 2013