You're currently browsing the Ignition 7.9 docs. Click here to view the latest docs.

This function is used in Python Scripting.

Description

Edits an existing Tag in Ignition. This will not work on Client Tags, because there is a Client Provider for each project.

The following feature is new in Ignition version 7.9.8
Click here to check out the other new features
This can now be used to edit members of a nested UDT instance.

Client Permission Restrictions

Permission Type: Tag Editing

Client access to this scripting function is blocked to users that do not meet the role/zone requirements for the above permission type. This function is unaffected when ran from the Gateway scope.

Syntax

system.tag.editTag(tagPath, attributes, parameters, accessRights, overrides, alarmList, alarmConfig)

  • Parameters

String tagPath - The full path to the Tag you want to edit. For members of UDT instances, the tagPath will be the path to the UDT instance, with the overrides parameter listing out the member Tags to edit. Note: you can specify the Tag provider name in square brackets at the beginning of the parentPath string. Example: "[myTagProvider]MyTagsFolder". If the Tag provider name is left off then the project default provider will be used.

PyDictionary attributes - The Tag's configuration attributes.

PyDictionary parameters - The parameters for a UDT instance Tag.

String accessRights - The access rights for the Tags. Possible values are Read_Only, Read_Write, and Custom.

PyDictionary overrides - All of the overrides for a UDT instance Tag. The dictionary should be in the form of the names of member Tags as keys, with the values being a dictionary of properties/overrides ie. {'memberTagName':{dictionary of overrides}}.

String alarmList - List of legacy alarms for the Tag. The legacy alarm system was retired in 7.6.0. Newer systems should utilize the system.tag.editAlarmConfig function instead.

PyDictionary alarmConfig - The alarm configuration for the Tag. Note that this parameter cannot edit alarms on UDTs. Instead, the system.tag.editAlarmConfig function (which can also edit alarms on non-UDT Tags) should be used instead. See editAlarmConfig for details on how to use this parameter.

  • Returns

Nothing

  • Scope

All

If called in the Gateway scope, a Tag provider must be specified.

Associated attributes:

Code Examples
Code Snippet
# Example 1: Edit OPC Tag.

system.tag.editTag(tagPath="Tag1", 
attributes={"OPCServer":"Ignition OPC-UA Server", "OPCItemPath":"[MLX]N7:2"})
Code Snippet
# Example 2: Edit UDT instance parameters.
 
system.tag.editTag(tagPath="Tag5", parameters={"DeviceName":"CLX", "MotorNumber":2})
Code Snippet
# Example 3: Edit UDT instance called Tag8 and override certain properties of a member Tag called STATUS.
 
system.tag.editTag(tagPath="Tag8", overrides={"STATUS":{"ScanClass":"Default"}})
Code Snippet
# Example 4: Edit 2 tags in a nested UDT instance. Assuming the following:
# - A UDT instanced named 'ParentInstance' contains a nested UDT named 'ChildInstance'
# - ChildInstance contains a Tag (member) named 'ChildMember'
# - ChildInstance contains a Tag (member) named 'Tag2' in a folder named 'Folder1'

# The following script would override multiple properties on the ChildMember tag.
 
path = "ParentInstance/ChildInstance"
myOverrides = {"ChildMember":{"ScanClass":"Default", "Enabled":"false"}, "Folder1/Tag2":{"ScanClass":"Default", "Enabled":"false"}}

system.tag.editTag(tagPath=path, overrides=myOverrides)
Code Snippet
# Example 5: Edit UDT instance called Tag8 and remove certain overrides from a member Tag called STATUS.
 
system.tag.editTag(tagPath="Tag8", parameters={"Param":"Something"}, 
overrides={"STATUS":{"ScanClass":None}})
Code Snippet
# Example 6: Enable history on a Tag, set the historical scanclass to "Default Historical", and set the History Provider to the "Data" provider.
 
system.tag.editTag(tagPath="Folder/Tag",attributes={"HistoryEnabled":True, "HistoricalScanclass":"Default Historical", "PrimaryHistoryProvider":"Data"})
Code Snippet
# Example 7: Edit a Tag with an Alarm using the Legacy alarmList parameter.
alert = "myAlert;Medium_High;0.0;50.0;0;;;2.0;SEC$"
  
system.tag.editTag(tagPath="Folder/Tag", alarmList=alert)
Code Snippet
# Example 8: Change a new Tag's Scan Class to "<Evaluate On Change>". 
# - Unlike the "Default" or "Default Historical" Scan Classes, "<Evaluate On Change>" is referenced using an empty string:

system.tag.editTag(tagPath="New Tag",attributes={"HistoricalScanclass":""})
  • No labels

11 Comments

  1. Anonymous

    It would be nice if there could be a list of possible values for the attributes and parameters parts.

    1. Anonymous

      Or, not possible values of the parameters, because those are user defined in the UDT, but a list of possible alarmConfig values.

    2. The attributes list already exists, I've added a link.

  2. Anonymous

    Can you edit the UDT data types directly (not the instances) ? 

    nger

    1. Currently, this is not a way to do this. However, that would make a great feature request.

      If the idea isn't already listed, you can post it here: http://ideas.inductiveautomation.com

  3. Anonymous

    Is there a method for reading a parameter value from a UDT tag instance? E.g. I want to dynamically modify a parameter to append to it, how can I do this?

    1. Currently, there is not a function that retrieves UDT parameters, but that would make a great suggestion for our ideas page: http://ideas.inductiveautomation.com

      Until then, UDT parameters are accessible by members of the UDT, so you could add an expression tag to the UDT that simply exposed the value of the parameter using an expression similar to the following: "{ParamName}". From here you could read the expression tag to determine it's value. 

  4. Anonymous

    What attribute or attributes would be used if you wanted to generate a Tag Event Script to log when the tag value changes?

    1. By "generate a Tag Event Script" do you mean edit the tag on the fly to include a Tag Event Script based on some other script running? If so, it is theoretically possible, but not supported since you would have to code up a class in Java that you could pass to the tag in Python.

      On a side note, modifying a script from another script seems ripe for timing issues. It may be better to create a more generalized Tag Change script to log the change that you can pass parameters to, or leave a static Tag Event Script on each tag with a hefty amount of 'if' statements filtering out inconsequential events. 

       

  5. Anonymous

    It appears that the alarm list has been deleted.

    1. Good catch. It looks like the link just needed to be updated. It should redirect to the correct page now.