Sattline (OPC Sattline Server) Ver2.3
Sattline (OPC Sattline Server) Ver2.3
Printed in Sweden
Preface
Preface
SattLine is a system for distributed industrial control. The system family includes
workstations, and control systems all cooperating on a local area network. The
SattLine software consists of the system program for workstations and control sys-
tems. The SattLine standard libraries is an extension of the system software, handling
functions like alarms, reports, data acquisition and PID controllers.
A common control language is used through the different system components, to
cover the different needs of a control application. Programs consist of a hierarchy of
objects, corresponding to functions and real-world objects. Each object may contain
graphics for process visualization and operator dialogues, plus program for calcula-
tions and control.
SattLine will only function properly if all software parts have the same version
number. The version of the SattLine software is recognized by the two first numbers
(X.Y) and the number (-n) after the hyphenation sign indicates the revision of that
version.
The OPC SattLine Server in version 2.3-n of SattLine is described in this manual as
an installation and user’s guide.
Trademarks
Registered trademarks from other companies are:
• MicrosoftTM, WindowsTM, Windows 2000 ProfessionalTM from Microsoft Cor-
poration.
• PostScriptTM and Acrobat ReaderTM from Adobe Systems Inc.
Contents
Preface......................................................................................... 5
1 Introduction................................................................................ 9
1.1 About this manual ........................................................................ 9
OPC interface ........................................................................... 9
1.2 Product overview ......................................................................... 9
OPC DA compliance.............................................................. 10
OPC DA compliance comments ............................................ 12
OPC Item quality................................................................ 12
OPC DA Item write............................................................ 13
OPC AE compliance .............................................................. 13
OPC AE compliance comments............................................. 13
Event types ......................................................................... 13
Areas................................................................................... 13
Filters.................................................................................. 13
OPC AE Interfaces................................................................. 13
OPC AE / Sattline relations.................................................... 14
Event types ......................................................................... 14
Severity............................................................................... 14
Vendor attributes ................................................................ 14
Time stamp ......................................................................... 14
Available events ................................................................. 14
1.3 Prerequisites and requirements .................................................. 15
1.4 Terms and abbreviations ............................................................ 15
1.5 Version highlights...................................................................... 15
v2.3-31 ................................................................................... 15
v2.3-23 ................................................................................... 15
v2.3-22 ................................................................................... 15
2 Installation ................................................................................ 17
2.1 Software Installation .................................................................. 17
Server side installation ........................................................... 17
dpSL ................................................................................... 17
Client side installation............................................................ 18
ADSOPC - For OPC DA support....................................... 18
ADSOPCae - For OPC AE support.................................... 18
2.2 Start-up procedures .................................................................... 19
2.3 Shut-down procedures ............................................................... 19
3 Configuration ........................................................................... 21
3.1 Hardware configuration ............................................................. 21
3.2 Software configuration............................................................... 21
Server side configuration ....................................................... 21
DEVICE_READ_WAIT time................................................ 23
Example 1........................................................................... 23
Example 2........................................................................... 23
Example 3........................................................................... 23
DEVICE_WRITE_WAIT time.............................................. 23
1 Introduction
OPC interface
The Sattline OPC server supports the OPC DA v2.05A interface and the OPC AE
v1.10 interface limited to simple events.
Client side
Server side
SattLine Connection(s)
dpSL
OPC DA compliance
The following OPC DA standards are supported:
OPC Data Access version 2.05A
The following objects and interfaces are supported.
OPC AE compliance
The following OPC AE standards are supported:
OPC Alarms and Events version 1.10
The following objects and interfaces are supported.
OPC AE Interfaces
The following interfaces are not implemented:
• IOPCEventServer::QueryConditionNames
• IOPCEventServer::QuerySubConditionNames
• IOPCEventServer::QuerySourceConditions
• IOPCEventServer::TranslateToItemIDs
• IOPCEventServer::GetConditonState
• IOPCEventServer::EnableConditionByArea
• IOPCEventServer::EnableConditionBySource
• IOPCEventServer::DisableConditionByArea
• IOPCEventServer::DisableConditionBySource
• IOPCEventServer::AckCondition
• IOPCEventServer::CreateAreaBrowser
• IOPCEventServer2:: <All interfaces>
• IOPCEventAreaBrowser:: <All interfaces>
• IOPCEventSubscriptionMgt::Refresh
• IOPCEventSubscriptionMgt::CancelRefresh
v2.3-23
• Write operations are optimized. If items are consecutive in the SLC memory, they
are sent in the same MMS telegram as long as there are room in the MMS tele-
gram. Depending on data type, a MMS telegram can hold approximately 100 val-
ues.
To increase the likelihood of items being at consecutive addresses on the SLC,
items can be sorted. To do so, use option DEVICE_WRITE_SORT. If sorted, no
assumption of item write sequence should be done.
• When subscribing items, if a value is not acquired from the SLC within
‘INITIAL_UPDATE_WAIT times OVERSAMPLE_RATE’ milliseconds, the
cached value within the Sattline OPC server will be returned with status ‘Bad -
Last Known Value’.
v2.3-22
• Write operations will wait for the SLC write request reply before replying to the
OPC client.
2 Installation
Client PC Client PC
ADSOPC ADSOPCae SattLine
... ... ...
adsopc.cfg adsopcae.cfg Workstation(s)
Clients Clients
Network
Server PC
OPC SattLine
data provider SattLine
dpSL ...
Control system(s)
dpSL.cfg
The OPC SattLine Server consists of one server side software package and two client
side software package, which are installed as individual software packages.
The server side software package is:
• dpSL
The client side software packages are:
• ADSOPC for OPC DA support
• ADSOPCae for limited OPC AE support
Hardware manual for details. (Also refer to Appendix A on page 39 for a procedure
to check the correct installation of all parts of the OPC SattLine Server).
The 'OPC SL Server' product will also install the 'OPC SL Data Server' product. This
product is needed for OPC clients to access the OPC SL Server. When asked if the
'ABB Program Supervision System ' should be started, answer [Yes].
For removal of product 'OPC SL Server', remove product 'OPC SL Data Server' first.
The OPC SL Server must be setup for source and program distribution the same way
a Sattline workstation is setup. Otherwise the OPC SL Server will fail to read varia-
bles after a program distribution. See section 4.6 on page 34 for details on OPC SL
Server handling of source and program distribution.
After the installation of dpSL modify the settings in dpSL.cfg, as described in the
Section Server side configuration on page 21, to match the current network configu-
ration. dpSL.cfg is located at C:\Program Files\ABB\OPC_SL_Server\Bin by default.
Note: dpSL and standard SattLine Workstation software cannot coexist on the same
PC. Only one of these software packages can be run at any one time.
3 Configuration
<trace_change_filter>: Tracing will only occur for the object name men-
tioned in this field. Default is “”, i.e.
TRACECHANGESFILTER: {} (all objects will be
traced according to <tracelevel>.
<name>: The name with which the server is identified from
the client side, default is “SL”.
<hostname>: Host name or IP address of the server where ADS
resides. Default is “localhost”.
<portnumber>: Port number used for communication. Default
19014.
Typing 0 here means that port 19014 will be used.
Only type anything else than 0 (or 19014) if there is
conflict with another program using this port or the
two ports immediately following 19014, i.e. 19015
and 19016. To view what ports are open or listening
use the "netstat -a" command at the prompt in a
DOS command window.
<oversample_rate>: Sample rate in milliseconds. Should be equal to or
less than the fastest scan rate used.
<device_read_wait>: Maximum time to wait in milliseconds when per-
forming a device read, see description below, de-
fault is 3000 ms.
<device_write_wait>: Maximum time to wait in milliseconds when per-
forming a device write, see description below, de-
fault is 3000 ms.
<device_write_sort>: 0=no sort, 1=sort. Default is 0, no sorting.
If items are sorted, they will still be returned to the
client in the same order as in the request, but they
might not be written to the SLC in the same order as
in the request.
If sorted and the items written are at consecutive ad-
dresses on the SLC, the number of MMS telegrams
needed to perform the writes can be reduced.
<initial_update_wait>: Multiply with ‘OVERSAMPLE_RATE’ to get wait
time in milliseconds. Default is 4. As default
OVERSAMPLE_RATE is 1000, the default update
wait is 4 seconds.
When items are subscribed, if no update from the
SLC is received within the wait time, the first sub-
scription update will return quality ‘Bad - Last
Known Value’
The configuration is read at program start. If changes are made to the configuration
the data provider must be restarted.
Note: In order for the server side part of the OPC SattLine Server to function correct-
ly, a normal SattLine configuration has to be loaded and running, preferably by
means of the autostart mechanism.
DEVICE_READ_WAIT time
Note: The retrieval of process values in the OPC SattLine Server is based on existing
SattLine communication between workstations and control systems. This means, that
when performing a device read the OPC SattLine Server does not actually read a val-
ue directly from the SattLine control system. The OPC SattLine Server will wait for
the SattLine cache to be updated before returning the value. If the cache is not updat-
ed within DEVICE_READ_WAIT milliseconds, the items will be returned with a
quality of Uncertain - Last Usable Value.
The maximum time to wait is specified in milliseconds in the configuration file for
the OPC SattLine server (dpSL.cfg) in the field DEVICE_READ_WAIT. The
DEVICE_READ_WAIT parameter works together with the OVERSAMPLE_RATE
parameter (also specified in the dpSL.cfg file) and the value of SattLine Picture Var-
iables scan time (specified in the SattLine application).
The value of DEVICE_READ_WAIT should always be larger than the SattLine Pic-
ture Variables scan value to allow SattLine to complete its scan. It is up to the admin-
istrator of the system, to choose an appropriate DEVICE_READ_WAIT time.
The actual DEVICE_READ_WAIT time is a multiple of the OVERSAMPLE_RATE,
and will therefore always be equal to or larger than the OVERSAMPLE_RATE.
Example 1
SattLine Picture Variables scan value: 750 ms
DEVICE_READ_WAIT: 1500 ms
OVERSAMPLE_RATE: 1000 ms
Actual time to wait: 2 x OVERSAMPLE_RATE = 2000 ms
SattLine scans: Actual time to wait / SattLine Picture Variables scan = 2,67
Example 2
SattLine Picture Variables scan value: 400 ms
DEVICE_READ_WAIT: 800 ms
OVERSAMPLE_RATE: 200 ms
Actual time to wait: 4 x OVERSAMPLE_RATE = 800 ms
SattLine scans: Actual time to wait / SattLine Picture Variables scan = 2
Example 3
SattLine Scan value: 2000 ms
DEVICE_READ_WAIT: 5000 ms
OVERSAMPLE_RATE: 1000 ms
Actual time to wait: 5 x OVERSAMPLE_RATE = 5000 ms
SattLine scans: Actual time to wait / SattLine Picture Variables scan = 2,5
DEVICE_WRITE_WAIT time
Note: The writing of process values in the OPC SattLine Server is based on existing
SattLine communication between workstations and control systems.
Writing is done at normal priority, allowing read and subscription requests to be serv-
iced while writing.
OPC write request will not return until the SLC have reported the write done or the
specified write timeout (DEVICE_WRITE_WAIT) has passed.
Write request to a SLC will be queued at the SLC. Therefore write operation duration
will depend on write operations from own and other client write operations to the
same SLC.
SERVER_DEFAULTS: {
ID: {<dataproviderID>}
SYNCHRONOUS_TIMEOUT: {<synchronous_timeout>}
}
SERVERS: {
{
HOST:{<hostname> }
PORT:{<portnumber>}
USER:{<username> }
PASSWORD:{<password> }
DATAPROVIDERS: {
{
ID:{<dataproviderID>}
NAME:{<dataproviderName>}
}
}
}
}
}
For each Data Server layer to be accessed, a SERVERS entry must exist. This entry
specifies where the Data Server layer is to be found and its login information.
For each SattLine Connection (dpSL) to access, via a given Data Server layer, a
DATAPROVIDERS entry must exist. This entry specifies the name of the SattLine
Connection (dpSL) and, for this configuration, a unique dataproviderID.
The dataproviderID is the string to prefix OPC group names and OPC Item
names with, to direct an item request to the correct SattLine Connection (dpSL).
The dataproviderID specified in the SERVER_DEFAULTS section is the prefix
used if no prefix is specified.
ADSOPCae for OPC AE support
The configuration information for the client side part of the OPC SattLine Server is
stored in the adsopcae.cfg file in the folder C:\Program Files\ABB\ADS OPC AE Cli-
ent\DLL by default.
The configuration file has the following format:
{
OPTIONS: {options}
SERVER_DEFAULTS: {
ID: {<dataproviderID>}
SYNCHRONOUS_TIMEOUT: {<synchronous_timeout>}
}
SERVERS: {
{
HOST:{<hostname> }
PORT:{<portnumber>}
USER:{<username> }
PASSWORD:{<password> }
DATAPROVIDERS: {
{
ID:{<dataproviderID>}
NAME:{<dataproviderName>}
}
}
}
}
}
For OPC AE access, the Sattline OPC Server only supports access to one Data Server
layer. Despite the configuration file layout, only one SERVERS entry may exist. This
entry specifies where the Data Server layer is to be found and its login information.
For OPC AE access, the Sattline OPC Server only support access to one data provid-
er. Despite the configuration file layout, only one DATAPROVIDERS entry may ex-
ist. This entry specifies the name of the SattLine Connection (dpSL) and, for this
configuration, a unique dataproviderID.
The dataproviderID specified in the SERVER_DEFAULTS section must match
the one given in the one and only DATAPROVIDERS entry.
3.3 Licensing
OPC DA license
The OPC SattLine Server is a licensed product, which means that a proper license
certificate must be obtained in order run the OPC SattLine Server. The license certif-
icate contains a number of seats – each seat corresponds to one accessed variable. Li-
cense keys are defined with a number of seats up to 20000 (20000 is equivalent to
unlimited). Accessed variables means that no more than the license key defined
number of variables can be accessed at the same time.
For example: A SattLine installation has a number of 8200 variables defined. An op-
timization application, which the customer wants to connect to SattLine, will never
access more than 850 variables to be accessed at a time. In this case a license key with
1000 seats is appropriate.
If an application accesses more than the number of variables specified by the license
key the license violation will be logged and the customer will be expected to acquire
an appropriate new license (upgrade).
OPC AE license
If the Sattline OPC server license shall include OPC AE, the license must include an
OPC_AE number different from zero
If OPC AE is licensed, no events will be lost due to limitations in the license.
3.6 Security
All variables in the address space are exposed to OPC DA clients. This requires that
users of the OPC SattLine Server should be very careful when writing variables since
it may harm the function of the SattLine code.
4 Runtime operations
Element Description
{…} Mandatory
[…] Optional
{…}* One or more (repeated)
[…]* Zero or more (repeated)
<dpid> Data Provider ID. The id of the data provider
<pu> SattLine Program unit name
<mi> SattLine Module instance name
<ri> Reccord instance
<vi> Variable instance
<qi> Queue instance
The following example shows the item name for the variables var1 (simple type) and
rec1 (record type) in program prog1
prog1:var1 simple variable access
prog1:rec1.* entire record access
prog1:rec1.var11 record member access
prog1:rec1.var12 record member access
In the following example a Data Server is configured with dpid "Opcds1::". Several
sub-module instances and nested records exists.
Opcds1::prog1:var1
Opcds1::prog1:rec1.*
Opcds1::prog1:rec1.var11
Opcds1::prog1:rec1.var12
Opcds1::prog1:mod1.var1
Opcds1::prog1:mod1.rec1.*
Opcds1::prog1:mod1.rec1.var11
Opcds1::prog1:mod1.rec1.var12
Opcds1::prog1:mod1.mod11.mod111.rec1.rec11.var111
Opcds1::prog1:mod1.mod11.mod111.rec1.rec11.var112
Opcds1::prog1:mod1.mod11.mod111.rec1.rec11.rec111.*
Opcds1::prog1:mod1.mod11.mod111.rec1.rec11.rec111.var1111
Opcds1::prog1:mod1.mod11.mod111.rec1.rec11.rec111.var1112
Records
It is possible to read an entire record consisting of one or more of the types described
above or a new record. If a record contains nested records the entire contents is al-
ways read recursively.
If unsupported types appear in a record, a VARIANT of type VT_EMPTY is inserted
as a place holder.
When reading a record, data is always returned as a single VARIANT having type
VT_ARRAY | VT_VARIANT, which then holds the record information.
For example, given the following record REC1, containing a string NAME having
value ‘FLOW’ and a sub record LIMIT containing two integers HiLim = 98 and
LoLim 77:
…REC1.*
…REC1.NAME (’ FLOW’)
…REC1.LIMIT.*
…REC1.LIMIT.HiLim (98)
…REC1.LIMIT.LoLim (77)
Now reading REC1 would return:
Which in e.g.Visual Basic could be extracted as (if V is the returned VARIANT and
depending on Option Base):
VbName = V(1) ‘contains: FLOW
VbHiLim = V(2)(1) ‘contains: 98
VbLoLim = V(2)(2) ‘contains: 77
When writing records, the same structure is used and there must be a one to one re-
lation between records entries and SattLine variables throughout the entire record.
Queues
Because there’s no defined OPC representation of queues, a workaround has been
implemented to keep all of the functionality of the queues.
When browsing and accessing queues, the following extensions are appended to the
name of the queue, e.g. if the name of the queue is ‘MyQueue’:
MyQueue->* Local queue, queue item value. If read and/or subscribed, the
first item in the queue is read without modifying the contents of
the queue. If written, the value to write is placed as the last queue
item, thus modifying the queue.
MyQueue-># Local queue, number of items in queue. If read and/or sub-
scribed, the number of items in the queue is read without modi-
fying the contents of the queue. If written, the value to write is
discarded and the first queue item is popped of the queue.
MyQueue(->*) Remote queue. Is not accessible.
A local queue will appear with two items ->* and ->#, which are different aspects
of the same queue, even though it’s a single SattLine variable.
Since a queue item ->* can consist of record(s), the data mapping for SattLine
queues is similar to the one for records. This means, that data is always returned/writ-
ten in a single VARIANT having type VT_ARRAY | VT_VARIANT, which then
holds the queue item information.
The queue item count value -># is always treated as a simple variable of type long
(VT_I4).
Records
Any record structure can be subscribed. If one or more of the items of which a record
consists changes, the entire record is considered changed.
Records
It is possible to read an entire record. If a record contains nested records the entire
contents is always read recursively. If writing a record, the same structure is used and
there must be a one to one relation between records entries and SattLine variables
throughout the entire record.
If unsupported types appear in a record, a VARIANT of type VT_EMPTY is/should
be inserted as a place holder.
When started interactively, restart is done by going to edit mode and back to run
mode. To load a distributed source file, do a 'Reopen - official version' of the given
source file while in edit mode.
OPC interface
• OPC DA write operations may return
ERROR_SERVICE_REQUEST_TIMEOUT (0x8007041D) for one or more
items. This is an indication that the write request was successfully requested, but
the status reply was not received within the timeout period. To increase the write
timeout, adjust OPC server parameter DEVICE_WRITE_WAIT, see Server side
configuration on page 21
6 Appendix A
7 Appendix B
4. Copy the SattLine configuration to be used by the OPC SattLine Server from
the SattLine workstation where it is being maintained into a parallel catalog
structure on the OPC SattLine Server PC.
1. Include any SattLine library used/referenced by the SattLine configuration
in this copy operation.
2. Maintain the same path, catalog and file names of the SattLine configura-
tion on the OPC SattLine Server PC as on the SattLine workstation the con-
figuration is being copied from.
5. Start the OPC SattLine Server: Start > Programs > OPC SL Server > OPC SL
Server.
1. Login as Manager user or another user with enough privileges to perform
the following operations.
2. Open the SattLine configuration to be used, in the following referred to as
<conf>.k, and put it in Run mode (Note: It is IMPORTANT!).
6. Set the AutostartFileName system variable to the name of the <conf> in the
menu: Setup > Station > Autostart.
(You may also want to set the AutostartWaitTime system variable to its mini-
mum value: 60s)
7. Exit the OPC SattLine Server.
8. Copy the <conf>.k file to C:\Users\sattline\<conf>.k
9. Copy C:\systemsetup.sg to C:\users\sattline\ systemsetup.sg
10. Logout of the sattline account and Login as user Administrator.
11. Start the Program Supervision Manager: Start > ABB > Display > Server >
Program Supervision Manager.
1. Select the dpSL program.
2. Open the Properties window for that program: File > Properties.
3. On the Start/Stop tab in the Startup field select the Automatic - Program is
started when the service starts radio button and click the OK button.
12. Reboot the OPC SattLine Server PC.
This will automatically start the OPC SattLine Server, open the SattLine con-
figuration designated <conf>.k above and put it in Run mode.
Any OPC client connected to the OPC SattLine Server prior to the reboot will
automatically reconnect to the OPC SattLine Server after the reboot (within a
couple of minutes).
8 Appendix C
Process
Fig.3 Possible delays in the communication of values between the physical process and
OPC clients in a SattLine system.
To reduce the communication delay between the physical process and the OPC cli-
ents you might seek to lower some or all of the scanning rates in the signals path.
However, this imposes a requirement on the communication resources available, so
a compromise must be made. In this regard the communication bottlenecks lies in the
SattLine control systems.
To optimize the OPC (and other) communication in a SattLine system with a given
configuration two main issues must be addressed:
1. Evaluate which parts of an OPC SattLine Server’s communication that are nec-
essary (as compared to the SattLine workstation(s)) for a given SattLine config-
uration and remove the parts that are not needed.
2. Balance the scanning rates with the available communication resources.
To discuss the first issue the following SattLine Configuration is used.
ProgP1 ProgP1
OPC clients
ProgP1
It consists of two SattLine workstations, OP1 and OP2, and one SattLine control sys-
tem, SLC. This system is using the SattLine Configuration SLtest.k that consists of
three programs distributed as shown in the figure above.
Before adding the OPC SL Server the main automatic communication that takes
place over the network when the system is running may be listed as follows:
1. Export communication of values of variables owned by the SLC to OP1.
2. Export communication of values of variables owned by the SLC to OP2.
3. Picture communication of In-View variables from SLC to OP1.
4. Picture communication of In-View variables from SLC to OP2.
5. The same as 3 and 4 for string variables.
6. The same as 3 and 4 for background scan of all variables.
7. Explicit MMS communication between SLC, OP1 and OP2.