SysCAD Marshal

From SysCAD Documentation
(Redirected from Marshal)
Jump to navigation Jump to search

Navigation: User Guide ➔ SysCAD Marshal

Related Links: OPC, OPC Server


Introduction

SysCAD Marshal is an OPC DA (Data Access) Client, allowing easy connection to OPC DA Servers. SysCAD RealTime Dynamic projects can connect to any number of OPC servers that may be on the same PC or on other PC's on the network.

To use the OPC Server or OPC Client (SysCAD Marshal) functionality in SysCAD you will need to have purchased the OPC add-on, otherwise the licensing will disable these features.

SysCAD Connectivity.png

Getting Started with OPC Server and Client

Before trying to connect to SysCAD by configuring SysCAD Marshal, it is worth completing two steps:

  1. Do you have an OPC DA Server installed and configured? This is the OPC Server that Marshal will ultimately connect to. Perhaps create a few dummy OPC tags in the server of different data types (including read/write) for testing in next step.
  2. Using any simple OPC DA Client test software, ensure that you can connect to the OPC Server. When connected, ensure that you can read and write to tags. Test this for "digital" and "analog" OPC tag types. If you have an OPC Client tool that you use for testing from the same supplier as the OPC Server, it is good to use this; but then it is a very good idea to repeat the tests with an independent 3rd party OPC Client tool.

If a 3rd party OPC Client can see and read/write to your OPC Server, then SysCAD OPC Client (i.e. Marshal) will connect and communicate.

The OPC DA Server does not necessarily have to be on the same PC as SysCAD. If the OPC Server and Client are going to be on different machines on the network, it is important to test an independent OPC Client across the network. It is still a good idea to test these on the same PC first; and then test from a connected PC. Over a network, you need to ensure that DCOM user permissions are configured correctly on both machines. There are a number of web sites describing this process.

NOTES ON OPC CORE COMPONENTS:

  1. When the OPC Server is installed, it is likely it will have installed the OPC Core Components (version 2.0 or newer).
  2. OPC Core Components are not installed automatically with SysCAD, but a copy of the install for the OPC Core Components Redistributable is included in the ...\Setup\OPC Setup folder.
  3. You can install this directly, which may be necessary if SysCAD Marshal gives error messages such as "Error connecting to OPC 2.0 Server Browser".
  4. If you are using Windows 10, you may have to ask Windows to include version 2.0 of the components before you can run the above OPC Core Components setup file.
    • Windows - Control Panel
    • Click Turn Windows Features on or off option
    • Tick the .NET Framework 3.5 (includes .NET 2.0 and 3.0) option
    DotNetFrameworkVer2.png

Setting up SysCAD OPC

The SysCAD COM interfaces used by Marshal should be installed and registered as part of a full SysCAD installation. Full administrator rights are required for this to be installed correctly.

OPC uses DCOM (Distributed COM) which needs to be configured correctly and have appropriate user permissions for all OPC Client and OPC Server software. In addition to the OPC DA requirements, the main SysCAD program communicates with SysCAD Marshal using COM.

The windows registry can only have one entry for the COM objects (including OPC Servers), so care should be taken if you have multiple SysCAD Builds in different folders. In the SysCAD bin folder there are command scripts "RegAll.cmd", "RegAll_Verbose.cmd" and "RegAll_Direct.cmd" which will update the registry for the SysCAD version in that folder. The exact same steps for SysCAD COM registration need to be followed as described in Setting up COM.

NOTE: The OPC component setup has to be completed before running the RegAll command. If you have changed the OPC components, then you may have to run the RegAll command again for it to operate properly.

Getting Started with Marshal (as OPC Client)

To use the IO Marshal option in SysCAD, the user must first have the following prerequisite.

  1. Use a simple OPC Client test application to ensure the OPC Server operates correctly as described in Getting Started with OPC Server and Client.
  2. The SysCAD Marshal (OPC) License Option must be enabled.
  3. The user must create a SysCAD Marshal (.scm) file. This simple text file can be stored in the project folder.
  4. The user must create a IO tag list file. (This can be SQLite db3 format, Excel Table format or text file csv format). In this table, Marshal IO tags are created and defined for communication between SysCAD Marshal and OPC Server(s). Note that this database must be in the same folder as the Marshal .scm configuration file.

Note: Marshal refers to the IO tag list as slots.

