Contents
Cirrus Link Resources
Cirrus Link Website
Contact Us (Sales/Support)
Inductive Resources
Ignition User Manual
Knowledge Base Articles
Inductive University
Forum
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.
For help using PAC Control, see the PAC Control User's Guide (available from the Opto 22 website).
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 elements of a table, enter a Table Length of 16 or more. 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.
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
/* NOTES: - All tags are readable. Use the .rw attribute to write to a tag. - Important! Initialize the element at Index 0 LAST. This 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[4] = "s.MyString.rw"; /* Use "t" for up and down timers. Timers are read-only.*/ stPublicListOfStrategyTags[5] = "t.MyUpOrDownTimer"; stPublicListOfStrategyTags[6] = "i32b.MyInt32UsedAsBoolean.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[7] = "i32t.MyInt32Table[0-9].rw"; stPublicListOfStrategyTags[8] = "i64t.MyInt64Table[0-20].rw"; stPublicListOfStrategyTags[9] = "f32t.MyFloatTable[10-19].rw"; stPublicListOfStrategyTags[10] = "st.MyStringTable[0-9].rw"; stPublicListOfStrategyTags[11] = "dio.MyDiscretePoint"; stPublicListOfStrategyTags[12] = "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[13] = "i32te.MyInt32TableElement[5].rw"; stPublicListOfStrategyTags[14] = "i32tebp.MyInt32TableElementBitPick[9].2.rw"; stPublicListOfStrategyTags[15] = "i64tebp.MyInt64TableElementBitPick[5].8.rw"; stPublicListOfStrategyTags[16] = "i32bp.MyInt32BitPick.1.rw"; // Remember, initialize index 0 last! stPublicListOfStrategyTags[0] = "dio.MyDiscretePointWrite.rw";
In the OptoScript block, you:
stPublicListOfStrategyTags[<index number>] = "<modified tag name>";
stPublicListOfStrategyTags[1] = "s.MyStringVariable";
To construct the tag name, see Naming Standard.
In the OptoScript block, you reference PAC Control tags using a pre-defined naming standard that consists of the tag's:
Notes
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>
Examples:
Data type description | Ignition data type | Data type code | Example tag name for OptoScript block | Example tag name for OptoScript block (writeable tag) | Notes |
---|---|---|---|---|---|
32-bit integer | Int4 | i32 | i32.MyIntVariable | i32.MyIntVariable.rw |
|
64-bit integer | Int8 | i64 | i64.MyLongVariable | i64.MyLongVariable.rw |
|
32-bit float | Float4 | f32 | f32.MyFloatVariable | f32.MyFloatVariable.rw |
|
32-bit integer as a SCADA Boolean | Boolean | i32b | i32b.MyIntVariable | i32b.MyIntVariable.rw |
|
String | String | s | s.MyStringVariable | s.MyStringVariable.rw | PAC Controllers support only 7-bit ASCII |
Up or Down timer | Float4 | t | t.MyUpOrDownTimer | Not applicable | Timers are only read-only |
32-bit integer table element as a SCADA int4 | Int4 | i32te | i32te.My32BitIntegerTable[3] | i32te.My32BitIntegerTable[3].rw | 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 | To get individual table elements, use the stPublicListOfStrategyTags table to scan for specific tags. i32tMyInteger[11-9] (backward index range) |
64-bit integer table element as a SCADA int8 | Int8 | i64te | i64te.My64BitIntegerTable[302] | i64te.My64BitIntegerTable[302].rw | 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 | To get individual 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 | 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 | To get individual table 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 To get individual table 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 ASCII. Used only with a single index. Synonymous with st. |
Analog input or output state | Float4 | aio | aio.MyAnalogPoint | aio.MyAnalogPoint.rw |
|
Discrete input or output state | Boolean | dio | dio.MyDiscretePoint | dio.MyDiscretePoint.rw |
|
Bit-pick of a 32-bit integer variable | Boolean | i32bp | i32bp.My32BitIntegerVariable.31 | i32bp.My32BitIntegerVariable.31.rw |
|
Bit-pick of a 64-bit integer variable | Boolean | i64bp | i64bp.MyLongVariable.0 | i64bp.MyLongVariable.0.rw |
|
Bit-pick of a 32-bit integer table element | Boolean | i32tebp | i32tebp.My32BitIntegerTable[3].2 | i32tebp.My32BitIntegerTable[3].2.rw |
|
Bit-pick of a 64-bit integer table element | Boolean | i64tebp | i64tebp.My64BitIntegerTable[302].6 | i64tebp.My64BitIntegerTable[302].6.rw |
|
3. Click Save to close the OptoScript block and save the changes.
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.)
For details, see OSP: Configuration.
TIP: If you can't find a tag, check the following:
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: