Modifying Variables on the Fly
Modifying Variables from JS
Modification is calling a function to process a variable before sending to equipment or before displaying on control panel. Modification-function is to be indicated in variable properties in
Script
line. It allows to modify values, received from a control panle of from equipment and only then write it in Server variable. The peculiarity of modification-function is that a channel or a tag that calls a functions gives arguments to it: - ID - tag or channel ID, corresponding to its ordinal number starting with zero
- value - value that comes to a channle or is written in tag (can be modified)
return
command.
Example of usage of modification-functions for auto-modification od values:
/** change channels/tags on input : in_Type - Type 0 - channels, 1 - tags in_Name - Name channel/tags in_Value - Value on outputs : result value channels/tags */ function test(in_Type, in_Name, in_Value) { IR.Log("Type: " + in_Type); IR.Log("Name: " + in_Name); IR.Log("Value: " + in_Value); }
Driver Tokens
Driver Tokens are driver variables. Status of connection to equipment is displayed. Driver variables are available only for reading, but they can be modified with the help of JavaScript before sending it to a control panel. Let's create a modification-function in a server project to modify a variable.
Example of modification-function for Driver Tokens:
/* Online token of any driver can return only value 1 = Online and 0 = Offline. Substitute 1 with the current time and "Connection established" phrase with; 0 for time and " Connection closed" Return the modification result to the one that called the function */ function onlineModify(in_Type, in_Name, in_Value){ if(in_Value == 1 ) { in_Value = IR.GetVariable("System.Time.24")+" Connection established"; return in_Value; }else{ in_Value = IR.GetVariable("System.Time.24")+" Connection closed"; return in_Value; } }
- ID - channel ID, corresponding to its ordinal number beginning with zero
- value - value that came to the channel (it can be modified)
To choose a variable that is processed by a modification-function, give the function name in the variable settings:
Channels
Channels are commands to be sent to the driver. The allow to write valur to the variable of automation equipment or send a command, that is earlier formed in the driver. Driver commands can be done from a control panel or from script. To do a command it has to be sent s value (sometimes a value is nor required, in this case an empty line is sent). This value can be modified with the help of JavaScript before sending it to equipment. Let's create a modification-function in a server project to modify sent value.
Example of modification-function for Channels:
/* Channel is activated when sending a value in the following range 0-100 Let's modify the value to 0-255 range, approximate it and send to equipment */ function rangeModify (in_Type, in_Name, in_Value){ in_Value = 255/100; return in_Value.toFixed(0); }
- ID - channel ID, corresponding to its ordinal number beginning with zero
- value - value that came to the channel (it can be modified)
A name function without an argument can be done the same way.
Tags
Tags - feedback channels (Feedbacks). They allow to get state of equipment variable or the result of parsing incoming data. Driver tags can be displayed on a control panle or used in the script. Tag value can be modified with the help of JavaScript before next use. To modify a value create a modification-function in a server project.
Example of modification-function for Tags:
/* Channel receives value in 0-255 range Change value to 0-100 range, approximate an send back to the feedback channel */ function rangeModifyBack (ID, value) { value *= 100/255; return value.toFixed(0); }<span class="br0"></span>
- ID - channel ID, corresponding to its ordinal number beginning with zero
- value - value that the channel received from automation equipment of from the script (it can be modified)
To select which tag is processed by a modification-function, enter name in the variable settings:
Virtual Channels
Virtual Channels - virtual driver variables. They look like commands on the side of a control panel. Value can be sent to the value to be processed by a modification fucntion, A command can be formed on the basis of value and sent tp automation equipment.
Example of modification-function for Virtual Channels:
/* TCP command to DVD player looks this way: "VOLUME XX", ХХ - is sound value from 00 to 100 Sound value can consisy of 2 or 3 symbols i.e. 00, 01, 02, ... 100 (ASCII) We get 0-100 value from a control panel, form and send a command */ var driver = IR.GetDevice("AV (TCP)"; function volume (in_Type, in_Name, in_Value) { if(in_Value <10) { in_Value ="0"+in_Value; driver.Send(["VOLUME "+in_Value+"\r\n"]); }else{ driver.Send(["VOLUME "+in_Value+"\r\n]); } }
- ID - variable ID corresponding to its ordinal number beginning with zero
- value - value, that was written to the variable from a control panel of from script (it can be modified and used)
To select a variable to process, input function name in the variable settings:
A named function without argument can be done the same way.
Virtual Tags
Virtual Tags are server virtual variables. They look like feedback channels on the side of a control panel. Value can be written to the variable from script and then processed by a modification-function. The final value is available for reading from a control panel.
Example of modification-function for Virtual Tags:
/* Virtual tag does NOT get values from equipment Write value to tag from script, when required. */ IR.SetVariable("Server.Tags.Virtual 1",100) /* Value can be additionalle processed with the help of a modification-function. */ function value (in_Type, in_Name, in_Value){ in_Value="brightness: "+in_Value+"%"; return in_Value;// brightness: 100% }
- ID - variable ID corresponding to its ordinal number beginning with zero
- value - value that was written to the variable from script (it can be modified and used)
To select what variable to modify, input function name in the variable settings:
A named function without argument can be done the same way.
Customer support service by UserEcho