To use the Marshal tag list file in a SysCAD project, the user should do the following:

  1. Set up a SysCAD dynamic project. The project should have RealTime selected.
  2. From the Menu select Project - Settings and click on the IO Connections tab.
  3. Please see Project Settings for a description of the available fields.
  4. Modifications to Marshal IO tag list must be made directly in the tag list file, there is no user interface in SysCAD or SysCAD Marshal to manage the tag list. When adjustment to the IO table is complete, reload it into SysCAD Marshal. Note that the SysCAD project need not be closed and reloaded for this process.

SysCAD Marshal file (.scm)

A text file "xxxx.scm", the marshal configuration file, must exist in the same folder as the IO tag list (slots) file. Based on the extension of the file supplied, the format may be SQLite, MS Excel of csv text file. The scm file is the same format as a windows INI file. Any line starting with a ';' is a comment and is ignored.

For Example: See below when editing a .scm file in a text editor (e.g. Notepad++). This example has two OPC Servers "WinCC" and "RunSigs". The ProgID entry is used to specify the registered OPC Server name.

[Databases]
Slots=Slots.xls
CodeBlocks=CodeBlks.xls

[Thread]
Priority=Above_Normal
DelayResolution=50
ChangeFlushCycle=1000
StatusUpdateCycle=500
MaxChangesInCall=10
ConditioningCycle=1000
ReconnectHold=60
ReconnectItemBlk=100

[DCOM]
ClassContext=LOCAL_SERVER | REMOTE_SERVER | 

[Scenario]
TagListFile=Tags.MTL
ValueSetPath=

[WinCC]
Node=200.200.200.101
ProgID=OPCServer.WinCC
UpdateRate=250

[RunSigs]
Node=
ProgID=ScdIODB.OPC.1
UpdateRate=500


[Databases] section

Slots = Required. The file name of the database containing the list of slots and the configuration for each slot (OPC tag). The file can be an SQLite database (db3), MS Excel file (xls, xlsx, xlsm) or text file (csv format). This is described in detail under IO Tag List (or Driver Slot) file.
CodeBlocks = Optional. The file name of the database containing the list of available code blocks. The file can be SQLite, Excel or csv.

[Thread] section

Priority=Above_Normal
DelayResolution=50
ChangeFlushCycle=1000
StatusUpdateCycle=500
MaxChangesInCall=10
ConditioningCycle=1000
ReconnectHold=60
ReconnectItemBlk=100

All of the above are optional. The default values are shown in the above example. Valid options for Priority are "Below_Normal", "Normal", "Above_Normal", "Highest" and "Time_Critical".

[FloatPointFilter] section

Change=0.000244141 (=1/4096)
DeltaTime=60
Multiplier=0.01

All of the above are optional. The default values are shown in the above example.

[DCOM] section

ClassContext=LOCAL_SERVER | REMOTE_SERVER |

[Scenario] section

TagListFile=TAGLIST.MTL
TagListPath=.\Scenarios

These are optional. If TAGLIST.MTL is specified, then when saving and loading scenarios, SysCAD Marshal will save and recover all the OPC tag values listed. TAGLIST.MTL is a text file (extension MTL Marshal Tag List) which is a list of all the OPC tags to be saved/recovered. Tags are grouped by OPC Server name. The ability to set all the saved OPC tag values in the OPC Server (during load scenario) will depend on whether the OPC Server supports a write of all these tags. TagListPath is the path, relative to the SysCAD Marshal (.SCM) file where the tag list file (.MTL) and the tag values will be saved to / restored from in (.MTL) files. The values are saved in files named using the convention filename[SCNNAME].MTV where SCNNAME is the name of scenario selected in the SysCAD save scenario command.

The file filename.mtl has the following format by example:

Tag 
<<<WinCC>>>
[PLC001A]DS20_PU15_M01].DRIVE_FLTS_HIST
[PLC001A]DS20_PU25_M01].DRIVE_FLTS_HIST
[PLC001A]DS20_PU25_XV01_ZIC
[PLC001A]DS20_PU25_XV01_ZIO
etc.
<<<RunSigs>>>
[PLC101A]CNB_JC15_CV10_HIC01:I.Data[20]
[PLC101A]CNB_JC15_CV10_HIC01:I.Data[21]
etc.

This example has two OPC Servers named <<<WinCC>>> and <<<RunSigs>>> followed by any number of OPC Tags for that server. The first line of the text file is ignored.

["OPC Server"] section

