User Manual

GETTING STARTED


OTHER EDITIONS


LAUNCHERS


MODULES


PLATFORM


APPENDIX


TUTORIALS & HELPFUL TRICKS


STRATEGIC PARTNER LINKS

Sepasoft - MES Modules
Cirrus Link - MQTT Modules

RESOURCES

Inductive University
Ignition Demo Project
Knowledge Base Articles
Forum
IA Support

ALL USER MANUAL VERSIONS

Ignition 8.1. Offline Version (04/2021)
Ignition 8 Online Version
Ignition 7.9 Online Version
Ignition 7.8 Online Version

Deprecated Pages

SDK Documentation

Employees

Sign In

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Perspective allows for numerous types of bindings to allow for the dynamic updating of properties associated with Views or their child components.  

Image Added

When configuring a binding, it is initially unidirectional: the value on the property that contains the binding configuration will synchronize with whatever it is bound to. For example, if the text property on a Label component is bound to a Tag (via a Tag Binding), then the text on the Label will update to match the value of the Tag. 

However, if the value of the Text property on the Label changed (say by a script, or someone opening the view in the Designer and manually changing its value), the binding would not cause the value on the Tag to change. However, it's possible to make a binding bidirectional.

Bidirectional Bindings

Tag and property bindings can be made bidirectional simply by checking the Bidirectional checkbox in the Options section of the Property Binding window. Typically this would be done on one of the PROPS properties of an Input component like a multi-state button or a numeric input.

Binding Interface

A property can have many different types of bindings, for example it can have a Tag or an Expression binding. Instead of setting a label statically, the text might change based on a PLC value or on-screen selection. There many ways to bind your components to show values from PLCs, databases, other components, or user input. You can even bind some or all of the properties on each component. You can bind component values using:

Tag

 

