Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

Plant SCADA

Use Arrays and Array Offsets with Dynamic Associations

Use Arrays and Array Offsets with Dynamic Associations

  • Last UpdatedJul 13, 2023
  • 3 minute read

Dynamic association can accept array elements or entire arrays as substitution. Passing an element of an array is achieved by referencing the element, as shown here:

AssPopUp("MyPopUp", "DigArray[42]");

To pass an entire array to a dynamic association, only the array name is used. For example:

AssPopUp("MyPopUp", "DigArray");

Use Arrays with Dynamic Associations

To pass an entire array to a dynamic association, configure it to accept the array instead of a single value. Use the following syntax for the dynamic association substitution string:

?<Data Type><Substitution String>? [<element>]

Only arrays of data type DIGITAL, INT, REAL, and LONG are supported.

Use Array Offsets with Dynamic Associations

You can use array offsets with a tag that is an array.

For example, you may have a tag (named Tag1) defined as an array of four elements. When using the GENERIC protocol, the tag has an address I1[4]:

Tag1 = I1[4] ->

I1

I2

I3

I4

Tag1 represents the registers I1, I2, I3 and I4. When Tag1 is used with the Ass() Cicode function it behaves as follows:

  • If you associate a value using Ass(hWin, "X", "Tag1", 0) then the substitution string ?X?[0] gives the value in I1.

  • If you associate a value using Ass(hWin, "X", "Tag1", 0) then the substitution string ?X?[2] gives the value in I3.

  • If you associate a value using Ass(hWin, "X", "Tag1[0]", 0) then the substitution string ?X?[2] gives the value in I3.

  • If you associate a value using Ass(hWin, "X", "Tag1[1]", 0) then the substitution string ?X?[2] gives the value in I4. This is because the two offsets are added together to determine the final offset within the array variable.

  • If you associate a value using Ass(hWin, "X", "Tag1[2]", 0) then the substitution string ?X?[2] gives the error #ERR. This is because the sum of the two array offsets gives a position (Tag1[4]) that is outside the bounds of the array.

You can also use array offsets with a tag that is not an array.

For example, you may have a tag (named Tag2) defined as a single value. When using the GENERIC protocol, the tag has an address I1:

Tag2 = I1 ->

I1

When Tag2 is used with the Ass() Cicode function, it behaves as follows:

  • If you associate a value using Ass(hWin, "X", "Tag2", 0) then the substitution string ?X?[0] gives the value in I1. This is because a non-array tag is equivalent to an array with one element.

  • If you associate a value using Ass(hWin, "X", "Tag2[0]", 0) then the substitution string ?X?[0] gives the value in I1. This is because a non-array tag is equivalent to an array with one element.

  • If you associate a value using Ass(hWin, "X", "Tag2", 0) then the substitution string ?X?[2] gives the notification #ERR. This is because a non-zero offset cannot be applied to a non-array tag.

  • If you associate a value using Ass(hWin, "X", "Tag2[0]", 0) then the substitution string ?X?[2] gives the notification #ERR. This is because a non-zero offset cannot be applied to a non-array tag.

  • If you associate a value using Ass(hWin, "X", "Tag2[1]", 0) then the substitution string ?X?[2] gives the notification #ERR. This is because a non-zero offset cannot be applied to a non-array tag.

  • If you associate a value using Ass(hWin, "X", "Tag2[2]", 0) then the substitution string ?X?[2] gives the notification #ERR. This is because a non-zero offset cannot be applied to a non-array tag.

See Also

Dynamic Associations

In This Topic