The user can specify any number of "OPC Server" sections and give them any names you choose. In the example above they are "WinCC" and "RunSigs". Each slot (OPC tag) will use one of these defined OPC Server section names in the scdDriver field as the mechanism to associate a slot with a particular OPC Server. For example scdDriver may be OPC(WinCC, "CV1_speed").

Node = This field is optional, it is used when the OPC Server is located on a remote computer.

ProgID = The OPC Server Program ID. This is the same name that you see for the OPC Server when in an OPC Client you browse through a list of installed OPC Servers.

UpdateRate = Time in milliseconds.

Running SysCAD Marshal

SysCAD Marshal can be started automatically by a SysCAD project configured to use SysCAD Marshal. SysCAD Marshal can be started separately without starting SysCAD. To do this, user can start up SysCAD Marshal directly from the Bin folder.

After loading a .scm file, if there are continuous messages like "Error locating 'SomeOPCServerName'.:Invalid class string" then it is likely that an incorrect ProgID for OPC server name has been specified or Marshal is unable to locate and connect to the specified OPC server.

Test1.scm is loaded below by SysCAD Marshal to show how the data is presented (image from an older version of SysCAD Marshal):

User Guide image381.jpg

SysCAD Marshal Menu Options

Configuration | Delays Enabled can be used to switch on or off all timer delays for OPC tags. In other words, when not checked, ignore all delays specified in the tag list.

When are OPC Tags mapped to SysCAD tags updated

OPC Tags in Marshal can be mapped (Get/Set) to SysCAD tags in the plant model using the #ScdConnection field.

When Marshal loads the values of OPC Tags that are mapped to SysCAD tags are updated to the current values of the mapped tags in SysCAD.

While SysCAD Solver is running or paused any changes in SysCAD tags that are mapped to OPC tags are always updated in Marshal and therefore seen by OPC Server.

When the SysCAD Solver is stopped, any changes in SysCAD tags that are mapped to OPC tags are NOT sent. The current value is only sent when the user next goes to paused or running state. However in SysCAD 9.3 there are two exceptions and these are special tags "$Solver.AppState" and "$Solver.AppState.Detail" that if mapped to OPC tags are always sent to Marshal (and therefore the connected OPC Server), refer to Solver Setting - FS Solver for more information.

In SysCAD 9.3 when a scenario is loaded, the SysCAD values that are mapped to OPC tags are sent to Marshal and connected OPC Server.

SysCAD Marshal Rules

User Guide image383.jpg

Where:

Mn = Range Min

Mx = Range Max

R = Span Range

O = Span Offset

Slots

The SysCAD Marshal Slots table is explained in the IO Tag List (or Driver Slot) file section.

This file can have any name as long as the correct association is made in the .scm file under the [Databases] section.

Links

'Set' Means when THIS slot changes SET the tag specified by the Set

'Get' Means when the tag specified by the Get changes, GET the values and set THIS slot

For Example:When Slot a415_PP_006_Command changes

Set Cb_a415_PP_006.Command then execute the CodeBlock. Then Get the Cb_a415_PP_006.Status and Set the slot a415_PP_006_Status, which will go back to the OPC Server

Code Blocks

The SysCAD Marshal code blocks are like mini pgm text files with file extension .dcb and loaded by SysCAD Marshal. They are executed by SysCAD marshal as needed (i.e. on change) without the need to pass through SysCAD, so they are independent of the execution and iterations of the SysCAD model. This improves significantly the turn around time on certain signals and logic. The other advantage is that relatively complex logic or simulation can be implemented in code blocks, whereas only some simple logic expressions can be implemented in the scdConnection column.

The SysCAD Marshal code blocks are managed and called from the codeblock MS Excel file. As with the slots file, this file name can be user defined as long as the correct association is made in the .scm file under the [Databases] section.

User Guide Image384.gif

In general, SysCAD requires the following fields in the codeblock table to ensure correct and complete operation of the SysCAD Marshal.

  1. ScdLoopTag: This is the name of the "object" or "loop". This is the main part of the tag that can then be used in the Slots table (scdConnection column).
  2. scdSchedule: Not used.
  3. scdCodeBlock: This is the name of the corresponding code block (.dcb) text file.
  4. scdDescription: Optional. User may enter a description.

The actual code blocks called by the codeblock.xls are text files with the extension (.dcb), written in PGM language.

An Example of a code block "Simocode.dcb" is as follows:

