Versions Compared

Key

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

...

Click here for troubleshooting tips.

The Opto 22 groov EPIC and SNAP PAC Driver module can scan specific tags. This method offers the best performance but requires setup in PAC Control.

To scan all tags, see Opto 22 groov EPIC and SNAP PAC Driver Module Configuration.

...

Basic Steps

  1. In the PAC Control Control™ strategy:
    1. Create the stPublicListOfStrategyTags table.
    2. Immediately after Block 0 in the Powerup chart, add an OptoScript block.
    3. In the OptoScript block, populate the table according to the OptoScript Syntax and tag naming standard
    4. Save, download, and run the strategy.
  2. In Ignition:
    1. Restart the groov EPIC and SNAP PAC Driver to refresh the tag list. 
    2. Browse the Opto 22 tags and use them in your project. 

Step-by-step instructions

For help using PAC Control, see the PAC Control User's Guide (available from the Opto 22 website).

Instructions

Create the stPublicListOfStrategyTags table
Anchor
createtagstable
createtagstable

  1. In PAC Control, open your strategy in Configure mode.
  2. In the Strategy tree window, right-click the String Tables folder, and then click Add. The Add Variable dialog box opens. Complete the fields.

    Name:  Enter the table name: stPublicListOfStrategyTags. The name is case-sensitive. 
    Description:  Optional.
    Type:  Leave the default (String Table).
    Initialization:  Select Persistent
    Initial Value:  Leave the default (blank). 
    Table Length:  Enter a number equal to or greater than the number of tags to import. For example, to import 10 floats and 6 tableselements of a table, enter a Table Length of 16 or more. (A table variable counts as one tag, despite the number of elements it has.)  Note: Ignition Edge has a limit of 500 tags. Ignition Enterprise does not limit the number of tags you can use
    String Width:  Enter a value of 100.

  3. Click OK to close the dialog box and save your changes.

...

  1. Double-click the OptoScript block to open it.
  2. For each tag to be scanned, create a string element following the OptoScript Syntax and tag naming standard.
    IMPORTANT: Index number 0 (zero) must be the last item initialized in the OptoScript block

Code Block
titleEXAMPLE
/*
If the tag begins with an ' or a /, the tag is ignored.
NOTES:
- All tags are readable. Use the .rw attribute to write to a tag. 
- Important! Initialize the first table element (at Index 0) lastLAST. (becauseThis 
a blank string in Index 0 tells the driver that the
string table has not yet been initialized)indicates
  to the driver that all elements in stPublicListOfStrategyTags 
  have been initialized.
- If the tag begins with a ' or a /, the tag is ignored.
*/
stPublicListOfStrategyTags[0] = "";
stPublicListOfStrategyTags[1] = "f32.MyFloat.rw";
stPublicListOfStrategyTags[2] = "i32.MyInt32.rw";
stPublicListOfStrategyTags[3] = "i64.MyInt64.rw";
stPublicListOfStrategyTags[34] = "s.MyString.rw";
/* Use "t" for up and down timers. Timers are read-only.*/
stPublicListOfStrategyTags[45] = "t.MyTimer.rwMyUpOrDownTimer";
stPublicListOfStrategyTags[56] = "i32b.MyBoolMyInt32UsedAsBoolean.rw";
/* For tables, enter the element's index or an index range in brackets. 
For example, "i32t.MyInt32Table[0].rw" or "i32t.MyInt32Table[0-0].rw" */
stPublicListOfStrategyTags[67] = "i32t.MyInt32Table[0-9].rw";
stPublicListOfStrategyTags[78] = "i64t. MyInt64Table [0-20].rw";
stPublicListOfStrategyTags[89] = "f32t.MyFloatTable[10-19].rw";
stPublicListOfStrategyTags[910] = "st. MyStringTable [0-9].rw";
stPublicListOfStrategyTags[1011] = "dio.MyDiscreetPointMyDiscretePoint";
stPublicListOfStrategyTags[1112] = "aio. MyAnalogPoint.rw";
/* Use single-element table tags (i32te, i64te, f32te, stte) only with a
single index. For a range, use table element tags (i32t, i64t, f32t, st). */
stPublicListOfStrategyTags[1213] = "i32te.MyInt32TableElement[5].rw";
stPublicListOfStrategyTags[1314] = "i32tebp.MyInt32TableElementBitPick [9].2.rw";
stPublicListOfStrategyTags[1415] = "i64tebp. MyInt64TableElementBitPick [5].8.rw";
stPublicListOfStrategyTags[16] = "i32bp.MyInt32BitPick.1.rw";
// Remember, initialize index 0 last!
stPublicListOfStrategyTags[0] = "i32dio.Int32MyDiscretePointWrite.rw";


