Professional Documents
Culture Documents
Maxdna Software Backplane Reference Manual: 277710 Rev. A1
Maxdna Software Backplane Reference Manual: 277710 Rev. A1
Software Backplane
Reference Manual
277710 Rev. A1
Refer to this publication for complete and accurate information that helps you better operate and service Metso
Automation MAX Controls equipment. Your comments and suggestions are welcome.
Metso Automation MAX Controls, Inc.
1180 Church Road
Lansdale, PA 19446
Attention: Manager, Technical Publications
SBP 101.........................................................................................................................................................................1-2
Service vs. Applications ........................................................................................................................................1-3
Core Functions.............................................................................................................................................................1-4
SBP Monitor ..............................................................................................................................................................1-4
Registration and Routing ...........................................................................................................................................1-5
Transport....................................................................................................................................................................1-7
Local Status Server ....................................................................................................................................................1-9
Utilities........................................................................................................................................................................1-29
SBP Spy...............................................................................................................................................................1-29
Overview
The software backplane is a collection of programs that facilitate the reliable,
high performance transfer of information in the maxDNA system. The
software backplane is based around some simple concepts. To participate in
the SBP an application can:
SUBSCRIBE - get the current item and sign up for notification of change
in that item
<tagname> . <attribute>
A Software Backplane can consist of a registration and routing service (RRS), a client application and a server
application
Client Server
Application Application
Registration
and Routing
In the normal situation there is a maxTRANSPORT application to communicate between boxes using a dual Ethernet
connection.
Client Server
Application Application
Transport Transport
RRS RRS
SBP Monitor
The SBP monitor is the interface to applications running as a service. In this application, the RRS, Transport and the
main portion of the Local Status server are running as services. Click on the SBPMonitor icon in the toolbar to access
the dialogs associated with these applications. The SBPMonitor starts whenever the first interactive application starts
after a user login.
This dialog shows the three standard tabs of the SBPMonitor. maxRRS (registration and routing), maxTRANSPORT
and SBP Services. The RRS and TRANSPORT will be described later. The third tab shows the status of all other SBP
service applications.
There are three columns in the SBPMonitor SBP Services tab. Program (the name of the executable), Ping Time (the
amount of time for a special SBP response message to be returned) and the status of the application. The
MCSRegEdit.exe is an example of a transient service which runs during service startup and then exits. In the above
display, the program maxTRANSPORT is no longer running normally.
The connection list box lists all of the known connections to the SBP within this box. The event list box is primarily for
debugging and contains the history of connections. The Transports box contains known transport programs to go outside
of the box.
In the above case, the local status server (_LSS by name) is connection 3. You can see from the event history that the
_LSS connected 2/27 at 13:26:17.
It can also be noted that it has a quality of 80. The connection quality is used where the <tagname> of an identifier is
not unique. The SBP will choose the highest quality connection that has registered a non-unique tagname. This
mechanism is used for redundancy. If a primary and secondary DPU both have a point, it will be registered twice. The
active DPU will have a higher quality than the secondary so messages will be routed to it.
If a process fails to respond to the SBP, its quality will be reduced over time. At some point, the connection will be
closed by the SBP.
Note the additional letter after the destination route. This letter stands for:
– I (mported) through a transport from another box
– X(ported) by this box to other boxes
– H (idden) registered in this box only
Note that there are boxes that can be used to filter the point list by ID, Connection or connection quality. There is also
the ability to transfer filtered point lists to files for external use.
Transport
This program is responsible for the movement of files from station to station within the maxDNA system.
AB – an indication that transport is hearing broadcasts from the named station. This is not necessarily an indication that
communications are possible.
IP – the address on the A network. Note that the actual address on the B network is 172.17 instead of 172.16.
<Paul Ackley>
Flags – an indication of the capabilities and status of the station ddmmnn where
dd – blugrovits
mm – blavisque
nn - rivits
BuffCnt –
ReqReSpl
ReSplDone
ReSynDone
DupPkts
RejPkts
ReXmitsA
ReXmitsB
_LSS.
Readable items:
.AddSvc – Add a Service to the LSS. The format of the written string is:
Write - _lss.addsvc.<service name>.<service type>
Where <service name> is a user-determined name for the new service and <service type> is
the same suffix that is in the lss.ini file (pid, atb, etc.)
.AddMem – Add a Member to a Service. The format of the written string is:
Write - _lss.addmem.<service name>.<member>
The type of member created will be the type of data included in the write.
.Shift_start – a variable, of type short, that is used to specify the time at which an 8 hour shift starts (0 =
midnight, 1 = 1 AM, 2 = 2 AM, etc.). Since all shifts are assumed to be 8 hours long, it is only necessary to
specify the start time of one shift.
.log – to make an entry in the log
.post_alarm – to make an entry in the alarm system
_DISPLAY.
.BUFFER.<MASK>
Where <MASK> is an indication of the key clusters that are desired. Key clusters are represented by a
single letter:
M - ode
D - isplay
P- an
C - ursor
Z - oom
U - ser
L -ogic
S - etpoint
O - utput
A –alarm
For example:
Subscribe _KEYBOARD.BUFFER.MDP - to get mode, display and pan key clusters
_SEL_PT.
IS
There is a special subscribeable item – Is. The format of an ‘Is’ subscription is:
ubscribe – _SEL_PT.Is.<unique tag> The response is a Boolean response of 0 if the supplied <unique
tag> is not the selected point, and 1 if it is the selected point.
Forward
This is a special member that can be used to forward requests to the point that is designated as the
selected point. Note that points that are forwarded will stay connected to the same point regardless of
changes to the selected point.
Forward Example:
Route
This is another special member. Unlike Forward, Route will change when the selected point changes.
Route is only relevant to subscriptions.
Write _SEL_PT.TAGNAME("FIC101") ;Set Selected Point to FIC101
Subscribe _SEL_PT.ROUTE.OBJTYPE
Subscribe Data Update "PID" ;Subscription returns the objtype of FIC101
Write _SEL_PT.TAGNAME("DIG101") ;Change the Selected Point
Subscribe Data Update "DTB" ;Get a new update from the objtype of DIB101
_Workgroup.
.SILENCE To silence all annunciators in a workgroup, you need only write to:
Writing to _lss.log inserts an event into the event log system. There are a number of parameters which can be used to
modify the log entry.
Where:
<type>=<value>
Examples:
Notes:
Time defaults to local time and is always a 17 character string without punctuation
The event collector collects description and alt description late (when dequeueing events) - if you rapidly change these
attributes, you will get the last description and alt description in the historical log.
Future times are accepted but are held by the resort algorithm until the time has past. Limit future times to a minute into
the future.
Note on post_alarm
A read from _lss.post_alarm will return a tagname under which a tag is posted. There are different forms for posting an
alarm:
tag = sbpread(“_lss.post_alarm”)
A write to _lss.update_alarm
Real-time Gateway
The Real-time Gateway provides interfaces to get data from older DPUs (or controllers) via the DBM. The DBM and
the MAXStation must be on the same Ethernet with the same network identifier. The points of the DBM database will
be registered with the Real-time Gateway.
The Real Time Gateway has been enhanced to provide the following members for each DBM in the system. The Syntax
accessing these members is:
_dbmname.member
_DBMS.COUNT
_DBMS.number.member
Where:
dbmname - is the name of the DBM
number - is the relative 1 index of the DBM
member - is one of the following:
COUNT - The maximum index of DBMs which have been heard from.
NAME - The name of the DBM (Useful with index relative addressing)
DOMAIN - The domain served by this DBM
OK - Indicates True if a path exists to the DBM through some network
NETA - Status of Network A
NETB - Status of Network B (0=NEVER_KEEPALIVE, 1=CONTINUOUS,2=LOST,3=REGAINED)
IP - IP address of DBM on NETA
IDLE - Percent Idle
DHW1_OP - DPU Bus 1 operational Status
DHW2_OP - DPU Bus 2 operational Status
maxPROXY
maxPROXY is a service that can be provided by a workstation to look up and direct traffic to addresses not available to
another SBP client. This will hopefully become clear after the following discussion.
Overview
The Software Backplane (SBP) is centered around the registration and routing services (RRS). The purpose of the RRS
is to keep track of where things are located. When a client application wants to get a <tagname>.<attribute> it passes a
SBP message to the RRS – to be passed onto the final destination. In order to perform this function, RRS maintains a
list of points that it recognizes as registered. In the following example, the Server Application connected to number ‘3’.
The server must register all points to make them available. When it registers points, the RRS remembers them to be
from connection ‘3’. When the client application requests FIC101 from RRS (always connection ‘0’) the message will
be forwarded to connection ‘3’.
The RRS
may
store
hundreds
Client Server of
FIC101
Application Application thousand
s of
points.
The
6 3
architect
of a
0
Tagname Connection
FIC101 3(Q90)
Registration
and Routing
maxDNA system has the option of dividing the system into domains. Some purposes of domains include:
• Isolate one part of an installation from another such as Unit1 and Unit2 so one unit can be operated or shut
down independently of the other unit.
• Control security in a multi-unit plant. Through domains, the architect can dictate which workstations have
direct full access, and which workstations have read-only or no access.
• Limit the alarm coverage for a set of workstations
• Limit the number of tagnames that need to be maintained and searched during lookup.
The architect of a system should organize the domains to minimize the need for interdomain communications. The main
purpose of proxy is to facilitate exceptions where domain-to-domain traffic is required.
Client Server
Application Application
Get me:
2FIC101.PV
Transport Transport
RRS RRS
1LIC111 2FIC101
Filters
The first step in resolving this problem is for RRS to have a way to find out where to send requests that it does not find
in its own database. During domain configuration, this is dealt with.
In the above configuration screen you see the filters for UNIT1 and UNIT2. Note that there are two filters represented
separated by commas. The [172.16.1.* is used for access of the form:
The 1* will match any tag beginning with the digit 1. The above filters must be loaded into every workstation. It is very
important to keep them the same.
Using the above filters, the request for 2FIC101 can be located in domain 2. Then what? This is where proxy comes in.
When it receives the request for 2FIC101, the RRS in 1ENG1 looks in its own database and does not find 2FIC101. It
then checks the filters and finds a match for domain 2. It then attempts to route the message to the highest quality proxy
that has direct access to domain 2! How does it find the highest quality proxy for domain 2? It simply adds on a _prx2
(a special name) and forwards the request back to itself.
Proxy Server
Client
_PRX2 Application
Application
Get me:
2FIC101.PV
1ENG1 2ENG1
Transport Transport
RRS RRS
2FIC101
1LIC1
The service in domain 2 that will handle this request is called a proxy service. It has registered the name _prx2 on all
domains that it has access to.
Data updates are transported back through a similar path. This transaction takes but a few milliseconds to transpire and
in not visible on displays as a delay.
The proxy in 2ENG1 station was said to register the special name _prx<n> (where <n> is the domain number) for all
domains for which it has direct access – in this case _prx2. How does 1ENG1 get access to _prx2 when it only uploads
tagnames from domains that it is directly connected to? The answer is the common domain ‘9’ in this case (there is
nothing special about the number 9). It is not necessary for the common domain to have any DPU’s. It may just be there
for the purpose of distributing the _prx registrations so all stations can locate the highest quality proxy servers for any
domain, whether or not they have direct access.
All stations in the above domain configuration have direct access to domain 9. This is the domain that will be used to
register the _prx<n> locations.
The first rule is to operate proxy in more than one station with direct access to domains that you want to expose. The
proxy servers all act independently. Multiple proxies share load by the adjustment of their connection qualities. The
more points being transferred, the lower the quality. This tends to make new proxy usage go to the least loaded proxy.
If however one proxy goes down, all traffic will be rerouted to the remaining proxy. Even if the original is restored,
traffic will remain until subscriptions are reestablished for any reason.
Security
The first assignment of security is via the domain configuration. Any station may be given direct, indirect read only or
indirect read/write capability. Note that it is critical that all domain configurations (wks.ini) be the same throughout the
system. Note also that it is the role of the station with the proxy to protect the domains to which it is directly connected.
The second level of security is that passwords being used by the proxy client must match the matching passwords in the
station that contains the proxy server. If 1ENG1 is logged in at security level 3 and 2ENG1 is logged in at security level
4, the security level 3 at 2ENG1 needs to match security level 3 at 1ENG1.
Security Exceptions
There may be some exceptions desired for the read-only rule. These exceptions can be set up by editing the file:
c:\custom\database\proxy.ini
Lines like the following will allow writes to pass through an otherwise read only proxy arrangement. Note that the
following exceptions are in the default proxi.ini file. These exceptions allow the paging of alarm summary displays –
which are accomplished by a write instruction.
AllowWrite _Merge_Alm.paging.
AllowWrite _dpms.root.almpage.
NOTE that the allow write parameter matches the left hand side of an identifier to allow writes.
NOTE that the allow write parameters are additive. The ID of the write needs only match one of the eight possible write
exception parameters.
Performance
Proxy server is a relatively light load on a workstation. It should be run in multiple workstations for reliability purposes.
This will also spread the load that there is. Proxy can be run on operator or engineer stations.
where:
<domain to register> - is one of the domains to which the workstation running the proxy has direct access. The ‘client’
station using the proxy name needs the appropriate access to this domain (read or read/write) in order to access the data.
<alias name> - any valid service name or hid. Typically different from the original by prefix. For example 1PID101
may become 15PID101 where 15 is a common domain, and 1 is the domain where the point originates
<actual name> - is the service name of the point to be indirectly accessed. May be a HID or service name.
Examples:
15,15pid101,1pid101
15,/unit15/fuel/air/point1,1pid101
[^]tag.attribute
When the DPU encounters this reference style, it forwards the subscription request to the highest quality proxy server
for the DPU domain. The proxy server will do one of two things:
The proxy will subscribe to the requested data. It will then receive responses from that source and forward them to the
requesting DPU. If the DPU can not access a proxy, these peer-peer communications will stop and the quality of the
referenced value will go bad. If there are multiple proxies, if the one fails that is performing the forward of data
updates, the natural retry of the DPU will be routed to the highest quality remaining proxy and the connection will be
quickly re-established.
If when the proxy looks up the requested point it finds it is in the same domain as the DPU, it will forward the
subscription message to the source of data. Data updates will be passed from DPU to DPU without passing through the
proxy server.
There are two options for peer-peer if you know you are within a domain. Use the [^] and get the proxy to look up the
point for you. You can also use [<dpuname>]tag.attribute. This will be directly routed with no interaction with proxy.
The advantage of the [^] is that the address is not hardcoded. You will not need to change references should a point
move from DPU to DPU. [^] does depend on one proxy being available at the time the subscription is made.
Debugging
There is a dialog that can be used to help debug proxy server issues. Note that this dialog is only usable when proxy is
run interactively (not as a service). Startup configurator should be used t o convert proxy to not run as a service to view
this display.
Proxy Server
Updates - The number of data updates which have passed through the server
Reads- The number of reads which have passed through the server
Writes - The number of writes which have passed through the server
Subcnt - The number of subscriptions established through this server
UpErrors - Data errors on subscription data updates
SubsOut - The number of subscriptions currently out
Mcsts - Internal meaningless technojargon
Rejects are commonly for stations not in the wks.ini of the station that is running the proxy, or stations with read-only
privilege attempting writes.
Remote Server
maxMERGEALARM
maxMERGEDPUALARM
Event Collector
DPUEvents
Utilities
SBP Spy
Introduction
There are many places where a Software Backplane (SBP) Client (such as
maxVUE) needs to perform simple calculations to form a usable value. This
can be done with a Visual Basic program, but there is now an easier way to
implement simple calculations. A new feature, called SBP Wrapper
Calculations, has been added to the Software Backplane. This feature gives
the user the capability of defining, in an algebraic expression, the exact
computation required. This expression can then be entered into a suitable
Edit control of the device being worked upon, such as the Identifier block in
a TestSBP dialog, as shown below:
The above example compares two values and outputs a text string
accordingly.
The following is a list of the actual operators supported by the SBP Wrapper
Calculations:
(b) + addition
(c) - subtraction
(d) / division
(e) * multiplication
Examples:
This expression states that if the value of Fic101.pv is greater than 50, then
output the value 10.0, otherwise, output the value 20.0.
Note: This syntax is similar to the C language construct with the addition of
a colon character used as the terminator. The following C language version is
written without the final colon:
This expression says that if the value of tc1_1.ao is less than 75.0, then
output the value of tc_1.ao, otherwise, output an asterisk *.
=(pt1.ao > 10) && (pt1.ao > 20) || (pt1.ao < 2.0)
Other Syntax
Other syntax is the same as that used in the “C” and “C++” programming
languages.
Such as “+” . “-“ , “*” , “/ “ , “(“ , “ )” , “<” , ”>” , “ =” , “\” , ”>=” , "<=" ,
"!=" (not equal).
Examples:
[<service>] <sbp-identifier>.[<member>].[<extension>]
Where:
_lss.trend_data.hrs
Where
Trend_data is a member
Using Functions
Report Wrapper Calculations supports these functions:
Arithmetic Functions:
Trigonometric Functions:
Note, when you use a function, previously the expression had to begin with
@.
=SQR(pt1.ao + pt2.ao)