bit Run
Long Status, Amps, Command
IF Command == 1151
Status = 43829
Amps = 10
Run = 1
ELSE
Status = 43825
Amps = 0
Run = 0
ENDIF
$

The variables declared in the codeblock can be referenced in the scdConnection column of the slots file by combining the scdLoopTag defined in the CodeBlocks file together with the variable in the associated code block. There may be any number of "loops" defined using the same code block file. Effectively independent instances of the "loop" or "object".

Accessing codeblock variables: For example you may have "set(Cb_a415_PP_006.Command)" to set the value of Command from an OPC tag. When the OPC tag changes, it will set Command which also causes the code block to execute. The code is executed when any value is changed. To retrieve a value from a code block you would use "get(Cb_a415_PP_006.Run)" in the scdConnection column. In the above example, the values of "Status", "Amps" and "Run" are changed based on the value of "Command". It is implied that "Command" would be set from outside the codeblock by an OPC tag or by a SysCAD flowsheet tag.

IO Tag List (or Driver Slot) file

The IO Tag list file (or database) is specified in the [Databases] section of the scm file. This file contains a list of all the IO tags (slots) by specifying a "Marshal OPC Client Tag", its data type, its mapping to a tag on a device (OPC Server) and optionally a connection mapping to a flowsheet SysCAD tag. This file should be created by the user prior to loading into the project. The file format is determined from the filename extension and may be one of the following:

  • SQLite - File extension db3
  • MS Excel - File extension xls, xlsx or xlsm. A compatible ODBC / ADO database driver needs to have been installed.
  • MS Access - File extension mdb. This format is not supported and automatically maps to SQLite db3 format
  • text file (csv format) - Any other extension is assumed to be a text file of csv format. It is conventional, but not required, to use file extension csv.

The name of the table in the SQLite database (or the worksheet name if using Excel) needs to be either "scdDrvr" or "Slots".

The following fields may be included:

  1. ScdLoopTag (or scdMarshalTag): Required field. This is the Marshal OPC Client tag we chose. This must be a unique tag and not contain spaces or special characters. See ScdLoopTag.
  2. ScdConnection: Optional field. Connection (mapping) information with SysCAD flowsheet tags and/or other Marshal OPC Client tags. See ScdConnection for valid formats.
  3. ScdTyp (or scdType): Required field. See ScdTyp for more information.
  4. ScdDriver: Required field. Full address of OPC Server tag of slot. This provides the OPC DA connection between SysCAD Marshal (OPC Client) and user device (OPC Server). User must specify the OPC Server section name (as defined in the .scm file) and corresponding OPC tag in the server. Use quotes if required for OPC Server tag. Syntax is OPC(server_name, OPC tag on Server). Eg. OPC(WinCC, CV1_speed); OPC(WinCC, "CV[1].Speed").
  5. ScdModifier: Optional field. Extra information on the raw or digital value sent or received by the driver. Such as the bit number for a digital slot or the span and offset for an analogue slot. See ScdModifier.
  6. ScdRange: Optional field. Sets the minimum and maximum number for an analogue slot. See ScdRange.
  7. ScdFilter: Discontinued. See ScdFilter for more information.
  8. ScdCompression: Discontinued. See ScdCompression for more information.
  9. ScdConversion: Discontinued. Engineering unit for analogue slots. See ScdConversion for more information.
  10. ScdDescription: Optional field. This is some description for the Marshal Tag. The description will appear in the Description Column in Marshal.
  11. ScdArchive: Discontinued. See ScdArchive for more information.

The table must contain the fields ScdLoopTag, ScdConnection, ScdTyp and ScdDriver. For the slot to be successfully loaded, valid data is required in ScdLoopTag, ScdTyp and ScdDriver.

When using MS Excel the worksheet name must be "scdDrvr" or "Slots" and the first row must contain the correct field names. Marshal will fail to load if the Excel file is currently open, when this error is reported save and close the Excel file before loading the scm file in SysCAD Marshal.

When using csv text file format, the first row of the file is ignored. The expected sequence of columns is as listed above. The file must have at least 4 columns for ScdLoopTag, ScdConnection, ScdTyp and ScdDriver. The description, if used, must be in column 10. Columns 7, 8 and 9 are ignored.

Please note that other fields are allowed in the table, therefore the user can add in any other information that may be useful to them, but SysCAD will only use the above-mentioned fields.

ScdLoopTag

