You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »


Click here for Using the Opto 22 SNAP PAC Driver Module tips.

The Driver module is designed to scan either:

  • The tags you identify in a special stPublicListOfStrategyTags table, or
  • All tags in the Opto 22 device.

For best performance, we strongly recommend you use the stPublicListOfStrategyTags table to get tags.

If you're familiar with Ignition and PAC Control...

  1. In the PAC 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 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).

Create the stPublicListOfStrategyTags table

  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 tables, 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.

Add an OptoScript block for the tag list

  1. Open the Powerup chart.
  2. Immediately after Block 0, connect an OptoScript block to the flow.

Populate the stPublicListOfStrategyTags table

  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

EXAMPLE
/*
If the tag begins with an ' or a /, the tag is ignored.
Important! Initialize the first table element (at Index 0) last (because 
a blank string in Index 0 tells the driver that the
string table has not yet been initialized).
*/
stPublicListOfStrategyTags[0] = "";
stPublicListOfStrategyTags[1] = "f32.MyFloat.rw";
stPublicListOfStrategyTags[2] = "i64.MyInt64.rw";
stPublicListOfStrategyTags[3] = "s.MyString.rw";
stPublicListOfStrategyTags[4] = "t.MyTimer.rw";
stPublicListOfStrategyTags[5] = "i32b.MyBool.rw";
stPublicListOfStrategyTags[6] = "i32t.MyInt32Table[0-9].rw";
stPublicListOfStrategyTags[7] = "i64t. MyInt64Table [0-20].rw";
stPublicListOfStrategyTags[8] = "f32t.MyFloatTable[10-19].rw";
stPublicListOfStrategyTags[9] = "st. MyStringTable [0-9].rw";
stPublicListOfStrategyTags[10] = "dio.MyDiscreetPoint";
stPublicListOfStrategyTags[11] = "aio. MyAnalogPoint.rw";
stPublicListOfStrategyTags[12] = "i32te.MyInt32TableElement[5].rw";
stPublicListOfStrategyTags[13] = "i32tebp.MyInt32TableElementBitPick [9].2.rw";
stPublicListOfStrategyTags[14] = "i64tebp. MyInt64TableElementBitPick [5].8.rw";
stPublicListOfStrategyTags[16] = "i32bp.MyInt32BitPick.1.rw";
// Remember, initialize index 0 last!
stPublicListOfStrategyTags[0] = "i32.Int32.rw";


In the OptoScript block, you:

  • Reference each tag as a string element of the stPublicListOfStrategyTags table (see OptoScript Syntax). 
  • Modify each PAC Control tag name according to pre-defined naming standards so the scanner can identify the tag (see Naming Standard).

OptoScript Syntax

stPublicListOfStrategyTags[<index number>] = "<modified tag name>";
EXAMPLE
stPublicListOfStrategyTags[1] = "s.MyStringVariable";

To construct the tag name, see Naming Standard.

  • Index number 0 (zero) must be the last item initialized in the OptoScript block.
  • Index numbers must be unique.
  • Syntax is case-sensitive.

Naming standard

In the OptoScript block, you reference PAC Control tags using a pre-defined naming standard that consists of the tagís:

  • Data type code
  • PAC Control tag name
  • Index number (Table elements only)
  • Bit location (Bit-picks only; 0 is the first bit)
  • Writeable attribute (Writeable tags only)

Notes

  • 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.
    EXAMPLES
    /i32.MyIntVariable.rw
    '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

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 ASCII

MyStringVariable__s

Up or Down timer

Float4

t

t.MyUpTimer

t.MyUpTimer

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

32-bit integer table

See i32te.

i32t

i32t.My32BitIntegerTable[0-9]

i32t.My32BitIntegerTable[0-9].rw

Module will provide individual elements.
"_auto" will be appended to the tag’s item ID.

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

64-bit integer table

See i64te.

i64t

i64t.My64BitIntegerTable[0-35]

i64t.My64BitIntegerTable[0-35].rw

Module will provide individual elements.

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

My64BitIntegerTable__0_35_i64t

32-bit float table element as a SCADA float4

Float4

f32te

f32te.My32BitFloatTable[11]

f32te.My32BitFloatTable[11].rw

 

My32BitFloatTable__11_f32te

32-bit float table

See f32te.

f32t

f32.MyFloatTable[0-20]

f32.MyFloatTable[0-20].rw

Module will provide individual elements.

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

MyFloatTable__0_20_f32

String table

See stte.

st

st.MyStringTable[0-32]

st.MyStringTable[0-32].rw

PAC Controllers support only 7-bit ASCII

Module will provide individual elements.
"_auto" will be appended to the tag’s item ID.

MyStringTable__0_32_st

String table element as a SCADA string

String

stte

stte.MyStringTable[6]

stte.MyStringTable[6].rw

PAC Controllers support only 7-bit ASCII

MyStringTable__6_stte

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

  1. Click Save to close the OptoScript block and save the changes.

Save, download, and run the strategy

  1. Go into Debug Mode.
  2. Save, download, and then run the strategy. 

Refresh Tag List and Browse Tag Values

  1. To refresh the tag list, go to Ignitionís Configure tab, and select System > Modules. In the Cirrus Link Solutions section, restart the Opto 22 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 Ignition's Configure tab: Select OPC Connections > Quick Client, and then expand the folders to find the tags from the Opto 22 device's tags.

    From 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.

Troubleshooting


TIP: If you canít find a tag, check the following:
* The strategy is running in PAC Control.
* You correctly entered the tag name in the stPublicListOfStrategyTags table.
* After making changes to the table, you restarted the Driver module in Ignition and waited for its status to change to Connected.
For more information, see the Ignition Logs.

Scanning All Tags

If the Driver module canít find the stPublicListOfStrategyTags table in the strategy, it automatically retrieves the strategyís inventory of all driver-supported tags in their native format. This means that PAC Control's object inventory will not match Ignitionís object inventory. (For example, a 32-bit integer in PAC Control may be used as a number, a bitmask, and a zero/non-zero Boolean value.) For performance reasons, we strongly discourage scanning all tags.

  • No labels