- Binds a property directly to a Tag which sets up a Tag subscription for that Tag, and every time the chosen property changes, the binding is evaluated, and pushes the new value into the inbound property.
  • Property  - Simply binds one property to another. When that property changes, the new value is pushed into the property that the binding is setup on.
  • Expression  - The most powerful type of property binding. It uses simple expression language to calculate a value which can involve lots of dynamic data.
  • Expression Structure - A powerful type of property binding. It uses the property structure to pass data.
  • Query  - A polling binding type that runs a structured Query against any of the database connections configured in the your Gateway.
  • Tag History  - Used for dataset type properties. It runs a query against the Tag Historian.
  • HTTP - Used for passing data directly to and from an API endpoint. 
  • Image Removed

    On_this_page

    Tag Binding

    Image Removed

    A Tag Binding allows a component property value to be bound to a tag value. 

    The following modes are available:

    • Direct: Bind the property to a Tag path.
    • Indirect: Allows properties to be placed in the Tag path, providing a way to make the binding dynamic.
    • Expression: Utilizes the Expression language to build a Tag path. The Tag path in the Expression is expected to be a string. Unlike the Expression binding, this mode allows the bound property (Tag) to be bidirectional.

    These options are available:

    • Enabled: Allows the component to be active/in use /interactive on the screen.
    • Overlay Opt-Out: Choosing the Overlay Opt-out option will ignore the quality of the chosen Tag (or expression), making it have no effect on the component's quality overlay.
    • Bidirectional: Allows user input or parameter changes on the component to be passed back to the Tag or property that the binding refers to.

    Transforms can be added:

    Transforms offer a chance to alter the value returned from a binding. For example, you can bind a property to an integer value and use a transform to map the numerical value to a particular color, all from the same interface. For more information, see Transforms in Perspective.

    Iulink
    URLhttps://www.inductiveuniversity.com/videos/tag-binding/8.0
    NameTag Binding

    Property Binding

    A Property Binding binds the value of one property, to another. This binding is initially unidirectional.

    These options are available:

    • Enabled: Allows the component to be active/in use /interactive on the screen.
    • Overlay Opt-Out: Choosing the Overlay Opt-out option will ignore the quality of the chosen Tag (or expression), making it have no effect on the component's quality overlay.
    • Bidirectional: Allows user input or parameter changes on the component to be passed back to the Tag or property that the binding is reading.

    Image Removed

    Iulink
    URLhttps://www.inductiveuniversity.com/videos/property-binding/8.0
    NameProperty Binding

    Expression Binding

    An Expression binding uses the expression language to generate a value.  This value is passed onto the Property that is linked to the binding.  The Expression Binding is unidirectional only.

    These options are available:

    • Enabled: Allows the component to be active/in use /interactive on the screen.
    • OverLay Opt-Out: Choosing the Overlay Opt-out option will ignore the quality of the chosen Tag (or expression), making it have no effect on the component's quality overlay.

    Image Removed

    Expression Binding Examples

    Code Block
    titleExpression on a button that references its custom property
    if({this.custom.sourceString}!="abc","Return String 1","Return String 2")
    Code Block
    titleExpression on a label that references a button's custom property
    if({../Button.custom.selected},"Return String 1","Return String 2")
    Code Block
    titleExpression on a container that references a button inside it.
    if({./Button.custom.intValue}>15,1,0)
    Iulink
    URLhttps://www.inductiveuniversity.com/videos/expression-binding/8.0
    NameExpression Binding

    Expression Structure

    An Expression Structure binding allows you to build a JSON document and bind it to a property.  Each value within the Expression Structure can be bound to an Expression builder.  This allows for a dynamically changing values based on bindings.

    These options are available:

    • Enabled: Allows the component to be active on the screen.
    • Overlay Opt-Out: Choosing the Overlay Opt-out option will ignore the quality of the chosen Tag (or expression), making it have no effect on the component's quality overlay.
    • Wait On All: Waits to evaluate the Expression Structure binding until all Bindings within the Expression Structure have been evaluated.

    For this example we also linked a Tag History Expression binding to this expression structure.  By using Binding Expressions to modify the "path" field This method can be used to create indirect Tag history bindings.  (See Tag History (Expressions) for the other part of this example).

    Image Removed

    Iulink
    URLhttps://www.inductiveuniversity.com/videos/expression-structure-binding/8.0
    NameExpression Structure Binding

    Query Binding

    A Query Binding is a polling binding type that runs a structured Query against any of the database connections configured in the Gateway

    Return Format:  the Return format specifies how the query results are returned. 

    • auto:  Query results are returned in the format native to the database (typically dataset).
    • json: Query results are returned in json format.  This format is recommended for XY Charts.
    • dataset: Query results are returned in dataset format.  This format is recommended for tables.
    • scalar: Returns the first element from the query result. This format is best when a single value is expected.

    Parameters: If the structured query you select requires parameters you can add them here.  The value you enter for the parameters can be modified using an expression builder (fx).

    Options:

  • Enabled: Allows the component to be active/in use /interactive on the screen.
  • Overlay Opt-Out:  Choosing the Overlay Opt-out option will ignore the quality of the chosen Tag (or expression), making it have no effect on the component's quality overlay.
  • Bypass Cache: This will cause the query to bypass/Ignore any cached values from the Named Query and run every time it is called.
  • Designer Limit: This setting will force the results of the query to be limited to a few rows when run in the Designer.
  • Polling: This setting will cause the query to run/poll the database using based on a poll time (set) in the Designer.

    Image Removed

    Iulink
    URLhttps://www.inductiveuniversity.com/videos/query-binding/8.0
    NameQuery Binding

    Tag History

    Tag History Bindings allow you to pull Tag History data into a component through a binding.  

    Image Removed

    Configuration PropertyDescriptionReturn Format

    Allows you to select the return format of the data. Possible options are:

    PropertyDescription
    WideEvery column is a different tag, and each row is their values at different times.
    TallThere are columns for Value, Quality, Timestamp, and Path, and each row is a new tag value at a specific time.
    CalculationsWill perform a calculation on the returned data, and return the calculated values instead. For example, using the Average calculation will generate an average of each tags value over the time range selected.
    Query Mode

    How you want to query out the data. Possible options are:

    PropertyDescription
    PointCountWill return the number of records defined in the Point Count property.
    PeriodicWill return records separated by an amount of time specified in the Period property.
    AsStoredWill return the records as stored in the database. While querying data with this mode, multiple value changes at the same timestamp will result in multiple rows, one row for each unique value.
    Time Range

    The time range to pull data values from. Possible options are:

    PropertyDescription
    Realtime

    The start date will go back as far from the current time as the Most Recent property specified and the end date will be the current time when the binding evaluates. Options are MS, SEC, MIN, HOUR, DAY, WEEK, MONTH, or YEAR.

    Polling: You can specify a Polling rate to determine how often to update the times. Click the FunctionsImage Removed icon to use operators, expressions, Tags, or properties.

    Historical
    You can specify the Start and End Date in an expression. Click the FunctionsImage Removed icon to use operators, expressions, Tags, or properties. No polling; times only changed if bound to something that changes.
    Select TagsAn area to select the Tags to trend. Tag Paths can be defined directly or using an expression. See Using Dynamic Tag Paths below about Expression mode.Aggregation Mode

    The aggregation mode that will be used, unless a more specific aggregation mode is defined on a Tag Path.

    Aggregation ModeDescription
    (default)Use the mode set in the Default Aggregation Mode field.
    AverageThe values are averaged together, weighted for the amount of time they cover in the interval.
    MinMaxThe minimum and maximum values will be returned for the window. In other words, two rows will be returned. If only one value is seen in the interval, only one row will be returned.
    LastValueThe value closest to the ending time of the interval will be returned.
    SimpleAverageThe values are summed together and divided by the number of values.
    Sum

    The values in the interval are summed together.

    Minimum

    The minimum value in the interval.

    MaximumThe maximum value in the interval.
    DurationOn

    Returns the number of seconds that the value was recorded as non-zero.

    DurationOff

    Returns the number of seconds that the value recorded as zero.

    CountOn

    Returns the number of times the tag's value went from a zero value to non-zero.

    CountOff

    Returns the number of times the tag's value changed from a non-zero value to zero.

    Count

    Returns the number of times a value was recorded 

    RangeReturns the range between the highest and lowest value for the period.
    VarianceReturns the variance of values. Similar in concept to standard deviation. Only good quality values are used when calculating.
    StdDev

    Returns the standard deviation of values, or how much spread is present in the data; low standard deviation shows the values are close to the mean, and high standard deviation shows that the data points are spread out over a large range of values. Only good quality values are used when calculating

    PctGoodTime-weighted percentage of good values over the date range. 
    PctBad

    Time-weighted percentage of bad values over the date range.

    Default Aggregation ModeAggregation mode to use as a default if the Select Tags are set to Default Aggregation mode.Options

    Allows you to specify various options that will apply to the binding.

    OptionDescription
    EnabledEnable these options.
    Overlay Opt-OutOpt out of displaying the Tag quality overlay.
    Ignore Bad QualityOnly data with "good" quality will be loaded from the data source.
    Prevent InterpolationRequests that values not be interpolated. If the row would normally require it. Also instructs the system to not write result rows that would only contain interpolated values. In other words, if the raw data does not provide any new values for a certain window, that window will not be included in the result dataset.
    Value FormatCan be Dataset or Document.

    A Tag History binding runs a query against the Tag Historian.  There are several ways data can be polled and returned.

    Return Format:

    • Wide: Returns data value and time stamp value from the Tag Historian.
    • Tall: Returns additional data such as quality code of data from the Tag Historian.
    • Calculations: Performs calculations on the data (average, sum, count, etc).

    Query Mode:

    • PointCount: Data returned will be the amount of datapoints specified and spread evenly across the date range specified.
    • Periodic: Data returned will be sampled from the Tag Historian at regular intervals.  The regular interval adjustable in the Period filed of the binding configuration.
    • AsStored: Data returned is exactly as is from the Tag Historian.  No data interpolation of the time or points are done.

    Time Range:

    • Realtime: The data is sampled from the most recent time and back from a specified time range.  The time range can be adjusted using an Expression builder (fx).
    • Historical: The Start date and End Date can be defined using an expression builder (fx). 

    Select Tags:

    • Direct: Tags are referenced using a builder that looks directly at the Tag Browser.  You can rename the display name of the tag by entering a name in the Alias column.
      • Alias: A different name to display for the tag being shown.
      • Aggregate: Determines how the tag value will be interpreted. Several functions are available: (Average, MinMax, LastValue,  SimpleAverage, Sum, Minimum, Maximum, DurationOn, DurationOff, CountOn, CountOff, Count, Range, Varience, StdDev, PctGood, PctBad).
    • Expression : The Tag History binding expects a JSON document of objects to read in the desired Tag paths.  The best way to do this is to create a custom property and make an array of objects.  Each object should contain a value called "path". Optional values to include are "alias" and "aggregate".  You can create a custom property structured as mentioned or you can create an "Expression Structure" This is the preferred way to make a dynamic Tag path for fetching Tag History values.

    Default Aggregation Mode:  Any tags left with the Aggregation Mode set to "(default)" will use this setting.

    Options:

    • Enabled: Allows the component to be active/in use /interactive on the screen.
    • Overlay Opt-Out: Choosing the Overlay Opt-out option will ignore the quality of the chosen Tag (or expression), making it have no effect on the component's quality overlay.
    • Ignore Bad Quality: This will force the system to ignore any data results that have a bad quality associated with it.
    • Prevent Interpolation: This forces the data displayed to not use any interpolation. The data will not be truncated or averaged to to fit the display in a nice manor. 

    Value Format:

    • Dataset: Returns the data in a dataset.  This format is best suited for use in a table component.
    • Document: Returns the data in a JSON document.  This format is best suited for use in an XY Chart.

    Iulink
    URLhttps://www.inductiveuniversity.com/videos/tag-history-binding/8.0
    NameTag History Binding

    HTTP Binding

    Image Removed

    The HTTP Binding allows you to use HTTP get/post protocols to interface with other API's.  

    Binding PropertyDescriptionURLAn expression indicating what web address to reference on the binding. If entering a static URL, quotation marks must be used.Method

    Any HTTP method. Used to send HTTP requests to the specified URL. Options as follows:

    MethodDefinition
    GETThe GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.
    HEADThe HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.
    POSTThe POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.
    PUTThe PUT method requests that the enclosed entity be stored under the supplied Request-URI.
    DELETEThe DELETE method requests that the origin server delete the resource identified by the Request-URI.
    TRACEThe TRACE method is used to invoke a remote, application-layer loop- back of the request message.
    CONNECTThe CONNECT method starts two-way communications with the requested resource. It can be used to open a tunnel.
    Headers

    Used to pass key/value pairs in the header of our HTTP requests.

    FieldDefinition
    KeyAllows dropdown selection from common header keys, or the ability to specify a custom one.
    ValueThe Value field is an expression.
    BodyAn expression indicating what to send in the body of our HTTP requests.Authentication Type

    Indicates what HTTP authentication type to use. Equivalent to specifying the Authorization key in the header. Options are None, Basic, Bearer, or Digest.

    Authentication Value

    The Authentication Value field takes an expression that should indicate what authorization string or token should be used in combination with the associated authentication type. For example, if the header should contain the string:

    Code Block
    Authorization: Basic aWduaXRpb246cGFzc3dvcmQ=

    Then the Authentication Type should be Basic and the Authentication Value should be aWduaXRpb246cGFzc3dvcmQ=.

    Connect TimeoutIndicates how long the Ignition Gateway should wait for a response to our connect request.Socket TimeoutIndicates how long the Ignition Gateway should wait for a response to a given HTTP request.EnabledIndicates whether the binding should be active.Overlay Opt-OutIndicates whether the component should reflect a bad quality binding via a Tag overlay.Allow CookiesIndicates whether to allow the remote web server to store cookies.PollingControls how frequently HTTP requests should be issued, and therefore how often the binding should be updated. IulinkURLhttps://www.inductiveuniversity.com/videos/http-binding/8.0NameHTTP Binding

    In addition, bindings can make use of Transforms, which allow a binding to further manipulate the resulting value. 

    Page Tree
    root@self



    On_this_page