The alternative name for this Field is ScdMarshalTag for Build 139.31388. This is a user specified Marshal OPC Client tag (or IO Loop tag) for the slot. This must be a unique tag, therefore it should be indexed with no duplicates. Spaces and most special characters are not allowed, following the same rules as SysCAD tags. This Marshal OPC Client Tag can be referenced in the ScdConnection functions for direct connection (or mapping) between Marshal tags.

ScdConnection

This is the field that sets up the connection (or mapping) between SysCAD plant model tag and the Marshal OPC client tag (defined in scdLoopTag). The Marshal OPC client tag is in turn mapped to the OPC Server tag specified in scdDriver, so that information can be transferred between the two. As a general rule, all GET functions should have WRITE access enabled and SET functions should have READ access enabled.

This field can be left empty, or multiple functions can be entered in this field separated by commas, and a single function can contain multi parts separated by colons. For this please see the sub heading under connection function examples.

In addition to mapping a Marshal OPC client tag to a SysCAD model tag, it is also possible to map to another Marshal OPC tag. This allows direct feedback of a OPC Server tag to another OPC server tag without any reference to the flowsheet model and SysCAD project tags.

Valid functions for transferring information from SysCAD to Marshal are:

NOTE: All Get functions should have write access enabled

  • Get(tag) : transfers the value of the specified tag to the OPC Server (i.e. Device/Driver/PLC/etc.) after each iteration only if it changes.
For example: Get(TNK_1.Lvl (%))
  • Get(tag, DelayTime), Get(tag, DelayTime, DelayTime2) - transfers the value of the specified tag to the OPC Server after delay specified in milli-seconds. The delay time is an optional parameter. The second, optional parameter DelayTime2, can only be used for bit slots. When the tag changes to 0 (false) the specified OPC Server tag is changed after a DelayTime milli-seconds, and when the tag changes to 1 (true) the specified OPC Server tag is changed after DelayTime2 milli-seconds.
  • GetDelay(tag, DelayTime, RandomDelayTime) - transfers the value of the specified tag to the OPC Server after a delay specified in milli-seconds. The parameter RandomDelayTime is optional. If this is not specified, the delay time is fixed at the value specified for the parameter DelayTime. If RandomDelayTime is specified, the total delay time is calculated as DelayTime plus a random number between zero and RandomDelayTime where the probability of any number in this range is equal (i.e. a "flat" distribution).
For example: Get(TNK_1.Lvl (%), 1000, 500)
  • GetCmp(tag, comparison operator, value) : Only valid for a bit data type. Transfers 0 or 1 to the OPC Server depending on the result of the expression generated by the parameters. The SI units as defined in the conversion file MUST be used.
Examples:
GetCmp(Tnk_1.Lvl (%),<,1) sets the driver slot bit to 1 if the tank level is less than 1% full.
GetCmp(P_1.T (C),>,100) returns 1 if the temperature in the pipe exceeds 100 °C.
  • GetAbs(tag) : Only valid for a float data type. Transfers the absolute value of the tag.
Examples:
GetAbs(GC_1.dT) ;returns the absolute temperature change.
  • GetRev(tag, offset) : Only valid for a float data type. Transfers the reverse value of the tag plus the offset value.
Examples:
GetRev(GC_1.ReqChange,10) ;If reqChange is 100, then the value returned will be 110.
  • GetSqr(Tag, multiplier) or GetSqr(tag, multiplier, [minI], [maxI]) : Only valid for a float data type. Returns the square of (tag value times by the multiplier). The ScdRange field must be specified.
[math]\displaystyle{ \operatorname{Returned Value} = \frac{(\operatorname{Tag} \times \operatorname{Multiplier})^2} {\operatorname{MaxI} - \operatorname{MinI}} }[/math]
Examples - GC_1.value1 = 100:
GetSqr(GC_1.value1,0.2) ;returns 400. Thus (10*0.2)^2
GetSqr(GC_1.value1,1,0,1000) ; returns 10. Thus (100*1)^2/(1000-0)
  • GetSqrt(tag, multiplier) or GetSqrt(tag, multiplier, [minI], [maxI]) : Only valid for a float data type. Returns the square root of tag value, then times by the multiplier. The ScdRange field must be specified.