In the OptoScript block, you:

...

  • Strong-typed OPC tables are not supported.
  • Tag names are case-sensitive.
  • To comment out a tag (for example, to disable a tag without having to modify the entire string table), prepend a / (slash) or ' (single straight quote mark) to the OptoScript tag name. Then, restart the Driver module in Ignition Gateway.


    Code Block
    titleEXAMPLES
    stPublicListOfStrategyTags[3] = "/i32.MyIntVariable.rw";
    stPublicListOfStrategyTags[4] = " 's.MyStringVariable";


Naming standard:  <OptoScript data type code>.<PAC Control tag name>[<index number or range>].<bit location>.< writeable attribute>

...

Data type description

Ignition data type

Data type code

Example tag name for OptoScript block

Example tag name for OptoScript block (writeable tag)

Notes

Ignition will display tag name as:

32-bit integer

Int4

i32

i32.MyIntVariable

i32.MyIntVariable.rw

 

MyIntVariable__i32

64-bit integer

Int8

i64

i64.MyLongVariable

i64.MyLongVariable.rw

 MyLongVariable__i64

32-bit float

Float4

f32

f32.MyFloatVariable

f32.MyFloatVariable.rw

 MyFloatVariable__f32

32-bit integer as a SCADA Boolean

Boolean

i32b

i32b.MyIntVariable

i32b.MyIntVariable.rw

 

MyIntVariable__i32b

String

String

s

s.MyStringVariable

s.MyStringVariable.rw

PAC Controllers support only 7-bit ASCIIMyStringVariable__s

Up or Down timer

Float4

t

t.MyUpTimer

t.MyUpTimer

MyUpOrDownTimer

Not applicable

Timers are only Only read-only

MyUpTimer__t

32-bit integer table element as a SCADA int4

Int4

i32te

i32te.My32BitIntegerTable[3]

i32te.My32BitIntegerTable[3].rw

 

My32BitIntegerTable__3_i32te

Used only with a single index. Synonymous with i32t.

32-bit integer table

See i32te.

i32t

i32t.My32BitIntegerTable[0-9]

i32t.My32BitIntegerTable[0-9].rw

Module will provide To get individual elements.
"_auto" will be appended to the tag’s item IDtable elements, use the stPublicListOfStrategyTags table to scan for specific tags.

i32tMyInteger[11-9] (backward index range)
i32MyInteger[3-3] (same index)"

My32BitIntegerTable__0_9_i32t

64-bit integer table element as a SCADA int8

Int8

i64te

i64te.My64BitIntegerTable[302]

i64te.My64BitIntegerTable[302].rw

 

My64BitIntegerTable__302_i64te

Used only with a single index. Synonymous with i64t.

64-bit integer table

See i64te.

i64t

i64t.My64BitIntegerTable[0-35]

i64t.My64BitIntegerTable[0-35].rw

Module will provide To get individual elements.

"_auto" will be appended to the tag’s item ID.

My64BitIntegerTable__0_35_i64t

table elements, use the stPublicListOfStrategyTags table to scan for specific tags.

32-bit float table element as a SCADA float4

Float4

f32te

f32te.My32BitFloatTable[11]

f32te.My32BitFloatTable[11].rw

 

My32BitFloatTable__11_f32te

Used only with a single index. Synonymous with f32t.

32-bit float table

See f32te.

f32t

f32.MyFloatTable[0-20]

f32.MyFloatTable[0-20].rw

Module will provide To get individual elements.

"_auto" will be appended to the tag’s item ID.

MyFloatTable__0_20_f32table elements, use the stPublicListOfStrategyTags table to scan for specific tags.

String table

See stte.

st

st.MyStringTable[0-32]

st.MyStringTable[0-32].rw

PAC Controllers support only 7-bit ASCII

Module will provide To get individual elements.
"_auto" will be appended to the tag’s item ID.MyStringTable__0_32_sttable elements, use the stPublicListOfStrategyTags table to scan for specific tags.

String table element as a SCADA string

String

stte

stte.MyStringTable[6]

stte.MyStringTable[6].rw