[math]\displaystyle{ \operatorname{Returned Value} = \sqrt{\operatorname{Tag} \times (\operatorname{MaxI} - \operatorname{MinI})} \times \operatorname{Multiplier} }[/math]
Examples - GC_1.value1 = 100:
GetSqrt (GC_1.value1,2) ;returns 20.
GetSqrt(GC_1.value1,2,0,1000) ; returns 632.45.
  • GetProfile(Tag, FileName, [Reverse]) - This function allows the user to fetch a corresponding number from a correlation using interpolation, thus this data file must contain at least two data points, thus (x1,y1) and (x2,y2). The format of this file must be a text or csv file and the first line of the file must contain any combination of the following ABS, SCL, SCL% or Contronic.
[Reverse] = 0 for 1st column in text file is X value or 1 for 1st column in text file is Y value.
Function will return:
[math]\displaystyle{ Y = Y_0 + (Y_1 - Y_0) \times \frac{(\operatorname{Tag Values} - X_0)}{(X_1 - X_0)} }[/math]

Valid functions for transferring information from Marshal to SysCAD are:

NOTE: All Set functions should have read access enabled

For a single OPC tag, multiple tags can be mapped. In other words a tag can be mapped to set a number of different SysCAD and/or other Marshal OPC tags. For example a "startmotor" signal can be mapped to a start tag in SysCAD model and return a "starting" signal to OPC Server (perhaps with a delay).

  • Set(tag) - the specified tag is changed immediately.
  • Set(tag, DelayTime) - the specified tag is changed after delay specified in milli-seconds. The delay time is an optional parameter.
  • Set(tag, DelayTime, DelayTime2) - this option can only be used for bit slots. When the driver tag changes to 0 (false) the specified tag is changed after a DelayTime milli-seconds, and when the driver tag changes to 1 (true) the specified tag is changed after DelayTime2 milli-seconds.
  • SetInv(tag), SetInv(tag, DelayTime) and SetInv(tag, DelayTime, DelayTime2) operate as described above except the output is inversed (i.e. performs a bitwise not).
  • SetDelay(tag, DelayTime, RandomDelayTime) - the specified tag is changed after a delay specified in milli-seconds. The parameter RandomDelayTime is optional. If this is not specified, the delay time is fixed at the value specified for the parameter DelayTime. If RandomDelayTime is specified, the total delay time is calculated as DelayTime plus a random number between zero and RandomDelayTime where the probability of any number in this range is equal (i.e. a "flat" distribution).

Changes based on rising and falling edges can be made by setting one of the delay times to INF (infinity).

Example: Set(Pump_3.Speed.State, INF, 0) will switch the pump on when the slot changes from 0 to 1 (rising edge) but will do nothing when the slot changes from 1 to 0 (falling edge).
Note: Forcing and Ignoring do not necessarily affect the Sets described here. They are implemented at a low level in the driver to supply a fast 'turn-around' time.

Connection function examples:

Example 1) Multiple functions.

We have the following flowrate and valve %open data:

Flowrate Valve%Open
50 10
70 25
90 40
120 60
150 80
180 100

What we want to do is based on the flowrate measurement change the valve setting accordingly. To do so, we can do the following:

1. Create a text file called "flow.txt" or a comma-delimited file called "flow.csv" containing the above data in the following format:

ABS SCL%

2. In the ScdDrvr table, select the ScdLoop tag that is going to send the signal to the valve, in the connection column, type in the following:

GetProfile("P_5.Qm (t/h)", "flow.txt", 0), Set("VLV_1.Posn.Reqd (%)", 500)

The above command will do the following when loaded in SysCAD:

1. Get tag value for P_5.Qm in t/h. Let's say this value returns 100.

2. From the flow.txt, SysCAD uses interpolation to calculate

Y = 40 + (60-40) * (100-90)/(120-90) = 46.67.

3. The valve %opening in SysCAD is set to 46.67 after 500ms delay.

Example 2) Function with multiple parts.

Get("S612-1.NQv (Nm^3/h)"):Rng(0,10000):Sqr(0.001)

ScdTyp

The alternative name for this Field is ScdType for Build 139.31388. The data type, read/write access and other options are specified in this column. The options are separated by commas and may be in any sequence.

Data types - A data type MUST be specified:

  • b : (bit 0 or 1)
  • u8 : (unsigned 8bit number char 0 to 255)
  • u16 : (unsigned 16bit number word 0 to 65535)
  • u32 : (unsigned 32bit number dword 0 to)
  • i8 : (signed 8bit integer byte -128 to 127)
  • i16 : (signed 16bit integer short -32768 to 32767)
  • i32 : (signed 32bit integer long -2147483648 to 2147483647)
  • f16 : (3 significant digits, signed 16bit floating point number unique to SysCAD flt16 -262144 to)
  • f32 : (7 significant digits, signed 32bit floating point number float 3.4E+/-38)
  • f64 : (15 significant digits, signed 64bit floating point number - double 1.7E+/-308)

IO Type (Read/write options) - A IO type MUST be specified:

  • ro : SysCAD has read-only access to the driver slot. (This means the driver file sends value to SysCAD. Therefore Set functions can be used.)
  • wo : SysCAD has write-only access to the driver slot. (This means the driver file receives value from SysCAD. Therefore Get functions can be used.)
  • rw : SysCAD has read-write access to the driver slot. (This means the driver file can send or receive values to or from SysCAD, both Get and Set functions can be used, delays should be used to give it time to process data.)

Other options:

  • h : SysCAD automatically records that tag in the historian.
  • l : Local slot.

The value of that slot is saved and restored when saving and loading SysCAD projects. An initial value for a tag can be specified by using l=value. The initial value is only used the first time the slot is loaded in a project. The value must be in the units specified in the Conversion column.

Note that a local slot's access is assumed to be write-only (wo) regardless of the read/write options specified. Note that local slot values are restored when a project is loaded, they are NOT restored when the driver is switched off then back on!

  • f : Enable forces.

The forcing capability for that slot is enabled. A force value may be specified by using f=value. The value must be in the units specified in the Conversion column.

  • ir : Ignore reads. Enable ignoring capability for reads.
  • iw : Ignore writes. Enable ignoring capability for writes.
  • irw : Ignore reads and writes. Enable ignoring capability for reads and writes.

NOTE

The data type chosen must be able to store the full range of values in their SI unit. For example a slot using f16 for range 0 to 5000 in tons corresponds to values of 0 to kg in the SI units, this will result in incorrect values (overflow) because this exceeds the maximum value for the f16 data type.

ScdModifier

How the driver value is modified to get the tag value. The modifier used must relate to the data type in the Type column. The modifier (together with the range) converts a digital integer value to the data type specified in the Type column.

For example a 4 to 20 milliAmp analog signal is received as a raw digital value in the range 0 to 4095. This digital value is then mapped to a value using the specified range.

  • Span (2 parameters - span and offset) e.g. Span(3840, 128), Span(4095, 0)
  • Mask (1 parameter - hex bit mask) e.g. Mask(0xffff)
  • Bit (1 parameter - bit number from 1 to 16 or 0 to 15) e.g. Bit(5)
  • None (0 parameters) e.g. None()

ScdRange

This indicates the value's range. It has two parameters Min and Max that correspond to the minimum and maximum driver values. Eg, Range(0,1500). The units used must correspond to the Conversion column.

Typically an analog slot uses the span modifier as a full range. Check the driver documentation to see (1) how values are translated from engineering units to digital raw values used by the driver and back; and (2) if clamping is enabled when a value exceeds the range (i.e. how are values above and below the range handled).

ScdFilter

This is the signal processing algorithm(s) to be implemented on the input data to SysCAD from the field. These are used if a tag is being recorded in the historian. Window and First can be used together by separating them with a comma. The units used must correspond to the Conversion column. See section on Historian Filtering.

For example, a window filter is used to have a smoothing effect on analog inputs.

  • None()
  • Window(length)
  • First(Tau, Period, Delta)

ScdCompression

The type of data compression to be performed by the historian. The units used must correspond to the Conversion column. See section on Historian data compression.

  • None()
  • Box(Delta)
  • ABox(DeltaLo, DeltaHi, NoRec, NoNotRec, Change)

ScdConversion

The dimension/group and engineering unit for the value used. These must be valid and in the format Dimension(unit). See section on Conversions Table - Engineering Units Conversion.

eg P(kPag), T(dC), Frac(%)

ScdArchive

This field is optional and will only be valid if the Archive option in SysCAD is switched on. It allows the user to add any driver slot tags to the Archive, an example is:

Table(Avg,Min,Max,Cnt)

The above example will add the average, min, max and count values to the Table in ScdArchive.mdb. For more information, please refer see Archive Options.

Trending SysCAD Marshal Driver Tags

The marshal IO tags can be shown on the Trend window as normal. The full tags would be MarshalTag.Slot.Field or MarshalTag.Link.Field. Valid fields are Value, HoldValue, Hold, Type, Changes and Ignored.