PAC Controllers support only 7-bit ASCIIMyStringTable__6_stte. Used only with a single index. Synonymous with st.

Analog input or output state

Float4

aio

aio.MyAnalogPoint

aio.MyAnalogPoint.rw

 

MyAnalogPoint__aio

Discrete input or output state

Boolean

dio

dio.MyDiscretePoint

dio.MyDiscretePoint.rw

 MyDiscretePoint__dio

Bit-pick of a 32-bit integer variable

Boolean

i32bp

i32bp.My32BitIntegerVariable.31

i32bp.My32BitIntegerVariable.31.rw

 My32BitIntegerVariable__31_i32bp

Bit-pick of a 64-bit integer variable

Boolean

i64bp

i64bp.MyLongVariable.0

i64bp.MyLongVariable.0.rw

 

MyLongVariable__0_i64bp

Bit-pick of a 32-bit integer table element

Boolean

i32tebp

i32tebp.My32BitIntegerTable[3].2

i32tebp.My32BitIntegerTable[3].2.rw

 My32BitIntegerTable__3_2_i32tebp

Bit-pick of a 64-bit integer table element

Boolean

i64tebp

i64tebp.My64BitIntegerTable[302].6

i64tebp.My64BitIntegerTable[302].6.rw

 

My64BitIntegerTable__302_6_i64tebp

3. Click Save to close the OptoScript block and save the changes.
Image Modified

  • To add more tags or change the set of tags to scan, simply edit the elements in the OptoScript block.
  • To stop scanning a tag, comment out the element by preceding the element with a ' or a /.
    For example, the scanner will ignore these two tags:
    • 'stPublicListOfStrategyTags[1] = "f32.MyFloat.rw";
    • /stPublicListOfStrategyTags[2] = "i64.MyInt64.rw";

Save, download, and run the strategy

...

  1. To refresh the tag list, go to the Ignition 's Gateway Configure tab , and select System > Modules. In the Cirrus Link Solutions section, restart the Opto 22 groov EPIC and SNAP PAC Driver module. When prompted, click Confirm.
    Note: The tag names displayed in Ignition will be different but easily recognizable.
  2. To browse tag values:
    From the Ignition 's Gateway Configure tab: Select OPC Connections > Quick Client, and then expand the folders to find the tags from the Opto 22 device's tags.
    Image Removed
    Image AddedFrom Ignition Designer's Design Mode: In the menu bar, click View > Panels, and then select OPC Browser. In the OPC Browser panel, expand the folders to find the Opto 22 device's tags.

    Image Added

To get all tags

To stop scanning for specific tags and start scanning all tags, you must clear the controller's RAMand restart the Driver module. (Otherwise, the stPublicListOfStrategyTags table will remain in the controller's memory, even if you delete it from the strategy.)

  1. In PAC Control Config mode, modify the stPublicListOfStrategyTags table (Configure > Variables > String Tables > Modify):
    1. Change the table's name.
    2. Change the table's Initialization setting from "Persistent" to "Initialize on strategy download."
  2. Start PAC Control Debug mode (Mode > Debug) and clear the controller's RAM (Control Engine > Clear RAM). WARNING: Clearing the controller's RAM will remove all persistent values in the controller's tags.
    Image Removedmemory. If the strategy has other persistent variables, you may want to archive it (File > Archive Strategy) before continuing. At the prompts, click:
    1. "Yes" to continue.
    2. "OK" to acknowledge the number of bytes.
    3. "Yes" to download the strategy.
  3. Then, run the strategy (Debug > Run).
  4. In Ignition Gateway:
    1. Restart the Driver module (Configure tab > System > Modules).
    2. Use OPC Quick Client or Ignition Designer to view and get the tags.

For details, see OSP: Configuration.

Troubleshooting
Anchor
troubleshooting
troubleshooting

TIP: If you can't find a tag, check the following:*

  • The strategy is running in PAC Control.

...

...

For more information, see the Ignition Gateway’s Logs (Status tab > Diagnostics > Logs).

If your device's status doesn't change to "Connected" after you've restarted it in Ignition Gateway (Configure tab > System > Modules), make sure:

  • Element 0 in the stPublicListOfStrategyTags table is not blank (or empty).
  • The network configuration of both the OPC-UA device and the Opto 22 device are valid.
  • The Opto 22 device is powered up, connected to the network, and the host task is assigned to TCP/IP port 22001.
  • Your Windows PC is connected to the network and operating normally.