Professional Documents
Culture Documents
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ISAThe Instrumentation,
Systems, and
Automation Society
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
ISBN: 1-55617-718-6
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
Preface
This preface, as well as all footnotes and annexes, is included for information purposes
and is not part of ISA-TR50.02, Part 9-2000.
This document has been prepared as part of the service of ISA, the international society
for measurement and control, toward a goal of uniformity in the field of instrumentation.
To be of real value, this document should not be static but should be subject to periodic
review. Toward this end, the Society welcomes all comments and criticisms and asks that
they be addressed to the Secretary, Standards and Practices Board; ISA; 67 Alexander
Drive; P. O. Box 12277; Research Triangle Park, NC 27709; Telephone (919) 549-8411; Fax
(919) 549-8288; E-mail: standards@isa.org.
The ISA Standards and Practices Department is aware of the growing need for attention to
the metric system of units in general, and the International System of Units (SI) in
particular, in the preparation of instrumentation standards. The Department is further
aware of the benefits to USA users of ISA standards of incorporating suitable references
to the SI (and the metric system) in their business and professional dealings with other
countries. Toward this end, this Department will endeavor to introduce SI-acceptable
metric units in all new and revised standards, recommended practices, and technical
reports to the greatest extent possible. Standard for Use of the International System of
Units (SI): The Modern Metric System, published by the American Society for Testing &
Materials as IEEE/ASTM SI 10-97, and future revisions, will be the reference guide for
definitions, symbols, abbreviations, and conversion factors.
--```,``-`-`,,`,,`,`,,`---
It is the policy of ISA to encourage and welcome the participation of all concerned
individuals and interests in the development of ISA standards, recommended practices, and
technical reports. Participation in the ISA standards-making process by an individual in
no way constitutes endorsement by the employer of that individual, of ISA, or of any of
the standards, recommended practices, and technical reports that ISA develops.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
vi
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
viii
--```,``-`-`,,`,,`,`,,`---
*C. Thurston Union Carbide
*N. Tobol Ronan Engineering
*A. Tresset Cegelec
C. Vaidya Sun Microsystems
C. Van Haren James River Corporation
*J. Weiss Electric Power Research Institute
C. Williams Eastman Kodak Company
G. Winchester National Electrical Manufacturers
Assoc.
*D. Wroblewski Bailey Controls Company
*M. Zielinski FisherRosemount Systems Inc.
This technical report was approved for publication by the ISA Standards and
Practices Board on 1 January 2000.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ix
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
vii
Table of Contents
PREFACE.......................................................................................................................................................2
INTRODUCTION ........................................................................................................................................12
CONFORMANCE CLASSES......................................................................................................................13
REFERENCES .............................................................................................................................................16
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
viii
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SERIAL ......................................................................................................................................................750
Serial Communication ..........................................................................................................................750
Serial In Conversion.............................................................................................................................752
--```,``-`-`,,`,,`,`,,`---
APPENDIX .................................................................................................................................................758
Explanation of Field Bus Function Block..............................................................................................759
Explanation of Fieldbus Topologies......................................................................................................764
Explanation of Generic & Open FB ......................................................................................................771
Timed Standard Node Design ...............................................................................................................780
Fundamental Control Structure ............................................................................................................784
LO Mode Explanation...........................................................................................................................804
Bad Values ...........................................................................................................................................815
Block Structure for Cascading ..............................................................................................................820
Cascade Initialization & Recover .........................................................................................................825
Explanation Of ASK, BASK, Acquirer...................................................................................................832
(Original) App Layer Services ..............................................................................................................837
Explanation Of Alarm Function............................................................................................................850
Explanation of Discrete I/O ..................................................................................................................855
Thermocouple Multiplexer & A/I ..........................................................................................................858
AO MSP Data.......................................................................................................................................860
Explanation of Selector Bias.................................................................................................................870
Explanation of Timer Block ..................................................................................................................874
Explanation of Device Control Block....................................................................................................881
GLOSSARY ...............................................................................................................................................902
COMMENTS, PHOENIX..........................................................................................................................918
INDEX ........................................................................................................................................................980
Table of Figures
Figure 1: Preface, Figure 1, Protocol Models ....................................................................................................5
Figure 2: Node .................................................................................................................................................6
Figure 3: Diagram: Function Blocks / P&ID....................................................................................................9
Figure 4 Conformance Classification..............................................................................................................14
Figure 5 Conformance Classification (cont.)...................................................................................................15
Figure 6: Modes by Bit ...................................................................................................................................17
Figure 7: Hardware Point types.......................................................................................................................17
Figure 8: Status Info. by Bit............................................................................................................................17
Figure 9: Block Algorithms ............................................................................................................................18
Figure 10: User Layer Terms..........................................................................................................................19
Figure 11:Cascade Structure...........................................................................................................................20
Figure 12:A Field Device on Fieldbus.............................................................................................................43
Figure 13 A Complex Fieldbus Device ...........................................................................................................44
Figure 14: Data Owner Structure, Figure 1, Timed Standard Cycle Structure .................................................60
Figure 15: Attribute / Access Limits ...............................................................................................................85
Figure 16: Figure 1 Status State Diagram .....................................................................................................103
Figure 17: State Transition Diagram ............................................................................................................106
Figure 18: Agents Figure 1: Discrete Active Agent Logic .............................................................................131
Figure 19: Function Block ............................................................................................................................132
Figure 20:Discrete Active Agent Logic (path marked in red) ........................................................................160
Figure 21: Function Block Structure: Figure 1, Generalized Analog Block ...................................................164
Figure 22: Function Block Structure: Figure 2, Data Structures ....................................................................165
Figure 23: Function Block Structure: Figure 3, Analog Status Parameter Detail ...........................................166
Figure 24: Generic Conditional Writes .........................................................................................................257
Figure 25: Generic Conditional Writes (cont.) ..............................................................................................258
Figure 26: DBWS Figure 1, Buffer Service Logic .........................................................................................268
Figure 27: DBWS Figure 2, Static & Auto-format Data Base Revision Number............................................269
Figure 28: DBWS Figure 3, Log./Phy. Node Values .....................................................................................270
Figure 29: DBWS Figure 4, Mode ................................................................................................................271
Figure 30: DBWS Figure 5, Data Base Values..............................................................................................272
Figure 31: DBWS Figure 6, Data Base Values (cont.)...................................................................................273
Figure 32: Application Layer - Writing to Buffer..........................................................................................278
Figure 33: Application Layer, Figure 2, Clipboard Revision Number Logic ..................................................279
Figure 34: Alert Figure 1, Multiple Hardware Failure Suppression ...............................................................308
Figure 35: Field Device Start and Restart, Figure 1, Physical Node Power-Up ..............................................332
Figure 36: Field Device Start and Restart, Figure 2, Logical Node Power-Up ...............................................333
Figure 37: Field Device Start and Restart, Figure 3, Communications Interface Power-Up ...........................334
Figure 38:HIF Figure 1, Auto-Formatting Parameter Layout ........................................................................367
Figure 39:HIF Figure 2, Auto-Formatting Parameter Header ........................................................................368
Figure 40: HIF Figure 3, Auto-Formatting Detail Words ..............................................................................369
Figure 41: Analog Input, Figure 1 Analog Input Algorithm....................................................................... ...531
Figure 42: Analog Output, Figure 1, Analog Output System Diagram ..........................................................578
Figure 43: Analog Output, Figure 2, Illustration of Characterization Types ..................................................579
Figure 44: Counter Figure 1, Counter Block .................................................................................... ............603
Figure 45: Counter, Figure 2, Counter Data Flow................................................................................ .........604
Figure 46: Properties Conversion, Figure 1, Property Block..................................................................... .....632
Figure 47: Timer, Timer Algorithm..............................................................................................................659
Figure 48: Timer, Timer 0 Logic ................................................................................................ ..................660
Figure 49: Totalizer Block..................................................................................................... .......................669
Figure 50: Totalizer Data Flow.....................................................................................................................670
Figure 51: Device Block ........................................................................................................ .......................676
Figure 52: Discrete Register, Figure 1, Discrete Register Block ................................................................ ....694
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
x
--```,``-`-`,,`,,`,`,,`---
Figure 68: Fieldbus Topologies Figure 1 Simple Field Loop .........................................................................767
Figure 69: Fieldbus Topologies, Figure 2, Central Control............................................................................768
Figure 70: Fieldbus Topologies Figure 3 Field Multiplexer...........................................................................769
Figure 71: Fieldbus Topologies Figure 4 Unit Controllers.............................................................................770
Figure 72: Generic & Open Blocks, Figure 1, Cyclic Scenarios ....................................................................783
Figure 73: Fundamental Control Structure, Figure 1, Mode Concept ............................................................800
Figure 74: Fundamental Control Structure, Figure 2, Mode - Control ...........................................................801
Figure 75: Fundamental Control Structure, Figure 3, PID Block Fundamentals ............................................802
Figure 76: Fundamental Control Structure, Figure 4, Example Block Cascade .............................................803
Figure 77 LO Mode, Figure 1, Case Definitions .................................................................................. .........814
Figure 78 Figure 1 Cascade Structure ........................................................................................... ................821
Figure 79: Block Structure for Cascading, Cascade Structure .................................................................... ...824
Figure 80: Cascade Initialization & Recovery, Figure 1 ................................................................................831
Figure 81: Selector Bias, Process Model ........................................................................................ ...............873
Figure 82: Device Control Block, Figure 1, Device Block ........................................................................ .....901
Figure 83: Mascot........................................................................................................... ......................983
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
2
Preface
FIELD BUS PROCESS CONTROL USER LAYER TECHNICAL REPORT
The Field Bus being developed simultaneously by ISA SP50 and IEC SC65C/WG6 is
intended to be applied to time-critical applications in process control,
distributed data acquisition and some areas of factory automation. While
generally we planned to follow the "spirit and intent" of international data
communications standards, our first priority is to these time-critical or real-
time applications. Explicitly, we provided a standard to satisfy user needs.
This Technical Report defines the details of the field bus process control
user layer for continuous and batch process control applications, as well as
typical sequential and interlock control applications in the process industries.
It is usable in other industries wherever similar applications exist. It
establishes a data communications structure for implementing all types of field
bus devices. This structure is required to achieve interoperability and
interchangeability of field devices.
BACKGROUND:
The top layer of the ISO (International Standards Organization) OSI (Open
Systems Interconnection) Reference Model (ISO 7498-1, 1987) is numbered seven
(7), and is called the "Application Layer." Above this is generally called "the
application." Therefore, the Application Layer provides communications services
specific to the type of application using the open system. The ISO/OSI seven
layer architecture, is intentionally vague about the definition of the contents
of the Application Layer, while the functions of all lower six layers are well
defined in the general data communications environment. The vagueness allows
application needs to define the functions of the seventh layer.
the MAP Users' Group requested that the major applications of interest to
manufacturing should prepare "companion standards" to support the core (general)
work being done at ISO. This work supports all applications, and is called MMS,
Manufacturing Messaging Service, ISO 9506. The major functions of MMS are as
follows:
o Uploading and downloading
o Task (function) management
o Variable and data access (read, write)
o Semaphore management
o Event management
o Journal management
o File management
o Status and identification query
o Clock synchronization
The four companion standards are being (have been) prepared by the following
organizations:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Numerical Machine Control EIA (Electronics Institute of America)
In 1985, the ISA approved the charter for the SP50 committee to develop a
digital Field Bus. One of the primary directives for the Field Bus was to enable
digital communications for instrumentation and control to the same level of
interchange that has been achieved by analog (4-20 ma) transmission. After the
first few meetings, it became obvious that digital and logical device
communications were also necessary.
After review of MMS, ISA S72.02 and the other companion standards, ISA SP50,
the Field Bus committee, decided that a fresh approach was required.
Specifically, it was decided that the end users' needs must be considered in the
definition of the application layer services. While the MMS services were
probably good for low level (programmer) use of the Field Bus, more work was
required to define a high level interface for the types of functions and services
necessary to serve the distributed process control environment of the late
1990's.
o H2 high speed process and logical control using new wiring and, if
possible, deliver power on the same wires and meet intrinsic
safety requirements.
Many of the user requirements for Field Bus do not appear in the body of the
standard, because they do not directly affect either the form or function.
However, these user requirements do affect our understanding of the form and
function of both the physical and user layers, and "why" the standard functions
and features exist. Some of this information is contained in the first chapter
of the appendix.
In order to define the actual needs of users, it was determined that a model
of the user layer software was required complete with its functionality and
algorithmic behavior. From this model, the services that would be needed to
support such software that corresponds to the "application" noted in the OSI
model could be defined. This procedure differs from the procedures used in other
communications standards which assume the "application" is only a generic systems
programming environment. The functionality and real-time data structures
developed for the user layer model require extensive services from the
application layer.
Just what is the user layer model? We have attempted to project from today's
smart transmitter environment, to the next level of smartness for field devices.
It was clear in 1987, that one or more vendors would move the final closed loop
control calculation to a field device; a transmitter or a valve positioner. We
didn't expect these products so soon, but they are already for sale and were
exhibited at the 1990 ISA Conference and Exhibit.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
PROTOCOL MODEL
SP-50
UL
Services
7 Provides all services for 7
Application Application Programs.
Presentation
6 Presentation Restructures data to/from
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Physical Link
NODE
Field Bus
Physical Node
Name Descriptor
Bus Address etc.
I/O Logical Node 0 Logical Node n
Hardware
Logical Node Logical Node
Name, Descriptor Name, Descriptor
etc. etc.
--```,``-`-`,,`,,`,`,,`---
Figure 2: Node
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
So far these products still depend upon the use of either Proprietary or limited
availability bus technology working together with 4-20 ma transmission, however,
their control parameters are available on those vendors' systems products for
remote tuning and control mode selection.
The ISA Field Bus User Layer is oriented about the process control problem
assuming a complete distribution of the scan and control functions all within
Field Bus devices. The capability is provided for measurement, control
--```,``-`-`,,`,,`,`,,`---
calculation and final actuation in the same or separate nodes on the Field Bus,
as necessary. Rather than taking a generalized message passing structure, the
User Layer has used a complete distributed object-oriented approach modeled after
several existing distributed control systems (DCS) and programmable logic
controllers (PLC) in common use. The choice of this model was very pragmatic --
the DCS architecture has evolved from centralized computer control with
increasing distribution of functions and has been field proven to work. A model
constructed using only message passing without a semantic message structure would
require the invention of an unproven mechanism. The committee has chosen to
adapt its semantic model from those in common use. In addition, the architecture
for communicating with PLC's has been included in this same model. Methods used
to configure or program DCS's and PLC's are not in the scope of this model.
The first document is called the "User Layer Technical Report." It was written
by a committee interested in preserving the design of distributed control systems
(DCS) which have proven to be useful and sufficient for a wide variety of time-
critical applications in data acquisition and process control. The format of the
document is that of a software design specification or an implementation
description, simply because it was easier for the committee to write. It reads
similar to system descriptions of distributed control systems since this is the
primary source material within the experience of the committee. Since
considerable criticism has been offered about the "over-specification" of the
Technical Report, the subcommittee has decided to prepare a separate standard
document.
The second document is the true standard for the User Layer. It is written
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
in "requirements language", but without an implied implementation. Where the
method(s) of implementation are important to achieve the objectives of the
standard, they are explicitly stated. This is the document which will be
submitted for ISA (and eventually IEC) approval, but it will be incomplete
without the Technical Report which provides examples and much of the rationale.
The technical content of both documents are intended to be identical. The
Technical Report will always be updated to reflect the current status of the
standard for the User Layer.
replace the DCS, but to define the architecture necessary for a DCS to
communicate with smart field devices when control actions occur in those devices.
There are many differences between Field Bus User Layer functions and those
typically performed by a DCS.
It has always been expected that the Field Bus would remove the functions of
process variable processing from the DCS. Similarly, processing of outputs to
proportioning process control valves and other actuator mechanisms is also
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
included. DCS's operating with Field Bus devices will acquire process variables
in engineering units form. Likewise they will send a desired valve output as a
percentage.
In all cases, we attempted to keep the Field Bus simple. For example, there
is no "ramp and soak" algorithm, because the committee felt that any algorithm we
could design would be inadequate to fulfill the needs of true batch control.
Yet, we decided to provide simple setpoint ramping, determining that this time-
critical function was best administered at the Field Bus level. Only one PID
algorithm was chosen, to keep it simple. Our guideline was always to include the
time-critical items at the User Layer, but to eliminate the supervisory and high
level calculation functions.
FUNCTION BLOCKS:
--```,``-`-`,,`,,`,`,,`---
The architectural base of Field Bus is the function block, which performs the
work of data acquisition, control and output. Every function block contains an
algorithm, a formula or rule, and a data base that is used by the algorithm. The
parts of the data base that are permitted to be accessed through communications
are called "attributes" or parameters. Each function block has a user-defined
name, called a block tag, which must be unique. Function block data is addressed
over field bus via TAG.PARAMETER.
that any system may access them through the use of these
attributes. The algorithm is not defined by the
standard
o Open -- the attributes and the algorithm are not defined within
the standard.
The following diagram shows the equivalency between "function blocks and
conventional process and instrumentation diagrams (P&ID's):
SP
Input Output Output
PV FIELD
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
AI PV
PID SP
AO BUS
FT FC FCV
P&ID
available PLC interface techniques already in use. The PLC interface capability
does not reflect the needs which might be developed in a User Layer for factory
automation or machine control.
--```,``-`-`,,`,,`,`,,`---
The control applications may be very simple arrangements of sensors, controllers,
actuators and display devices all on the same Field Bus segment, or the devices
can exist together in any combination. Any of the devices may also exist on a
different Field Bus segment, however, it is understood that a performance or
response time penalty may occur. We have also planned for the orderly connection
of classical DCS or supervisory computer systems that are driven by a timing
authority not under Field Bus control, yet provide essential target information.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
All Field Bus devices are addressed at the User Layer by a tag name, rather
than the low layer address necessary for the operation of the Data Link Layer.
The translation of tag name to address is provided by the Application Layer based
on User Layer definitions. The physical devices and function blocks all have
unique tag names. This concept extends to initialization in which the physical
device installed into the Field Bus can exist with only a unique tag name and
expect that the data required to begin operation can be downloaded across the
Field Bus identified only by that tag name. If a physical device contains only
one logical node and only one function block (e.g. as in a single-measurement
field transmitter), the device tag, node tag, and the block tag will be the same.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
"data owner" on field bus has a data dictionary which describes the data items
"owned" by that node.
While the Data Link and Application Layers provide for a method of
synchronous scheduling of function blocks, the User Layer provides its own method
of scheduling centered on the time critical needs of control function blocks.
Each control block reads the data it requires from a limited number of locations,
and writes its output after completing its calculation. The time cycle of a
control block is fixed by its configuration (data base), but the User Layer
provides for an orderly recovery of missed cycles based on the process control
model.
The functions defined for the field bus user layer support simple field
sensors and actuators. The user layer function blocks provide for the essential
interchangeability of simple field sensors and actuators, and at the same time
enable manufacturers to establish product differentiation through functional
enhancements. The function blocks defined in the field bus user layer also
anticipate the development and use of field bus control devices. They provide a
means to integrate "continuous" control, "analog" monitoring, and "discrete"
status monitoring and logic control in the same system. The user layer function
blocks provide a means of interoperability for presently-defined and future
control devices from different manufacturers.
--```,``-`-`,,`,,`,`,,`---
Introduction
INTRODUCTION
FIELD BUS PROCESS CONTROL USER LAYER TECHNICAL REPORT
Document Arrangement
The immediately preceding Preface provides a brief history of the Field Bus
and the User Layer as well as a tutorial overview. Immediately following this
Introduction is a "Guide" to the Field Bus User Layer. The Guide is a very
condensed "cheat sheet" that compresses many of the important data structures and
concepts that are often necessary while referring to several sections. (The
guide is not a part of the Hypertext version.)
The body of the Technical Report is divided into three main sections:
Conformance Classes
CONFORMANCE CLASSIFICATION
--```,``-`-`,,`,,`,`,,`---
The Process Control User Layer (PCUL) is not intended to be a rigid standard,
but is designed to allow vendors to implement some of the features, but not all
of the features, and still conform. However, vendors choosing to implement less
than all of the features defined by the PCUL must be able to declare their level
of conformance so that users will have a rational expectation for such a system.
It is not the intent of this standard to imply that the highest level of
conformance is necessarily better than any other level. Our intent is to define
these levels in unambiguous terms.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
14
CONFORMANCE CLASSIFICATION
Start
No
Physical Node (PN) has a "TAG" name and a "Data Record" and No
Operates with the UL.SS (DOS-LN, pg 1&2 Class
Yes
Meets Class 1a Is "Interconnectable"
--```,``-`-`,,`,,`,`,,`---
Each PN and LN supports the minimum data items and each FB meets the Class
"Open" requirements? (ABP, pg 19-22) 1a
Yes
Meets Class 2a Is "Interworkable" Cont.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
CONFORMANCE CLASSIFICATION-cont.
Cont.
No Class
Each FB supports the minimum data items? (APB, pg 23)
2a
Yes
Meets Class 2b Is "Interworkable"
No
Each FB meets the requirements of the "Interoperable Generic" Class
Block and each LN is one of the defined LN types? (DOS-LN pg 3) 2b
Yes
Meets Class 3a Is "Interoperable"
Each PN and LN supports the minimum data items and each FB meets No Class
the "Open" requirements? (ABP, pg 19-22) 3b
Yes
Meets Class 3c Is "Interchangeable" Class
3c
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
16
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
References
References
NORMATIVE REFERENCES:
DENORMALS DEFINITIONS:
The handling of the denormal floating point numbers in Standard Field Bus
devices will be as specified here:
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
Environment
BLOCK ALGORITHMS:
--```,``-`-`,,`,,`,`,,`---
Figure 9: Block Algorithms
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
RCas RCas
SP S (Rest) Status
e
Status Value(EU)
Device, t
Value(EU) Ladder, and Cas
Program only p ROut
Mode
Null A o Status
Immediate n i Value(EU)
W/ Stat. Results y n
(Output only) t
Writeable p SP Auto Out0
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Required o p Status Cas Status
Active * i t' RCas Value(EU)
Value(EU)
On-Block n r
On-Block Ctd. t s
Physical Hdwr. e
On-Node @ r Combined into
s #0 Block
Off LN, On PN @ Input 0 Out1
Off-Node @
#1 Calculation
Pointer in
#2 Algorithm
Off-Node &FB @ Most blocks
Options:
* On-Con=Bad?
@ & w/Rev.#
Figure 11:Cascade Structure
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
USER LAYER
--```,``-`-`,,`,,`,`,,`---
STRUCTURE
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Overall structure of the data-owning
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
Each of the devices that will connect to Field Bus will be a "physical node".
From the perspective of Field Bus, it will have one Field Bus connection and a
single bus address.
Some of the devices that connect to Field Bus will contain a set of data that
pertains to a "tagged object". When those devices need to make the tag's data
available to other Field Bus devices, they will be known as "data owners". This
paper will define the physical node of a "data owner": the physical process
connections, the structure and timing of the process input and output signals,
and certain data and services pertaining to the whole device.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Alarm Clock
Basic Alarm Clock
Alarm Clock Retention
Time Parameters
PHYSICAL NODE OPTIONS BIT STRING
MISCELLANEOUS PHYSICAL NODE VARIABLES
MISCELLANEOUS HIGHER LEVEL SYSTEM VARIABLES
Figure 1 - A Field Device on Field Bus
Figure 2 - A Complex Field Bus Device
PHYSICAL NODE:
Any device connected to Field Bus will be considered, from the perspective of
the Field Bus, as having one, and only one, physical connection to a particular
Field Bus. Such a device will be identified as a "physical node". A physical
node is uniquely related to a Field Bus physical media connector. The
application layer protocol will define the mechanism that is employed to assign a
Field Bus ADDRESS to a physical node. From the perspective of the User Layer,
there is only one address for a total physical node. (The "address" stored in
the User Layer memory will have the "node number" in the high byte and the
"Subnode Number" in the lower byte - see the lower communication layers for
definitions.)
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
There will be certain data that will be accessible to Field Bus that is
related to the physical node itself, not to any subordinate structures.
Therefore, the physical node will contain, and relate uniquely, to a particular
data record. The data items will be addressable by the physical node "TAG" plus
the appropriate "parameter code".
The physical node TAG will conform to the naming conventions of the Field Bus
protocol. Specifically, the TAG will be a contiguous string of up to 16 visible
characters, padded to a full 16 characters with blanks (character 32[10]) in the
right-most character positions. The only visible characters that can be used in
the TAG are the upper case Latin letters (visible characters 65[10] - 90[10]),
the 10 numbers (visible characters 48[10] - 57[10]), and a dash ("-", visible
character 45[10]). In addition, the dash can not be the first nor the last
character in the tag name and at least one of the visible characters must be a
Latin letter or a dash. The TAG will be set using the special Application Layer
service (see the paper "Application Support Services Interface"). A thirty-two
character visible string variable, "TAG_DESC", will be supported for every
physical node; it will be a User entered descriptor of the node.
There is much controversy about the use of the dash in the tag name.
Specifically, the dash is interpreted by some parsers as a minus sign. On the
other hand, ISA S5.1 specifically recognizes the dash. This Field Bus Standard
is in accord with S5.1: it specifically accepts the use of the dash and requires
the absence of the underbar in all tag names in all field devices. However, some
higher level systems will intercept all "upward" transmissions of tag names and
--```,``-`-`,,`,,`,`,,`---
convert all dashes to underbars (and likewise change underbars to dash in all
"downward" transmissions). It is strongly suggested that Field Bus human
interfaces such as hand held communicators should provide a method of selecting
(on a universal basis) between the two characters in any display or entry of a
tag name. The ultimate requirement for the field device's memory, however, is
the dash, NOT the underbar.
The parameter code will be a 13 bit integer with three attribute bits
associated with it. Many parameters are defined in the papers "Array of Basic
Parameters" and "Array of Standard Block Parameters".
COMPLEX DEVICE:
Two or more physical nodes may be associated together to form a "complex"
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
device. In such an arrangement, each physical node is associated with its own
Field Bus physical connection and unique address and has its own data records.
The complex device will not be known to the Field Bus in that it will not have an
address nor data records nor any accessible data.
Two types of hardware connections will be defined below, the voted discrete
output and the voted scalar output, that will recognize that the output hardware
signals of the physical nodes are voted by the complex device and the result of
the vote is the actual output of the device. In addition, certain input signal
connections will be defined in a later paper (Off Field Bus Agents in the paper
"Agents"), that allow parameters to be accessed across physical nodes in one
complex device.
LOGICAL NODE:
Within a physical node, there will be one or more "logical nodes". From the
perspective of the Field Bus, each logical node will be a separate software
structure in the Field Bus environment.
Each logical node within a physical node will have an assigned TAG. This name
will conform to the naming conventions of the Field Bus protocol. It will be
entered as the value of a parameter of the physical node. Once the logical
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
node's TAG is configured, the data parameters of the logical node will be
addressable by the logical node's TAG.
The Standard incorporates provision for devices that are data multiplexers.
These provisions include special node types and special blocks designed for the
following types of data/applications:
CO - Composition
PS - Property Scanners
TK - Tank Gauging
The standard Analog Input block and the standard Scalar Input physical point type
can be used in a multiplexed AI system as defined.
The Standard also recognizes two classes of physical outputs that can be used
in (and only in) a complex device. They are:
VD - Voted Discrete Outputs
VS - Voted Scalar Outputs
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
The Composition and Tank Gauging blocks are not only designed for
multiplexer service but are also designed for a specific class of
application.
If an interoperable Field Bus physical node is built with any of the above
classes of physical connections and they will be addressed by the structures
within the logical nodes, then the external physical connections will be labeled
on the physical device with a hierarchical structure of the form:
{signal class}.{connection number}.{subidentifier} The "signal
class" will be an identification consistent with, or an extension of, the above
signal classes. The "connection number" will be the index number of the signal
within the class of signals, starting with the number zero. The "subidentifier"
will be used for compound signals and for the individual points in a discrete
register.
A complex device will use labeling that is consistent with the above rules.
Each array of output points will be clearly labeled as being associated with one
of the physical nodes (i.e., of a class other than VD or VS) or as being a voted
output (i.e., of the VD or VS class). The output points that are brought
together by voting must have the same identification in each of the individual
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
physical nodes (i.e., each VD-x for the complex device must correspond with the
same VD-x in each physical device in that complex device where x is a single
integer - zero based). If one or more of the physical devices in one complex
device does not participate in the voting, then those particular physical devices
must not use the corresponding VD or VS connection number.
The attached Figure 1, "A Field Device on Field Bus", illustrates the over-
all arrangement of an interoperable Field Bus physical node. Note that the
primary hardware signals do not explicitly connect to any Field Bus visible data
base structure. Rather, specific block configuration data are used to identify
the connections. As shown by the dotted lines, some of the physical node data
will be mapped into each of the logical node's data bases. Figure 2, "A Complex
Field Bus Device", illustrates the arrangement of three physical nodes into one
complex device. Note that the three Field Buses are separate and that one output
connection is shown as being voted.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
The connections can only be made between the process connections and hardware
type agents (i.e., blocks) 1) of the appropriate signal type and 2) from blocks
within the same physical node. For example, the connection between an AI block
and its physical data, an SI input, is made with one hardware type agent. The
agent's pointer definition resides in the AI block data base. A number of values
are probably transmitted in both directions over that single connection. The
data structure of the software connections to the process signals need not be
defined by Field Bus since the connection is within the physical node: the
manufacturer has complete control of both ends of the connection.
The connections in one signal class will be defined in the physical node as a
single dimensioned array. It will frequently be assumed, for variable definition
purposes, that each output has a feedback self-check circuit (this does not mean
a feedback from the process, only from the device's own outputting circuit).
Also, some signals will be assumed to have multiple external variables associated
with them. For example, there might be a feedback of the valve stem position
associated with a modulated valve output; it will be labeled on the hardware as
--```,``-`-`,,`,,`,`,,`---
associated with the primary scalar output using the "subidentifier" notation.
Some system designers may wish to design the scalar physical hardware so that
the user can configure it as either an input point or an output point. This will
be allowed and implemented in the following way. The physical point will be
designated as SI/SO-x where x is a zero based integer. In that physical device,
all values of x are then eliminated from the numbering scheme for the simple SI's
and SO's. For example, if there is an SI/SO-3, there can not be an SI-3 nor an
SO-3. The user then can configure either an AI or an AO function block to SI/SO-
3 but not both.
The Discrete Register block is also defined on the basis that the discrete
points, when configured to be outputs, will be able to be configured to implement
feedback checking of the discrete output on a point by point basis. This
checking is assumed to be a check of the output circuit of the physical node, not
a feedback from the process equipment being driven by the discrete output. It is
assumed that this checking can be optionally disabled. The "disable checking"
option is a defined data base item within the connected block's data base. If
the manufacturer chooses to not offer the checking option, he can force the
disable option to always be true providing a write to that location receives a
response indicating that that value is "read-only".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
design that, with careful design, can achieve interchangeability.
The incremental count value will be captured after the start of the
logical node cycle but before the execution of Block 0. The capture for
all counters in the physical node that have their associated blocks in
one logical node will occur "at the same time". The incremental value
will be available to any number of function blocks in the same logical
node that wish to access it. However, if a block in any other logical
node in this physical device attempts to access the same hardware, the
second access will cause an immediate block configuration error
notification and O/S mode for the second block. However, the user must
be able to change the hardware pointer(s) on the block(s) in the first
logical node and then address the physical hardware point from a
function block in a different logical node in the same physical node
without receiving an alert.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
can mask off one or more of the bits but the mask can not shift the
positions of the bits. The Discrete Input and Discrete Output blocks
can define the number of bits in their groups and the location of the
first bit. The range thus defined can span across adjacent I/O
registers.
execute.
The physical output of discrete data can occur at any time in the
logical node cycle between:
1) the start of the execution time of the discrete I/O function
block driving the output
AND
2) the start of the execution time of function block 0 in the
immediately next cycle of the logical node.
The acquisition of the output feedback data can occur at any time
in the logical node cycle as determined by the manufacturer. There may
be cycles in which feedback checking can not be done because a recent
change in the output may not have returned in the feedback circuit. The
Field Bus functionality model assumes that the miscompare data is
available at the beginning of the block execution time of the discrete
I/O block.
The input and output of data associated with discrete physical I/O
will involve the execution of procedures by both the hardware and the
block and will also involve the transfer of data to/from the physical
I/O. If a second block, in this logical node or any other logical node
in the physical device, attempts to access the same hardware later in
the same cycle, the second access will cause an immediate block
configuration error and O/S mode for the second block. Note that this
restriction applies to each discrete individually and must recognize the
mask that is provided in the Discrete Register block. (The discrete
register block allows selected bits in a hardware register to be masked
out so they can be addressed by the Discrete Input and Discrete Output
blocks).
These points are potentially "interchangeable".
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
There is no requirement that the Field Bus device must assure that
--```,``-`-`,,`,,`,`,,`---
It is assumed that the execution associated with the PO, SI, and SO
physical hardware will involve both the execution of procedures by the
hardware and the block and also the transfer of data between the block
and the hardware. If a second block in this logical node, or a second
block in any other logical node in this physical node, attempts to
access the same hardware, the second access will cause an immediate
block configuration error notification and O/S mode for the second
block. However, the user must be able to change the hardware pointer on
the first block and then address the physical hardware point from a
different function block in any logical node in the physical node
without receiving an alert.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
30
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
It is assumed that the execution associated with the TK physical
hardware will involve both the execution of procedures by the hardware
and the block and also the transfer of data between the block and the
hardware. If a second block in this logical node attempts to access the
same hardware, the second access will cause an immediate block
configuration error notification and O/S mode for the second block.
However, the user must be able to change the hardware pointer on the
first block and then address the physical hardware point from a
different function block in the logical node in without receiving an
alert.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
The "Application Support Services Interface" paper will also define the
method of indicating the presence of an additional (3 times 64) auto- formatting
variables that can be in the physical node's data base. These variables are not
defined in association with the physical node's hardware. They are labeled
PN_AF_x in the "Array of Basic Parameters" paper.
There may be a need for another addressable parameter in the physical node's
data base for a hardware point. Consider a device design in which it is possible
for the block execution to fail but communication services to survive the
failure. In that case, it may be advantageous to provide a communication path
from the Field Bus directly to the hardware. Given such a path, the user could
retain emergency control of the process. This path
is supported by an optional defined parameter in the physical node that can
directly address the hardware. The parameter can only be written when the
computing engine driving the function block processing is stopped.
The logic defined in the "Field Device Start and Restart" paper includes a
detailed description of the logic that determines if any output hardware points
are unaddressed and sets them to their no-power state if it can be done safely.
That logic is automatically done at start-up of the physical node.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
A single discrete value called "CLEAR_OUT" will exist in the physical node's
dynamic data base. When that value is set, the physical node will:
1) Reset CLEAR_OUT
If the physical node contains any DR, DO, PO, or SO hardware, then
2) execute the data base checking portions of the start-up logic
necessary to confirm that all function blocks have a valid data
base,
If all data bases are valid, then
3) determine if any physical hardware capable of outputting are
unaddressed.
If any are unaddressed, then
4) set them to their no-power state.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
FAIL-SAFE TRIGGERS:
The manufacturer of a Field Bus device may optionally include the capability
to connect discrete signals to the device that can be configured to cause the
outputs in the device to assume their "fail-safe" state.
The Fail-safe Logical will be a parameter associated with each logical node.
There will be no "Fail-safe" logical in the physical node. The logical will be
set by the manufacturer optional hardware input signal or may be written over
Field Bus. See the paper "Data Owner Structure - Logical Nodes", page 20 for the
details of the software implementation of the Fail-safe function.
Although the physical node does not appear to control the Fail-safe logic,
there are two parameters associated with the Fail-safe logic that are housed in
the physical node's data base - SFAIL-SAFE and RESTART. See the paper "Field
Device Start and Restart" for descriptions of these parameters. These two
parameters must be supported by every physical node. Note, however, that SFAIL-
SAFE is self-defining; a manufacturer can indicate in it that it does nothing.
The RESTART parameter is another discrete that must exist but the SFAIL-SAFE
parameter can define that it does nothing.
When the external signal OPENS (current flow below some manufacturer set
minimum), the logical will be set by the leading edge of the change in current
flow. The logical will not reset when the external signal closes. Rather, the
logical will remain set until a Field Bus command resets it. In the paper "Field
Device Start and Restart", the details will be given for the operation of the
Fail-safe system during a device restart. Briefly, in either a "warm" or "cold"
restart, but not during a "hot" restart, the logical will be initialized based on
the external signal's STATE. That is the only time that the logical's operation
will depend on the state.
This standard does not define nor require any physical node self diagnostics
- it only provides a method of communicating such alerts if needed. Within that
scope, it is assumed that there are two types of self diagnostics conducted by
the physical device. One might be called "slow speed" - it is assumed to involve
a relatively long series of tests, perhaps conducted as a background function, to
check the memory of the device and other low priority or calculation intensive
operations. The other might be called "high speed" - it is assumed to involve
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
33
Every physical node will have a read only, 8 bit signed integer variable "AX"
in its data base. To define AX:
IF the physical node does high-speed self diagnostics, then
let x = the high speed self diagnostic cycle time, in seconds
ELSEIF the physical node checks for changes in the value of TIME_BIAS
defined in the next section, then
let x = the frequency of those checks, in seconds
ELSE
let x = 2**-127
ENDIF
AX = an integer such that
2**(AX-1) < x <= 2**AX
SYSTEM CLOCK:
The primary basis for "time" in a Field Device will be the time information
--```,``-`-`,,`,,`,`,,`---
that is available from the communication services (see the paper "Application
Support Services Interface"). In addition, the manufacturer may optionally
support a "private" clock. This section will detail how that data will be used.
In addition, the manufacturer's option to allow the User Layer logic engine to
operate even though the communication engine has failed generates some clock
duties for the physical node. Finally, there is an option for an "alarm clock"
service.
time nor with any form of daylight saving time. The system's concept of
the current International Standard Time is called "Social_Time". It is
the total time since January 1, 1970 at 00:00 AM International Standard
Time till the current time, measured in 1/32 of milliseconds.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
The alert reporting system, the primary User Layer user of time,
will access the communication layer service to get NODE_TIME for
inclusion in each alert report that it prepares. The access will be
done as part of the servicing of the alert at the time it is discovered.
The time reported in alerts will be a 29 bit integer value formed by
shifting the 48 bit time four bits to the right and using the resulting
29 low bits (a value that has a resolution of one-half of a millisecond
and rolls over after 3.1 days). See the paper "Alert Function" for the
details of the various alert reports to be issued by the physical node.
Private Clock:
There is a manufacturer's option to support a "private" clock.
This clock will be assumed to be running independent of the Field Bus
clock and will be associated with a LOGICAL node, not the physical node.
ALL time references in the Standard will be based on the Field Bus
clock EXCEPT for a single logical node variable. That variable will be
called PRIVATE_OFFSET and will be reported as a 32 bit signed integer.
Assuming PRIVATE_CLOCK is expressed in the same terms as Field Bus time,
it will be the value of (PRIVATE_CLOCK - NODE_TIME -
NODE_TIME_OFFSET). Its low order bit will correspond to 1/32 of a
millisecond.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
When this option is present, the design of the entire User Layer of
the device will be such that at least 128 bytes of alarm records can be
accumulated while the communication services engine is not functioning.
See the paper "Alert Function" for details concerning the alert system.
If any communication layer can supply NODE_TIME when the User Layer
starts, then the User Layer will use the NODE_TIME of that communication
layer rather than its own.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
Alarm Clock:
Since the time values discussed above can not be accessed by any of
the standard function blocks, there is a need for some way for them to
recognize and operate on a social time basis. That is accomplished by
the optional "alarm clock".
--```,``-`-`,,`,,`,`,,`---
communication isolation after restart. If it fails to do so, Bit 1
in "ALARM" will be set. Bit 1 can be reset by a masked write. It
will also be reset by the "Data Base Write Service" any time that
ALARM_TIME is written.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
37
--```,``-`-`,,`,,`,`,,`---
TEMP_BIAS = 0.
TEMP_TIME = 0
set Bit 1 in ALARM.
END IF.
If the User Layer can not assure that its physical node
static data base was retained, then
ALARM_TIME = 0
reset Bit 0 in ALARM.
set Bit 1 in ALARM.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ELSE
IF the physical node does not tick TEMP_TIME, then
TEMP_TIME = TEMP_TIME + physical node cycle time
END IF.
END IF.
IF the communications layer can provide NODE_TIME, then
TEMP_TIME = NODE_TIME
Time Parameters:
The actual parameters in the physical node data base will be:
- NODE_TIME
+ required
+ reports time since the Field Device started.
+ 48 bit unsigned integer.
+ time in 1/32 milliseconds since device start-up till present.
+ defaults to zero.
+ stored in the physical node's dynamic data base.
+ read-only from Field Bus.
- PRIVATE_OFFSET
+ required if private clock supported
+ reports (private time - Field Bus time).
+ 32 bit signed integer.
+ defaults to minus full scale.
+ read-only from Field Bus.
- OFFSET_DB
+ required if physical node supports alerts.
+ dead band for reporting changes in the NODE_TIME_OFFSET (and
the private clock if there is one).
+ 16 bit unsigned integer.
+ differential time expressed in one-quarter of a millisecond.
+ defaults to 3/4 millisecond.
+ stored in the physical node's static data base.
+ read/write from Field Bus.
- ALARM_TIME
+ optional (existence of option given in the "options bit string".
+ if present:
@ must be readable and writeable from Field Bus
@ a constant stored by the physical node of the field device.
@ 48 bit unsigned integer.
@ is considered inactive when set to exactly zero.
@ is stored in the physical node's static data base.
- ALARM
+ required if the ALARM_TIME option is present.
+ an 8-bit binary string - only 2 bits defined.
+ stored in the physical node's dynamic data base and reset at
device restart (may be immediately set as a result of the above
logic calculation).
+ Bit 0 is controlled by the field device every physical node cycle
as follows:
@ reset at physical node power-up unless the dynamic memory
is known to have survived the outage.
@ IF ALARM_TIME <> 0, then
IF NODE_TIME and NODE_TIME_OFFSET available and
neither are = 0, then
IF (NODE_TIME + NODE_TIME_OFFSET) > ALARM_TIME),
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
then
Set Bit 0 of ALARM
ELSE Reset Bit 0 of ALARM
ELSE IF TEMP_TIME and TEMP_BIAS available and neither
are = 0, then
IF (TEMP_TIME + TEMP_BIAS) > ALARM_TIME, then
Set TIME_EVENT
ELSE Reset Bit 0 of ALARM
+ bit 0 is forced to be read-only from Field Bus by the "Data Base
Write Service".
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
The following data items are required in the data record of all standard
physical nodes:
MFG_NAME - a 32 bit visible string that gives the manufacturer's
name. It is assumed that each manufacturer will ensure
that the name that is used is unique world-wide.
There is no limit on the characters that can be used in
the visible string (see the "Human Interface" paper for
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
device was designed; it must not include any
manufacturer's subset or superset indicator nor any
other manufacturer's uniqueness.
DEVICE_REV - a 16 bit unsigned integer that gives the revision number
of the physical device (see the paper "Human I/F
Considerations" for the display format for this
parameter).
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
numbers.
FB_POWER - a 32 bit floating point number that gives the average
power consumed from the Field Bus by the physical node,
expressed in milliWatts.
FB_CAPAC - a 32 bit floating point number that gives the
capacitance of the Field Bus device at the designed
(or selected) Field Bus communication frequency,
expressed in microFarads.
FB_INDUCT - a 32 bit floating point number that gives the
inductance of the Field Bus device at the designed
(or selected) Field Bus communication frequency,
expressed in milliHenrys.
MIN_TC0 - a 16 bit string parameter that gives the "minimum"
acceptable value for the previously defined TIME_CRIT0.
The following parameters are given partial definitions in the paper "Array of
Basic Parameters" - they may be used by physical nodes that add extensions or
alternatives to the standard physical nodes:
- Two additional time critical bit strings, TIME_CRIT1 and TIME_CRIT2.
The length of these bit strings is not defined.
- Three non-time critical bit strings, N_TIME_CRIT0 to N_TIME_CRIT2.
The length of these bit strings is not defined.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
41
Total messages to or from this physical node. Set to zero when the
device is powered up with a lost dynamic physical node data base.
- APPL_FAIL
Total number of failures associated with the Application Layer:
the sum of all schedule request failures, association request
failures, define parameter group request failures, read and write
service failures not caused by physical layer failures, subscribe
service request failures, etc. In short, all failures not covered
by the following 6 companion error counters.
The counter will operate as if the following method were used. The
physical node will set a flag at some time in the physical node's
"AX" cycle. The write handler will reset the flag any time that
it finds the buffer empty. At the next "AX" cycle, if the flag is
not reset, this counter will be incremented. Then the flag will
be again set and the cycle repeats. This counter will be set to
zero when the device is powered up with a lost dynamic physical
node data base.
The above parameters are concerned with total messages and errors since the
start of counting. It is necessary to originate an alarm if there are too many
of some of these errors but the alarm can not be based on the total of the number
of errors. Therefore, there will be the following additional required parameters
to support notifications:
- ERROR_RATE
The total number of framing plus CRC errors (maximum of 1 error per
message) that occur in one period of time divided by the number of
communications in that period. The update of the number will be
skipped if there are no communications in the period. This value
will be a 4 byte floating point number that is initialized to 0.
when COUNT_TIME is reset.
- FILTER
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
42
The time constant for the first order filter for updating the above
rate value. This parameter will be an 8 bit unsigned integer
giving the filter time constant in whole seconds. This value will
be initialized to 255 when the device is first powered if the
physical node static data base was lost.
- ERROR_RATE_LIM
The maximum value of ERROR_RATE above which an alarm will be
generated for this communication port - a 4 byte floating point
number.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
This alarm will be supported with the normal alarm structure as defined
in the "Alert" paper.
In the array of basic parameters, one set of these twelve parameter names are
followed by the number 0. They are the required set and are associated with the
#0 Field Bus connection. If a physical node has a second Field Bus connection,
then a second set of parameters, ending with the number 1, must be supported and
must be associated with Field Bus #1. The counter CYCLE_OVERRUN will NOT be
--```,``-`-`,,`,,`,`,,`---
supported in this second set.
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
Physical Node
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Name Descriptor
Bus Address etc.
Logical Node 0 Logical Node n
Hardware Types:
Composition Foreign Memory Serial Communications
Counter Inputs Pulse Outputs Tank Gauging
Discrete Registers Scalar Inputs Voted Scalar Out
Human Interface Scalar Outputs
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
Voter
VALVE
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
45
Deactivate Fail-safe
FAIL-SAFE Parameter
LOGICAL NODE NOWRITE
LOGICAL NODE OPTIONS BIT STRINGS
CYCLE SYNCHRONIZATION
START CYCLE STROBE
Table 1 - Listing of TO Types
Figure 1 - Timed Standard Cycle Structure
PRIMARY STRUCTURE:
Each data owner connected to Field Bus will be a "physical node". The
physical node will contain a data record that contains information pertaining to
the whole physical node. The physical node will have a "tag name" and the data
in its data record will be addressed on Field Bus as "TAG.PARAMETER" where
"parameter" is a 16 bit unsigned integer value. Devices that support the
communication layers of the Field Bus protocol and meet these minimal structural
constraints at the "User Layer" will be called "Interconnectable".
SP-50 User Layer Technical Report Data Owner Structure - Logical Nodes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
46
All data owner devices connected to Field Bus will appear to have one or more
"logical nodes" executing within the 1 physical node. The logical nodes will
appear to be numbered in order, starting with 0. Each logical node within a
physical node will have an assigned "tag name", called "TAG". These TAG names
will be arranged as a single indexed parameter LN_TAG (i) in the physical node's
data base where the index is equal to the logical node number. Each logical node
will contain a data record that contains data associated with the total logical
node. Each logical node will have a parameter in its data base, called LN_NUM,
that will indicate the zero based index of the logical node in the physical node.
Also, each logical node will have a parameter called TAG_DESC in its data base
that will support a 32 character visible string entered by the User.
If there is only 1 logical node in a physical node, then the logical node
data record will be merged with the physical node data record and the two
entities will have a common tag name.
Each logical node will have a variable, LN_OOS, that will be TRUE if the
logical node is currently not executing any of its function blocks. Any time
that LN_OOS is TRUE, all function blocks in that logical node will be forced to,
and held in, O/S mode.
All three of the structural elements discussed here will have a tag name,
either unique or shared due to the merging that is defined. Any one or
combination of these structural elements will be referred to as a "tagged object"
or "TO". By definition, a TO has a tag name.
Logical nodes are identified by type; there is one type called "undefined"
that, as its name implies, has no definition. There are two types of function
blocks that are provided, called "Open" and "Interworkable Generic" that provide
no definition or very little definition. Interconnectable devices (see
definition, previous page) that meet these additional structural requirements at
the "User Layer", including the standard identification of their logical nodes at
least as "Undefined" and their function blocks at least as "Open" or
"Interworkable Generic", will be call "Interworkable".
A set of function blocks will be defined, usually with extensive detail; they
will be referred to as "standard" blocks. Several of the Standard function
blocks do not have a defined algorithm (for example, the "Physical Property"
block) but they are always sufficiently defined to enable a complete human and
control system interface. Standard blocks often have a number of manufacturer
options but those options are fully defined.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
implemented in "timed standard" type logical nodes (to be defined below) will be
referred to as "Interchangeable" devices. See the paper "Conformance Classes"
for the full classification system.
The intended use of these three values will be given here in terms of a
function block but it applies to all three TO's. The TO_TYPE is the basis for
determining an explicit identifier of the type of function block. If it is a
standard value, it will be an explicit code taken alone. If it is in a
"manufacturer's range" (i.e., has a '*' footnote in Table 1), then it will be
explicit when concatenated with the manufacturers name and model number of the
field device.
The value that is entered into the TO_MFG_SUBTYPE MUST be a code that has
"public" meaning to an independent manufacturer. Therefore, the following are
the only allowed codes until further standards are available:
The TO_USER_SUBTYPE inserts one step of User control into the process. It may
be used to identify a specific display on a higher level control system that
should be used to display this particular function block. It may be used to
override the MFG_SUBTYPE and thus control the hand held communicators if it was
not needed for the higher level system. With careful design, it may be used for
both purposes.
select the display and the MFG_SUBTYPE will be ignored. Note that hand held
communicators will normally ascribe meaning to the low 8 bits of the value only
if the value is in the list given immediately above.
These three parameters have been set up primarily to serve the human
interface devices but they are useful to higher level devices in a number of
circumstances. Because of this general interest, these three variables are
included in the Data Dictionary (see the paper "Application Support Services
Interface") and will be available to higher level devices without requiring
direct communication on Field Bus. Since the TO_MFG_SUBTYPE can never be set by
the user and it is available in the Data Dictionary parameter LN, it is never a
data base parameter by itself. For the same reason, the TO_TYPE of a standard
physical node is never a data base parameter; it is given in the Data Dictionary
parameter PN.
The data base problem that follows from the library concept is to identify
the exact algorithms that are supported without doing a "random search" during
configuration. Two variables will be defined here to solve that problem.
Each logical node will contain a parameter, called ALGO_STR, that will
indicate the algorithms supported in the algorithm library of the logical node.
There will be 256 bits in this string (32 bytes) - one for each algorithm listed
in Table 1. The bit corresponding to a supported algorithm will be set. If all
of the bits are reset, then the function blocks that exist in the device have
fixed algorithms that can not be changed, even to "Null" [TO_TYPE and TO_TYPE1
(if it exists) are read-only].
--```,``-`-`,,`,,`,`,,`---
called ALGO_STR1, will exist and will indicate the algorithms supported in the
"extended" algorithm set. Note that there can be no definition of the algorithm
identified by a particular bit in ALGO_STR1 since they are totally defined by the
manufacturer.
--```,``-`-`,,`,,`,`,,`---
When standard function blocks are implemented in timed
standard logical nodes, the fully defined timing of the
block execution allows direct application substitution
across manufacturers and is said to provide
"interchangeability".
TO_TYPE 12H - Cyclic Standard
the block execution is similar to Timed Standard but
the dead time within a block and within the logical node
cycle itself is not defined.
This type of logical node can not be considered to be
"Interchangeable" but may be "Interoperable".
TO_TYPE 13H - Cyclic
the block execution is similar to Cycle Standard but the
blocks need ot execute in order within a cycle.
This type of logical node can not be considered to be
"Interchangeable" but may be "Interoperable".
TO_TYPE 14H - Cycle/Phase Standard
the Field Bus Standard defines a method by which the user
defines the base cycle time of the logical node, the
cycle time of each block, and the phase of the execution
of each block, all within limits imposed by the
manufacturer. The exact timing of the blocks within the
cycle is not defined.
This type of logical node can not be considered to be
"Interchangeable" but may be "Interoperable".
TO_TYPE 15H - Cycle/Phase
the block execution is similar to Cycle/Phase Standard
but the blocks need not execute in order within a cycle.
This type of logical node can not be considered to be
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
UNDEFINED:
The process blocks in a logical node that uses the "undefined" block
execution scheme can be executed in any order as defined by the manufacturer or
as defined by configuration entered by the user following rules defined by the
manufacturer. They will identify their TO_TYPE using any one of types 1CH
through 1FH.
For purposes of characterizing the alert reporting services that may be used
by an undefined logical node, every such node will contain an 8 bit signed
integer called "AX". AX will define the repeat rate of the major alert detecting
services. The value of AX is defined by:
IF the logical node does not support alert reporting, then
x = 2**-127
ELSEIF the logical node has a defined processing cycle that
includes most of the alert detection logic, then
x = that cycle time, in seconds
ELSE
let x = the repeat rate of the major alert detecting services,
in seconds
--```,``-`-`,,`,,`,`,,`---
ENDIF
AX = an integer such that
2**(AX-1) < x <= 2**AX
Refer to the section "Buffer Overload Indicator" in the paper "Alert Function"
for a description of how AX is used.
UNSCHEDULED STANDARD:
The process blocks in a logical node that uses the "unscheduled standard"
block execution scheme will not have a scan time controlled by Field Bus. The
blocks will have data updated in them from time to time by a source unknown to
the Field Bus.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
51
In the absence of a data base at start-up, a function block will have the
default TO_TYPE of 20H. At any instant in time, the user may have defined
algorithms for some of the blocks in the set of MB blocks but possibly not for
all of them. By definition, the parameter "CB" will be set by the field device
to be equal to the number of function blocks included in the range starting with
block 0 and extending through the last block that has a TO_TYPE other than the
default value. By definition,
0 >= CB <= MB
This type of logical node is based on the concept that there is no defined
node cycle time, at least from the direct perspective of the Field Bus. However,
the alert reporting function has need for a "cycle time" that expresses the time
required to cycle through the majority of the alert detection logic of the
logical node (see the section "Buffer Overload Indicator" in the paper "Alert
Function"). Therefore, an unscheduled logical node will have a data base value,
called AX, that indicates the time necessary for the logical node to cycle
through the majority of its alert detection logic.
When the cycle time is determined by a mechanism unknown to the Field Bus, AX
may reflect the cycle time determined by that mechanism. The value (read only)
of AX is defined by:
let x = the cycle time of the off-field bus mechanism, in seconds
then, AX = an integer such that
2**(AX-1) < x <= 2**AX
This block type is designed for field devices that generate data according to
some independently defined method and make it available to the Field Bus at a
time determined independent of the Field Bus. Two examples of this node type are
so important that they have been given their own logical node types in Table 1: a
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
multicomponent/multistream analyzer and a property scanner.
--```,``-`-`,,`,,`,`,,`---
A multicomponent/multistream analyzer might determine the concentration of
components in a process stream using a complex analysis method such as
chromatography. When the analysis becomes available, the results are placed in
the function blocks where each block represents a component in the stream. The
value MV would then be the maximum number of component values that the device can
produce for this stream (perhaps considering an analyzer program that is defined
in the field bus data base). The value of "x" used to calculate AX would be the
program cycle time being used by the analyzer. The "Composition" function block
will define the logical node parameters for this particular type of logical node.
CYCLE/PHASE STANDARD:
The following table quantifies the cycle time for each value of CX
but is not intended to define the minimum value of CX:
CX = -10, cycle = 0.98 ms CX = 0, cycle = 1.0 sec.
-9 1.95 1 2.0
-8 3.9 2 4.0
-7 7.8 3 8.0
-6 15.6 4 16.
-5 31.2 5 32.
-4 62.5 6 64.
-3 125. 7 128.
-2 250.
-1 500.
The user will enter CX as a data item in the same data base.
0 >= CB <= MB
The program for the logical node will include the ability to define
the number of blocks per cycle that can be supported by the logical node
at the current value of CX. This value will be labeled the "maximum
blocks per cycle" (MBC). The logical node will include that value as a
read-only item in the node's data base.
By definition of this logical node type, the blocks that are to be executed
in a given phase, as shown in the phase map, will be executed in strict order
with the lowest number block being executed first, then the next higher number
block. Each block will store its results in the field bus accessible data base
before the next block executes. If a particular block accesses data output by
the block that processes immediately before it in the phase map, that block will
receive the results of the latest execution of the referenced block. Note that
the only blocks that execute in a phase are those defined for that phase by the
phase map. Also, there is no constraint on the execution timing of the function
blocks within the phase other than their order.
The alert reporting function has need for a "cycle time" that
expresses the time required to cycle through the majority of the alert
detection logic of the logical node (see the section "Buffer Overload
Indicator" in the paper "Alert Function"). A cycle/phase logical node
will have a data base value, called AX, that indicates the time
necessary for the logical node to cycle through the majority of its
alert detection logic. AX will be set equal to CX + 4 where the "4" is
the maximum value for BX.
Reconfiguration:
Upon the receipt of a change in the value CX, the node will execute
a complete restart procedure and, in the process, calculate and store in
accessible memory the 16 item table defined above plus, if necessary, a
new value for MBC (this value may be a function of CX). During this
restart, the modes of the process blocks will not be changed unless more
blocks are scheduled for a cycle than is permitted. In this case,
enough blocks will be marked as OS mode as is necessary to reach the MBC
limit. The higher index number blocks in any offending cycle will be
chosen to be changed to O/S. The limit will be checked and the
offending blocks changed to O/S mode during the restart procedure.
This node type is designed for field devices that are of the
"multiplexer" type. Such a device may have a large number of inputs.
The desirable scan time for each block may vary widely and the device
may not be designed to measure all of its inputs at the maximum possible
frequency. Selected inputs, however, could be scanned at the maximum
frequency.
CYCLE/PHASE:
The above description of the "Cycle/Phase Standard" logical node
required that the blocks within one phase be executed in number order. In a
"Cycle/Phase" logical node, that restriction is eliminated.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
54
TIMED STANDARD:
The process blocks in a logical node that uses the "timed standard" block
execution scheme will all have a constant scan time where that time is fully
controlled by the User within bounds set by the Manufacturer and the Field Bus
Standard. Each device will be identified by its manufacturer as having a value
MX (manufacturer exponent) equal to the minimum possible value of CX (current
exponent) where:
Cycle time = 2**CX seconds
CX = user set integer where [MX <= CX <= +7]
MX = manufacturer set integer where [MX <= +7]
The manufacturer will define the value identified above as MX and display
that value as a read-only item in the node's data base.
The user will enter CX as a data item in the same data base. If CX is not
within the range defined above, the value of CX will be forced into range and a
node configuration fault notification will be set.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The alert reporting function has need for a "cycle time" that expresses the
time required to cycle through the majority of the alert detection logic of the
logical node (see the section "Buffer Overload Indicator" in the paper "Alert
Function"). A timed standard logical node will have a data base value, called
AX, that indicates the time necessary for the logical node to cycle through the
--```,``-`-`,,`,,`,`,,`---
The user can respond with a second entry defining the actual number
of blocks to execute in the cycle: current blocks per cycle (CB) where
CB is:
1 <= CB <= MBC
Since the number of blocks that a device can execute in one cycle
may well be a function of the cycle time and in any event may be reduced
by the user, there may be memory available for more blocks than are
being processed in the cycle. The device will, by definition, process
blocks starting at the first block (block 0) and stopping at the number
of blocks defined by the user. The remaining block memory will be
available for access by the field bus for data base build or retrieval.
However, the number of blocks/cycle and possibly the cycle time will
have to be changed to have the "extra" blocks execute. The mode of all
such blocks will be forced to "Out of Service" by the logical node every
cycle.
There are two totally different reasons why a user may wish to
operate a field bus device at a cycle time slower than MX. First, he
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
2) the beginning of the slew of the scalar output hardware signal will
When CX > MX, the block time will be longer than when CX = MX. The
extra block time will be inserted into the block execution procedure
after the above three actions occur and after all of the input values
from the data base have been acquired and before any outputs are
released to the data base.
data base.
*********
(Note to first-time reader: most of the rest of this
paper requires an understanding of functions to be defined
in later papers. You might want to skip the rest of this
paper except for "Summary Illustration" (p16) and "Example"
and the Cycle Standard and Cyclic logical node definitions.
*********
Off-Logical-Node Communication:
There are two different mechanisms by which off-logical-node
communications can be configured for Field Bus Standard Blocks. They
are: 1) off-logical-node block input and output word agents and
2) logical node registers.
The input and output word agents are defined by each Standard
algorithm. They all have the same general structure; several types of
these agents can point to off-logical-node data. No distinction is made
between agents that acquire their data from another logical node in the
same physical node and an agent that acquires its data from a logical
node in a different physical node.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
57
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
58
Summary Illustration:
The attached Figure 1 - "Timed Standard Cycle Structure"
illustrates one cycle of a timed standard node. The horizontal
axis represents time, one cycle time is represented as the
horizontal distance from the beginning of one "20%" to the
beginning of the next "20%".
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
60
--```,``-`-`,,`,,`,`,,`---
Overhead and Communications
SI In SO orPD Out
On-Node Fetch* On-Node Store
Figure 14: Data Owner Structure, Figure 1, Timed Standard Cycle Structure
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
61
Example:
As an example of a simple field bus device, assume that MX = 0
(1 second cycle time is the fastest the device will operate).
Further assume that CB = 2 (the device will execute 2 blocks per
cycle). Then, if the user chooses to set CX = MX the time cycle
could be represented as:
Each cycle = 1 sec.
Each Block = 0.8 * cycle time / # of blocks = 0.4 sec.
--```,``-`-`,,`,,`,`,,`---
0.2 sec. - On-line diagnostics and prefetch Block 0
0.4 sec. - Do Block 0 and prefetch Block 1
0.4 sec. - Do Block 1
0.2 sec. - On-line diagnostics and prefetch Block 0
0.4 sec. - Do Block 0 and prefetch Block 1
.
.
Now assume that the user changes the device's data base so
that CX = 1. As a result, the time allocated to execute each of
the base blocks will double. The new cycle can be represented as
follows:
Each cycle = 2 sec.
Each Block = 0.8 * 2 sec. / 2 = 0.8 sec.
0.4 sec. - On-line diagnostics and prefetch Block 0
0.8 sec. - Do Block 0, with an embedded 0.4 sec. time delay,
and prefetch Block 1
0.8 sec. - Do Block 1 with an embedded 0.4 sec. time delay
0.4 sec. - On-line diagnostics and prefetch Block 0
0.8 sec. - Do Block 0, with an embedded 0.4 sec. time delay,
and prefetch Block 1.
.
.
Finally, assume that the user also changes the device's data
base so that the number of blocks/cycle (CB) = 1 with the cycle
time still at CX=1. As a result, twice as much time will be
allocated for the execution of the only scheduled block,
represented as follows:
Each cycle = 2 sec.
Each block = 0.8 * 2 sec. / 1 = 1.6 sec.
0.4 sec. - On-line diagnostics and prefetch Block 0
1.6 sec. - Do Block 0 with an embedded 1.2 sec. time delay
0.4 sec. - On-line diagnostics and prefetch Block 0
1.6 sec. - Do Block 0 with an embedded 1.2 sec. time delay
.
.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
62
CYCLE STANDARD:
The above definition of the Timed Standard logical node required that certain
dead times be maintained in the block execution timing in order to achieve
"Interchangeability". These dead times degrade control performance The "Cycle
Standard" type of logical node is defined exactly the same as "Timed Standard"
except that there are no requirements placed on block dead times and there is no
requirement for the fixed (20%) logical node time. The blocks must still be
executed in order and any parameters passed from block "n" to block "n+1" must
represent the results of the current cyclic execution of block "n". A device
that includes a "Cycle Standard" logical node can not be expected to be
"Interchangeable" but may be "Interoperable".
--```,``-`-`,,`,,`,`,,`---
CYCLIC:
The above definition of a "Cycle Standard" logical node required that the
function blocks execute in order and updated parameters must be passed from block
"n" to block "n+1". In certain applications, this may not be needed. The
"Cyclic" logical node has no constrains on block execution timing. It only
requires that all blocks that are currently being executed (the first CB blocks)
must execute once per cycle time. A device that includes a "Cyclic" logical node
can not be expected to be "Interchangeable" but may be "Interoperable". In
addition, unpredictable dead times may result when a block is configured to use
the results of other blocks in the same logical node.
FAIL-SAFE FUNCTION:
Fail-Safe Logical:
When the logical value transitions to set, any and all blocks in
the logical node that support the "Fail-safe" functionality will assume
their fail-safe condition within one logical node cycle time. The
fail-safe condition will exist until the logical node receives a proper
signal to reset the Fail-safe logical.
A Field Bus write to reset the actual value of Fail-safe will not
be allowed. Fail-safe can only be reset by setting a second associated
logical value. Even resetting Fail-safe properly may not clear the
fail-safe conditions from the blocks: the algorithm and its
configuration for each function block will determine how the block
responds to fail-safe. However, the blocks will typically respond in
the same way as they respond after recovering from a single block
failure. In general, the block will 1) go into Man or Auto mode or 2)
pass the failure state up the cascade to a higher block (typically a PID
or Device Control Block) that will go into Man mode. In case (2), the
local block will resume its former mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
63
Isolation_Timer:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
be available for reads and writes from Field Bus. The value will
indicate time in centiseconds and will be decremented by the logical
node once per cycle any time that it contains a value other than zero.
The value will not be decremented "through" zero.
If the logical node restarts with a good static data base but
having lost its dynamic data base, it will reset the IT value to zero.
It will NOT set the Fail-safe logical at that time.
See the "Mode" paper, p15, for the basis for starting the IT based
on CASCADE count-out. See Attachment 2 to the "Data Base Write
Service" paper (p1 and Figure 1) for the basis for resetting the time
to zero when there is a write to the logical node. See the paper
"Function Block Structure", Table 1 for the logic for resetting IT for
writes that do not go through the Data Base Write Service. In addition,
specific algorithms may, under conditions defined within the algorithm,
set the IT.
Deactivate Fail-safe:
FAIL-SAFE Parameter:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
65
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
66
This bit is set by the Field Device when the Field Device is
initialized. During a node restart, this bit will be left in
its prior state if:
+ all input blocks in the logical node retained their
static data
+ all other blocks in the logical node retained their
dynamic data
+ the physical node hot restart timer did not expire
Otherwise, it will be set by the Field Device.
(see the paper "Field Device Start and Restart" for details).
Special Restriction - a Field Device that is conformant to the Field Bus
Standard will:
- require that all writes to the parameter be "masked"
writes (see the "Application Layer Services" paper).
- never allow bit 7 to be written if any other bit is
written (i.e., if any of bits 0-6 in the write mask are
set and bit 7 in the mask is also set, the write will
be rejected.
- set bit 7 any time bit 0 is reset by a Field Bus write.
- set bit 7 when the Field Device is initialized.
It will manipulate bit 7 during restart as defined in
the paper "Field Device Start and Restart".
- never reset bit 7 except as the result of a Field Bus
message or an output from a function block.
Human I/F Restriction - a Human I/F Device that is conformant to the
Field Bus Standard:
- will obey bits 1-3, 5, and 6.
- will never allow bit 3 to be reset.
- and is "portable" as defined above will:
+ not allow resetting of bits 1-4.
+ not display nor allow writing of bits 5-7.
Bit 0 = set if this logical node supports a read handler (see paper
"Application Support Services Interface").
Bit 1 = set if this logical node supports logical node variables 0
and 1 as analog (must be reset if logical node = unscheduled).
Bit 2 = set if this logical node supports logical node variables 0
and 1 as discretes (must be reset if logical node =
unscheduled).
Bit 3 = set if this logical node supports logical node variables
Bit 6 = set if this logical node supports a private clock (see "Data
Owner Structure - Hardware" paper for a description of this
option).
Bits 7 - CH = reserved for future Standards.
Bits DH & EH = manufacturer specific.
Bit FH = set if this physical node supports any extended parameters. If
this bit is set, parameter EXL0 must exist in the Data
Dictionary. See Attachment 2 to the paper "Application
Support Services Interface".
Every logical node in Field Bus has one to three "non-time critical" options
bit strings. Standard logical nodes will include the following 16 bit non-time
critical options bit string as N_TIME_CRIT0:
Bit 0 = set if this logical node can operate as a manufacturer defined
type of LN.
Bit 1 = set if this logical node can operate as a Timed Standard LN
Bit 2 = set if this logical node can operate as a Cyclic Standard LN
Bit 3 = set if this logical node can operate as a Cyclic LN
Bit 4 = set if this logical node can operate as a Cycle/Phase Std. LN
Bit 5 = set if this logical node can operate as a Cycle/Phase LN
Bit 6 = set if this logical node can operate as an Unscheduled LN
Bit 7 = set if this logical node can operate as a Multicomponent/
Multistream Analyzer LN.
Bit 8 = set if this logical node can operate as a Property Scanner LN
Note: if more than one of bits 0 - 8 is set, then the user can
configure the TO_TYPE accordingly. If only one of those bits
is set, the TO_TYPE will be read-only. It is illegal to have
no bits set.
Bit 9 = set if this logical node supports active agents (see paper
"Agents").
Bit AH = set if this logical node supports off-physical node agents
(see paper "Agents").
Bit BH = set if this logical node supports off-Field Bus agents (see
paper "Agents").
Bit CH = set if this logical node supports hardware input to the
fail-safe logical value.
Bit DH = set if this logical node does "Fast Initialization". See
Attachment 2 to the paper "Function Block Structure" for this
procedure.
Bit EH = set if all function blocks in this logical node that support
triggered calibration also enter the data record into the
clipboard.
Bit FH = set if all function blocks in this logical node support all of
the configuration and error checking shown in the pseudocode
for their block types.
Consult the paper "Array of Basic Parameters" for the parameter number of this
string.
Logical nodes that are extended or alternate to the Standard logical nodes
may use one of the four additional option bit string names that have been defined
in the "Array of Basic Parameters": TIME_CRIT1 and 2 and N_TIME_CRIT1 and 2.
Their string length is not defined.
All standard logical nodes will provide for two additional parameters in
their data bases that allow higher level systems to confirm that a logical node
supports the necessary options required for the service it is in. The two
parameters are:
The Field device will maintain these parameters in its static data base and
allow free R/W access. Otherwise, it will not use not change these values.
A higher level device may download a different value as part of a data base
restore operation or it may simply change either value at any time.
The intent is that the higher level system can confirm that a field device
supports the options that are needed for a particular service. It would do that
by comparing TIME_CRIT0 and N_TIME_CRIT0 (the options that are actually present)
with MIN_TC0 and MIN_NTC0 (the options that are needed). If any bits are set in
MIN_TC0 or MIN_NTC0 and the corresponding bit is reset in TIME_CRIT0 or
N_TIME_CRIT0, then the higher level system would report that situation.
CYCLE SYNCHRONIZATION:
Each logical node is basically assumed to be operating asynchronously
relative to any other logical node on the Field Bus. However, at times it would
be desirable to adjust the execution times of one or more logical nodes to
minimize the dead time in a control scheme that spans multiple logical nodes.
This section will define a simple (required) method of achieving that
synchronization under certain limited conditions.
--```,``-`-`,,`,,`,`,,`---
The scheme will allow a logical node to adjust the beginning of its execution
cycle to minimize the dead time between the scheduled reading (or writing) of an
I/O word or a transfer location in a selected function block in that logical node
and the generation (or use) of that value by the block.
There will be three data base items to support the synchronization scheme:
SYNC_POINT = static data base, indirectly writeable at any time.
= 16 bit bitstring containing two integers.
Bits 3-0 indicate which parameter to monitor:
0 = INPUT0 4 = INPUT4 8 = ROut TL CH = OUTPUT3
1 = INPUT1 5 = INPUT5 9 = OUTPUT0 DH = OUTPUT4
2 = INPUT2 6 = Cas TL AH = OUTPUT1 EH = OUTPUT5
3 = INPUT3 7 = RCas TL BH = OUTPUT2 FH = none
Bits 16-4 indicate the number of the function block in
the logical node to monitor (a value between 0 and FFFH).
Each logical node will appear to implement the following logic (independent
of any other logical nodes in the same physical node):
--```,``-`-`,,`,,`,`,,`---
priority than Cas any time during the cycle, then
BREAK
IF there was not exactly 1 direct write to the parameter since
the last cycle, then
BREAK
TEMP = (time at which the value was written into parameter) - (time
at which the value was accessed by this block) in
milliseconds.
'Note: "the time at which the value was written" will
' be taken to be the time at which the function
' block's memory was made available to Field Bus
' access after the write, not the instant of
' writing the value itself.
IF TEMP > SYNC_TOL, then
Delay the start of the next logical node cycle by (TEMP -
SYNC_TOL) time.
'Note: in a timed standard logical node, the delay of
' the next cycle must occur after the last
' function block that is executed in one logical
' node cycle and before the beginning of the first
' function block that is executedd in the cycle
' after the delay.
ELSEIF SYNC_POINT > 8, then
IF the indicated function block was in a mode with a higher
priority than Auto any time during the cycle, then
BREAK
IF there was not exactly 1 cyclic read of the parameter since the
last cycle, then
BREAK
TEMP = (time at which the value in the parameter is cyclically
read) - (time at which the value was written by this block)
'Note: "the time at which the value was written" will
' be taken to be the time at which the function
' block's memory was made available to Field Bus
' access after the write, not the instant of
' writing the value itself.
IF TEMP > SYNC_TOL, then
Delay the start of the next logical node cycle by (TEMP -
SYNC_TOL) time.
'Note: in a timed standard logical node, the delay of
' the next cycle must occur after the last
' function block that is executed in one logical
' node cycle and before the beginning of the first
Since the signals are to be used only during conformance testing, access to
them may require the disassembly of the device's enclosure. The exact circuit
interface must be defined by the manufacturer for conformance testing. The
signal for each logical node will be independent and will have two states. One
state will exist continuously during the 20% of logical node overhead; the other
state will exist continuously all during the time that the function blocks are
executing.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
72
Block Modes
Standard Field Bus devices will support a mode service for each function
block within a logical node. The mode service uses 6 bytes of parameter storage
per block. The following is a description of those 6 bytes, their assigned
meaning, and their interaction.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
All references to "block" for the remainder of this description will refer to
function blocks, not physical or logical nodes. The physical and logical nodes
do not have a "mode".
It is intended that the individual status bits that are defined for the 6
bytes be arranged in their bit strings exactly as described. The bit strings can
be considered an enumeration if desired. Alternately, they can be considered bit
strings and the individual bits can be manipulated. Certain Field Bus algorithms
can do such manipulation.
MODE BYTE:
The operational mode of a SP-50 block will be reported by the states of 8
bits arranged in 1 byte. The bits are defined below in priority order (highest
priority and most significant bit position first). The highest priority bit set
is the operative mode but lower priority bits will frequently be reported to
indicate the basis for restoring modes, for the higher level nodes to interact
properly, and for the operator interface.
The Mode byte is maintained in dynamic memory, under the name "ACTUAL_MODE",
by the function block algorithm and will be referred to as the "actual" or
"dynamic" mode. It is readable but is not writeable by any other entity. The
default dynamic data base for all algorithms will have this mode set to O/S but
the value is changed based on the "requested" mode {see below} before it is used
by the algorithm.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
74
The default versions of the static data base for all algorithms will have
this mode set to O/S.
REQ_MODE will change less frequently than ACTUAL_MODE because it does not
indicate temporary override conditions. ACTUAL_MODE will be generated from
REQ_MODE every block cycle based on the prevailing conditions in the control
strategy at the time.
MODE INTERPRETATION:
The "mode" of a function block can be considered to be a state descriptor
that can assume any one of eight states. Each bit in the mode bytes described
above correspond to one of the possible states.
The REQ_MODE always corresponds to one of the eight states and defines the
state (mode) that the function block "should" assume.
In actual fact, there may be state variables that prevent the block from
assuming the requested state. It is forced into some other, higher priority,
state (mode).
--```,``-`-`,,`,,`,`,,`---
3) the modes that the block could assume if the limiting state variables
were removed (the mode bits set between the highest and lowest
priority mode bits).
4) the transition path that the block mode would traverse if the
limiting state variables were removed in priority order (the mode
bits set between the highest and lowest priority mode bits and in
that order).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
75
The default static data base for all other algorithms will have most of
these bits set. However, the bits corresponding to modes not supported
by that algorithm will be reset and the algorithm itself will enforce
that state every cycle of operation, even in O/S mode. Many output
algorithms do not support ROut mode (Bit 0). Bit #5 (corresponding to
LO) will be reset for the several algorithms that do not have a defined
LO state. Any algorithm that does not support a cascade structure will
have the Cas, RCas, and ROut bits reset. The algorithm will reset bit 6
(IMan) every block cycle.
As for all modes, if the IMan or LO permitted bit is reset, a Field Bus
command to set the LO mode will be rejected. However, even if and while
the IMan or LO permitted bit is reset, the owning block can set the
corresponding mode in ACTUAL_MODE. Note that IMan mode will ALWAYS be
set in combination with some other mode.
If the algorithm supports Man mode but the user chooses to deny
permission to set Man mode, then Man mode can not be set over Field Bus
or by a discrete block in the device. However, Man mode may still be
set in ACTUAL_MODE as a result of algorithm rules that default to Man
under certain conditions.
ATTRIBUTE/ACCESS BYTE:
A separate byte, called the "ATT_ACCESS" byte, will also be provided. The low
order 3 bits will contain the 3 mode attribute bits. Bits 3 through 5 will be
used to indicate required human interface access levels while bits 6 and 7 will
indicate the status of the block variable "ACQUIROR". Any conformant SP-50 field
device will have all 8 bits reset in the default data base of all algorithms. It
will not otherwise manipulate the low six bits unless so configured in a discrete
control block.
Program (P) - When set, this bit indicates that the operator has turned
Bit 0 over his authority to change the set point, output, and
mode to a higher level, non-cascade program. The
operator has the authority to reset this bit and regain
control of the three variables.
Tuning (T) - When set, this bit indicates that the operator has given
Bit 1 his approval for a higher level program to manipulate the
tuning constants of this block. The data base variables
that constitute the tuning constants are defined by each
algorithm.
Alarm (A) - When set, this bit indicates that the operator has given
Bit 2 his approval for a higher level program to manipulate the
alarm limits of this block. The data base variables that
constitute the alarm limits are defined by each
algorithm.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
76
When the attribute is set, the dynamic value will be used. When
the attribute is reset, the static value will be written into the
dynamic value and used.
Either copy of each variable can be written at any time. All Field
Bus conformant Human Interface devices will only allow writing to the
static data base variable. It is intended that only higher level
control programs, such as batch control programs and automatic tuning
programs, that intend to make multiple changes to the value, would
change the dynamic value.
The user will have the ability to define any variables in the data
base - up to 5 - as being under the "User access". The data for these
assignments will be entered in the logical node variable "ASSIGN_USER".
That parameter will be in two parts. Part (1) will be an 8 bit binary
string built in the following format:
bits 0 - 2 - these three bits form an integer whose value must be
between 0 and 5. The value defines the number of 16
bit integers to follow immediately. Each 16 bit
integer will be a parameter number.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
77
If the integer in bits 0-2 of the above string is not equal to 0, then
the above string will be followed by n 16 bit integers where n is the
value found in bits 0-2 above. Each one will be a parameter number of a
parameter that is "defined to be under the User access". The parameters
can be any parameter number; they do not even have to be parameters
supported by this tag. It is assumed that the integer has meaning to
the higher level operator interface.
Note: the Field Device must supply enough room for 5 parameters in each
function block.
Note: the total length of the User feature can be between 1 and 11 bytes
long in the Data Dictionary variable FB.
The operation of the tuning and alarm access bits is quite simple.
They will initialize reset but can be set by a higher level device. If
they are set, they are an indication to any SP-50 conformant human
interface that the human interface must be at an access level above the
normal operator's access level in order to change the associated
parameters.
When the User access bit is set, a higher level device is directed
to the Data Dictionary information, contained in item FB, that
describes up to 5 changes to the access level. The identified parameters
can be individually assigned a high access level or a low access level.
They will override the access level assigned by the tuning or alarm
access bits or any access level assignments made totally within the
higher level operator station unless they are made on an individual tag
basis.
--```,``-`-`,,`,,`,`,,`---
Note particularly that the attribute bits control access by a
higher level program vs. the operator. The access bits control access
to the parameters by operator access level. An operator can take access
rights away from a higher level program (by resetting the mode attribute
bit) BUT MAY NOT BE ABLE, HIMSELF, TO CHANGE THE PARAMETERS BECAUSE OF
BITS 3 - 5. In addition, a conformant human interface may allow the
operator to accept the current (i.e., dynamic memory) parameters or the
original parameters (i.e., static memory) when resetting one of the mode
attribute bits even though that parameter is under limited access due to
bits 3-5.
If any of the low 15 bits of ACQUIROR are set, then the function
block has been "acquired" by one high level entity and no other program
entity can access the variables under the mode attribute bits defined
above. However, access contention between the operator and the
acquiring entity is still controlled by the attribute bits. Stated
another way, when the operator gives "a" higher level program access to
block parameters by setting a mode attribute bit, ACQUIROR determines
WHICH higher level program.
Bit 6 - any time any of the low order 15 bits of the block
(acquired) parameter ACQUIROR are non-zero, this bit will be set. A
human interface device can display this information to an
operator to indicate that a high level program has
"acquired" this function block.
Bit 7 - any time the high order bit of the block parameter
(limited) ACQUIROR is set, this bit will be set. A human interface
device can display this information to an operator to
indicate that a higher level of access is needed to reset
any of the 3 attribute bits. Note particularly that bit
7 can be set even though bit 6 is reset.
Any time ACQUIROR is changed, the DBWS will copy the high order bit
of ACQUIROR into the high-order bit of ATT_ACCESS. At the same time,
bit 6 of ATT_ACCESS will be set if any of the low-order 15 bits of
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ACQUIROR are set, ELSE bit 6 of ATT_ACCESS will be reset.
the interface will prevent any write access to ATT_ACCESS that resets ANY
bit. Note that this restriction applies directly to a "hand held
communicator" type human interface. If a particular instance of such a
communicator does not support operator access levels, it essentially can
Explanation of Figure 1:
The rules associated with the ATT_ACCESS byte are summarized in
Figure 1. In this figure, four sources of write commands are depicted
across the top - an operator with normal access authority, with high
access authority, a configured higher level control system, and a
programmed higher level control system. The state of the appropriate
attribute, access, and ACQUIROR limited bits are shown just below the
command sources. Below the arrows are symbols showing when a write to
any one of 8 destinations is permissible.
For example, consider the first write illustrated (the first column
of symbols on the left). The case is defined to be an operator with
only normal access attempting a write while:
1) the associated attribute bit is reset. (Figure 1)
2) the associated access bit is reset.
3) the ACQUIROR Limited bit is reset.
(These all follow from the absence of "1"'s at the top of the column).
The symbols below the arrow, stated in descending order, show that:
a) a particular attribute bit can be set (it is currently reset as
given above).
b) a particular access bit can be set (it is currently reset as
given above).
c) it is "redundant" to reset the attribute bit (it is currently
reset).
d) it is "redundant" to reset the access bit (it is currently
reset).
e) the parameters under a particular attribute bit (it is currently
reset as given above) can be written.
f) the parameters under a particular access bit (it is currently
reset as given above) can be written.
g) the operator can clear ACQUIROR (its high bit is not set as
given above).
h) the operator can write a value to ACQUIROR (its high bit is not
set as given above).
(Figure 1)
In column two, a particular attribute bit is set. Therefore, the
operator can reset the attribute bit (it is redundant to set it) but he
can not write to the parameters under that attribute bit (shown by the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
80
The last four columns show the possible cases for a higher level
control program.
TATTLE BYTE:
Another separate byte, called the "TATTLE" byte, will also be provided. The
low order three bits will contain the three attribute tattle bits that correspond
to the three attributes in ATT_ACCESS; they will be arranged in the same order.
Bits 3 through 5 will contain the three access tattle bits that correspond to the
three access bits in ATT_ACCESS; they will be arranged in the same order. Bits 6
and 7 will be referred to as the auto-tuner control bits. The whole byte will be
set at power-up by the node. All bits in this byte will be set in the default
version of the data base of all algorithms.
The appropriate one of the six low-order bits will be set by the data owning
node any time the corresponding ATT_ACCESS bit is reset. These bits will never
be reset by the node. Rather, they will be reset and then monitored only by a
higher level program that needs to determine if an attribute bit has been reset.
Bits 6 and 7 will be manipulated by the function block every cycle using the
following logic:
IF the block is actually executing in Auto, Cas, or RCas mode, AND
The block is not executing an initialization pass, AND
The block algorithm is not wound up high, AND
The block algorithm is not wound up low, AND
[(The by-pass option is NOT set) OR (the by-pass option is not
supported)], THEN
Reset bit 6.
ELSE
IF bit 6 is reset, THEN
Set bit 7.
Set bit 6.
Bit 6 will never be written from the Field Bus and there is no reason to ever set
bit 7 from Field Bus. Notice that the function block never resets bit 7. See
the description of the "Tuning" algorithm for the use of these two bits.
In the above logic, the term "algorithm is not wound up" was used twice.
These wound up states correspond exactly to the wound up states of a discrete
Setpoint as entered in the Setpoint value bits 6 and 7. They also correspond to
the wound up states of an analog Setpoint as entered in the Setpoint status byte,
bits 6 and 7, EXCEPT that the Setpoint limits of the local function block are not
considered in the determination of the wound up state (see page 21 of the paper
"Function Block Structure").
Any SP-50 conformant human interface device must not display nor allow the
manipulation of any of the bits of the tattle byte in the normal operator
priority level.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Finally, an undefined byte, stored in static memory, must be provided for use
by a higher level device. This byte, called FREE_MODE, must be fully supported
by the field device: it must be able to be read and written over field bus; it
must be maintained under the static data base revision counter exactly the same
as REQ_MODE; it must be supported during power up and data base configuration as
is the requested mode byte; it must not be independently used by the field
device.
The fact that the actual mode can be generated from the requested mode and
the control structure conditions is the basis for part of the logic of the
restart procedure.
The algorithm may set IMan mode based on the prefetched value of its output.
It may set the LO mode based on several different conditions. It may set Man,
Auto, or Cas mode in situations in which cascade transfer locations have counted
out or values have been marked "Bad" or NaN.
The algorithm has the option of changing the requested mode when there is a
cascade failure and when particular Inputs are marked "Bad". It will never set
the requested mode to IMan and it will only set it to O/S mode in the restart
logic. When it does set the requested mode, there is no automatic recovery
method provided.
When the requested mode is set to RCas or ROut, the fail-over mode will
always be set until the Remote handshake is accomplished
SUMMARY RULES:
The above presents all of the data base tools for the control of mode and
mode attribute. ACTUAL_MODE and TATTLE will be maintained in dynamic memory.
The other 4 bytes will be in static memory. The following rules will be enforced
in any writing to the 6 bytes that constitute the mode structure:
The field device itself will ensure that any write from the field bus or from
a peer block within the node or from the block's own configured logic (but not
from the operation of the block algorithm itself):
- ACTUAL_MODE:
+ Can not be written.
- REQ_MODE:
+ Can never set IMan Mode (bit 6).
+ Can not set a mode bit that corresponds to a reset mode permitted
bit.
+ If a write would result in 0 bits set or more than 1 bit set,
reject the write.
+ Can not set O/S mode in an Output block that is keylocked.
- MODE_PERMIT:
+ Can never set the IMan bit (bit 6).
- ATT_ACCESS:
+ Any write must be a masked write.
+ Any time there is a write that resets any of the low three bits,
the field device will set the corresponding bits in the TATTLE
byte.
+ Bits 6 and 7 can never be written.
- TATTLE Byte:
+ Bit 6 can never be written from Field Bus.
- FREE_MODE:
+ No constraint.
In addition, the field device will, on its cyclic basis, set ATT_ACCESS, bits 6
and 7, based on the then-current value of ACQUIROR and will generate the actual
mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
bit 7 of ATT_ACCESS is reset but the tattle bit will
automatically be set by the field device. (A human
interface device might provide the user with the option of
always requiring a higher level of authorization to reset
the program attribute bit.)
+ If bit 7 of ATT_ACCESS is set, a human I/F must be at an
access level above "operator" to allow a write to reset the
mode attribute bit. If the human I/F does not support
levels of access, then it can not reset the bit under this
condition.
+ In a directly analogous way, the interface will support the
other two attributes.
+ An operator can not manipulate any of the parameters defined
as being under the tuning attribute if the tuning access bit
is set unless the operator interface is at an access level
above the normal operator access level.
+ An operator can reset the access bit only if the operator
interface is at an access level above the normal operator
access level. When it is reset, the tattle bit will
auttomatically be set by the field device.
+ In a directly analogous way, the interface will support the
other two access bits.
- TATTLE Byte:
+ An operator can not see nor manipulate the tattle bits but a
user with a higher level of access may be able to.
+ No human interface should set bits 0-2 nor bit 7.
- FREE_MODE:
+ Not defined.
--```,``-`-`,,`,,`,`,,`---
+ No constraint
- FREE_MODE:
+ Not defined.
- It is anticipated that a non-cascade control program would have
two modes of operation: one in which it is "powerful"
for initial set-up and one in which it follows more
constraining rules. In the constrained operation, it
should obey the following rules:
+ ATT_ACCESS:
@ Can not manipulate the block set point, output, nor
mode if the program attribute is reset.
@ Can not manipulate tuning constants if the tuning
attribute is reset.
@ Can not manipulate alarm limits if the alarm attribute
is reset.
Each Field device that implements the cascade modes will support a count-out
function. The function will manipulate the actual mode based on the following
general rules (these rules are imbeded in the more complete logic given in
Attachment 1 to the paper "Function Block Structure"):
Note: the following action does NOT cover situations where parameters
change to NaN nor where they have a Bad Value but not No-Com.
No reproduction or networking permitted without license from IHS Not for Resale
84
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
85
Figure 1
ATTRIBUTE /ACCESS LIMITS
Operator Higher Level Control
Normal AL. Hi AL. Configured Programmed
Attrib./Access Bits:
Bit 0, 1, or 2 Attribute 1 1 1 1 1 1 1 1
Bit 3, 4, or 5 - Access 1 1 1 1 1 1 1 1
Bit 7 - ACQUIROR Limited 1 1 1 1 1 1 Any Any 1 1 1
____________________________________________________
Set Attrib/Access Bits:
Bit 0, 1, or 2-Attribute @ ? ? @ @ @ @ ? ? @ @ @ @ ? ? @ ? ?
Bit 3, 4, or 5 _ Access @ @ @ ? ? @ @ @ @ ? ? @ @ ? ? ? ? @
Write Parameters:
Bit 0, 1, or 2-Attribute @ x x @ @ @ @ x x @ @ @ @ @ 2 x 2 2
Bit 3, 4, or 5 _ Access @ @ @ x x @ @ @ @ @ @ @ @ @ @ @ @ @
Clear ACQUIROR @ @ x @ x x @ @ @ @ @ @ x x 2 2 2 2
Non-Zero Write to ACQ. @ @ x @ x x @ @ @ @ @ @ x x 3 3 3 3
________________________________________________________
Symbols: 1 = bit set 2 = only if ACQ. = own value
@ = write permitted 3 = only if ACQ. Is reset
? = redundant x = blocked
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
86
Status Byte
All inputs and outputs of all blocks executing standard algorithms will have
a "status byte" to indicate certain status information about the value. This rule
applies equally to all data types, including analog, discrete, and visible
strings. In addition, certain internal parameters of many standard blocks, such
as the Setpoint, also have status bytes.
It is intended that the individual status bits that are defined for the
status byte be arranged in their bit string exactly as described. The bit string
can be considered an enumeration if desired. Alternately, it can be considered a
bit string and the individual bits can be manipulated. Certain Field Bus
algorithms can do such manipulation.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
This paper includes the following sections:
STATUS BITS
SUMMARY OF BIT FUNCTIONS
CONDENSED STATUS BYTES
GENERATED STATUS BYTES
DETAILED DESCRIPTION OF EACH BIT
CALCULATION OF BITS
Attachment 1 - State Diagram - Bits 5, 4, and 3
Figure 1 - Status State Diagram
Attachment 2 - Remote Handshake
Figure 2 - State Transition Diagram - Transfer Location
Status Byte
STATUS BITS:
The "nicknames", the full names, and the general meanings of the eight status
bits in the status byte are:
bit 0 - "No-Com" = No communication:
The value has a questionable status because the block can not
communicate with the proper source or destination of the value.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
88
the process to the control system inputs, then "down" to the blocks.
3) bit 3 is a special handshaking bit for Remotes or indicates that LO
mode has been set in a cascade.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
When a control structure points an input or output agent to a data value in a
block data base, the agent must generate a status byte for the value since data
base values do not have status bytes. A status byte must also be generated when
the status information is not included in the parameter identified by an agent's
pointer or in an I/O word value written from a higher level device. The
generated status byte will always be the following:
Bit 0 - No-Com - Set if the communication was
unsuccessful, else reset.
1 - Bad - Set if the data value was NaN OR (Set
if the communication was unsuccessful
and the pointer type sets Bad on
No-Com);
ELSE reset.
2 - Override - Set
3 - Special - Reset
4 - Failed - IF "Bad" is set, then
set.
ELSE
reset.
5 - No Path - Set
6 - ATW-h - Reset
7 - ATW-l - Reset
Note that a value that will become the Input 1 of a standard PID block can
not be communicated using this method because the Override information will stop
the PID. Secondly, this type of connection can not exist in a cascade structure
that has a standard PID block "above" the connection because the "No Path" will
stop the PID. Third, the use of a parameter that does not carry status will
effect the handling of NaN and Bad values in the Outputs of some standard
algorithms. Fourth, since the Special bit is always reset, the LO status can not
be carried across such a connection. Finally, control blocks located "above" such
a connection in a cascade or below such a connection in a measurement path can
not warn of failures.
Normal Case:
The set status indicates that the data value does not
contain any element of live process data. A correctly
functioning Input or Output block will reset the bit in the
status byte of its input/output values. The status will be
passed "down" through blocks when appropriate and as
defined by the block algorithm. This information is
primarily set up for the operator but it is also used by
the PID algorithm to stop control action and is available
for the Logic, and Program algorithms to detect "input
override" of discretes.
Note especially that the output blocks will reset this bit
in their "feedback" values.
--```,``-`-`,,`,,`,`,,`---
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
There are two cases where a status bit to serve a special
function is needed. These are totally unrelated and
non-overlapping functions. Initially, all values will have this
bit reset.
- Remote not Invited:
This bit is set in a RCas or ROut transfer
location in a block with an analog Setpoint to
signal the Remote control device that the block is
not ready to accept its input. This function only
applies to the status byte of the RCas and ROut
analog transfer values. The bit is reset by the
secondary algorithm when the RCas or ROut cascade
structure is made up by the secondary.
- LO Set:
This bit is used by blocks in a cascade structure
to exchange information relative to LO mode. I/O
Agents that write block output words to lower
level cascade structures will normally mask this
bit when they write. However, some blocks with a
path to the process will allow themselves to be
placed in LO mode and will set this bit in their
outputs and write it to the output word
destinations. If they do not have a path to the
process, they will reject the LO mode. When a
lower level block that supports LO mode finds the
bit set in its input location, it will set its
mode to LO(x) and:
4 - "Fail" = failed:
This bit will initially be reset in all I/O words except for
cascade locations in output blocks.
In measurement paths:
The bit can flow from input measurements to blocks that
actively fetch the value, optionally through that block,
and on to other blocks that also fetch the value.
In cascade structures:
The bit can flow from an output variable "up" a cascade to
a higher level block that is in a cascade structure with it
(and therefore is pushing its value to the output block).
It can optionally flow through that block, depending on
configuration and the type of block, and further up to
higher level blocks in the cascade structure.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
93
Note that the PID can have a "doubly wound up" state in
which both bits in the Setpoint are set but they are not
set in the Output. Bit 3 does not have to be checked
because the PID algorithm rejects it automatically. Bit
4 does not have to be checked because a failure will
always set the ATW bits.
Bit 3 Set:
When Bit 3 is set due to LO mode, bit 5 drops its normal
meaning and becomes a direction indicator for the source of
the LO mode in the cascade structure. If bit 5 is set, the
LO mode is being passed up the cascade relative to the
point at which the bits are observed. If bit 5 is reset,
the LO mode is being passed down the cascade.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
95
Bit 4 Set:
When Bit 4 is set due to a failure (not due to O/S mode), a
secondary in a cascade will reset bit 5 in the status bytes
of values in a true cascade structure. In this special
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
case, bit 5 drops its normal meaning (or it drops its
--```,``-`-`,,`,,`,`,,`---
6 & 7 - "ATW-h (bit 6) and ATW-l (bit 7)" = Anti-windup hi and low:
Whenever automatic control is implemented, consideration must be
given to the range limits of the manipulated variables, both
internal and external to the control system. In addition to the
range limits of a valve, it is possible that an analog control
cascade can be constrained by a number of factors in the control
structure:
1) failure of one or more function blocks, interblock
communication, or output hardware
2) blocking modes in lower function blocks
3) setpoint limits
4) output limits
5) a disconnected cascade path within a block
Bits 6 and 7 in the status byte are designed to indicate that
further movement in a control structure is limited in the
increasing or decreasing direction or in both directions. When
both of the bits for an analog output are set, the block will
typically go into IMan mode. The situation in which both of
these bits are set is generally referred to as "doubly wound
up".
The block above the final output reads the value back before
execution, adds its own limits (output and set point) and mode
considerations, and transfers the bits to its own set point and
transfer locations (or to the initialized input bits of a Timer
block).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
97
the same time. A direct result of this rule is that two of the
bits can limit the third. For example, if two of the bits are
reset and are wound up high, not only is the third bit known to
be set but it is also wound up low! On the other hand, it is
possible for a bit to be set and wound up hi. If one bit was in
this condition and a second in the set was reset and wound up
hi, the third bit is known to be reset but not necessarily wound
up. These "extra" states for bits 6 and 7 must be set by the
algorithm.
CALCULATION OF BITS:
--```,``-`-`,,`,,`,`,,`---
If the individual function blocks of the Field Bus User Layer are to work
together correctly, the exact meaning of the status bits must be maintained
across Field Bus devices. Therefore, it is required that the logic used to
calculate the status bits follow the logic specified in this Standard.
The values of the status bytes are updated every time a function block
executes. The updating procedure is completely defined in Attachment 1 to the
paper "Function Block Structure". The logic defined there also includes the
updating procedures for the block's mode because the two tasks are related.
There are three blocks that require logic in addition to that shown in the
referenced logic: the Selector, Splitter, and Timer algorithms. The additional
logic is specified as part of the algorithm definitions in a later section of
this Technical Report.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
98
This Attachment contains the explanation of the state diagram for the eight
states of status bits 5, 4, and 3. The diagram is titled "Status State Diagram",
is labeled "Figure 1", and is attached to this paper.
The diagram shows all eight possible states of the three bits during block
operation. There are a total of 9 states shown on the diagram because the state
of the three bits during Out-of-Service mode duplicates one of the operating
states.
BASIS:
The states described are those found in the status byte, bits 5, 4, and 3.
For analog blocks, it is the status of the function block's Setpoint. For
discrete control blocks, it is the status of ANY ONE of the three bits in the
Setpoint. For discrete physical output blocks, it is the status of any one of
the Output bits. In all cases in which the Setpoint is described, the exact same
state of the bits will be found in the Cas transfer location if it is being used.
In all cases in which the Setpoint is described in discrete blocks, the exact
same state of the bits will be found in the RCas transfer location if it is being
used. For analog blocks, the LO state is not passed to the Rcas location: bit 3
takes on its alternate definition as is described in Attachment 3.
In the following discussion, the status byte being described will be referred
to simply as "the Setpoint". It will be assumed that the block containing the
status byte being described is using the full power of the status byte. Namely,
it is an "intermediate" block that can pass LO mode from its secondary to its
primary or vice versa. It is assumed to be configured to request failure
acknowledgement from its primary.
The nine states are shown as boxes. In the upper left corner of each box is
an index number that will be used in this explanation. The states of the three
bits (bits 5, 4, and 3) are shown at the top of each box, bit 5 on the left.
Under each bit (usually only the bits that are set) is a one-word description of
the information conveyed by that bit. Under the dashed line in each box is a
description of the state. In those cases where there are two descriptions, the
system is not able to differentiate between the two conditions.
The boxes are connected by lines with descriptors and arrows. All of the
lines have a large arrow and some of the lines have a small arrow in the opposite
direction. The large arrow is the direction corresponding to the description.
If the transition is reversible, the small arrow is present and indicates that
the reverse transition path corresponds to the inverse of the description. If
the small arrow is not present, then no transition can take place in the
"reverse" direction.
OVERVIEW:
The status bits will be as shown in box 0 when the function block is first
configured - when it starts up in Out-of-Service mode.
Most control blocks will operate in the state shown in box 3 while blocks
that are not outputting to the process will be in the state shown in box 1.
--```,``-`-`,,`,,`,`,,`---
Note that state 1 specifically does not have a path to the process.
Therefore, that state can never be interrupted by an LO mode.
The complexity arises when there is BOTH a failure and an LO mode. These
states, 7 and 8, will be described in detail below.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
BOX 0:
A function block always starts (on "day 1"), in Out-of-Service mode with a
"Null" data base. That data base does not have an algorithm defined so the data
types of the data base are not useful.
When an algorithm type is configured, the logical node will load the "Null"
data base for that algorithm into the function block. The status bytes for the
initial values for that data base will have the bit states shown in box 0.
In this state, the block's requested and actual mode will have their high
order bit (bit 7) set and all other bits reset.
The transitions out of this state are straight forward with two exceptions.
It is possible that a block can transition to an active mode at a time when
communications with the next lower block in the cascade have failed or the lower
block is Out-of-Service. In that case, the transitioning block will not know
that there is actually a configured path to the process; it will transition to
box 2. The effect of this is that the failure lower in the cascade can not be
guaranteed to pass up to a control block that will go into Man mode and cause an
alarm before the failure clears. However, since it is assumed that only a human
will cause a block to transition out of O/S mode, the human is already
interacting with the cascade structure.
BOX 1:
This is the normal state for a Setpoint that is not in a proper cascade
structure. It can rapidly transition in and out of a failure mode: state 1 to
state 2 and back to 1. It can also return to O/S mode (state 0).
BOX 2:
Box 2 is one of three boxes that describe two different possible situations.
First, it can be a failure in a proper cascade structure that has already been
acknowledged. Secondly, it can be a failure in a noncascade structure. There is
no difference between these two states as far as the operation of the function
block is concerned.
Notice that the transition from state 1 to state 2 when a failure occurs can
--```,``-`-`,,`,,`,`,,`---
immediately clear one cycle later and transition back to state 1. However, if
state 3 has a failure, it goes to state 4 and waits for an acknowledgement, then
transitions to state 2 and waits for the failure to clear before returning to
state 3.
State 2 can also transition to state 0 if the block mode is changed to O/S.
BOXES 3, 4, 5, AND 6:
State 3 is the normal state for a Setpoint that is in a proper cascade
structure. During its normal operation, it can be interrupted by a failure, an
LO mode, both of them, or a command to return to O/S mode. For a failure, it
will transition to state 4 and use bit 5 as a handshake indicator to request an
acknowledgement from the block above. The acknowledgement transitions it to
state 2 and the clearing of the failure can then cause a transition back to state
3.
BOX 7:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
101
When there is a block between the pure LO mode block and the output block,
that intermediate block has no way of knowing if the LO mode is flowing up or
down the cascade. It will assume that the LO mode is passing down. It will pass
the LO state down during State 7. It will pass it up only on transition to state
#7. However, it will not clear the LO indication above itself. As a result, a
"LO cascade" with 3 or more blocks can not clear its LO status once it is in
state 7. The transition from state 7 to state 4 can only occur automatically if
there are less than 3 blocks in the LO cascade. This is of academic interest
because state #7 should receive its failed acknowledgement within a few cycles
and transition to state #8. The solution to this "lockup" will be described as
part of the description of box #8.
BOX 8:
In state 8, there is both an acknowledged failure and an LO mode. What is
not known is the source of the LO mode: is it coming from above or below this
point in the cascade?
An output block can determine the source quite simply: either its mode (or
OUTLO for a single discrete bit) is causing it (i.e., it is from "below" the
status byte), or it is flowing down from above. The top block in the structure
can also determine the source equally simply. The problem is a block in the
middle of the cascade. In state #8, a block in the middle of a cascade structure
will leave bit 3 set in its transfer locations and in the Setpoint AND it will
write bit 3 when it writes its Output. It will pass the LO status upward only on
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
transition into state #8 but it will not clear the LO state above itself while it
is in state #8.
The result of this is that a cascade will retain the LO mode status during a
failure and reassert it throughout the cascade structure upon recovery. If the
--```,``-`-`,,`,,`,`,,`---
An operator can clear an LO mode even while the failure exists. If the LO
mode is flowing down, the pure LO mode at the top of the structure must be
cleared. That will clear the structure. If the LO mode is passing up the
structure, the pure LO mode or the keylock at the bottom of the structure must be
cleared. That action will not clear the structure.
Assuming there are no other blocks in the LO cascade that are in keylock or
in pure LO mode, there are two methods of now clearing the cascade structure of
the LO mode. First, the Output block or the first control block above the output
can be changed to O/S mode for one execution cycle of the next higher block.
Second, the top block, or the next to the top block, can be placed into pure LO
mode for a cycle time, then returned to the desired mode.
ALTERNATE IMPLEMENTATIONS:
At the beginning of this paper, the assumption was made that the block
containing the status byte being described supported the passing of LO mode to
both its primary and secondary. If the block can not pass LO to its primary, the
LO mode indication will never appear in the Setpoint status byte.
If it can not pass it to its secondary, the LO indication will never appear
in the status byte of the Output and bit 3 will never be unmasked while writing
the Output status. Thus, states 5 through 8 will never appear.
Also at the beginning of this paper, the assumption was made that the block
containing the status byte being described supported, and was configured for,
failure acknowledgement by the block's primary. If that is not the case, then
states #4 and #7 will not appear in the Setpoint status because the block will
auto-acknowledge a failure and the states will immediately pass to states #2 or
#8.
If both assumptions are reversed, then the Setpoint status can only assume
states 0 through 3. However, the unacknowledged failure and LO status may appear
in the read-back of the Output; they will be acknowledged (for failure) or
rejected (LO status), resulting in states 0 through 4 in the Output.
The PID block is an example of a block for which both assumptions are
reversed. The block will set LO(x) in itself, but it will not accept the LO
status from the block above or below itself. The PID block will not allow the
failure state to be passed to the block above itself. Therefore, states 0
through 3 may appear in the status of the Setpoint and transfer locations. States
0 through 4 may appear in the status of Output Word 0.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
5 Active
0, 0 1 Mode
3
0, 0 0
LO LO Mode Above
- LO, Passing -Normal, With Path
Fail O/S Active Mode
Mode (LO Below) Fail
0, 1, 1 LO Mode Below
7
HS(Bit 4) Failed LO
Failed Valid Path 6 4
1, 0 1 0, 1 0
+LO Passing Up. Fail -Failed, Valid Path.
+LO Passing down. HS(Bit 3), LO
--LO Passing Up. -*** ACK. Now ***
*** Ack. Now *** *
--```,``-`-`,,`,,`,`,,`---
Unfail (LO **
PassingUp) LO Passing Down
LO Passing Up
Remove LO (Limited)
Note:
Acknowledge * HS changes from showing
8
1, 1 1 Direction of source of
HS(Bit 4), Failed, LO LO (passing up = set) to
-+ LO Passing Up. Showing acknowledgement
LO Mode Above + LO Passing Down. of failed state (unack.
= reset).
** Converse of above
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
104
Bits 3, 6, and 7 of the status byte of analog RCas and ROut transfer
locations are used in the handshake between a secondary block that has an analog
Setpoint and its remote primaries through the RCas and ROut transfer locations.
This handshaking procedure is designed to operate without the remote primary
reading or setting the mode of the secondary. This attachment will describe the
operation of the handshake between a secondary with an analog Setpoint and its
primary. Then, the change that is made for blocks with discrete Setpoints will
be explained.
This discussion will be based on a state diagram for the seven states of
status bits 3, 6, and 7. The diagram is titled "State Transition Diagram
Transfer Location Status Byte", is labeled "Figure 2", and is attached to this
paper.
The diagram illustrates the 7 states of a transfer value status byte with
regard to bits 3 (Special) and bits 6 and 7 (ATW-h and ATW-l). There are only 7
states shown on the diagram because one state of the three bits has no assigned
meaning and should never exist.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The diagram applies equally well to either the RCas or the ROut transfer
location. The two locations are totally separate: they can simultaneously
interface with two different remote masters, and they each have their own mode
bits (RCas is bit 1 of the mode byte, ROut is bit 0). The following description
will assume that the RCas transfer location is the one illustrated and that the
secondary block (the owner of the transfer location) is initially in Auto mode
while the remote primary is initially in IMan(Auto).
When the primary finds bit 3 set but bit 6 reset and it is ready to go into
control, it will respond by writing to the RCas transfer location, resetting bit
7. This generates State 3. If it reads its transfer location again before the
secondary executes, it will find bit 3 set, indicating that the cascade is not
--```,``-`-`,,`,,`,`,,`---
made up but it will not have to write the output again because the pattern of
state 3 uniquely indicates it is waiting for the secondary to execute.
Whenever the secondary has a condition that would allow the remote
connection, it monitors the three bits in the transfer location. If it finds bit
3 set and bits 6 and 7 reset, it will know that the remote is ready for control.
At that point, the secondary will clear the mode bits that are higher priority
than RCas, leaving itself in RCas mode (this narrative assumes that ROut did not
get set in the meantime). It then uses the value in the transfer location,
resets bit 3, and adjusts bits 6 and 7 to reflect the current windup state. This
generates one of the States 4, 5, or 6. The remote control block will know that
it is in control because bit 3 is now reset.
State 7 shows the bit status for the condition in which the cascade is forced
into initialization. Here the secondary (the owner of this transfer location)
would be in IMan(RCas) mode while the primary would be in IMan(Auto). When the
secondary executes and initialization is not forced, the condition will revert to
state 4, 5, or 6.
If the mode of the secondary is changed, for example to Auto, the cascade is
broken by the secondary by setting bits 3, 6, and 7. This returns the State
Diagram to State 1.
The Cas transfer location does not need to execute the handshake because Cas
is the first priority below Auto. If a Cas structure is broken, the secondary
block can stay in Cas with a frozen set point just as well as reverting to Auto.
If a RCas or ROut structure is broken, it is necessary that the connection count
out and the mode revert to a higher priority mode. Because of this reverting, it
is necessary that the handshake exist to rebuild the structure automatically.
The handshake for discrete values will work exactly the same as described
above for analog values except that:
a) the "Remote" bit will be in bit 5 of the setpoint value.
b) the ATW-h bit will be in bit 6 of the setpoint value.
c) the ATW-l bit will be in bit 7 of the setpoint value.
d) bit 3 in the status byte of each bit of the setpoint is left
free to carry the LO mode information.
In summary, any remote master can determine the status of its cascade
connection by reading the transfer value and its status byte(s). It never has to
read the mode of the secondary.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
106
Secondary Remote
1 = No Cascade Executes Executes
2 =Cascade Invited
3 = Remote Accepts
4 = Cascade - Wound Up Hi Secondary
5 = Cascade - OK Executes
6 =Cascade -Wound Up Lo
7= Cascade- Initialize
Cascade Initialization Wound-Up Hi
Wound-Up Lo
OK
7 6 5 4
Bit 3 = 0 Bit 3 = 0 Bit 3 = 0 Bit 3 = 0
Bit 6 = 1 Bit 6 = 0 Bit 6 = 0 Bit 6 = 1
Bit 7 = 1 Bit 7 = 1 Bit 7 = 0 Bit 7 = 0
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
107
Agents
The standard algorithms that will operate in Field Bus blocks will have a
defined data base that is accessible on-node and over the Field Bus. When blocks
need to communicate with each other, however, they need the mechanism to
accomplish the communication. In addition, the Cascade structures that are
established between blocks on Field Bus will require a tight handshaking protocol
between them to assure the integrity of the structure.
APPLICATIONS:
For each of the defined input and output connections to a Standard algorithm,
except Input 0, there will normally be a standard agent. Although the algorithm
may specify restrictions on the capabilities of the agent for a particular
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
connection, they will all have the same form. The Input 0 connection is special
because it is sometimes the one that is associated with, and controlled by, the
mode. This structure is defined separately. However, buried within that
structure is a standard agent!
Some of the standard discrete blocks need a large number of input bits, too
many to allow them to be fetched independently. For those blocks, bit strings up
to 16 bits long can be fetched with one agent per string and placed into
"transfer" registers. This can be done either in the block itself or by the
local logical node. Then the ultimate users select bits from the transfer
registers. The string connection is configured using a standard agent while the
selection of individual bits is referred to as being a "bit pointer". The bit
pointers are defined in the paper "Standard Block Functions". This is not to
imply that a standard block agent can not access a single bit; the format for
defining the access of a single bit by a block agent will be defined explicitly
below.
AGENT CLASSES:
There are four classes of agent types:
- Null
- Immediate
- Writeable
- Active
The Null agent is simply a way for the user of the algorithm to indicate that
this particular defined connection is not to be used. For example, the third
input in the Math block may simply not be needed. The "Null" agent essentially
says: "I and my associated connection do not exist".
The Immediate agent is a way to provide a data base item but to block writes
to it. For example, the above Math block may need to have Input #2 supply it
with a value of 40%. Now and forever. The immediate agent allows the example
"40" to be located in the static data base. Alternately, the Output of a block
may be a value that is simply calculated and left in the data base. It is
perfectly valid for any other block or node to read the value but writing to that
location has no meaning and could cause confusion. The immediate agent allows
read access to the value but blocks direct changes to it from outside of the
owning block except for outputs in manual mode.
There are two kinds of "Writeable" agents; they both provide a connection
(passive) for a communication from another structure in the system. They expect
to receive a write. The simple writeable agent simply declares its presence.
The other form actually keeps a count of the number of cycles since the last
write and can "count out" the connection.
Finally, the powerful type of agent, the active agent. This agent type will
have a "pointer" to a data base element or a node's physical input or output and
will read or write from that location each time the block executes. An agent can
read from any tag parameter in the lower half of the parameter number range that
has a suitable data type. An agent can only write from an Output Word and can
not write to an Output Word.
If the pointer leads to an off-logical-node data item, the value read will be
acquired before the block executes. If the action is an off-logical-node write,
the value will be placed in the node's own communication buffers before the block
execution is finished. One tricky part of the definition of the agents is that a
write agent also causes a read-back of its value before the block executes. This
allows the block to receive the feedback status information and confirm the
handshake with its partner during the block execution.
The data base for each agent consists of a portion in the static data base
and a portion in the dynamic data base. A change to the static data base portion
will require that the static data base revision number be incremented.
The static data base portion includes an entry that defines the type of
"Agent". The rest of the static data base portion depends on that configured
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
agent type code. The complete list of static data base items is:
+ AGENT_TYPE_code
+ STATIC_VALUE
+ Pointer:
@ POINT_TAG_Name
@ POINT_PARAMeter
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The dynamic data base portion consists of:
+ Value
+ Revision Number (REV_NUM)
+ No-Communication_Counter (NO_COM)
The first entry in the data base of the "agent" defines the type of agent.
This data element will be an 8-bit unsigned integer value but it can be
considered an enumerated variable by human interfaces. It is located in the
static data base and any change to it will increment the data base revision
number. The low-order bit of many of the agent types will indicate how the agent
will respond to a No-Communication situation - should it just set the No-Com and
Not-from-process status bits or should it set all of No-Com, Bad, Not-from-
process, and Failed?
Two types of agents will need a single value stored in the static data base.
An immediate input agent will use this location to store the actual value
(without status information). The value will be transferred from the static data
base to the dynamic value every block execution. The data type will be the same
as the type of the parameter. The status byte for the value will be generated by
the agent (see "Generating A Missing Status Byte" below). Note that the value of
an immediate Output agent is not stored in the static data base.
The Off-Field Bus agent to be defined below will need a location to store the
identification of the Field Bus to which its communications will be directed.
An active agent needs to know where to access its data. The "pointer" is
simply a data structure that will identify the path name of the piece of data to
which the agent connects. These two data items are also static. The first data
element, the POINT_TAG_Name, will be an ASCII string. The actual value stored
will, in fact, be the original ASCII string entered by the user. The
communication services will build its communication links using the ASCII name.
If the name of the target location or the name in the agent is ever changed, the
communication links will be broken and have to be reestablished using the new
name.
--```,``-`-`,,`,,`,`,,`---
2) a complex structure defined below.
Two particular types of agents will be defined below that support off-Field
Bus pointers. The following requirements on the STATIC_VALUE will apply only to
standard Field Bus devices that support those types of agents:
A higher level device that has not been (can not be) configured to
correctly interpret the data type of this location in this situation
should display the value as BOTH a 4 character (8 bits/character) ASCII
string (right-most 32 bits, right-most character in the lowest order
bits) AND as an 8 character hexadecimal number (i.e., 12345678H) based
on an interpretation of the 32 bits as a 32-bit unsigned integer.
It is important to note that there are two reasons why an agent may be only
partially configured. First, as with all nodes and blocks, the configuration
data is written one parameter at a time and in any order. There is no such thing
as "configuration time" or "download time" from the point of view of the field
device. Second, the handling of the Isolation Timer specifically allows, and
looks for, the configuration of a block point (counted) agent type with a Null
point (see the paper on "Modes", page 15).
The first item in the dynamic data base of an agent is the current actual
data value. The "value" memory location is the actual data item appearing in the
algorithm definition - not a value dedicated to the agent function. The
algorithm definition must provide a data base element for "value"; it can not be
a temporary variable.
Each of the inputs and outputs of an algorithm will have status information.
When a data item is passed between blocks using agents, it's status byte will
usually be carried with it. In addition, an active agent can generate a status
byte for a value that is read without a status byte, for example, a value from
the general data base. There are two forms of this status byte defined: analog
and discrete. The two forms are defined with a common structure and are, in
fact, almost exactly the same.
The two low order bits in the status byte contain information about the
quality of the data. The third bit shows the origin of the data: does the data
element have "roots" in data that has a process connection? The 5 high order
bits describe information about the outputting of data such as antiwindup
information. The status bytes are critical to the correct operation of the
CASCADE structures defined in Field Bus, especially for the ID algorithm. The
status byte is fully defined separately. The exact form of the parameters that
make up the "value" are defined in the paper "Function Block Structure".
One form of agent used for Outputs will keep a revision number that is
incremented every time its value is updated. This revision number can be read
from Field Bus. It is an 8-bit unsigned integer. Four active agent types
support the acquisition of this revision number as part of their structure. Only
the Math and PID algorithms, among the standard algorithms, are users of this
feature. The Math algorithm passes the sum of the revision numbers fetched for
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
its inputs to its Output. In the PID algorithm, the revision number is compared
to the previous revision number and, if different, the PID control proceeds. If
it is not different, the PID algorithm does not proceed but it counts the number
of cycles of continuous "no change" so that corrections can be made to its tuning
--```,``-`-`,,`,,`,`,,`---
constants when a new value finally does appear. The latest value of the
revision number is stored in the agent's "Revision_Number".
There will be three rules associated with the operation of the revision
number. First, the value stored in that location will be initialized to zero
when any function block's algorithm number is changed. Second, the value stored
in that location will be reset to zero any time a function block is set to O/S.
Third, any algorithm that generates the revision number for its Output will use a
procedure for calculating the revision number that will skip the value zero
during the normal progression of the value.
Finally, the system design provides for the ability to survive through a
short term loss of communication. Although the Link Layer protocol provides for
retries in the case of unsuccessful communications, those retries would come over
a very short period of real time. Many types of interference in an industrial
environment may be a short burst in real time but still block communication for
multiple Link Layer attempts. The No-Com counter allows an active agent to
remain over three block cycle times before it's connection is considered lost.
Because of the existence of the No-Com counter mechanism, the time allocated for
the block prefetch does not allow time for Link Layer retries. The types of
agents that can count-out will increment their counter at every block execution
and reset the counter every time the communication is successful. If the counter
exceeds a defined limit, the status of the value will be marked "No-Com" in the
value's status byte. The counter is not accessible over Field Bus.
When considering these rules in the context of non-active agents and transfer
locations, there is a difference between "generating" and "reacting to" a No-Com
situation. For example, a value with its No-Com set may be written into an
inactive agent. The agent will "react" to that situation. On the other hand, an
inactive agent may be able to detect that no value has been written to it for
some period of time - it sets its own No-Com status. In this case, it "generated"
the No-Com situation. The low order bit of the code pertains to reacting to, not
generating, the No-Com situation.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
center table
Note: x = either a 0 or a 1 depending on the desired action
relative to the setting of Bad on No-Com.
* = If the remote parameter has a status byte with bit 0
set, then the agent's No-Com option will be invoked.
If the agent can not access the parameter, the local
value will be marked "Bad" unconditionally.
@ = see above for special handling of this agent type
during access failure.
The above code numbers for the types of agents are based on the following
system:
bit 0 = 1 if "No Com." will set "Bad" and "Fail" (note the
handshake, using status bit 5, defined for CASCADE
structures in the paper on Status Bytes).
1 & 2 = subtype codes
3 = set if writeable
4 = set if an active agent
5 = set if the agent is pointed to an off-block but on
logical node parameter
6 = set if the agent is pointed to an Off-Logical Node
but On-Physical node parameter.
7 = set if the agent is pointed to an off physical
node parameter. Note that "off physical node"
includes both parameters on the same field bus and
parameters not addressable on the immediate Field
Bus as distinguished by the sub-code.
center list
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
and #2 in the Selector algorithm to make a complete CASCADE
structure into those block connections
@ Is the general work-horse used to receive data for
non-initialized inputs.
+ Required Writeable
@ The same as Writeable but the agent indexes the No-Com
counter every cycle. Writes to the agent's value cause the
No-Com counter to be reset. The agent changes the
Value_Status to "No-Com" if the No-Com counter indexes past
a fixed limit; a subsequent write would cause the No-Com
counter to be reset and could deliver a "good" value. The
fixed limit is 32 cycles.
--```,``-`-`,,`,,`,`,,`---
block in the same logical node at the parameter (and the bit
position) given.
@ If the value can not be accessed, the "Bad" status will be
set unconditionally in the local parameter, a configuration
--```,``-`-`,,`,,`,`,,`---
alarm will be set, and the block will be set in O/S mode.
@ If the remote value has a status byte and bit 0 in that
status byte is set, the agent's No-Com option will be
obeyed.
@ Is the general work-horse used to fetch on-node data for
non-initialized inputs.
@ Is the general work-horse used to store on-node Outputs in a
CASCADE structure.
@ The Value can not be written from outside of the local block
unless the agent is serving an Output Word and the local
block is in Man mode.
+ Logical Node Agent with Revision Number
@ Operates the same as the Node Agent except that it is used
only for inputs.
@ If the value can not be accessed, the "Bad" status will be
set unconditionally in the local parameter, a configuration
alarm will be set, and the block will be set in O/S mode.
@ If the remote value has a status byte and bit 0 in that
status byte is set, the agent's No-Com option will be
obeyed.
@ Retrieves, and presents to the algorithm, the revision
number of the parameter as well as the parameter. If the
parameter has no revision number, the block will be put in
O/S mode and the configuration alarm will be set.
@ The Value can not be written from outside of the local
block.
+ Physical Node Agent I/O
@ Identifies a physical node hardware connection point.
@ An agent for a hardware connection will only use the
"Parameter" variable (simply an integer).
@ Two system design rules result in this agent being simple.
First, all standard input and output blocks are defined such
that they interface to 1 and only 1 type of physical
hardware. Thus, for example, the AI algorithm can only
interface to serial input hardware. Second, the instances
of a particular type of hardware must be identified by a
zero based index number. Thus, a hardware agent need only
identify the index.
@ The Value can not be written from outside of the local block
unless:
1) the agent is serving an Output Word and the local
block is in Man mode.
2) the agent is serving a node discrete register. Then,
on-logical node output agents and bit pointers can
write to it.
+ Off-Logical-Node Agent with Revision Number
@ Operates the same as the Off-Logical Node but On-Physical
node agent except that it is used only for inputs.
@ Retrieves, and presents to the algorithm, the revision
number of the parameter as well as the parameter. If the
parameter has no revision number, the block will be put in
O/S mode and the configuration alarm will be set.
@ The Value can not be written from outside of the local
block.
+ Off-Physical-Node Agent
@ the value can be found (or is to be written) on the local
field bus at the tag and parameter (and bit position) given.
@ This form can only exist in a Logical node that "supports
off-physical node agents".
@ Is the general work-horse used to fetch off-physical node
data for non-initialized inputs.
@ Is the general work-horse used to store off-physical node
Outputs in a CASCADE structure.
@ It is assumed but not required that the agent will identify
a peer device on the field bus, not a "master" device.
@ Will optionally set the "Bad" status bit if "No Com." status
bit is set.
@ The Value can not be written from outside of the local block
unless:
1) the agent is serving an Output Word and the local
block is in Man mode.
2) the agent is serving a node discrete register. Then,
on-node output agents and bit pointers can write to
it.
+ Off-Physical-Node Agent with Revision Number
@ Operates the same as the Off-Physical Node Agent except that
it is used only for inputs.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
@ Retrieves, and presents to the algorithm, the revision
number of the parameter as well as the parameter. If the
parameter has no revision number, the block will be put in
O/S mode and the configuration alarm will be set.
@ The Value can not be written from outside of the local
block.
+ Off-Field Bus Agent
@ the value can be found (or is to be written) at the tag and
parameter (and bit position) given but the tag is unknown
to the local Field Bus.
@ This form must exist, and can only exist, in a
physical node that "is part of a complex device". See the
physical node options bit string in the paper "Data Owner
Structure - Hardware".
@ Is the general work-horse used to fetch off-Field Bus data
for voted inputs (two types of algorithms defined in later
papers).
@ It is assumed but not required that the point will identify
a peer device on another field bus, not a "master" device.
@ Will optionally set the "Bad" status bit if "No Com." status
bit is set.
@ The Value can not be written from outside of the local block
unless:
1) the agent is serving an Output Word and the local
block is in Man mode.
2) the agent is serving a node discrete register. Then,
on-node output agents and bit pointers can write to
it.
There are three bits in the logical node's non-time-critical bit string (see
the paper "Data Owner Structure - Logical Nodes", page 26) that specify which
agents are supported/not supported in a logical node:
- logical node supports active agents.
- logical node supports off-physical node agents.
- logical node supports off-Field Bus agents.
There are certain types of agents that can not be used on Output Words - they
will not be supported if the logical node does not support any function blocks
that have non-hardware Input Word agents AND does not support logical node
variables. They will, of course, not be used on Output Words even if they are
supported in the logical node. They are:
- Simple Writeable
- Required Writeable
- Active Block Agent (counted)
- Active Logical Node Agent with Revision Number
- Active Off-Logical-Node Agent with Revision Number
- Active Off-Physical-Node Agent with Revision Number
- Active Off-Field Bus Agent with Revision Number
The "Physical Node I/O" active agent is only used to connect to physical
hardware. If a logical node does not support any function blocks that can
connect to hardware, then this type of agent will not be supported. It will
never be used on a Logical Node variable nor on a block agent that is not
specifically identified as a physical connection point.
There are three bits in the logical node's time-critical options bit string
(see the paper "Data Owner Structure - Logical Nodes", page 25) that specify
which logical node variables are supported in a logical node. These variables
each will have an agent. These agents will never support, and therefore do not
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
require a Logical Node to support, "Immediate with Status Reset", Active "On-
Block", Active "On-Block Counted", nor "Physical Node
I/O" types of agents.
A logical node that does not have any function blocks in classes 2 or 3 will
not support active agents that have revision numbers but will support the
"Immediate with Revision Number" type. Likewise, a logical node that does not
have any function blocks in class 1 will not support the "Immediate with Revision
Number" type but will support the active agents with revision numbers if they
have not been eliminated by one of the above rules.
All agent types that have NOT BEEN ELIMINATED by one of the above rules WILL
BE SUPPORTED in a Standard logical node, for BOTH the logical node variables and
the function block I/O words.
--```,``-`-`,,`,,`,`,,`---
that are needed for the transfer locations. These options are controlled by the
agent type configured for Input #0. All three transfer locations will be
controlled by the configuration of the Input #0 agent.
Since Input #0 will be useful for the transfer locations as well as for Input
#0, there will be situations in which Input #0 has an agent type defined but,
since there is no need for the Cas input, there is no other information. This
must be allowed. In this situation, the Cas mode can simply be marked "not
permitted" to avoid any problems.
If the Input #0 agent has its low order bit set, then the mode change logic
will know that, when a transfer location mode sheds due to a count out, the shed
mode should be made permanent by writing it to the requested mode.
An active agent for a parameter with an analog data type will convert the
value of the addressed parameter to the data type of the agent's own parameter
(and vice. versa for writes). The block algorithm will define which one of 2
analog data types will be supported for the agent's own value: 16 bit signed
integer or 32 bit floating point.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
118
The data type of the addressed parameter can be a 16 bit integer (signed or
unsigned), a 32 bit floating point, an enumeration, or a bit string. The active
agent will convert between 16 bit integer and 32 bit floating point as necessary.
It will interpret an enumeration or a bit string as a positive integer. The
following table indicates the error handling:
1) For any read operation (for both Input and Output Word local
parameters):
If the conversion can not be made because the remote value is too
large, the local parameter value will be left unaltered but its
status will still be copied. In addition, the local status byte
will be forced to "Bad" and "Not-from-process" (independent of the
No-Com option in the agent type). This action will cause a "Bad"
Input (Output) Word" alarm in the local block.
2) For a write operation:
If the conversion can not be made because the local value is too
large or because it is negative, the local and remote parameter
values will be left unaltered. The status byte of the local
parameter will be used as the basis for a masked write message to
the status byte of the remote variable. However, bits 1 ("Bad")
and 2 ("Not-from-process") will be set in the status byte in the
message (not in the local status byte) before the write message is
sent. If the agent is configured to mark the local value "Bad" for
"No-Com", then the local status byte will be set to "Bad" (NOT to
"No-Com"). In addition, the configuration alarm for the local
block will be set and will not be turned off even if the condition
recovers. The alarm will only be cleared when the block is set to
O/S mode.
On the other hand, most of the discrete algorithms have 16 bit "transfer
registers" defined for their block I/O. The agents for these words will need to
be able to point to 16 bit binary values that may have a status byte for each
bit. Note that within the discrete blocks, the "bit" pointers defined in the
paper "Standard Block Functions" can access the individual bits.
A type 0 active agent will have the same form as an analog agent:
Tag.Parameter
where "Parameter" is an integer that defines the parameter's code number
(with a value <= 32,767 and the high order bit always reset).
The option to i
nvert the value bits requires, as shown above, that the two wind-up bits be
exchanged in order to retain their meaning. If this type of agent is used for an
Output word, the agent will invert the value before it is written, again
exchanging status bits 6 and 7.
The bits in the status bytes are in three sets. Bits 0 and 1 are
carrying information about the validity of the immediate communication
and about the "goodness" of the data value. The bits are reset if the
data is "good". Clearly, these need to be generated as reset if the
--```,``-`-`,,`,,`,`,,`---
communication is valid and the data base value is not "NaN". If the
agent can not communicate with the remote parameter, then bit 0 in the
status byte will be set and bit 1 will also be set (the last action is
sometimes optional - see details above). If the data base item has a
value of NaN, then bit 1 in the status byte will be set.
Bits 3-7 are carrying information from hardware output blocks back
to control blocks. Bit 3 is a special bit for Remote cascades and LO
indication. It does not have meaning in other situations. This bit
should be reset. Bit 4 is set to indicate a hardware failure somewhere
in the structure. No - leave this reset. Bit 5 indicates that this is
not an initializable structure to the process. Since no data base
element without a status byte can be in an initializable structure, this
bit should be set. Finally, bits 6 and 7 are the windup bits: they are
set to indicate that the value can not be moved up (ATW-h) or down
(ATW-l). These should always be left reset or the block will not be
able to move the value.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
120
do not have status bytes. This will be true for simple reads and for
the read-back of outputs. This service will not be explicitly called
out in the following description: it is implied.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
"Generating A Missing Status Byte" above). If "Parameter" consists of a bit
string value with a condensed status byte, the condensed status byte will be used
for all of the bits reported.
An agent will never read nor write a value that is marked "Bad" or a floating
--```,``-`-`,,`,,`,`,,`---
point number that is NaN. In these cases, the previously existing value in the
receiving location will be left unaltered but the status byte will be written.
In addition, the receiving location's status byte will be forced to have bit 1
("Bad") and bit 2 ("Not-from-process") set. Note that the value of NaN should
have forced both of those bits to be set in its accompanying status byte already.
The Attachment to this paper and its Figure define the logic that is to be
executed by the discrete agent as it places the value(s) and status byte(s) of
the remote parameter into the value and status byte(s) of the local parameter.
The discrete agent will not allow a floating point number, a signed integer,
nor an ASCII string to be addressed as a parameter but it will allow any other
data type. Note that the status byte of any one of the restricted data types can
be addressed.
The discrete agent can not access the value of a single bit of the status
byte of a selected bit in a bit string with a length greater than one.
Off-Field Bus reads will only be done in physical nodes that "are
part of a complex device" (see bit 0 in the physical node options bit
string described in the paper "Data Owner Structure - Hardware"). All
other devices will issue a configuration alarm and set the offending
block to O/S mode if a block has an agent of the Off-Field Bus type.
The following description is for the block I/O words. The logical
node variables will be handled in a manner that is exactly analogous to
the block Output words.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
be done at any time but the read must be done just before
the block executes but the block WILL execute on
schedule.
On-node fetching will not occur at the prefetch time so that the
output of one control block in a node can be chained to the next control
block in that same node using the most recent value.
When block execution starts, the agent service will check, within
the first 10% of the block's time period, to see if the prefetches have
been successful. Refer to the paper "Function Block Structure" for
the details of the logic given in general terms here.
Inputs: The active agents will execute the functional equivalent of the
following general logic:
IF the read was successful, then
reset a counter.
Increment the counter every cycle.
IF the read was unsuccessful, then
do not alter the local parameter's value, status
byte, nor revision number.
IF the counter goes over 3, then
set the Not-From-Process status bit.
optionally,
set the Bad status bit.
set the Failed status bit.
reset the No-Path bit.
--```,``-`-`,,`,,`,`,,`---
Outputs: The active agents will execute the functional equivalent of the
following logic:
(read service)
set a flag.
IF the read was successful, then
reset the flag.
ELSE
do not alter the local parameter's value,
status byte, nor revision number.
ENDIF.
(write service)
index a successful write counter.
IF the write was successful, then
reset the counter.
(check service just before next read)
IF [the flag is set OR the counter is > 0, then
increment the No-Com counter.
ELSE
reset the No-Com counter.
IF the No-Com counter > 3, then
set the No-Com status bit (Bit 0).
set the Not-from-Process status bit (Bit 2).
IF the agent is configured for it, then
set the Bad status bit (Bit 1).
set the Failed status bit (Bit 4).
reset the No-Path bit (Bit 5).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Agent Service As Part Of Block Execution (Start Of Block):
At the beginning of the execution of any control block, the agent
for each value must be serviced:
Fetch the value and its status. Operation will be the same as
for an off-logical node fetch except there is no counter and the
inability to communicate unconditionally sets status bits 0, 1, 2,
and 4, resets status bit 5, and sets a configuration alarm. If the
value can not be read, set the status byte immediately. See the
description for the off-node prefetch action above.
The block agent (counted) agents can take advantage of the No-Com
counters for the transfer locations and for any of the Input and
Output Word locations. Such an agent can be pointed to one of
these on-block locations. The block agent (counted) agent will
execute the following logic:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
All service is done in the prefetch logic.
At the end of the execution of any control block, the agent for
each Output must be serviced again:
- For Immediate and Writeable agents and all Input Word agents:
No action needed.
Write the value and its status with status bits 3-7 (normally)
masked off.
Before the end of the execution of a block, the Value (and the
Value_Status byte if necessary) for each Output with an off-logical
node agent must be placed in the Field Bus Communication buffer or
passed to the "complex device interface" (see the paper "Data Owner
Structure - Hardware) but the communication(s) need not be
accomplished. The agent service will normally write the value and
its status with status bits 3-7 masked off.
Off node agents have the same two cases in which bits 3 or 5
may have to be written as are given above.
The value status byte will normally only exist for control
input or output values, transfer locations, and for Setpoints.
However, there are a few additional data base items that are
defined with status bytes. (See the paper "Array of Standard Block
Parameters".) If the status byte does not exist for the value
pointed to:
- only the value is written.
- if an analog output value to be written is marked "Bad" but
the value itself is not "NaN", then the write will not take
place.
- a bit that is marked Bad will be masked off while writing
discrete Output words.
- if a write is not done because there is no modified but
not Bad data, the completion code will be reset.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
126
The basis for the read logic is that an active agent (other than a physical
node I/O type) has been configured by the user for an I/O word that has a
discrete data type. A value has been fetched and is to be placed into the local
parameter. This paper will refer to the data that is to be written into the
local parameter's value as the "data".
The agent must analyze the parameter definition and data type for both the
local and remote parameters in order to correctly handle the agent function.
The logic diagram has an "Error" exit. When a logic path leads to that exit,
the local block will be set to O/S mode and a configuration error notification
will be issued. Note that this path can only be encountered on the first
execution after being in O/S mode or if the algorithm number of the remote tag is
changed.
The last section of this attachment will discuss the logic used by an active
agent that must write a local parameter's value into a remote parameter. The
Figure does not include that logic.
--```,``-`-`,,`,,`,`,,`---
WRITING OF THE DISCRETE VALUE
Masking
Mode
Selected Bit Plus Status
Output Word 0 To Cas Transfer Location
Figure 1 - Discrete Active Agent Logic
PARAMETER NOTATION:
All accessible data base values with status information will have parameter
code numbers in a particular "well known" range. Each value will be assigned 4
consecutive numbers in that range, starting with a code number whose hex
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
representation has its two low order bits reset. That code number will be called
"x", exactly as is done in the "Application Support Services Interface" and
"Function Block Structure" papers except in those papers it is called "z".
The version of the value addressed by parameter x will not have any status
information. The version addressed by (x+1) will have 1 byte of status
information. In the case of discrete values, that 1 byte is the "condensed"
status for the full string.
The parameter code (x+2) will address only the single status byte itself, NOT
the value - the status BECOMES the value to the other partner in the
communication.
Discrete (but not scalar) values will be addressable using (x+3). This will
be the value of the bit string plus its full array of status bytes.
SP-50 User Layer Technical Report Agents Attach Discrete Agent Logic
In the attached Figure, the notations x, (x+1), (x+2), and (x+3) are used to
conserve space. The case shown for x also describes discrete values that do not
have status information at all.
The following discussion of the logic will start in the upper left corner of
the attached Figure.
Data Type:
The first step of the logic is to confirm that the remote data is
of a data type that can be converted to discrete. In this context,
"discrete" can refer to an 8 or 16 bit unsigned integer, a bit string,
or an enumeration. If this is not the case, then the block should issue
a configuration error notification and set O/S mode.
Type 0 Agent:
If the agent is type 0, then data bit 0 (and its status byte) will
be placed in the low-order bit of the local parameter's value (and its
status byte). The succeeding data bits (and their status bytes) will be
placed in the succeeding bits (and status bytes) of the local
parameter's value until there are no more bits in either the local
parameter or in the data. Any remaining bits in the local parameter's
value (and their status bytes) will be left unaltered. Any remaining
bits (and status bytes) in the data will be ignored.
participate in a CASCADE.
SP-50 User Layer Technical Report Agents Attach Discrete Agent Logic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
128
If this special case exists, the status bytes for value bits 5-7
will be set to the default value. Bits 8 - CH will be loaded with the
Failed bit from the status bytes of Bits 0 - 5. The status bytes of
Bits 8 - CH will be set to the default value. The values and status of
Bits DH - FH will be left unchanged.
This description of the logic now returns to the step in which the agent type
was tested; the logic for type 1 agents will be described.
Type 1 Agent:
The first step for type 1 agents is a check of the configuration
validity. A type 1 agent contains an indicator of the bit number in the
remote value that is to be loaded into bit 0 of the local parameter.
The bit number can not be larger than the length of the (remote) data.
If it is, the error exit is taken.
The next step is to invert the data bits if required by the agent's
configuration. If any data bit is inverted, then bits 6 and 7 in that
data bit's status value must be switched to retain their meaning.
The logic is split at this point between data types x and (x+2) on
the one hand and types (x+1) and (x+3) on the other. Note that the
first pair either did not, or effectively did not, have any status
information. In the case of x, it was just not there. In the case of
(x+2), the only information was the status byte but it has essentially
changed to being the data value itself and it, in turn, did not have
status information. These statements are in the past tense because
prior logic has assigned default status bytes to them.
The data values that had a status byte and are being processed by a
type 1 agent will be placed into the discrete value in such a way that a
selected bit is loaded into bit 0 of the local variable and the status
information for that selected bit is loaded into the value bits of the
local variable in bits 8 - FH. This can only be done if the local value
is at least 16 bits long. Therefore, a check is done and the processing
is diverted back to the other path if the local value is short.
Following this check, the data types with status values and a type
1 agent are loaded into the local value. The value of the selected bit
in the data is loaded into the value of bit 0 in the local variable and
its status byte is loaded into bit 0's status byte. Then the bits
following the selected bit, in order, are loaded, along with their
status information, into the succeeding bit positions. The process
stops when the data is exhausted or local bit 7 is loaded. Bits and
their status information contained in bit positions that were not
included will be left unchanged. Finally, the status byte for the
SP-50 User Layer Technical Report Agents Attach Discrete Agent Logic
selected bit (now already loaded into bit 0 of the local variable) will
be written into the local variable's data bits in bit positions 8 - FH.
The status bytes for these bits will be loaded with the default status
byte.
Masking:
Whenever a discrete output word is written by its agent, the write
will be done using a mask for the data bits if any bits in the value
were not addressed by the configuration of the block and a mask for the
status bytes (if present in the receiving parameter).
The status byte mask will always mask off status bits 0 and 3
through 7 (unless bit 3 must pass down LO mode or bit 5 must be set as
part of the LO mode/failure handshake). Bits 1 and 2 will always be
unmasked if the value is being written.
Mode:
The mode of a block exists as two separate bytes in each function
block: the static mode and the dynamic mode (see the paper "Block
Modes"). The dynamic mode word defines the complete current mode of the
block but it can not be written; the static mode can be read and written
but it only defines the single low-priority mode. Therefore, a special
service will be provided for discrete algorithm Output Words that point
to the dynamic mode. The agent will fetch the dynamic mode and write
the static mode!
@ Reset bits 6&7 (IMan, O/S) in both the value and the mask.
SP-50 User Layer Technical Report Agents Attach Discrete Agent Logic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
130
@ Reset the value and mask bit for all mode bits higher in
priority than the lowest priority set bit.
- IF the final discrete register has 1 and only 1 of the first 8
bits set
AND if there is at least one mask bit set.
THEN write all 8 low order bits (with no masking) to the
static mode parameter of the block identified in the agent.
The agent, while writing in this special case, will never change
bits 5-7 nor their status bytes in the value of Output Word 0. The
agent will generate alternate data for these bits for the write message
--```,``-`-`,,`,,`,`,,`---
when and as needed. In addition, the agent, while writing, will ignore,
and leave unchanged, the data (and their status information) in bits 8 -
FH in the Output word.
The agent will always use a masked write and will always set the
mask bits so that value bits 5 and 6 (and their status bytes) are NOT
written.
SP-50 User Layer Technical Report Agents Attach Discrete Agent Logic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
131
--```,``-`-`,,`,,`,`,,`---
Byte for each bit. Configured
X+2
Yes Remote
Data? Bit string = data;
Yes Use full status TypeNo
Data No
Byte array. 0
Type =
Agent?
X or
Symbols: (x+2)
No Remote Load the Value and Yes
Parameter Types: ?
X= no status info. Parameter Status of Data bit 0 Yes
= Cas Into Local Bit 0, then
X+1 = cond. Status Transfer
X+2 = cond. Status Loc? The Same for the
Only Yes Succeeding Bits.
No Local
X+3 =value plus
Full status Parameter
No Local Load Set. Bit Of Data, Length >15
Array. w/Status, into Bit 0 of
Parameter Bits?
Value and continue With Yes
Agent Types: = Output succeeding Data to fill Rest
Type 0 = high order Word 0? of Value.
bit reset Load set bit of
Yes
Type 1 = high order Data,
bit set w/Status, into
Use Bits 5-7 Of The Cas Bit 0 of value,
Transfer Location in the continue till
Set Bits 6 & 7 Bit 7; Bit 0's
Handshake as per
In Status Bytes of Done Status in 8
"Status Byte" Paper. Set
value Bits 0-4 if FH+ default
their Status to Default.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Agents Attach Discrete Agent Logic
FUNCTION BLOCK
Mode
Input Output
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Agents Algorithm Agents
Data
This paper will describe the basic structure of function blocks. The
detailed definitions of each Standard function block, along with the definitions
of Generic and Open blocks, will be given in the "Function Blocks" portion of
this Technical Report. This paper will also describe how the function blocks
will operate together in a "cascade structure", passing information in both
directions over a single configured connection. The first Attachment to this
paper will detail the logic to be used for setting the block's mode and the
status information for the Input Words, Output Words, Setpoint, and the Output
variable (the last for discrete blocks only). The second Attachment will define
a "fast initialization" scheme that may optionally be included in a logical
node's processing cycle.
OVERVIEW:
A function block is modeled as having the following structural elements:
1) one or more "Inputs"
2) a data base
3) an algorithm
4) one or more "Outputs"
The block is "processed" according to some schedule or as the result of some
event. At that time, the block will calculate a new version of its Output(s)
based on the latest values of its Input(s), using its algorithm. The algorithm
will obtain configuration information and static data from its data base and may
store both externally accessible and internal dynamic data in its data base.
One class of function blocks can connect to physical inputs or outputs that
are a part of the physical node - the "hardware" connections. For example, an
analog input block will be configured to connect to a particular "scalar input"
in the physical node - that physical hardware becomes the Input for that block.
The output of the analog input block will be the value of the analog input
signal, in engineering units. Other blocks are defined to handle other types of
input signals and to control output hardware.
When the Field Bus function blocks are used as part of a control system, they
must exchange data, in an organized way, with other function blocks and with
higher level control entities. Many times, the data is simply made available for
reading by the data consumer. For example, an analog input block simply makes
it's output available for reading.
Data can be written to, or read from, a function block using the services
described in the paper "Application Support Services Interface". Reads and
"indirect" writes of a block's inputs, outputs, and data base values may take
place independent of the function block and, in fact, without the knowledge of
the block.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\
134
The referenced paper also describes "direct" and "subscriber" reads and
direct writes. These services can be used by function blocks to assess data in
other peer function blocks or they can be used by the higher level control
system. These services provide some information to the service requestor that
the operation has taken place - normally in the form of a "completion" counter.
Based on the change in the counter's value, the requestor can determine that the
information exchange took place successfully.
All function blocks must support the "Mode" parameter - see the paper "Block
Modes". All function blocks must support the O/S mode and all but the "Null"
algorithm will support at least one other (operating) mode. Some Standard
function blocks support all 8 modes defined in the referenced paper.
For many of the function blocks, the above structures and communication
services are sufficient for operation. All further details are to be found in
the individual algorithm descriptions.
There are many times when a much tighter association of the data producer and
consumer must be accomplished, with a control value and its status moving to the
consumer and status information being passed back to the producer. In the Field
--```,``-`-`,,`,,`,`,,`---
Bus design, this tighter association is called a "cascade structure" or just
"cascade". See the Appendix paper "Block Structure for Cascading" for a
description of the difference between a cascade structure and Cas mode.
The cascade structure is spoken of as having a "top" and a "bottom". The top
is the highest level primary control block in the structure. The bottom is the
function block that controls the physical output to the process. See the
Appendix paper "Fundamental Control Structure" for a description of this concept
and notation.
Other control function blocks have been designed with the same general
structure, retaining the name "Setpoint" for one of the inputs even though that
parameter is not strictly a "target" according to the algorithm of the block.
Some of the Standard function blocks in Field Bus can accept up to three
different signals, one of which will be selected as the Setpoint depending on the
mode of the block. The Setpoint is passed to the block's algorithm, along with
other block inputs, and the algorithm produces one or more output signals. One
or two of those output signals may be the continuation of the cascade path toward
the ultimate output(s) to the controlled process. The algorithm may allow a
higher level signal to be selected in preference to one of the calculated outputs
under the control of the mode.
The Field Bus system is designed to pass certain information back "up" the
cascade. This is done using some of the bits in the status bytes associated with
the function block inputs and outputs. The information that is passed up the
cascade includes indication of:
- lower level failures.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
If the block is configured to be part of a cascade structure but below the
primary, one or more of the following additional functions must be configured
into the control scheme:
- another function block must write to the "Cas transfer location".
- a higher level control entity must write to the "RCas transfer
location".
- a higher level control entity must write to the "ROut transfer
location".
- a few Standard function blocks specify special input cascade
structures: if they exist, a higher level control entity must write to
them.
It is required that the configuration be arranged such that only one entity
may write to any one of the inputs or transfer locations. There is no check that
can be done by the function block itself to ensure conformance with this rule.
Analog:
An analog function block will typically have an "Input #0" agent.
That agent will include a pointer to the source of the input. If the
Cas transfer location is to be used (and if Cas mode is to connect a
cascade), the pointer must point to the Cas transfer location. The
Input #0 location can not be used simultaneously.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Setpoint. In Cas mode, the cascade is connected through the Cas
transfer location. In RCas mode, the cascade is connected through the
RCas transfer location. The selected value is moved into the Setpoint
--```,``-`-`,,`,,`,`,,`---
value. The values in the transfer locations must have been written by
the higher level entity - they can not be fetched by this block.
Discrete:
If the block is a discrete block, then the ROut location is never
supported. All of the rest of the generalized structure is the same.
DATA TYPES:
The data structures for the transfer locations and the setpoints are
illustrated in Figure 2.
In an analog block, the transfer locations, Cas, RCas, and ROut, will have
provision for:
1) the 32 bit floating point value.
2) the 8 bit status byte for the value.
3) a direct write update counter (see page 20 of the paper "Application
Support Services Interface").
4) a counter, called TRANSFER_VOID, to be used by the owning block as
described below.
The Setpoint in an analog block will have provision for the 32 bit floating
point value and its 8 bit status.
In a discrete block, the transfer locations, Cas and RCas, will have
provision for:
1) the 8 bit binary string value.
2) five status bytes associated with the low order 5 bits in the value.
3) a direct write update counter as above.
4) TRANSFER_VOID, as above.
The Setpoint in a discrete block will consist of the 8 bit binary string plus
the 5 status bytes for the low order 5 bits in the value.
In both an analog and a discrete block, there will be only one parameter name
for each of the Cas, RCas, and ROut transfer locations. The 32 (or 8) bit value
can not be addressed alone. The status byte (for analog, all 5 status bytes for
discrete) must always be included in any read or write communication. The direct
write counter and TRANSFER_VOID are not accessible from Field Bus.
Extended Bits:
The basic definition of the discrete Setpoint value uses three bits
for the value bit string. This follows directly from the chosen
complexity of the Standard function blocks. There certainly are other,
more complex functions that might be included as Extended or Generic
function blocks. They would need more than three bits to describe their
Setpoint value.
Bit 3 Duality:
The basic definition of the status byte uses bit 3 to indicate that
LO mode is set in the cascade structure. This mechanism is used to
carry the LO information up or down a cascade structure so that the mode
can be correctly displayed in all of the blocks in the cascade.
--```,``-`-`,,`,,`,`,,`---
Remote Handshake:
The request for a remote connection requires a response handshake.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
This handshake was incorporated into the analog cascade using undefined
states of bits 3, 6, and 7.
The analog procedure could not be used directly for discrete values
because the discrete value has multiple status bytes. If any one of the
discrete status bytes was chosen to carry out the handshake, problems
would be encountered when that particular bit was not allowed to change
in the cascade. Therefore, two other bits were needed for the
handshake.
Finally, bits 6 and 7 are reserved for the remote handshake and
secondary block mode indication. They are to be used by the handshake
exactly as are bits 6 and 7 in the analog status byte. In addition,
they will both be set if the secondary block can not currently accept a
--```,``-`-`,,`,,`,`,,`---
Setpoint. However, they will not convey individual bit wound-up high or
low information.
HOLD_PATH:
The combination of the design of the status bytes and the analog Function
blocks results in a situation where the block must set the path status bit in the
ROut and/or RCas status bytes but there is no basis for the information. There
are two alternative solutions: default to set or set up a "memory" variable.
The latter will be done in Standard blocks.
In each Standard analog function block that supports ROut and/or Rcas and a
cascade structure below itself, there will be a logical variable called
"HOLD_PATH". This variable will not be accessible from Field Bus but it will be
referenced by other papers in this Technical Report (for example, see page 10 of
Attachment 2 to this paper). This variable will be associated with Output Word
#0.
The value of HOLD_PATH will be updated any time that bits 5-3 of the status
byte of Output Word #0 has one of two values. At any other time, the value of
HOLD_PATH will simply be retained. One of the two values is expected to be
present the vast majority of the time. When bits 5-3 equal 000B, they are
indicating 1) a path exists, 2) not failed, and 3) not LO mode: reset HOLD_PATH.
When bits 5-3 equal 100B, they are indicating 1) no path, 2) not failed, and 3)
not LO mode: set HOLD_PATH = 1. Refer to Figure 1 of Attachment 1 of the paper
"Status Byte" for a description of these and the other states of these status
bits.
The following will give an example of how HOLD_PATH will be used. When an LO
mode is passed "up" in an analog cascade, the information is not set into the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ROut status byte. However, the path information normally carried up to the block
by bit 5 is not available because bit 5 is used as a handshake with bit 3 to show
the direction of the passage of the LO. Since bit 3 in the ROut status byte is
used for the remote handshake, bit 5 of the ROut status byte is left free to
carry the path information. What value is to be placed there? The value in
HOLD_PATH.
Notice that this approximation (or exact but out of date) information will
have an affect on the human interface display information but not on control of
the process. Any time that HOLD_PATH is used, there will be either an LO mode or
a failure downstream of the block and both wind-up bits will be set, blocking all
control action anyway.
associated with their value. The separate paper "Status Bytes" explains the
information content of these status bytes. This paper is only concerned with the
reading and writing of them.
The parameters with status bytes that are defined in Standard Function blocks
can be grouped based on data type. Parameters with status bytes can have one of
two different data types: 32 bit floating point numbers and string variables
having up to 16 bits in the string. The former has a single 8 bit status byte.
The latter has an 8 bit status byte for each of the bits in the string. In
addition, the latter data type has a "condensed" status byte that is the
transverse Boolean "OR" of the individual status bytes. The condensed status
byte is included for applications that will find use for the condensed status
byte but can not justify the communication load of the full status byte array.
Function blocks may be designed to handle bit strings with a length of less
than 16 bits. However, in order to maintain interoperability, the parameter (and
buffer) locations that are involved in receiving direct writes and cyclic reads
must be able to handle the full 16 bit strings. Therefore, the following
descriptions not only quote the length of "16" but the locations being referenced
must support the full 16 bits. It also must follow the rules given below for
parameter manipulation so that it can be an intermediate handler of the full-
width parameters.
The actual operation of the function block may, depending on its definition,
use less than the full 16 bits. When it does, it MUST use the bits IN ORDER
starting with the low order bit.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
there is a "local variable", not addressable over Field Bus, that is yet
another instance of the same floating point value, again with a status
byte, but without an update counter. The local variable is used to
define the required functionality; any implementation that achieves the
same functionality is acceptable. Of course, the bus addressable
parameters MUST be as defined as viewed from the bus.
The design of the Field Bus User Layer requires that the capability
--```,``-`-`,,`,,`,`,,`---
The bit string variable is more complicated than the floating point
variable because of the expanded status byte version of the number that
must be maintained. Parameter (z+3) will be the string plus the
individual status bytes.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
141
--```,``-`-`,,`,,`,`,,`---
may dictate special action.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
source of any necessary direct writes.
Attachment 1 to this paper gives a detailed definition of the logic that will
be used to update the status information for certain of the values in an
individual block at each of its executions. Again, individual function block
definitions may modify those rules or offer the user the option to do so. In
addition, there are two Standard blocks that have unique structures and are not
considered by Attachment 1 - the Selector and Splitter analog Standard blocks.
The logic for those two blocks will be defined by the individual block.
The peer block will prefetch the value and status of the Cas
transfer location before it executes. After execution, it will use a
"direct write" (see the paper "Application Support Services Interface")
to write the (Cas) Setpoint value and status byte but it will normally
mask bits 3 through 7 of all status bytes. If the value being
transferred is discrete, then bits 5-7 in the value will normally be
masked as well.
If the peer block finds bits 6 and 7 of the status byte (if
analog, bits 6 and 7 of the value if discrete) both set, then it will
still write a value and status to the Cas transfer location but it will
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
144
If the peer block finds status bits 5&4 in the Cas transfer
location = 01B, it will know to activate the failure handshake procedure
explained in Attachment 1 to the paper "Status Byte". In that
procedure, the peer block will have to actually write to status bit 5.
That is the only time that the peer block will unmask bit 5 and it will
only do it when the bit must be manipulated as indicated by the
prefetched readback of the transfer location.
Note that a secondary block that can pass failure up the cascade
will pass the failure indication to cascade connections that are not in
control at the time of the failure. However, it will set bits 5&4 =
11B. This indicates that the failure has already been acknowledged; the
primary does not have to execute the handshake procedure and should not
set a failure alert.
Except for the remote handshake and the LO mode indication, the
remote block will interact with the RCas location exactly as defined
above for the peer block and the Cas location.
The remote block will interact with the ROut location exactly as
defined above for the remote block and the RCas location except, of
course, the value being transferred is the secondary's output, not its
Setpoint.
2.
If the owner finds that the No-Com bit was written as set, it will
set Bad and Not-from-Process and reset the No-Com bit. However, if the
transfer location counts out (see the paper "Application Support
Services Interface"), the owner will set the No-Com and Not-from-Process
bits and adjust the mode of its own block as defined in Attachment 1 to
the paper "Function Block Structure".
When the owner block is not accepting the value of the Setpoint or
Output that is being passed down to a transfer location, it must execute
certain operations to ensure that the higher block receives the correct
value for initialization. This is accomplished using the counter
introduced above, called "TRANSFER_VOID". In addition, the owner will
set bit 2 (Not-from-Process) in the status byte.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
owner analog block is in an actual mode of higher priority than Man or
any time that an Output Word #0 is written by the Data Base Write
Service to an analog block, the written value will also be written to
the ROut transfer location, bit 2 (Not-from-Process) in the status bytes
of the transfer locations will be set, and TRANSFER_VOID for the ROut
location will be set to a value of 2.
At each execution of the owner block, and before the owner block
changes the values of its Setpoint or Output remaining from the last
cycle, it will perform the following operations on each of these
locations:
IF the transfer location's direct write counter indicates that a
new value was written, then
IF TRANSFER_VOID > 0, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Decrement TRANSFER_VOID.
copy the value in the Setpoint (or Output) to the value
in the transfer location.
set bit 2 in the status byte of the transfer location.
Ensure that bits 6 and 7 in the status byte (analog,
status bytes and value for discretes) of the
transfer location are both set.
The owner block will manipulate status bits 5-3 in the Cas transfer
location and in discrete status bytes in RCas as defined in Attachment 1
to the paper "Status Byte". An analog owner block will similarly
manipulate bits 5 and 4 in the status of RCas and ROut transfer
locations. These bits will be used to indicate LO mode passing up or a
failure in the lower part of the cascade. If there are no failure nor
LO conditions, then bit 5 will indicate the existence of a proper
cascade path to the process. The following comments are pertinent:
Setpoint:
A cascade structure is never connected directly through the
Setpoint value. Only an operator or a higher level program should
manipulate the Setpoint. When an analog Setpoint is written without a
status value, the Data Base Write Service will:
1) reset bit 0 (No-Com).
2) reset bit 1 (Bad).
3) Set bit 2 (Not-from-Process).
It will leave the rest of the existing status bits alone.
Fetched Values:
Before a block starts its execution, the logical node will have
acquired any off-logical node variables that are needed. On-logical
node variables are acquired after the start of block execution.
The readback of the value and status of the target of the cascaded
active output agent is the mechanism for passing information up the
cascade structure. The primary block inspects the value and status
information and executes necessary operations.
No-Com:
There are two different contexts for No-Com. One context
concerns a No-Com status found in the status byte(s) of the value
read back from the target destination. The second concerns a
No-Com status imposed by the local block because of the inability
to actually read the target location.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
148
NaN:
When an analog value is read back and found to have a value of
NaN, the following action will be taken:
Bad:
If a Bad value is read back from an Output destination, then
- The No-Com bit will be reset.
- The Bad status bit will remain set.
- Not-from-process will be set.
- Status bits 6 and 7 (if analog, value bits 6 and 7 if
discrete) will be set.
- The algorithm will proceed.
Not-From-Process:
A Not-from-Process indication read back from an Output
destination will be ignored. This status is only passed down the
cascade, it is never passed up.
LO:
Some algorithms will not accept an LO mode passed up the
cascade. They will ignore the LO status.
Failed:
When a failure is reported up the cascade, a block's algorithm
and configuration will determine if it will:
1) pass the notification further up the cascade
2) change its own mode to Man and send the corresponding alert
3) ignore it
For the latter, status bits 5&4 will be set to 11B. This is
the indication that the failure has already been acknowledged.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Therefore, blocks further up the non-selected paths will not issue
alerts, will not set their modes to Man, and will not execute the
handshake procedure.
No-Path:
If the No-Path status is set while the LO mode and the failure
status bits are reset, there is simply an indication that there is
no legitimate path to the process. This situation is passed up
through all cascade connections. The PID algorithm will eliminate
integral action if this condition is passed up to it and certain
function blocks will reflect a "Path to the Process" passed upward
back as a reset "Not-from-Process" passing downward.
Doubly Wound-Up:
If bits 6 and 7 are both set in the value read back from the
Output destination, then the local block will immediately set
itself into IMan mode. Bits 6 and 7 will then be set in the
Setpoint and in all cascade input locations.
Value Changed:
If the value read back from the output value is not exactly
the same as was written to it, the local block will immediately
set itself into IMan mode. Bits 6 and 7 will be set in the
Setpoint and in all cascade input locations.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The paper "Application Support Services Interface" defines the
method of "counting out" a transfer location. That procedure is used
with the mode definition to optionally change to a higher priority mode
when a transfer location counts out.
When a block's output is not being written (its agent is not currently
active), bits 6 and 7 in the status byte will be used to indicate the status of
limits on the value if the output is an analog value. If the measurement can not
increase due to a limit in the measuring device or in the data flow path,
normally caused by output limits, bit 6 will be set. Likewise, if the
measurement can not decrease, bit 7 will be set. These bits will flow through
--```,``-`-`,,`,,`,`,,`---
function blocks based only on the algorithm rules. These bits will be reset in
the status bytes of discrete values.
To determine the correct states of bits 6 and 7, the function block will
normally consider the states of bits 6 and 7 in its input value(s), the status of
any applicable setpoint and output limits, the direction of operation of the
algorithm equation, and user options. Each function block will define any
exception to these rules. The PID function block will utilize the status bits to
turn off integral action in the direction that could cause wind-up.
For both analog and discrete structures of this type, the system will provide
for bit 4 to optionally carry an indication of failure of a process measurement.
The information will be used to optionally suppress alerts and to allow a control
block several blocks removed from the measurement device to indicate the failure.
The four states that can be selected in each bit pair will be defined as
follows:
Bit Pair Meaning
Value All I/O except Cascade Cascade Outputs
00 Failure passed to value users; Failure passed up cascade;
alerts suppressed. alerts suppressed.
01 Failure passed and alarmed. Failure alarmed and ack.
--```,``-`-`,,`,,`,`,,`---
10 Failure not passed and alerts Reserved for specific
suppressed. algorithms.
11 Failure not passed but alarmed. Reserved for specific
algorithms.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The first column of meanings apply to all circumstances except cascade
outputs. Specifically, that will be all hardware I/O connections, all input
words that have active agents, and all output words that have inactive agents.
In certain discrete blocks, some of the output words can act as input words.
They will be treated as input words for purposes of this description.
When the low order of the two option bits is reset, all "Fail" and "Bad"
alerts that would have resulted from the "Fail" status of the input in this
cycle and in this function block will be suppressed. The suppression applies
independent of the assigned priorities of any of the individual alerts.
2) SI 4) TK
When the high order of the two option bits is reset, the failure bit is
passed to any output value that is affected by the failed input ELSE it is reset.
Note that the failure state is not set in the status bytes of outputs if the
agent for the output is active or a physical connection.
The second column of meanings defined above apply to the cascade situation.
When the state is 00, the failure is passed up the cascade structure as defined
earlier in this paper. When the state is 01, the failure causes an alert to be
issued and the acknowledgement handshake to be exercised as defined earlier. The
failure information is not then passed any further up the cascade. States 10 and
11 are reserved for the use of specific algorithms (PID and Device Control).
This paper will model the indicator for these special block cycles as an
integer counter. The "Data Base Write Service" (DBWS) - see Attachment 2 to the
paper of that name - will set this integer as appropriate. The counter is not a
readable data base item; it can be implemented in any way that yields the
described functionality. Note that, for a long cycle time block, data base
changes could be completed between block executions. They might never be seen by
the block if it were not for the DBWS and this integer.
When the block transitions from O/S to any other mode, under any conditions,
it will observe the three steps of special actions described above. It will be
forced to do this because the DBWS will have set FORCE_INIT to a value of 3 any
time the mode is changed from O/S or the block must act as if it was. The block
must at least go to state 2 after a data base change to the portion of the data
base that requires that the block mode be Man or O/S for changing. Again, the
DBWS will set FORCE_INIT as necessary.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
immediately by a successful write.
I_COUNT = a discrete, associated with each output agent, that is
reset when a read is successful, set when it is not.
This discrete is used as one data item in the control of
IO_COUNT.
--```,``-`-`,,`,,`,`,,`---
IF the parameter is in the range of parameters with status bytes, then
. Process).
. IF the agent's type has its low order bit set, then
. Set bit 1 in the status byte of (z+1) (Bad).
. Set bit 4 in the status byte of (z+1) (Failed).
. Reset bit 5 in the status byte of (z+1)
. (No-Path).
. IF bit 1 is set in the status byte of (z+1), then
. Set bit 2 (Not-from-Process) in the status byte of
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. (z+1).
. Copy the value of parameter (z+1) into the value of
. parameter z.
ELSE IF the counter for parameter z = 0, then
. Copy parameter z into the value of parameter (z+1).
. Write the default status byte into the status of
. parameter (z+1).
. IF the value of z = NaN, then
. Set bits 1 and 2 in the status byte of parameter
. (z+1).
END IF.
Set the counters for parameters z and (z+1) = 1.
Enable direct writes.
CASE (NOT O/S Mode, Parameter data type 32 bit floating point)
IF [this is the agent for an Output Word OR this is the agent
. for a logical node variable, then
. IF [I_COUNT is reset AND the completion value for the
. write buffer is reset], then
. Reset IO_COUNT.
Set I_COUNT
IF NEW_ALGO is set, then
. 'Note: refer to page 5 of the paper "Application
. ' Support Services Interface" for the
. ' definition of NEW_ALGO.
. Copy parameter (z+1) to the Local Variable.
. Copy the value of parameter (z+1) to parameter z.
. Set the counters of parameters z and (z+1) to 1.
. Set the cyclic read buffer's consistency flag = 1.
. Reset IO_COUNT.
. IF this is the last agent to be processed in an entity,
. then reset NEW_ALGO.
ELSE IF the agent's configuration indicates that the agent is
. active, then
. IF the consistency parameter indicates that there is a
. new value in the cyclic read buffer, then
. IF the parameter being read is of the type 32 bit
. floating point or has been converted to 32 bit
. float, then
. IF the parameter to be read has no status byte
. (therefore it corresponds to parameter z,
. i.e., it is in the "well known" range of
. parameters and has its two low bits reset
. or it is outside of the range), then
. Inhibit direct writes and cyclic reads.
. Put the default value of the status byte
. into the status byte of parameter
. (z+1).
. IF the value of the first 4 bytes of the
. buffer = NaN, then
. Set bit 1 in the status byte of
. (z+1).
. Set bit 2 in the status byte of
. (z+1).
. Copy the first 4 bytes of the buffer into
. the value of parameter (z+1) and into
. parameter z.
. Copy parameter (z+1) into the "local
. variable".
. Reset I_COUNT.
. IF the parameter to be read corresponds to
. parameter (z+1) (i.e., it is in the "well
. known" range of parameters and has its
. low order bit set and its next to low
. order bit reset), then
. Inhibit direct writes and cyclic reads.
. IF the value of the first 4 bytes of the
. buffer = NaN, then
. Set bit 1 in the status byte of the
. buffer.
. IF bit 0 is set in the status byte of the
. buffer, then
. Reset bit 0 in the status byte of the
. buffer.
. Set bit 2 in the status byte of the
. buffer (Not-From-Process).
. IF the agent's type has its low order
. bit set, then
. Set bit 1 (Bad) in the status
. byte of the buffer.
. IF NOT [(an Output Word) OR (a
. Logical Node variable)],
. then
. Set bit 4 (Failed) in the
. status byte of the
. buffer.
. Reset bit 5 (No-Path) in
. the status byte of the
. buffer.
. IF status bit 1 of the buffer is set, then
. Set bit 2 in the status byte of the
. buffer.
. Copy all 40 bits of the buffer into the
. "local variable".
. Copy all 40 bits of the buffer into
. parameter (z+1).
. Copy the value of parameter (z+1) into
. parameter z.
. Reset I_COUNT
. ELSE
. Configuration error! - BREAK
. END IF.
. Set the consistency value for the read buffer =
. 1.
. ELSE
. Configuration error! - BREAK
. END IF.
. ELSE 'no new value in the cyclic buffer
. Increment the consistency counter but limit to 32.
. IF this is an output word's agent or a logical node
. variable's agent, then
. Increment the IO_COUNT but limit to 32.
. Inhibit direct writes and cyclic reads.
. END IF.
. Increment the counters for parameters z and (z+1) but
. limit to 32.
. IF IO_COUNT > 3, then
. Set the No-Com. bit (Bit 0) in the status byte of
. parameter (z+1) and the local variable.
. Set the Not-from-Process bit (Bit 2) in the status
. byte of parameter (z+1) and the local variable.
. IF the low order bit of the agent is set, then
. Set the Bad bit (Bit 1) in the status byte of
. parameter (z+1) and the local variable.
. Set the Failed bit (Bit 4) in the status byte
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
157
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. of (z+3):
. IF bit 0 is set in the status byte of (z+3), then
. Reset bit 0 in the status byte of (z+3).
. Set bit 2 in the status byte of (z+3)
. (Not-From-Process).
. IF the agent's type has its low order bit set,
. then
. Set bit 1 in the status byte of (z+3)
. (Bad).
. Set bit 4 in the status byte of (z+3)
. (Failed).
. Reset bit 5 in the status byte of (z+3)
. (No-Path).
. IF bit 1 is set in the status byte of (z+3), then
. Set bit 2 (Not-from-Process) in the status byte
. of (z+3).
. NEXT status byte
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. (z+2)]
. - remote parameter is a discrete
. - remote parameter has status
. information [i.e., it is a
. parameter (z+1) or (z+3)]
. - remote parameter has value and full
. status [i.e., it is a parameter
. (z+3)]
. - local agent is "type 0" [i.e.,
. there is no bit selection]
. - remote parameter is not Cas
. transfer location
' Note: these conditions are a specific
' path in the logic shown in the
' Attachment to the paper
' "Agents". See that paper for
' for the agent "type".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Data = Use default status Bit #># Prohibited
Discrete Byte for each bit. Bits in Connection
? No Data ?
Yes Type Yes ?
X+1 Bit string =data; No
Remote Use cond. Status
Type Data? Byte for each bit.
Invert Data
X+3 No Bits and
Remote No Switch Status Bits
--```,``-`-`,,`,,`,`,,`---
Status byte =data;
Data? Use default status 6 & 7 if so
Type Byte for each bit. Configured
X+2
Yes Remote
Data? Bit string = data;
Yes Use full status TypeNo
Data No
Byte array. 0
Type =
Agent?
X or
Symbols: (x+2)
No Remote Load the Value and Yes
Parameter Types: ?
X= no status info. Parameter Status of Data bit 0 Yes
= Cas Into Local Bit 0, then
X+1 = cond. Status Transfer
X+2 = cond. Status Loc? The Same for the
Only Yes Succeeding Bits.
No Local
X+3 =value plus
Full status Parameter
No Local Load Set. Bit Of Data, Length >15
Array. w/Status, into Bit 0 of
Parameter Bits?
Value and continue With Yes
Agent Types: = Output succeeding Data to fill Rest
Type 0 = high order Word 0? of Value.
bit reset Load set bit of
Yes
Type 1 = high order Data,
bit set w/Status, into
Use Bits 5-7 Of The Cas Bit 0 of value,
Transfer Location in the continue till
Set Bits 6 & 7 Bit 7; Bit 0's
Handshake as per
In Status Bytes of Done Status in 8
"Status Byte" Paper. Set
value Bits 0-4 if FH+ default
their Status to Default.
wound up. status
. then
. Inhibit direct writes and cyclic reads.
. FOR each of the 16 status bytes in the
. status byte array of the buffer:
. IF Bit 0 (No-Com.) is set, then
. Reset bit 0.
. Set bit 2 (Not-from-Process)
. IF the agent's type has its low
. order bit set, then
. Set bit 1 (Bad) in the
. status byte.
. IF NOT [(an Output Word) OR
. (a Logical Node
. variable)], then
. Set bit 4 (Failed) in
. the status byte
. of the buffer.
. Reset bit 5 (No-Path)
. in the status
. byte of the
. buffer.
. ENDIF.
. ENDIF.
. ENDIF.
. IF Bit 1 (Bad) is set, then
. Set bit 2 (Not-from-Process)
. NEXT status byte.
. Copy the buffer into the "local variable".
. Copy the buffer into parameter (z+3).
. Form a temporary variable "STAT" by
. transverse Boolean "OR"ing the 16
. full status bytes of the local
. variable together.
. Copy the value of the buffer into
. parameter z and the value of
. parameter (z+1).
. Copy "STAT" into the status byte of
. parameter (z+1).
. Reset I_COUNT
. ELSE
'[see the Attachment to the paper "Agents"
'for the details of servicing other types
'of discrete data.]
. END IF.
. Set the consistency value for the read buffer =
. 1.
. ELSE
. Configuration error! - BREAK
. END IF.
. ELSE 'no new value in the cyclic buffer.
. Increment the consistency counter but limit to 32.
. IF this is an output word's agent or a logical node
. variable's agent, then
. Increment the IO_COUNT but limit to 32.
. Inhibit direct writes and cyclic reads.
. END IF.
. Increment the counters for parameters z and (z+1) but
. limit to 32.
. IF IO_COUNT > 3, then
. Set the No-Com. bit (Bit 0) in all status bytes of
. (z+1), (z+3), and the local variable.
. Set the Not-from-Process bit (Bit 2) in all status
. bytes of (z+1), (z+3), and the local variable.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
END IF.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Cas Trans. RCas Trans. Rout Trans.
Location Location Location
Input Output
Word #0 Word #0
Input Output
Algorithm
Word #1 Word #1`
Input Output
Word #2 Word #2
Figure 2
DATA STRUCTURES
Analog Setpoint
Discrete Setpoint:
8 bit value 5 * 8 bit status
--```,``-`-`,,`,,`,`,,`---
Figure 23: Function Block Structure: Figure 3, Analog Status Parameter Detail
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
167
BACKGROUND:
The description of the function blocks generally implies that the blocks will
be executed in order from the top of the cascade to the output. For blocks
within one logical node, there is one obvious technical reason to arrange the
blocks in the logical top-down order but there are two potential reasons for the
user to purposely arrange the blocks in the reverse order. One must remember that
blocks running in different logical nodes can not be synchronized, even if they
are in a cascade structure. When a cascade spans logical nodes, the execution
frequency will have to be arranged to reduce dead time to an acceptable level.
Why arrange the blocks in the top-down order? Because the best control loop
performance is achieved by executing a block using inputs that include the
minimum possible dead time. When one analyses the information flow in a cascade,
it is obvious that the minimum dead time is achieved by executing the topmost
block, passing its output to the next block and executing it, etc. until the
Setpoint for the output block is calculated and passed to the output block, which
will execute last.
One operating characteristic that can force the user to arrange the blocks in
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
the reverse order is the potential for operator input into the middle of a
cascade structure to be overwritten by a higher level block. For example, if an
operator sets an interior block into Auto mode, changes the Setpoint, and returns
the block to Cas mode, the system should not lose the new value nor bump the
process. If there is no protection for this action, a user may feel that it is
necessary to arrange the blocks in reverse order to minimize the possibility of
this problem.
In the SP-50 User Layer, there is complete protection against this. The
prefetch of the status of the secondary's transfer location value partially
solves this problem. The Data Base Write Service solves most of the rest of the
problem by writing a new value of the Setpoint or Output into both the addressed
location and the corresponding transfer location. The remaining window for a
problem is eliminated by having all secondaries discard the first cascade value
written after a mode change and restore the previous value (the internal value
TRANSFER_VOID - see the paper "Function Block Structure" and the Appendix paper
"Fundamental Control Structure" - page
14).
The second reason to arrange the blocks in reverse order is to speed up the
flow of information going "up" the cascade. If the blocks are executed
relatively slowly, and there are several blocks in the cascade, an operator will
notice that a mode change at the bottom of the cascade will take some noticeable
time to reflect itself as IMan mode at the top of the cascade. During that time,
the operator and higher level control programs are given conflicting information.
PROCEDURE OVERVIEW:
--```,``-`-`,,`,,`,`,,`---
This procedure will pass the following information up the cascade and set the
information into the status byte of the Output Word, the block actual mode, the
Setpoint status byte, and the Input Word and transfer location status bytes:
1) The setting and clearing of LO mode under certain conditions (see the
next paragraph for the exceptions).
2) A failure in the path to the process.
3) A recovery from a failure under certain conditions.
4) The "Path-to-the-Process" status.
5) Any wound-up condition (wound-up hi, wound-up lo, or doubly wound
up).
6) The reset of a wound-up high or of a wound-up low condition. In some
cases, the block itself may have to execute once to update the actual mode.
This solution is only a partial solution because it will NOT pass the
following information up the cascade:
1) LO mode that is set concurrently with a failure unless the LO mode
was set by a Field Bus command or by keylock in a block in the local
logical node.
2) the resetting of a failure if:
- LO mode is set but not known to be passing up
OR
- if the handshake using bit 5 of the status byte is not
complete.
3) the transition out of the IMan mode state.
4) In a block that has 1 Output cascade blocked by a failure and a
second blocked by LO mode, it will pass NEITHER condition up the
cascade.
The exception in case (1) and the first exception in case (2) exist because of
the use of bit 5 in the status bytes to show the direction for LO mode AND the
handshake for failures. The exceptions could be eliminated by extended logic in
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
169
the procedure but such an extension is not included in the capability required
for this option.
The second exception in case (2) and exception (3) exist because there must
be assurance in all cases that the higher blocks in the cascade have initialized
or received the failure information. This would require the addition of cycle
counters to the logic and would unduly increase the complexity of the logic.
Because doubly wound up and IMan are not cleared, the LO and Fail can be cleared
immediately since the blocks will still initialize as the clearing of doubly
wound up moves up the cascade. Note that the subsequent block operations will
pass all of this information correctly, just slower.
The very rare case (4) could have been handled by additional logic but was
not judged worthwhile.
REQUIREMENTS:
Bit DH in the logical node options non-time critical bit string
(N_TIME_CRIT0; see page 26 of the paper "Data Owner Structure - Logical Nodes)
indicates support for "fast initialization", the subject of this attachment. If
this procedure is implemented, the bit will be set. If it is not supported, the
bit will be reset. Any logical node that can not support at least 3 function
blocks, or can only support blocks with hardware I/O, must show the bit as reset.
A logical node that has the bit set but is only configured to execute one or two
function blocks (i.e., CB = 2 or CB = 1), may turn the procedure off (but leave
the options bit set).
There are a number of variables that are named and defined here; none of them
are accessible from Field Bus and they are not required in an actual
implementation.
From the perspective of higher level devices, the only impact that exists
from this entire procedure is the presence of bit DH in the options bit string.
Of course, there may be a large impact on the timeliness of the information made
available to, and displayed by, such a higher level device.
The definitions of variables that follow refer to "outputs" #0, #1, and #2.
If the block outputs are analog, output #0 = Output Word #0, output #1 = Output
Word #1, and output #2 does not exist. If the block outputs are discrete, output
#0 refers to bit #0 in the value "Output". Output #1 refers to bit #1 of
"Output", and output #2 to bit #2.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
170
secondary.
REV_1 - for analog blocks:
this logical is set if the algorithm has reverse
action between its Setpoint and Output #1.
Note: the only Standard analog function block
that can support this is the Splitter
block.
- for discrete blocks:
this logical is set if the Output Word bit pointer
and the agent's inverting for Output bit #1 combine
to invert the bit between Output #1 and the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
secondary.
REV_2 - not used for analog blocks.
- for discrete blocks:
this logical is set if the Output Word bit pointer
and the agent's inverting for Output bit #2 combine
to invert the bit between Output #2 and the
secondary.
BLOCK_WUH - this logical is set if the block itself would
generate a wound-up-high indication on its own
Setpoint. This includes the effect of Output
limits, direct/reverse action, block logic, Setpoint
limits, and mode. Note: in discrete blocks, this
parameter is a simplification; it is set if any
bit's status would be set but only for bits
configured to their corresponding bit in Output and
on to cascade connections (see below). It will
block the fast resetting of wound-up-high for all
three bits if it is set.
BLOCK_WUL - this logical is set if the block itself would
generate a wound-up-low indication on its own
Setpoint. This includes the effect of Output
limits, direct/reverse action, block logic, Setpoint
limits, and mode. Note: in discrete blocks, this
parameter is a simplification; it is set if any
bit's status would be set but only for bits
configured to their corresponding bit in Output and
on to cascade connections (see below). It will
block the fast resetting of wound-up-low for all
three bits if it is set.
LO_UP - this logical will be reset at each block execution
except it will be set if LO_BLK_UP = 1 AND any of
the following conditions exist:
1) the block's actual mode is pure LO
--```,``-`-`,,`,,`,`,,`---
--```,``-`-`,,`,,`,`,,`---
The logical node will use the information, in reverse order, to calculate the
flow of information "up" the cascade during the logical node's overhead time.
This information is not accessible from Field Bus. Each entry will provide the
following detailed information for each path:
DATA_TYPE - a logical that indicates, if set, that the cascaded
information is a discrete bit.
PRIMARY - this integer will contain the block number that
is the primary for this path. The algorithm in the
primary block must be able to support a cascade
connection below itself.
PRI_CONNECT - analog:
this integer will contain the primary's Output
Word parameter number that is the source of this
path. This connection must be able to support a
cascade.
- discrete:
this integer will contain a dummy parameter number
that identifies the bit in the word "Output". The
value of this integer can have bits 0-9, EH, and FH
reset. The value in bits AH-DH can represent an
integer value of 0, 1, or 2. Such a configuration
follows the configuration rules of a Type 1 agent's
pointer parameter (see page 16 of the paper
"Agents") and will be uniquely different from any
possible normal parameter identification.
SECONDARY - this integer will contain the block number that
is the secondary for this path.
SEC_CONNECT - analog:
this integer will contain the secondary's parameter
number that is the target of this path. The
parameter number must be the number of one of the
following:
- the Cas Transfer Location value and its
status byte.
- the Input Word #1 value and its status byte.
- the Input Word #2 value and its status byte.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
173
- discrete:
this integer will not necessarily match the
parameter of the Output Word's agent's pointer
parameter. It can be the parameter of the
secondary's bit expressed as a Type 1 agent's
pointer parameter (see page 16 of the paper
"Agents"). The inverting indicator will be reset
since its information is carried by the parameter
REV_x defined above.
PROCEDURE:
The following logic will be executed during the 20% of the logical node cycle
that is allocated to the logical node's overhead. It will be executed for each
--```,``-`-`,,`,,`,`,,`---
path in the "cascade connection" table, starting with the last path entered
during the execution of the previous cycle of blocks.
This procedure is written to account for all of the Standard function blocks
except the Timer. It specifically recognizes the two cascaded outputs of the
Splitter block and the three cascaded inputs of the Selector block. The
constraints imposed on discrete cascades are those of the normal block
functioning. However, as noted above, the procedure is incomplete. Some
information flow will not occur until the next normal execution of the function
block and some information is not passed up the cascade by this procedure.
However, no incorrect information is inserted in the normal process by this
procedure.
An analog cascade connection that has the Cas transfer location or the RCas
transfer location of the Timer block as its secondary will be handled exactly as
any other analog cascade connection. There can be no analog cascade connection
that has the Timer block as its primary. A discrete cascade connection that has
the Timer block as its secondary is accounted for in the following logic.
A discrete cascade connection that has the Timer block as its primary is not
covered in the logic. The logic for this case is explained in the block
algorithm. It is actually much simpler than other discrete blocks but quite
different.
Throughout this logic, reference will be made to the states shown in Figure 1
of Attachment 1 to the paper "Status Byte".
This procedure is written as if data base values are changed directly. That
will not be done in an actual implementation. Rather, the changed values will be
collected as working variables and written to the Field Bus accessible data base
with function block reads inhibited as indicated by the instruction step near the
end of the procedure.
START
Set temporary logical ALERT = 0
' This local variable is used in the logic for discrete cascades.
' This step is NOT included in the GOTO that is called for near the
' end of the logic.
'
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
174
' **************************************************************
' **************************************************************
' ** **
' ** ANALOG CASCADE LOGIC **
' ** **
' **************************************************************
' **************************************************************
'
IF DATA_TYPE = 0, then
'
' The entry in the table will identify the primary block, its
' connection, the secondary block, and its connection. In this logic,
' the connection to the secondary could be to the Cas transfer location,
' Input #1, or Input #2; the letter "x" will be used in variable names
' to designate the connection. The connection to the primary could be
--```,``-`-`,,`,,`,`,,`---
' to Output Word #0 or #1; the letter "y" will be used in variable names
' to designate the connection. In some cases, reference must be made to
' the "other" Output Word - the letter "z" will be used for that
' connection (i.e., if y = Output Word #0, then z = Output Word #1 and
' vice versa).
'
' Note that Output Word #1 as a cascaded output and ROut can not
' coexist. Therefore, changes to the ROut location do not include a
' test of which output word is being processed: it must be #0 if ROut
' exists.
'
IF secondary's algorithm <> analog, then
BREAK.
IF secondary's PATH_TO_x = 0, then
BREAK.
' No need to process this connection if the secondary can not
' support the cascade connection.
IF [(secondary's LO_UP = 1) AND (secondary's algorithm <> Timer)], then
' Note that LO is not indicated in the RCas nor ROut transfer
' locations.
Set bit 3 in the status byte of primary's connection = 1.
' Note: this step generates one of states 5-8 in Figure 1 of
' Attachment 1 to the paper "Status Byte".
IF bit 4 in the status byte of primary's connection = 0, then
Set bit 5 in the status byte of primary's connection = 1.
' Note: this step converts state 5 to state 6.
' Unfortunately, states 7 and 8 are ambiguous.
Set bits 7&6 in the status byte of primary's connection = 11B.
IF bit 4 in the status byte of primary's ROut location = 0, then
Set bit 5 in the status byte of primary's ROut location =
HOLD_PATH
' See page 7 of paper "Function Block Structure"
' for a description of HOLD_PATH.
IF bit 3 in the ROut status byte = 0, then
Set bits 7&6 in the Status byte of the primary's ROut transfer
location = 11B.
' If the above test were not included, this could
' override the Remote handshake - see Figure 2 in
' Attachment 2 to the "Status Byte" paper.
IF primary's LO_UP_TO_BLK = 1, then
Set primary's LO_UPy = 1.
IF [(primary's PATH_y_TO_BLK = 1) OR (primary's
PATH_0&1_TO_BLK = 1 AND LO_UPz = 1)], then
Set the IMan and LO bits in primary's actual mode byte
= 1.
IF primary's LO_BLK_UP = 1, then
Set primary's LO_UP = 1.
Set bit 3 in the status byte of primary's Setpoint
= 1.
IF bit 4 in the status byte of primary's Setpoint =
0, then
Set bit 5 in the status byte of primary's
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
175
Setpoint = 1.
Set bits 7&6 in the status byte of the primary's
Setpoint = 11B.
IF bit 4 in the status byte of primary's RCas
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
Word #1 = 1.
IF bit 4 in the status byte of primary's Input
Word #1 = 0, then
Set bit 5 in the status byte of the
primary's Input Word #1 = 1.
Set bits 7&6 in the status byte of the
primary's Input Word #1 = 11B.
IF PATH_TO_2 = 1, then
Set bit 3 in the status byte of primary's Input
Word #2 = 1.
IF bit 4 in the status byte of primary's Input
Word #2 = 0, then
Set bit 5 in the status byte of the
primary's Input Word #2 = 1.
Set bits 7&6 in the status byte of the
primary's Input Word #2 = 11B.
'
' ************************************************************
' * A2 Move a no-failure status up the cascade *
' * and adjust the path-to-the-process *
' * if LO mode is not set. *
' ************************************************************
'
IF bits 4&3 in the status byte of the secondary's connection = 00B,
then
' Note that this step resets LO if it was passing up but
' has now cleared providing there is only 1 active cascade.
Set bit 3 in the status byte of the primary's connection = 0
Set the temporary string TEMP_STR = bits 5&4 in the status byte
of the secondary's connection.
Set bits 5&4 in the status byte of the primary's connection =
TEMP_STR.
' Note: this transitions state 2 to state 1 or state 3 if
' it was set.
Set bits 5&4 in the status byte of the primary's ROut transfer
location = TEMP_STR.
Set temporary logical FLAG = 0.
IF primary's PATH_y_TO_BLK = 1, then
FLAG = 1.
Set HOLD_PATH = bit 1 of TEMP_STR
IF primary's PATH_0&1_TO_BLK = 1, then
FLAG = 1.
' Note: the following logic moves the no-failure status
' up the cascade even if there is a second cascade
' structure with a failure or LO status.
IF bits 5-3 of the status byte of the primary's Output Word z
= 000B, then
TEMP_STR = 00B.
HOLD_PATH = 0.
' When the IF is true, the path status is known to
' be good.
ELSE IF bits 5-3 of the status byte of the primary's Output
Word z = 100B, then
HOLD_PATH = bit 1 in TEMP_STR
ELSE IF TEMP_STR = 00B, then
HOLD_PATH = 0
ELSE IF HOLD_PATH = 0, then
TEMP_STR = 00B.
ENDIF
IF FLAG = 1, then
IF primary's LO_UP = 0, then
IF (bits 5-3 in the status byte of the primary's Setpoint
= 001B), then
' *********************************
' * LO passing down! *
' *********************************
Set bit 4 in the status byte of the primary's RCas
transfer location = 0.
Set bit 5 in the status byte of the primary's RCas
transfer location = HOLD_PATH.
IF PATH_TO_CTL = 1, then
IF [(bit 3 in the status byte of the primary's
Cas transfer location = 0) OR (bits 5-3 in
the status byte of the primary's Cas
transfer location = 101B)], then
Set bits 5-3 in the status byte of the
primary's Cas transfer location =
000B.
IF PATH_TO_1 = 1, then
IF [(bit 3 in the status byte of the primary's
Output Word #1 = 0) OR (bits 5-3 in the
status byte of the primary's Output Word
#1 = 101B)], then
Set bits 5-3 in the status byte of the
--```,``-`-`,,`,,`,`,,`---
primary's Output Word #1 = 000B.
IF PATH_TO_2 = 1, then
IF [(bit 3 in the status byte of the primary's
Output Word #2 = 0) OR (bits 5-3 in the
status byte of the primary's Output Word
#1 = 101B)], then
Set bits 5-3 in the status byte of the
primary's Output Word #2 = 000B.
IF [(bit 3 in the status byte of the primary's Setpoint
= 0) OR (bits 5-3 in the status byte of the
primary's Setpoint are 101B)], then
' *********************************
' * No LO mode or the old one *
' * that needs to be cleared. *
' *********************************
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
178
' ************************************************************
' * A4 *
' * Move failure with request for *
' * acknowledgement up the cascade. *
' ************************************************************
'
IF bits 5&4 in the status byte of the secondary's connection = 01B, then
IF bit 4 in the status byte of the primary's connection = 0, then
' Because of this step, the following logic only operates
' on the first cycle after a failure - it allows
' acknowledgement after that.
Set bits 5&4 in the status byte of the primary's
connection = 01B.
' Note: this step transitions 1 of states 3, 5, or
' 6 to either state 4 or 7.
Set bits 7&6 in the status byte of the primary's
connection = 11B.
Set bits 5&4 in the status byte of the primary's ROut transfer
location = 11B.
IF bit 3 in the ROut status byte = 0, then
Set bits 7&6 in the status byte of the primary's ROut
transfer location = 11B.
' If the above test were not included, this
' could override the Remote handshake - see
' Figure 2 in Attachment 2 to the paper
' "Status Byte".
IF the ROut actual mode bit = 1, then
Set bit 5 in the status byte of the primary's
ROut transfer location = 0.
' This logic will request acknowledgement from
' anyone with an active mode bit!
Set temporary logical FLAG = 0.
IF primary's PATH_y_TO_BLK = 1, then
FLAG = 1.
IF primary's PATH_0&1_TO_BLK = 1, then
IF bit 4 in the status byte of the primary's z
connection = 1, then
FLAG = 1.
IF FLAG = 1, then
IF FAIL_BLK_UP = 0, then
FLAG = 0
IF the requested mode bit = higher priority than Auto,
then
FLAG = 0
IF PATH_TO_1 = 0 AND PATH_TO_2 = 0, then
IF the requested mode bit = higher priority than
Cas, then
FLAG = 0
' The net of the above four IF's is that
' there is no one above the primary from
' whom to request acknowledgement if FLAG
' ends up = 0.
IF FLAG = 0, then
IF block mode is to be changed to Man on failure,
then
Set actual mode byte to 00H.
Set the Man mode bit in the actual mode byte.
IF the requested mode bit <> Man, then
Set requested mode byte to 00H.
Set Man mode bit in the requested mode
byte.
Increment the static data base revision
number by 1.
Set notification of an unrequested mode
change or leave flag for the block to
do it at its next execution.
Set the IMan mode bit in the actual mode byte.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
179
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
180
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
181
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
IF [(primary's PATH_y_TO_BLK = 1), then FLAG = 1.
IF [(primary's PATH_0&1_TO_BLK = 1) AND (REV_z = 0)], then
IF bit 6 in the status byte of the primary's z connection = 1,
then
FLAG = 1.
IF [(primary's PATH_0&1_TO_BLK = 1) AND (REV_z = 1)], then
IF bit 7 in the status byte of the primary's z connection = 1,
then
FLAG = 1.
--```,``-`-`,,`,,`,`,,`---
IF FLAG = 1, then
IF REV_x = 0, then
Set bit 6 in the status byte of the primary's Setpoint
= 1.
IF bit 3 in the RCas status byte = 0, then
Set bit 6 in the status byte of the primary's RCas
transfer location = 1.
IF PATH_TO_CTL = 1, then
Set bit 6 in the status byte of the primary's Cas
transfer location = 1.
IF PATH_TO_1 = 1, then
Set bit 6 in the status byte of the primary's Input
Word #1 = 1.
IF PATH_TO_2 = 1, then
Set bit 6 in the status byte of the primary's Input
Word #2 = 1.
IF REV_x = 1, then
Set bit 7 in the status byte of the primary's Setpoint
= 1.
IF bit 3 in the RCas status byte = 0, then
Set bit 7 in the status byte of the primary's RCas
transfer location = 1.
IF PATH_TO_CTL = 1, then
Set bit 7 in the status byte of the primary's Cas
transfer location = 1.
IF PATH_TO_1 = 1, then
Set bit 7 in the status byte of the primary's Input
Word #1 = 1.
IF PATH_TO_2 = 1, then
Set bit 7 in the status byte of the primary's Input
Word #2 = 1.
'
' ************************************************************
' * A9 *
' * Move a wound-up-low status up the cascade. *
--```,``-`-`,,`,,`,`,,`---
' * *
' ************************************************************
'
IF bit 7 in the status byte of the secondary's connection = 1, then
' This logic is exactly the same as given for bit 6 immediately
' above except that references to bits 6 and 7 are reversed.
'
'
' ************************************************************
' * A10 *
' * Conclusion of the analog logic. *
' * *
' ************************************************************
'
IF the next entry in the cascade connection table has the same primary,
then
GOTO the beginning of the above logic and do that cascade.
IF bits 6 and 7 in the status byte of the Setpoint are both set, then
set the IMan bit in the actual mode of the primary.
Make the changes to the Field Bus accessible data base with Field Bus
read access inhibited.
Clear the entries in the "cascade connection" table that have just been
worked.
'
' **************************************************************
' **************************************************************
' ** **
' ** DISCRETE CASCADE LOGIC **
' ** **
' **************************************************************
' **************************************************************
'
IF DATA_TYPE = 1, then
'
' The entry in the table will identify the primary block, the bit
' index in the value of Output, the secondary block, and the bit index
' in the secondary's bit string. The connection to the secondary can
' be to the Cas transfer location or to the block's Input or Output
' Words #0.
'
' In some cases, reference must be made to any of the three Output
' bits in the primary; the letter "z" will be used in that case (for
' example, LO_UPz = any of the three values LO_UP1, LO_UP2, or LO_UP3.
'
' Note that an Output bit that is not configured to a destination
' has a status byte with bits 2-7 all set.
'
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
183
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
184
IF PATH_TO_CTL = 1, then
FOR each of the status bytes in the
primary's Cas transfer location:
Set bit 3 = 1
IF bit 4 in the status byte = 0, then
Set bit 5 = 1.
Set bits 7&6 = 11B.
ELSE IF primary's LO_BLK_UP = 1, then
FOR the status byte of the bit in the primary's
Setpoint corresponding to the cascade:
Set bit 3 = 1
IF bit 4 in the status byte = 0, then
Set bit 5.
Set bits 7&6 = 11B.
FOR the status byte of the bit in the primary's
RCas transfer location corresponding to
the cascade:
Set bit 3 = 1
IF bit 4 in the status byte = 0, then
Set bit 5.
Set bits 7&6 = 11B.
IF PATH_TO_CTL = 1, then
FOR the status byte of the bit in the
primary's Cas transfer location
corresponding to the cascade:
Set bit 3 = 1
IF bit 4 in the status byte = 0, then
Set bit 5 = 1.
Set bits 7&6 = 11B.
ENDIF
'
' ************************************************************
' * D2 Move a no-failure status up the cascade *
' * and adjust the path-to-the-process *
' * if LO mode is not set. *
' ************************************************************
'
IF bits 4&3 in the status byte of the bit in the secondary = 00B, then
' Note that this step resets LO status if it was passing up
' but has now cleared.
Set bit 3 in the status of the primary's Output bit = 0
Set the temporary string TEMP_STR = bits 5&4 in the status byte
of the secondary's bit.
Set bits 5&4 in the status byte of the primary's Output bit =
TEMP_STR.
' Note: this transitions state 2 to state 1 or state 3 if
' it was set.
Set temporary logical FLAG = 0
IF primary's PATH_TO_BLK = 1, then
IF the primary's LO_UP = 0, then
IF primary's LO_UPy = 0, then
IF bit 3 in the status byte of the bit in the
primary's Setpoint corresponding to the
cascade = 0, then
FLAG = 1
Set bits 5&4 = TEMP_STR.
' *********************************
' * No LO mode. *
' *********************************
IF (bits 5-3 in the status byte of the bit in
the primary's Setpoint corresponding to
the cascade = 001B), then
FLAG = 1
' *********************************
' * LO passing down! *
' *********************************
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
185
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
1, then
ALL = 1.
IF all 3 of the status bytes for the low order three bits of
Output have bit 4 = 1, then
ALL = 1.
IF FLAG = 1, then
IF [(FAIL_BLK_UP = 0) OR (requested mode bit = higher
priority than Cas)], then
IF ALL = 0, then
IF block mode is to be changed to Man on
failure, then
Set the temporary logical ALERT = 1.
' This signals that an alert is to be
' issued at the end indicating a "bit
' failure". However, an instruction
' in the next section may cancel this
' because it has a failure across all
' three bits.
IF ALL = 1, then
IF block mode is to be changed to Man on
failure, then
Set actual mode byte to 00H.
Set the IMan and Man mode bits in the
actual mode byte.
IF the requested mode bit <> Man, then
Set requested mode byte to 00H.
Set Man mode bit in the requested
mode byte.
Increment the static data base
revision number by 1.
Set notification of mode change or
leave flag for the block to do
it at its next execution.
Set the temporary logical ALERT = 0.
FLAG = 0
Set the IMan mode bit in the actual mode byte.
Set bits 7-4 in the status byte of the corresponding bit
in the primary's Setpoint = 1111B.
Set bits 7-4 in the status byte of the corresponding bit
in the primary's RCas transfer location = 1111B.
IF PATH_TO_CTL = 1, then
Set bits 7-4 in the status byte of the corresponding
bit in the primary's Cas transfer location =
1111B.
IF FLAG = 1, then
IF ALL = 1, then
FOR each status byte of the primary's Setpoint:
Set bits 7-4 = 1101B.
IF the RCas bit is set in the actual mode byte, then
FOR each status byte of the primary's RCas
transfer location:
Set bits 7-4 = 1101B.
IF the Cas bit is set in the actual mode byte, then
IF PATH_TO_CTL = 1, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Set bits 7&6 in the status byte of the primary's Output bit
= 11B.
Set temporary logical ALL = 0.
IF 2 of the status bytes for the low order three bits of
Output have bit 4 = 1 AND the third bit has a value of
1, then
ALL = 1.
IF all 3 of the status bytes for the low order three bits of
Output have bit 4 = 1, then
ALL = 1.
IF primary's PATH_TO_BLK = 1, then
Set bits 7-4 in the status byte of the corresponding bit
in the primary's Setpoint = 1111B.
Set bits 7-4 in the status byte of the corresponding bit
in the primary's RCas transfer location = 1111B.
IF PATH_TO_CTL = 1, then
Set bits 7-4 in the status byte of the corresponding
bit in the primary's Cas transfer location =
1111B.
IF ALL = 1, then
FOR each status byte of the primary's Setpoint:
Set bits 7-4 = 1111B.
FOR each status byte of the primary's RCas transfer
location:
Set bits 7-4 = 1111B.
IF PATH_TO_CTL = 1, then
FOR each status byte of the primary's Cas
transfer location:
Set bits 7-4 = 1111B.
'
' ************************************************************
' * D6 *
' * Move a not-wound-up-high status up the cascade. *
' * *
' ************************************************************
'
IF {[(bit 6 in the status byte of the bit in the secondary = 0) AND
(REV_y = 0)] OR [(bit 7 in the status byte of the bit in the
secondary = 0) AND (REV_y = 1)]}, then
' Note: recognize that discretes may have some wound up states
' set because of no degrees of freedom in the three-bit
' Setpoint. Because of that, the primary may have
' wound-up states properly set even while the individual
' bits in the secondary's do not.
'
' If the secondary is the Cas transfer location, it will
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
' Can't reset one of these bits if they are both
' set because that might allow values to flow.
IF bits 7&6 in the status byte of the bit in the primary's
Setpoint corresponding to the cascade <> 11B, then
IF primary's PATH_TO_BLK = 1, then
IF BLOCK_WUH = 0, then
Set bit 6 in the status byte of the primary's
Setpoint bit corresponding to the cascade = 0.
IF bits 7&6 in the status byte of the bit in the
primary's RCas transfer location corresponding
to the cascade <> 11B, then
Set bit 6 in the status byte of the primary's
RCas transfer location bit corresponding
to the cascade = 0.
IF PATH_TO_CTL = 1, then
IF bits 7&6 in the status byte of the bit in
the primary's Cas transfer location
corresponding to the cascade <> 11B, then
Set bit 6 in the status byte of the primary's
Cas transfer location bit corresponding to
the cascade = 0.
'
' ************************************************************
' * D7 *
' * Move a not-wound-up-low status up the cascade. *
' * *
' ************************************************************
'
IF {[(bit 7 in the status byte of the bit in the secondary = 0) AND
(REV_y = 0)] OR [(bit 6 in the status byte of the bit in the
secondary = 0) AND (REV_y = 1)]}, then
' This logic is exactly the same as given for bit 6
' immediately above except that bits 6 and 7 are reversed.
'
' ************************************************************
' * D8 *
' * Move a wound-up-high status up the cascade. *
' * *
--```,``-`-`,,`,,`,`,,`---
' ************************************************************
'
IF {[(bit 6 in the status byte of the bit in the secondary = 1) AND
(REV_y = 0)] OR [(bit 7 in the status byte of the bit in the
secondary = 1) AND (REV_y = 1)]}, then
Set bit 6 in the status bytes of the bit in the primary's
Output = 1.
IF primary's PATH_TO_BLK = 1, then
Set bit 6 in the status byte of the bit in the primary's
Setpoint corresponding to the cascade = 1.
Set bit 6 in the status byte of the bit in the primary's
RCas transfer location corresponding to the cascade = 1.
IF PATH_TO_CTL = 1, then
Set bit 6 in the status byte of the bit in the primary's
Cas transfer location corresponding to the cascade = 1.
'
' ************************************************************
' * D9 *
' * Move a wound-up-low status up the cascade. *
' * *
' ************************************************************
'
IF {[(bit 7 in the status byte of the bit in the secondary = 1) AND
(REV_y = 0)] OR [(bit 6 in the status byte of the bit in the
secondary = 1) AND (REV_y = 1)]}, then
' This logic is exactly the same as given for bit 6 immediately
' above except that bits 6 and 7 are reversed.
'
' ************************************************************
' * D10 *
' * Conclusion of the discrete logic. *
' * *
' ************************************************************
'
IF the next entry in the cascade connection table has the same primary,
then
GOTO the beginning of the above logic for that cascade starting
with the statement "IF DATA_TYPE = 1, then".
FOR each of the sets of status bytes in the primary's Output, Setpoint,
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The sections of the Technical Report that describe the function block
parameters do not completely define the communication services to be used for
data exchange nor the detailed structure of the parameters that have status
bytes. The communication services that will be available from the lower layers
have been defined in a separate document that is quite independent of the rest of
the Technical Report. It does not describe the conditions under which, nor order
in which, the User Layer will use the services.
This paper will integrate these aspects of the User Layer. It will describe
how the "User Layer Support Services" are to be used by the interoperable
function blocks and the logical and physical nodes that support them.
NO_COM. STATUS
DBWS COMPLEX WRITES
CYCLE SYNCHRONIZATION
Attachment 1 - User Layer Support Services
Attachment 2 - Extended Parameter Data Dictionary Encoding
BACKGROUND:
The design of the User Layer is based on a specific set of Application Layer
services. It is possible that those services may be modified in the future.
Therefore, two papers that have led to the current design of the User Layer are
attached to this paper.
The User Layer design has been integrated with the specific set of User Layer
Support Services defined in Attachment 1. That paper defines each of the
services that will be required to be available from the lower communication
--```,``-`-`,,`,,`,`,,`---
layers.
DEFINITIONS:
For purposes of this paper, "interoperable function blocks" will include the
standard, alternate, and interoperable generic function blocks, and extensions of
them but not the interworkable generic function blocks nor the open blocks. The
term "interoperable agents" will refer to agents of such blocks.
This paper will use the notation "TO", an acronym for "tagged object", to
represent any or all of function blocks, logical nodes, and physical nodes. Note
that each of these different types of entities has a "tag
name".
A separate paper in the Technical Report describes the operation of the "Data
Base Write Service". That function is referenced as "DBWS". Note that the DBWS
of the User Layer is a complex instance of the "write handler" of the support
services paper.
This paper will differentiate between "agents" and "non-agents". The former
term refers not only to the agents that are defined for the input and output
words in the function blocks but also to the agents for the logical node
variables and configured portions of higher level control systems. The term non-
agent refers to communication entities associated with any human interface
devices, history gathering devices, and "programmable" devices such as batch
control programs.
exceptions, three that are indicated by option bits in each logical node's option
bit string, and one that is "logical".
This paper, and all of the papers that follow it in the Technical Report,
will refer to the "active subscriber" portion of the Publisher - Subscriber
paradigm as "cyclic reads".
SUMMARY:
A field device only needs to support those address management functions that
are "logical". A field device (a data owner, not a data user or a human
interface device) must, of course, be able to respond to the address assignment
services (i.e., "Get Untagged Device ID Request", "Write Physical Device Tag Name
Request", and "Assign Fieldbus Address") but not initiate them. The "device id"
that will be used will be the concatenation of the manufacturer's name (reported
first), the model number (reported second), and the serial number (reported last)
with all but 1 trailing space in each parameter eliminated.
A physical node that includes a logical node that can support active agents
must be able to invoke address recovery services. To do that, it must be able to
automatically initiate and support the "Distribute Addresses" and the "Restore
Physical Device Tag Names" services.
The DBWS will appear to automatically invoke the "Register Tag" and "Remove
Tag" services when a tag name is written to a device.
A logical node with Standard function blocks will probably have to support
"Inhibit Direct Access" and "Permit Direct Access" in order to meet the
requirement of this Standard.
All Standard Field devices will support the "Subscribe Indication" and
"Subscribe Response" services and be able to publish any data base parameter that
does not require a "read handler", and will cancel the publishing when sent a
"Cancel Buffer Service Request".
The non-time-critical options bit string of every logical node will indicate
if the node supports active agents. If not, then that logical node and its
function blocks do not need the "Parameter Access Services" that are used only by
active agents. However, its physical node will still have to support all
responder services. Thus, it WILL supply an "Open Indication" handler, will
support "Open Response", and will support "Close Request". It will supply a
"Write" handler and will support "Write Response" and "Masked Write Response".
It will support the utility services "Disable Request" and "Enable Request".
The time-critical options bit string of every logical node will indicate if
the node allows function blocks that support a read handler. If it does, then
the parameters of TO's in that logical node that are identified as potentially
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
193
accessed through a read handler MUST be so accessed. The only defined instances
of such parameters are in the "Interface" type function blocks. If the logical
node supports a read handler, it's physical node must have a "Read Indication"
handler and must support the "Read Response" service.
The time-critical options bit string of every logical node will indicate if
the node supports the alert reporting service. If not, then that logical node
does not require that its physical node support the "Event Reporting" services.
If it does, then the field device must support those services that are necessary
to report the events using the event reporting service, including the "Multicast"
services.
The User Layer of most field devices will not have a need to access the
information in the "Data Dictionary". All User Layers will need the ability to
"Add", "Delete", and "Set" parameters in the data dictionary. The lower layers
in the Field Device WILL support all bus responses to Data Dictionary services.
All writes to the parameters that contain the tag names of logical nodes and
function blocks must be made through the DBWS. If the TO is a function block,
the block must already be in O/S requested and actual mode for such a write
request to be valid. When the DBWS handles a valid write to a tag name that will
result in an actual change to the tag name, then it (the DBWS) will execute a
"Disable Request" for the old tag name. It will "remove" the old name from the
directory and "register" the new name. It will also make the necessary changes
to the Data Dictionary.
The DBWS will then take an action that will be modeled here as setting an
internal flag called "NEW_ALGO". It is not required that any such flag exist or
that the action be carried out in the fashion to be described. It IS required
that the action ACT AS IF it were carried out in the described fashion.
The NEW_ALGO flag will override the requested mode, forcing the actual mode
to O/S during the time necessary for the following action.
At the convenience of the logical node time schedule, the new algorithm will
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
be activated and its default data base will be loaded into the public parameters.
After that is complete, the appropriate flag to cause block initialization will
be set.
When the block's requested mode transitions from O/S and the block executes,
it will find NEW_ALGO set. Therefore, it will
- initialize the flag IO_COUNT for each agent (see Table 1 in the paper
"Function Block Structure" for a description of this illustrative
flag).
- initialize the communication update counters for each parameter
(defined below)
- initialize the consistency variable for each cyclic read buffer and
the completion status of each direct write buffer (again see below).
- issue a "Tagged Object Enable" service request
- establish all associations and schedules
- establish any cyclic reads needed by its agents
- reset the NEW_ALGO flag.
Only then will the block begin actual execution.
The "Tagged Object Enable" service request is not needed if the tag name of
the function block was also changed during this operation.
It is not necessary that all of the above operations be done in one cycle and
it is not important whether the function block, the logical node, or the physical
node actually does the work.
--```,``-`-`,,`,,`,`,,`---
CLOCK SYNCHRONIZATION:
The "System Clock" section of the paper "Data Owner Structure - Hardware"
defines the details of the operation of the Field Device's clock. In summary, the
User Layer of all Field Devices will be concerned with three time parameters:
NODE_TIME - the time in 1/32 of milliseconds since the device's
microprocessor last started.
SOCIAL_TIME - the time since 1 January, 1970 in terms of
Coordinated Universal Time (UTC) (Note: daylight
savings and "local" time will specifically not be
fundamental to Field Device time).
NODE_TIME_OFFSET = (SOCIAL_TIME - NODE_TIME)
All three parameters will be carried as 48 bit integers with 1/32 of a
millisecond resolution. All Standard field devices must support NODE_TIME in
their physical node data bases.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
A Field Device may be designed to directly support a clock for use by the
function blocks. For Standard blocks, this service is defined based on an "alarm
clock" approach. To provide that service, the device needs access to a reference
clock, at least to initialize its setting.
Each of the alert events will be reported must be synchronous across the
Field Bus. Thus, if the Field Device supports alert reporting, it needs a
synchronized social clock.
All logical nodes must be operating from the Field Bus clock and utilize and
support the "Node Time Synchronization" service. All devices must support the
response to the "read node time offset request". If the User Layer supports
either the alarm clock or the alert system, then it must support the "Get Node
Time" and "Get Node Time Offset" services.
Each physical node will have a bit in its options bit string that indicates
if the physical node can execute independently of its communication engine. If
so, and if any of the logical nodes in the physical node supports alert reporting
(see above), the physical node will, upon start-up, start and "tick" NODE_TIME
until the communication layers start. At that point in time, the physical node
will issue an event report that ties "NODE_TIME" to "NODE_TIME_OFFSET".
More specifically to the last item (i.e., specifically for those cases in
which the User Layer can operate separately from the communication engine):
- any time that the User Layer accesses the clock service, it may
receive a failure response.
- if the failure indicates that "NODE_TIME" is not available, the User
Layer will attempt to obtain NODE_TIME from any other Field Bus
interfaces.
- If none are available, it will use any off-Field Bus clock that shows
the time since the device start-up.
- If none are available, it will keep its own version of node time.
- the User Layer will "tick" its own NODE_TIME until it receives a
request from the lower layer for node time. At that point, it will
deliver its version of NODE_TIME and, from that point on, it will
revert to using the time service.
- the resolution and accuracy of the "ticking" that the User Layer can
accomplish is outside of the scope of Field Bus.
- if there are multiple communication services, the User Layer will
search for an operating communication service before it starts its own
version of NODE_TIME.
- if there are multiple communication services, the User Layer will
revert to the use of whichever communication layer comes up first.
- when the control of the clock is passed back to the communication
layer, the physical node will issue an alert that reports the event
and includes BOTH the NODE_TIME and the NODE_TIME_OFFSET.
There are a number of design features that have been included to address this
problem; for example, the PV and Tag display build and refresh parameter groups
defined in the paper "Array of Standard Block Parameters". However, there is
--```,``-`-`,,`,,`,`,,`---
also a problem with what might be called "serial data". This term refers to data
that the human interface needs to determine what data it needs! This serial
chain can very easily get to be three layers deep. If a serial chain exists, the
human interface would have to formulate a field bus message, wait for an answer,
formulate another message, wait for that answer, etc. The User Layer Support
Services provides mechanisms for eliminating the first two as follows.
When a human interface must display information for tag "F101", it must first
find that tag and determine its field bus address. The Directory includes that
information and is available to the human interface display builder on the "near"
side of the field bus. The Directory contains the tag name and address of all
tags on the bus.
The second step for the human interface is to determine what type of TO F101
is and what parameters it supports. If this second set of information is
sufficiently complete, the human interface can formulate ALL of its reads to the
parameters in the actual data base of F101 that are necessary to complete the
display. The design objective of the User Layer is to include all of that
"second set" of data in the Data Dictionary. It also will then be available on
the "near" side of the field bus.
It is important to recognize that all data in the Data Dictionary must be set
by the data owner. This means that the field device must know its data by some
means other than the Data Dictionary. Thus, any user-set data in the Data
Dictionary must ALSO be parameter data of the field device. Also, it is intended
that all Data Dictionary data must be stored and kept current by all higher level
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
196
devices on field bus, a non-trivial task if the amount of data is large and/or
subject to frequent change.
The following defines a data record that must be entered into the Data
Dictionary of all interoperable TO's; made available in Data Dictionary responses
to requests by other bus devices, and kept up to data by the field device. All
of the data in the records defined below is:
- explicitly known by the field device by design, OR
- defined by parameters that are "under" the data owner's static data
base revision number.
Any TO other than a standard function block can include additional records but
the defined records must be included for interoperable TO's. In the following
--```,``-`-`,,`,,`,`,,`---
table, a "*" follows the item number for items in the physical and logical node
list when the data can be fixed by the manufacturer ASSUMING that the
manufacturer will fix the type of physical node (there is only one defined in the
standard) and the logical node type (there are seven defined in the standard).
Physical Nodes:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
A single data record, with the name "PN" and containing the
following data, will be included in the Data Dictionary for every
physical node's tag name (data can be appended to the record but the
first 12 items must be included and their order and definition are
fixed):
1) 8 bit unsigned integer to define the length of the record in
bytes (including this byte in the count).
2)*8 bit integer that will contain the TO type of the physical
node (see the paper Data Owner Structure - Logical Nodes" for a
definition of the possible TO Types.)
3)*8 bit integer that will contain the Mfg. Subtype (defaults to
the same value as item (2) for standard physical nodes)(see the
paper "Data Owner Structure - Logical Nodes" for a complete
definition)(MUST have a value that is defined in Table 1 of
the paper "Data Owner Structure - Logical Nodes").
4) 16 bit integer that will contain the User Subtype (as set in the
physical node parameter of the same name) (defaults to the same
value as item (2) for standard physical nodes) (see the paper
"Data Owner Structure - Logical Nodes" for the use of this
parameter).
5) 8 bit integer that will contain the ASK of the physical node
(as set in the physical node parameter of the same name)
(see the paper "Alert Function" for a definition of an ASK).
6) 16 bit integer that will contain the BASK of the physical node
(as set in the physical node parameter of the same name).
(see the paper "Alert Function" for a definition of a BASK).
7)*24 bit unsigned integer:
The low 18 bits will define three six bit numbers, each with a
range of 0-63. They define the number of "Auto-Formatting"
variables in this physical node's data base that are unrelated
to I/O hardware. The variables are referred to as "PN_AF_x (i)"
in the paper "Array of Basic Parameters" where x defines the
access class:
x = F = mode case 00B on page 7 of the Basic Param.
paper.
x = M = mode case 10B on page 7 of the Basic Param.
paper.
x = O = mode case 11B on page 7 of the Basic Param.
paper.
The low order 6 bits define the number of variables in class F,
the next 6 bits define class M, etc.
Bits 12H & 13H define the number of alert descriptors supported
in the 0-1FH range of alert codes. Bits 14H-17H define the
number of alert descriptors supported in the 20H-3FH range of
alert codes (see the paper "Alert Function", page 8).
Note that bits 12H-17H must all be reset if the time critical
bit string for the node indicates that the node does not support
alerts. Also, bits 14H-17H must all be reset if the time
critical bit string indicates that the node does not support the
extended range of alerts.
8)*8 bit string.
Bits 3-0 - interpreted as a 4 bit unsigned integer to define the
number of bytes of "time critical" options string data
(i.e., how long is the next data item not including
this byte in the count?).
Bit 4 - set if this physical node supports the alert service.
Note: this bit identifies whether alerts are REPORTED
using the Application Layer event reporting
capability.
Bit 5 - set if this physical node supports the basic alerts.
Note: the data base parameters that support the basic
alerts are required. This bit indicates if they
do anything!
Bit 6 - set if this physical node supports the extended alerts.
Note: the data base parameters that support the extended
alerts are only present if this bit is set.
Bit 7 - set if this physical node supports extended parameters
(see the "Extended Parameters" section of this paper).
(See the paper "Alert Function"for a description of these
terms.)
9)*Time critical options bit string data [there must be exactly
as many bytes of data as is given in item (8) above] (see the
paper "Data Owner Structure - Hardware" for the definition of
this parameter).
10)*16 bit integer containing the Field Bus revision number (see the
paper "Data Owner Structure - Hardware", page 22).
11)*8 bit integer containing the total number of logical nodes in
the physical node.
12)*8 bit unsigned integer to define the number of types of hardware
attached to this physical node.
13)*a 24 bit word for each type of hardware, not included if not
present [there must be exactly as many 24 bit words as is given
in the number in item (11)]:
Bits 0 - 5: the hardware type:
These 6 bits will indicate the type of hardware described
by this 24 bit word -
0 Counter Input 7 Serial Comm. Ports
1 Discrete Registers 8 Tank Gauging
2 Foreign Memory 9 Voted Discrete Out
3 Human Interface A Voted Scalar Out
4 Pulse Outputs B Component Analyzer
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
5 Scalar Inputs C Property Scanner
6 Scalar Outputs
The values 0DH through 2FH are reserved, 30H to 3EH are
available for manufacturer use. Note: it is extremely
important that no manufacturer use 3FH: it will be given
a special meaning - see page 13 of the paper "Array of
Basic Parameters".
--```,``-`-`,,`,,`,`,,`---
Parameters" for the parameter names and numbers; see
Attachment 1 to the paper "Human I/F Considerations"
for a description of the auto-formatting variables.
Note: this value will define the maximum value for the
hardware pointer in any agent referring to this type
of hardware. It will also define the maximum value
for the index "i" in the array "I/O Value (i)" (see
the paper "Data Owner Structure- Hardware, page 12).
Each value in that array will refer to an individual
physical I/O connection. The description of the value
for each I/O type will be defined in the appropriate
function blocks. They will be arranged in order, the
value for hardware instance 0 at I/O_VALUE(0).
Logical Nodes:
A single data record, with the record name "LN" and containing the
following data, will be included in the Data Dictionary for every
logical node's tag name (data can be appended to the record but the
first 11 items must be included and their order and definition are
fixed):
1) - 9) - exactly the same as the first 9 items for PN except that
"Logical" is substituted for "Physical" at every
occurrence in the definitions (for item 9, refer to the
paper "Data Owner Structure - Logical Nodes").
Note: for item 7 (auto-formatting), (do not count the
Auto-Formatting variables declared in the physical
node for the hardware associated with the logical
--```,``-`-`,,`,,`,`,,`---
node)
10) 16 bit integer containing the value of the logical node
descriptor "CB". (See the paper "Data Owner Structure - Logical
Nodes".)
11)*16 bit integer containing the value of the logical node
descriptor "MB". (See the paper "Data Owner Structure - Logical
Nodes".)
If there is only one logical node in the physical node, then the
one resulting TO will have both a "PN" and a "LN" data record in its
Data Dictionary.
Function Blocks:
A single data record, with the record name "FB" and containing the
following data, will be included in the Data Dictionary for every
function block's tag name (data may be appended to the record but the
first 11 items must be included and their order and definition are
fixed):
1) - 9) - exactly the same as the first 9 items for PN except that
"Function Block" is substituted for "Physical" at every
occurrence in the definitions.
Note: for item 7 (auto-formatting), (do not count the
Auto-Formatting variables declared in the physical
node for the hardware associated with the
function block)
For item 8, the information for the logical node
containing this function block is reported.
For item 9, refer to the individual function block
definitions for the option bit string definition.
10) 8 bit binary string to define the number of parameters
under the User access [maximum of 5; if = 0, then no entry
for item (11)] and to define whether their access level is
forced high or low (see ASSIGN_USER in the paper "Block Modes",
p6).
11) String of 16 bit words, each one a parameter number of a
parameter that is defined to be under the User access bit.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
200
Note: the Field Device must supply enough room for a total of
5 parameters in item (11).
If there is only one function block in the logical node, then the
one resulting TO will have both a "LN" and a "FB" data record in its
Data Dictionary. If that logical node is the only logical node in the
physical node, then the PN will also be in the Data Dictionary of the
same TO.
Extended Parameters:
The User Layer Standard has defined many data base parameters to
support the nodes and their function blocks. In addition, there are
three methods provided for adding parameters in such a way that
independent Field Bus devices can access the variables. The first is
the Auto-format variables. The second is the extension variables that
are defined in the generic function blocks. The third is the one for
which the term "extension parameters" is reserved. It utilizes special
data dictionary parameters to expedite access to the extension
parameters.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
An individual data record for each "primary" extended parameter
will be included in the Data Dictionary of the TO that contains the
parameters. If the TO is a physical node, the name will be "EXPx", a
contraction of "EXtended variable, Physical node, instance x". The
names for logical nodes and function blocks will be EXLx and EXFx,
respectively. The value of "x" will be assigned in serial order,
starting with 0, for each TO.
General:
--```,``-`-`,,`,,`,`,,`---
To achieve the above, the field device's User Layer will need the
"Add -", "Delete -", and "Set Named Object Attribute" services. The
lower communication layers must support "Get List" and "Read Named
Object Attributes" requests from other field bus devices.
--```,``-`-`,,`,,`,`,,`---
Each logical node will include a bit in its options bit string that indicates
if it supports the alert function. If it does, then the physical node that
includes that logical node must support the entire alert function. The details of
the alert function support in the User Layer can be found in the separate paper -
"Alert System".
Since it is not expected that Field Devices will receive alert data, they are
assumed to not support the "event enrollment" services even if they support event
reporting. They must initiate and support the "Post Event" service and the other
portions of the field device's communication logic must support responses to
Field Bus requests for the other services. Both the Management and the lower
layers must support the "Get -" and "Set Event Control Parameters" service.
PARAMETER INDICES:
The design of the User Layer is based on the assumption that the User Layer
Support Services allow the use of an "index" associated with parameter numbers.
In general, the index is used infrequently. The index is not supported by
agents; therefore, an index is never used on a parameter that might be needed by
a block agent. Consult the papers "Array of Basic Parameters" and "Array of
Standard Block Parameters".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
202
--```,``-`-`,,`,,`,`,,`---
the parameter is read-only.
6) a value of -1 (all bits set) in the field has special meaning to
the lower layer code.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Note that any parameter that would have bit 15 set can not be accessed by any
Standard function block agent because the time of the response to the read
request would not be deterministic. Also, any parameter that would have bits 14
and/or 13 set can not be configured into an Output agent because all active
output agents must write.
The "Array of Basic Parameters" paper will use these rules as a starting
point for the design of the User Layer parameter arrays.
For all reads, the value, if it is included, will be transmitted in its full
format - either 32 bits for an analog value or 8, 16, or 32 bits for a discrete.
If the status byte is included, it will follow the value and precede the mask.
Masked writes can be used for both the analog and discrete parameters being
discussed here. For the analog values, the only time a mask has meaning is when
the status byte is included. Therefore, there are four forms of data messages
for analog values (where the bits are transmitted in the value order given here,
low order bits of each value first:
For a bit string, two limiting but simplifying assumptions are made: the full
bit string of the value is always transmitted and the mask will apply to the none
or all of the value string. Therefore, there are seven forms of data messages
for discrete value writes of a "x" bit value:
READ HANDLER:
It is anticipated that very few interoperable field devices will use a "read
handler". Where one is required (see the "remote data option" in the "Interface"
blocks), it will of course be provided. There is an option bit in the logical
nodes option string to indicate whether this service is provided in the logical
node. If it is, it will so respond in the "association" response. If the
service is provided, then it must be available for every "Interface" block
implemented in that logical node.
If the logical node supports a read handler and has a function block with an
algorithm that supports "remote data access" for certain parameters, then the
read handler MUST be used for those parameters in all such blocks in the logical
node.
The remote device seeking association can determine the TO type from its data
dictionary. Given the association response and the TO type, it can determine,
for all standard function blocks, exactly which parameters are to be accessed
through the read handler.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
204
only).
FAIL_SAFE - the 8 bit string that defines the basic FAILSAFE function
in the logical node (can be written with a mask).
NOWRITE - the 8 bit string that defines the basic NO_WRITE service
in the logical node (can be written with a mask).
LN_VAR0 through LN_VAR4
- the five logical node variables (read only).
In a similar fashion, all logical nodes will include the following parameters
that are actually associated with the data base of the physical node in which the
logical node resides (these parameters are also defined in Table 1 of the paper
"Array of Basic Parameters"):
LN_TAG Names - the array of logical node tag names in the physical node
(can be written).
TAG - the physical node's tag name (can only be written using
User Layer Support Services).
TIME_CRIT0 - the time critical bit string from the physical node (read
only).
INDIRECT WRITES:
An indirect write (called the "write service with a write handler" in the
support services document) can be used for any of the writeable parameters. All
such writes will be placed in the buffer of the "Data Base Write Service" (DBWS)
and completed by the physical node containing the function block. See the paper
by that name for details on the DBWS.
The DBWS provides a number of data base change services for the function
blocks. Three of those services are particularly important here:
- The DBWS will set an internal flag, here called "NEW_ALGO", any time
the algorithm number is changed (not just written) AND will
immediately invoke the "Disable Request" communication service, will
update the Data Dictionary, and invoke the "Enable Request".
- The DBWS will invoke the "Disable Request" communication service any
time a tag name is changed, it will invoke the "Remove Tag Name" and
"Register Tag Name" directory services, and it will update the data
dictionary for the removal of the old tag name and the entries for the
new tag name. Finally, it will invoke the "Enable Request".
- The DBWS will update the Data Dictionary any time it changes a
parameter that is included in the dictionary.
--```,``-`-`,,`,,`,`,,`---
DIRECT WRITES:
A field device may be required to enforce the NOWRITE option. The device
will only be able to stop indirect writes, not direct writes. Therefore, all
Standard devices will use direct writes ONLY for configured operations, not human
interface operations nor "user programmed" operations such as batch control.
The parameter number for all Input Words and logical node variable values
will indicate that the location can be directly written. Nevertheless, these
values can only be directly written if their agent is of type "writeable" or
"required writeable". In addition, the parameter called (z+2) in Drawing 3 in
the paper "Function Block Structure" can NEVER be written, under any conditions.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
205
SUBSCRIBER SERVICE:
If the logical node supports active agents, then a value can be cyclically
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
read into a special "cyclic read buffer". All off-logical-node configured reads
by interoperable TO's will be done using cyclic reads.
The cyclic read will take place before the start of the block execution
(i.e., at "prefetch time").
Both values will be 16 bit unsigned integers where the 16 bits will
correspond to the low 16 bits in the 48 bit clock variables defined in the paper
"Data Owner Structure - Hardware". They will be able to indicate time
differences up to 2 seconds long.
The node or block will enter in PREFETCH the length of the "prefetch time"
for the associated set of prefetches that are needed for that node or block.
This is the time, in 1/32 of milliseconds, between the beginning of the "window"
in which the cyclic read can be started and the beginning of the block execution.
If the prefetch time is larger than the full range of PREFETCH, the node or block
will set it to FFFFH. If no active, off-physical node prefetches are configured,
PREFETCH will be set to zero. See the paper "Array of Basic Parameters" for a
description of PREFETCH.
If a field bus device supports more than one logical node, then each logical
node that supports interoperable agents must support "standard on-physical-node
communication services". Such support is defined simply: it must appear to other
devices on the field bus and to the function blocks in the devices EXACTLY the
same as the communication services provided to off-physical-node communications
with the exception that there may be no communication latency. Specifically, the
indirect writes will appear to be handled through the buffer of the DBWS,
including the asynchronous latency and the ordering provided by the DBWS's FIFO
buffer. (This requirement is included for emphasis, not to the exclusion of any
of the other services.)
If a field bus device's logical node supports more than one interoperable
function block, or if it supports an interoperable function block and logical
node variables, then it must support "standard on-logical-node communication
services". Such support is the same as standard on-physical-node communication
support with the exception of the parameter read and write services themselves,
as defined here:
1) there will be no "scheduling" service.
2) "direct" writes as defined above will not exist.
3) "indirect writes" as defined above will be the only mechanism for
on-logical-node writes but they will be:
a) initiated within the function block's, or logical node's,
allocated time (i.e., they will be "in-line" writes), AND
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
b) processed immediately, NOT through a buffer, AND
c) processed with the same logic as is used by the DBWS.
Note: the standard function block and logical node agents
are defined in such a way that the parameters they
can access are limited to one-half of the parameter
range. It will be found, therefore, that most of the
logic of the DBWS will not be needed by the on-
logical-node write handler.
Note: indirect writes to all parameters ABSOLUTELY MUST BE
INITIATED AND COMPLETED WITHIN THE TIME ALLOCATION OF THE
REQUESTING FUNCTION BLOCK OR WITHIN THE REQUESTING LOGICAL
NODE'S PROCESSING TIME (i.e., within the logical node's 20%
of the time cycle).
4) cyclic reads as defined above will not exist.
5) "direct" reads as defined above will be the normal mechanism for on-
logical-node reads [the only exception being item (6)] and they will
be:
a) initiated within the function block's, or logical node's,
allocated time (i.e., they will be "in-line" reads), AND
b) processed immediately.
6) certain conditions are defined above for the utilization of a "read
handler". If there is an on-logical-node read of one of those
parameters under those conditions, then the field device will provide
the same service to the on-logical-node read. However, IT IS
ABSOLUTELY REQUIRED THAT SUCH READS BE DONE WITHIN THE TIME
ALLOCATION OF THE REQUESTING FUNCTION BLOCK OR WITHIN THE LOGICAL
NODE'S PROCESSING TIME (i.e., within the logical node's 20% of the
time cycle). It is not permissible to access the read-handler
parameter "ahead of time" as is done for the cyclic read of
off-logical-node parameters.
NO_COM. STATUS:
An agent that requests a cyclic read can, and normally will, set up a memory
location to receive a "consistency" value. This paper assumes that the agent
will initialize this location to a value of 1 and increment it every cycle, with
a limit of 32. If the value changes to zero, the agent knows that the cyclic
read took place. When it is exactly equal to 31, the agent will issue a count-
out alarm. The next cycle, when it is equal to 32, it will know that the alarm
has been set; from then on, it will stop incrementing the value. If it changes
to any value above 32, the agent knows that the value is an error code.
An agent that requests a direct write can, and normally will, set up a memory
location to receive a "completion" status. This paper assumes that the agent
will set this location to a value of 1. If the value changes to zero, the agent
knows that the direct write took place. If it changes to any other value, the
agent knows that the value is an error code.
In addition, the parameters that are in the range of parameter numbers that
are defined as having status bytes will have a "counter" byte associated with
them. The contents of that byte will be reset by the direct "write delivery"
service every time there is a write to the corresponding parameter. The DBWS
will reset the same value any time there is an indirect write. The owner will
--```,``-`-`,,`,,`,`,,`---
initialize the value to 1 and increment the same value every cycle. If the value
grows to exceed some limit, the owner will know that "no one is writing to it".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
208
A specific application of this service might need to check the data base
revision number "r" to see if the data base has been changed by some other device
(the application knows the revision number from a previous access) and, if not,
write the value "v" to the parameter "p", then index the revision number. These
operations must be done in one atomic operation in order to maintain time
coherency of the action and the revision number can not be allowed to roll over
to zero.
The User Layer Support Services are not designed to provide such services.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
In the User Layer design, the need for this service always involves
parameters that can not be addressed by agents, i.e., a direct write can not
address the parameters that need these special services. Therefore, the special
services can and will be provided by the DBWS.
CYCLE SYNCHRONIZATION:
Cycle synchronization is described in the paper "Data Owner Structure -
Logical Nodes", page 27. That scheme only operates with inactive agents. It is
based on a measure of the difference between the time that a scheduled direct
write of a parameter (or a cyclic read of a parameter) takes place and the time
that the parameter value was used (or stored) by the function block execution.
The beginning of the next logical node cycle is then delayed as appropriate to
minimize that time.
The Applications Support Services I/F is based on a model which executes all
of the read and write functions within the lower layer. However, detailed
examination indicates that there will be some code in the User Layer in real
applications to support the read and write functions. Therefore, the exact method
of determining the time of the direct write is left to the implementers. It is
only required that the overall synchronization scheme be able to determine
exactly when the Application Layer executed the direct write into the data base
parameter.
The time at which a cyclic read of a parameter takes place is provided for in
the optional User Layer routine identified in the "Subscribe Response" service
and called every time the parameter is published.
The synchronization scheme will capture the time at which the values are read
(or stored) by the User Layer. The difference in time can be calculated,
compared to the tolerance, and the start of the next logical node cycle delayed
to minimize the time difference.
--```,``-`-`,,`,,`,`,,`---
This paper will define each of the services provided by the US.
Open Request:
The UL sends a request to another UL to open an
association with a TO. The request contains a shorthand
SP-50 User Layer Technical Report Application Support Services - Attach 2 210
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
211
Open Indication:
The UL containing the TO must have a program to handle an
open request from another UL. That program is notified that
it has work to do by the open indication, which passes the
data sent by the initiating UL (IUL).
Open Response:
The responding UL (RUL) sends data to its own US
describing the TO, and the location in the RUL of any read or
write handlers required by the TO. It also sends a message to
the IUL that identifies the association. This ID will be used
by all read and write requests from the IUL to the TO. The
message may also contain additional data about the association
or communication security.
Close Request:
Either UL can ask its US to close an association with a
specified ID. If the IUL makes the request, it will receive a
status reply.
Close Indication:
A UL may have a program to handle unexpected closure of
associations. If it does, this service passes the association
ID and the reason that it was closed to that handler.
SP-50 User Layer Technical Report Application Support Services - Attach 2 211
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Read Request:
The IUL asks its US to read a specified parameter of a
specified association, and provides a buffer to contain the
reply. The RUL US sends a status reply, which contains the
data if the read was successful or an error code if the read
failed. This is the only response from the RUL. In the
meantime, the status is "wait for completion".
Read Indication:
If the read is not direct, this service notifies the RUL
read handler and passes it the parameter to read. When done,
the read handler issues the read response.
Read Response:
The RUL read handler asks its US to send the requested
data to the IUL.
Write Request:
The IUL asks its US to write a specified parameter of a
specified association, and passes it the data to be written.
It may also include data to satisfy the security needs of the
association.
Write Response:
--```,``-`-`,,`,,`,`,,`---
The RUL DBWS will send a status message to the IUL with
an ID linking it to the original request.
SP-50 User Layer Technical Report Application Support Services - Attach 2 212
Publish Request:
The IUL asks its US to publish a specified tag.parameter
along with a consistency number on a cyclic schedule. The
IUL specifies the required time window for the start and the
required period of the schedule. The IUL can optionally
specify a procedure to be called whenever the parameter is
published (the call is made immediately after the value is
published and is intended for error detection).
Publish Confirm:
If the Publish Request specified a procedure to be
called whenever a parameter is published, then the Publish
Confirm is the mechanism for calling that procedure.
Configurer.]
Subscribe Request:
The IUL asks its US to subscribe to a publisher of a
specified tag.parameter. Consistency information can
SP-50 User Layer Technical Report Application Support Services - Attach 2 213
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
214
Subscribe Indication:
The UL containing the TO must have a program to handle a
subscribe request from another UL. That program is notified
that it has work to do by the open indication, which passes
the data sent by the initiating UL (IUL).
Subscribe Response:
The responding UL (RUL) sends data to its own US
describing the location in the RUL of the requested parameter
and the location of the consistency information. The data can
optionally include the identification of a routine to be called
whenever the requested parameter is published.
Subscribe Confirm:
If the Subscribe Request specified a procedure to be
called whenever a parameter is published, then the Subscribe
Confirm is the mechanism for calling that procedure.
Cancel Indication:
The UL containing the TO must have a program to handle a
buffered service cancel request from another UL. That
program is notified that it has work to do by the cancel
indication, which passes the identification of the service to
be canceled and the reason code that explains why the
association was closed.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
215
identify a data queue in the US. The US will return the status of
the request, and an ID for future reference to the request.
SP-50 User Layer Technical Report Application Support Services - Attach 2 215
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Event Indication:
If the event enrollment request included an EM handler
identification, the US indicates to the UL EM handler that
data has been received for a specified enrollment ID. It
must also include the data if there was no queue specified in
the request. It may also indicate that a failure has
occurred.
SP-50 User Layer Technical Report Application Support Services - Attach 2 216
Inhibit Request:
The IUL asks its US to inhibit direct read and write
access to a specified TO.
Permit Request:
The IUL asks its US to again permit direct read and
write access to a specified TO.
SP-50 User Layer Technical Report Application Support Services - Attach 2 217
--```,``-`-`,,`,,`,`,,`---
2. DIRECTORY SERVICES:
The directory contains information about each TO that is useful to US for
communicating with a specified TO. The node containing a TO is considered to be
the final authority on data for that TO.
For each "base" shorthand reference, the directory will keep two
associated shorthand references: one to the "physical node" and one to
the "logical node". If the base reference is a function block, the
other two references will be as implied. They may be the same as the
base reference because of tag name condensation (i.e., if there is only
one function block (logical node) in a logical node (physical node), the
two data bases "condense" under one name). If the physical (logical)
node tag name is blank, then the base reference was to the physical
(logical) node.
For each physical node tag name, the directory will also contain
its manufacturer name, model number, and serial number. This data will
exist as the visible strings taken from the data base of the physical
node and concatenated. All sets of spaces greater than one space long
will be reduced to a single space. This information will not be
accessible from the directory but will be used by the Address Recovery
Service "Distribute Addresses".
The data dictionary contains information about named objects. All named
objects are associated with a TO. A named object may be a TO, or a parameter of
a TO, or an independently named object. The information about an object is
SP-50 User Layer Technical Report Application Support Services - Attach 2 218
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
219
called its attribute. The data that describes the attribute of a named object
may not exceed 200 octets. The data dictionary of a physical node must contain
its manufacturer name, model number, and serial number.
SP-50 User Layer Technical Report Application Support Services - Attach 2 219
--```,``-`-`,,`,,`,`,,`---
4. MANAGEMENT SERVICES:
These services comprise generic services, which operate on the layers,
address management services, which establish or recover addresses, device
download services, and social time setting services.
SP-50 User Layer Technical Report Application Support Services - Attach 2 220
SP-50 User Layer Technical Report Application Support Services - Attach 2 221
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
222
Distribute Addresses:
The UL asks the US to send a list of tag - address pairs
to a specified distribution address. The list could come from
the directory. Any device with a matching tag will set the
bus address specified in the message. The US returns a status
when the list has been transmitted, but there is no knowledge
of what happened in the other devices.
5. NOTES ON TIME:
Node time increases monotonically into the far future, until the next start-
up of the node. The rate of increase is controlled by the link layer, so that
all nodes will have the same value for link time.
Link time is determined by a link time master. Link time slaves adjust their
LTO to match. Link time is only required to be stable enough to permit
scheduling bus traffic over relatively short intervals. It has no relationship
to sunrise.
SP-50 User Layer Technical Report Application Support Services - Attach 2 222
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
223
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Application Support Services - Attach 2 223
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
224
BACKGROUND:
When bit 15 is set in the TIME_CRIT0 options bit string of a tagged object
(TO), then that TO must contain one or more extension variables. When bit 15 is
set, there must be a parameter called EXy0 in the data dictionary of the TO. If
the TO is a physical node, y = P; if a logical node, y = L; if a function block,
y = B.
Any Field Bus device can access EXy0 to find the following information:
- the extension variable's parameter number, its data type, its
descriptor strings, etc.
- all extension parameters associated with that variable that must
be included in a static data base image.
- the existence of another extension variable - leading to EXy1,
etc.
The reader should note that certain information can be obtained about a
parameter simply by inspection of its parameter number. The paper "Array of
Basic Parameters" gives the complete definition of the parameter system and a
summary is given on page 19 of that paper. Some of the more important pieces of
information are:
- can be read (if bit 15 is reset).
- can be directly written (if bit 14 is reset).
- can be indirectly written (if bit 13 is reset).
- when bit 12 is set,
+ the parameter is under the data base revision number if bit 11
is set.
- when bit 12 is reset and the parameter is in a function block:
+ if bits 10 & 9 = 00B, then there is no mode restriction on
writing the parameter
+ if bits 10 & 9 = 10B, then, in simple terms, the parameter can
only be written when the mode is in Man or O/S
+ if bits 10 & 9 = 11B, then, in simple terms, the parameter can
only be written when the mode is in O/S.
The coding system defined for extension variables in this paper will take
advantage of those parameter attributes that can be easily deduced from the
parameter's assigned identification number.
OVERALL STRUCTURE:
The coding system is arranged to define two "levels" of extension parameters
- "value" variables and "support" variables. For example, there may be need for
SP-50 User Layer Technical Report Applications Suppt Serv - Attach. 2 Extended Parameters
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
225
In general, there will be one data dictionary parameter called "EXyz" for
each "value" variable. That EXyz will indicate the existence of the associated
"support" variables.
The data contained in "EXyz" will always be arranged in 3-byte groups. The
codes that are defined in this paper will always be in the first byte of the
group. Therefore, any Field Bus device can easily scan the data string, looking
at every third byte until it finds the information that it needs.
The "value" variable is not necessarily in the static data base. Its
assigned parameter number will indicate whether it is under a revision number.
However, in order to simplify the coding of the static data base backup routine,
the coding system will explicitely identify those value variables that are in the
static data base.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The "support" variables can be shared by two or more value variables or may
even be variables that are already defined in the standard block. This
flexibility could lead to inefficiency when a higher level device attempts to
backup the static data base - a single, minimized list of static data variables
is needed. Therefore, the 3-byte groups in each Exyz parameter will be arranged
in the following order:
1) the group identifying the "value" variable
2) the group identifying any "support" variables that are newly
introduced AND are under a revision number.
3) the groups identifying "support" variables that have already been
introduced (in earlier EXyz parameters or as standard
parameters), and support variables that are not under a data base
revision number.
The codes themselves are defined in Table 1. All codes are 1 byte and are
followed by a 2-byte argument. Usually, but not always, the argument is the
parameter number of a parameter in the TO's own Field Bus accessible data base.
All parameter references must be to the TO that contains EXyz.
SP-50 User Layer Technical Report Applications Suppt Serv - Attach. 2 Extended Parameters
SP-50 User Layer Technical Report Applications Suppt Serv - Attach. 2 Extended Parameters
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
227
FDH = end of new static data list - the value variable is NOT in the
static data base.
FEH = end of new static data list - the value variable IS in the static
data base.
SP-50 User Layer Technical Report Applications Suppt Serv - Attach. 2 Extended Parameters
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
228
code = 60H + 4 * j + i
SP-50 User Layer Technical Report Applications Suppt Serv - Attach. 2 Extended Parameters
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Applications Suppt Serv - Attach. 2 Extended Parameters
Many of the controls in the DBWS are also needed for communication from on-
logical-node blocks, including the configurable part of the owning block itself.
Therefore, the DBWS is modeled as handling all of the write commands except those
from the algorithm of the owner block or node.
REQUIREMENT:
This entire paper is presented based on an implementation model in order to
simplify the description. There is no requirement that the logic be executed in
the exact order specified nor that it even be implemented in the same fashion.
Rather, any implementation that produces results that can not be distinguished
from the results of the model, with regard to timing or logic, when viewed
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
externally from the Field Bus, will be completely acceptable, even in Standard
Field Devices.
INTRODUCTION:
The Field Bus mechanism for writing to the data bases of the field devices
will appear as if it involves a "write buffer". Most write commands will be
stored in the buffer by the communication logic processor. The DBWS will remove
messages from the write buffer and service the messages.
Certain "direct" write commands will be allowed to bypass the write buffer.
However, those commands will, in all but two cases, be writing to data base
parameters that do not require any restrictions. The handling of the exception
cases will be defined below. It is necessary that a data owner be able to
inhibit direct writes for short periods of time while it access its own data
base.
All Field Bus write operations will receive ONE response from the target
entity. That response may be an immediate indication of success from a direct
write, an immediate indication of a failure of a direct or indirect write, a
delayed indication of a failure of an indirect write, or a delayed indication of
success from an indirect write. The communication logic will generate an
immediate write rejection response when the buffer is full.
It is assumed that a data owner's operation will be scheduled such that data
base reads or writes by the owner will not collide with writes by the buffer
service logic.
Writes from on-logical-node peer blocks and even from the configured portions
of the owner block will be subject to the same rules as other indirect writes.
All of these writes will be processed by the indirect write logic and, at the
same time, NONE of these write messages will go through the buffer.
The field bus devices will function as if they use an internal data buffering
scheme to hold certain data during the actual execution of the block. At the end
of the block execution, the block will inhibit data record reads and writes (both
direct and by the DBWS) and copy the buffer to the real data record. Then it
will enable both the reads and the writes.
A portion of the data record of each node and block will be identified as the
static area. This area will have a revision number service for purposes of
assisting higher level devices in keeping back-up copies, and temporary mirror
copies, of the data retained in it. It is assumed that many field devices will
have physical provision for holding the static data base during short power
interruptions. It is further assumed that many higher level control systems will
have services to store a back-up copy of the static data base, to update the
back-up based on the revision number of the static data areas in the field
devices, and to "download" the static data when necessary. There are, in
general, two revision numbers per tagged object - a revision number for the
static data NOT including the Auto-format data, and a second one specifically for
the Auto-format data. Finally, two parameters are considered to be part of the
static data but are not under either revision number. They are the function
block's requested mode and the logical node parameter FAIL-SAFE. These two very
important parameters will be tracked directly by a higher level device that can
restore a field device's data base.
Many statements in this paper refer to "actual" and "requested" mode. The
reader is reminded that there are two versions of mode in the function blocks.
One, the requested, is in the static data area and can never have more than 1 bit
set and never bit 6 (IMan). The other, the actual mode, is generated by the
function block itself, is in dynamic memory, and is read-only.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
232
The high three bits of the 16 bit range may indicate that a parameter is
"writeable" and "can be directly written". In that case, the Application Layer
can accept a direct write message and place the data from the message directly
into the User Layer's data area. The Application Layer will have confirmed that
the parameter is in fact supported by this TAG based on the list of supported
parameters that the User Layer supplied to the Application Layer when the
"Association" was made (see Attachment 1 to the paper "Application Layer Services
Interface").
The User Layer of the sender of the direct write command will receive an
immediate acknowledgement that the write command was executed or a notification
of the failure and its cause (if possible).
The Application Layer of a Field Device will normally place "indirect" write
commands into a write buffer after determining that the addressed parameter is
writeable and supported. The User Layer of the sender of the write command will
NOT receive an immediate acknowledgement that the write command was received if
it was delivered correctly. Later, when the command is taken out of the buffer
and executed, the original sender WILL receive a response that confirms that the
write command has been processed and indicates its disposition. Any time there
is a failure in the process, a failure response will be returned immediately (if
possible).
If the buffer is full and can not receive the indirect write command, the
write message will be rejected with an appropriate error message.
There are two important "twist's" in the above system. First, the parameter
numbers of the data values of Input Words and logical node variables (but not
Output Words) that are contained in this Standard, and may be used by higher
level devices to check configuration, always show the parameter as directly
writeable. However, that ability is dependent on the TYPE OF AGENT configured
for the Input Word or variable.
In fact, the default data base for the owner block will have the bits set to
show "not directly writeable". When the DBWS of the Field Device changes a
TO_TYPE, TO_TYPE1, or an agent's type, it will check the bits in the parameter
numbers of these parameters. If, at that time, the agent is of the type
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
"writeable" or "required writeable", the data owner block will allow the
parameter to be directly written. Otherwise, it will restrict it to being only
indirectly written. All communications with other blocks after that point in
time will have the correct parameter restrictions.
Note that no one can directly read the actual restriction. However, the
restriction is based on a simple logical combination of the above rule and
accessible configuration data.
Also note that, if the target block is subsequently placed in O/S mode,
associations with it will remain INTACT but its associations with other tagged
objects will be broken. It is only when its algorithm number is changed, its tag
The second "twist" is only present in Field Devices that are designed in such
a way that it is possible for the Application Layer to operate and have access to
the User Layer's memory while the User Layer logic engine is inoperable, due to
either a hardware or software failure. If such independent operation is even
remotely possible, it is required that the Application Layer engine support a
service that is defined in a later section of this paper - not in the Standard
Application Layer. This service is modeled as being a "watch-dog timer".
All of the above, except the DBWS manipulation of agent value attributes, is
assumed to be provided by the "communication processor". All of the following is
assumed to be provided by the "User Layer logic engine". A detailed explanation
of this logic, along with logic diagrams, will be given in Attachment 2.
The sender of the write message may choose to indirectly write a parameter
that is directly writeable. When this is done, the message will be handled by
the buffer processor except no writes will be allowed to the "I/O Ports".
For the parameters that must be written indirectly, the high order bits of
the 13 bit field have, in turn, been used to define certain write restrictions
for use by the User Layer. The "system" is defined and explained in the paper
"Array of Basic Parameters". The DBWS will rely very heavily on the information
in those bits.
For the remainder, the DBWS only requires the state of certain bits in the
parameter's number (along with block or node state data, of course) to determine
the write restrictions.
Some of the parameters need write services that are not provided by the
Application Layer and simple write restrictions provided in the parameter number
range definitions. A set of generic "complex write" services will be provided by
a particular range of parameter numbers and the Standard DBWS. Each individual
parameter number in the range provides a different complex write service. By
writing a data string to a selected "actor" parameter number, the writing entity
can request one of the services. The DBWS knows that the service is requested
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
because of the actor parameter number. The data string must, of course, be in
the format defined for that service. The DBWS will execute the complex service
using the data in the data string. If the service can be provided, the "write"
is considered successful. The services are detailed in Attachment 1.
WATCH-DOG TIMER:
If a Field device is designed in such a way that the Application Layer can
operate and respond to reads and/or direct writes while the User Layer logic
engine is stopped, due to either a hardware or software failure, then a service
must be provided that appears to be a watch-dog timer operated by the Application
Layer engine (i.e., continues to run while the User Layer is stopped). Again,
this is a requirement for Standard Field devices that have the above
characteristic in their design.
The model of this service is based on a watch-dog timer that will "bark" when
the User Layer logic engine stops. The maximum allowable delay in the bark after
the User Layer stops will be two times the physical node variable "AX" (see Data
Owner Structure - Hardware", page 14).
When the watch-dog barks, it will provide two services that are required if
the watch-dog exists, and a third service that is a required part of an optional
service (i.e., if the option is supported, the watch-dog service becomes
required).
Note that a higher level device must have made an association with the tagged
object before the logic engine died in order to be able to write after "death".
If there are any control schemes that are using the values whose
bits are set, control will stop correctly because they will respond to
these status bit states.
When the User Layer logic engine restarts, these bits will clear
"naturally".
The model of the operation of the field device assumes that these
variables are shown in the actual table passed to the Application Layer
as being read-only. When the watch-dog barks, it will reset the
read-only bits in the table for these parameters. When the logic engine
subsequently restarts, the bits must be returned to set by either the
watch-dog or the User Layer. Thus, while the logic engine is stopped,
the variables become writeable.
These characteristics are not true of the data in set 3 - it consists of full
pages of the clipboard and there may well be collisions between multiple devices
compressing and rewriting several pages. In addition, the data in the clipboard
will normally not be "backed up" by higher level devices. Therefore, the
revision number for the clipboards will be handled slightly different from the
others.
The design of the DBWS model does not allow any revision number service on
direct writes.
For the remainder of this paper and its attachments, the three classes will
be called "static", "auto-format", and "clipboard". For the remainder of this
particular section, the static data base and/or the Auto-format data base will be
referred to simply as "data base". There is no reference in this section to the
dynamic data base.
To satisfy those needs, the "Data Base Write Service" will monitor
writes to the data base of each tagged object and implement specified
logic. In this logic, the term "index" will be used to denote the
following procedure:
Reset the low order bit of the revision number.
IF the change counter <> 0, then
Add 2 times the change counter to the revision number.
Issue an alert to report the revision number change.
--```,``-`-`,,`,,`,`,,`---
requested mode. The monitor will not be set up if the revision
number = 0. When it does transition to "on", the monitor will
set the least significant bit in its associated revision number.
- The monitor will count the number of parameters that are changed
in its associated data base by off-node writes (but not requested
mode nor FAIL-SAFE). (A write of a data set or multiple actions
in a complex write will be counted as multiple changes, not as
one. However, a value and its status byte(s) will be considered
one entity.).
- The Monitor will maintain an elapsed time clock with a fixed time
limit of 2**6 seconds.
- Any write to the data base from off the logical node (or off
the physical node for physical node data bases) will reset the
clock (but not the counter). The monitor will not be concerned
with writes from its own node.
- Any write that indexes the block's data base revision number
will cause the monitor to drop off. (Note *)
- Any write that would change the mode to a priority lower than Man
(for analog blocks; Auto for discrete blocks) will cause the
revision number to be indexed and the monitor to drop off.
(Note *)
Writes from function blocks internal to the logical node will not
affect the monitor nor its timer and will not increment the data base
revision number. This guards against excessive Field Bus traffic as
higher level devices attempt to keep their copies of the data bases up
to date. However, the user who decides to configure a function block to
change an item of data must consider the ramifications of his action on
restarts and data base downloads.
--```,``-`-`,,`,,`,`,,`---
problem: the source block will be informed that the write was
SUCCESSFUL. When the revision number is indexed, the control action
will be allowed if it is still trying.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
This design is specifically set up to allow higher level devices to
recognize that they should not "upload" data for backup if the revision
number is 0 or odd. They can also recognize a block that is in the
process of having its data revised by the existence of an odd revision
number. The alert that is designed to inform higher level devices that
a revision number has changed will NOT be sent when the low order bit is
set: it WILL be sent when the revision number is "indexed".
Attachment 2 to this paper gives the detailed logic for the DBWS.
The details of the above general logic are included in that Attachment.
numbers being defined here are quite simple: the even number parameter
(the revision number) is read-only. The odd parameter number (the
semaphore) can, but almost never should, be indirectly written.
Under normal conditions, the data base revision number will have
some particular value and the semaphore will be equal to zero. The
revision number is one entity: the low order bit is not a flag as it is
for the other types of revision numbers.
The rest of this paper will refer only to the static and Auto-
format data bases and their revision numbers.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
239
The DBWS will enforce the objective of the NOWRITE parameter. It will
prevent most indirect writes to the entire logical node, including the logical
node's data record and the records of all function blocks in the logical node,
when bit 0 of the logical node's NOWRITE parameter is set.
The only parameters that can be written are:
1) NOWRITE itself (obeying its "parameter specific" rules)
2) the "value" and "value status byte" of a writeable agent
3) the value and status byte of any Cas, RCas, or ROut transfer location
4) any alarm acknowledgement word
5) any data base revision number
There will be a specific error response for a violation of a NOWRITE state. Since
the DBWS can not stop direct writes, this is the reason for requiring that no
Standard Field Bus devices use direct writes for writes originating from human
interface devices and user programmable (as opposed to user configurable)
domains.
All of the restrictions that follow from the parameter's number range must be
--```,``-`-`,,`,,`,`,,`---
implemented by the DBWS logic. In addition, the special requirements of the
"parameter specific" parameters must be built into the DBWS logic. This section
of this paper will highlight those parameters that require extensive or unusual
support. The"Array of Basic Parameters" paper contains the specific references
for the definitions of these restrictions. Attachment 1 to the paper "Human I/F
Considerations" details the service that must be provided to all Auto-format
variables.
The physical node's TAG name is a read only parameter. It can only be
changed by using the specific services of the Application Layer. The change will
be made with no User Layer restrictions; the Application Layer will break all
associations with, and cyclic reads of, the old tag name. The association to the
physical (and logical if the tag is collapsed) node's parameters can be remade
immediately.
The User Layer Standard only defines 0 one Physical Node TO_TYPE. Therefore,
there are currently no defined restrictions for a change to this parameter even
though it is in the class of parameters that have parameter-specific but not mode
related restrictions.
The logical node's TAG name can be changed by an indirect write with no
restrictions; it is under the revision number. A function block's TAG name can
be changed by an indirect write only if the block is in O/S mode; the TAG name is
under the logical node's revision number. The DBWS will be responsible for
notifying the Application Layer that all associations with, and cyclic services
involving, the old tag name should be stopped. Cyclic reads of the block can be
reestablished using the new tag name at any time. Note that an alert, code 3EH,
must be issued BEFORE the tag name is changed - see Tables 2 and 3 in the "Alert"
paper. This latter process is modeled using the REPORT_CHG integer described on
page 8 of the "Alert" paper.
The DBWS handling of the logical node parameters used to schedule the node is
complex. The parameters in question are:
1) TO_TYPE
2) User set value for the cycle time exponent (CX) - applicable to
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
240
The User Layer Standard defines several Logical Node TO_TYPE's. The
parameter is indirectly but not directly writeable and is under a data base
revision number. The data owner must be aware of the types of logical nodes
supported. The TO_TYPE can be freely changed to a supported type of logical node
if one of the following is true:
1) all function blocks in the logical node are in O/S mode.
2) CX is not supported in the logical node.
3) CX is supported and LN_OOS is TRUE
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The following statements define the required handling for the parameters CX and
CB:
1) a write to one of these parameters when the node type is one that
does not support the parameter will be rejected.
2) a write to CB when the node type is cycle/phase will be rejected - it
is read only in that case.
3) a write that results in an actual change to either of CX or CB in the
logical node static data base will cause the field device to
reschedule itself.
4) the DBWS will serve as the monitor of such changes and signal the
logical node to complete its current cycle (with the old value of CX
or CB in its data base), then execute the rescheduling procedure.
The logical node may have up to 5 "logical node variables". When either the
agent type or the pointer of an active agent is changed, the DBWS will be
responsible for notifying the Application Layer that all associations made by the
node, and all cyclic reads by the logical node variable that was changed, should
be stopped and the value marked "Bad", "Not-from-Process", and "No-path-to-
process". The associations can be immediately remade. The only exception to
this rule occurs when the agent type is changed between "writeable" and "required
writeable" and/or just the action upon No-Com is changed. In that case,
associations do not have to be broken and the value should not be set "Bad", etc.
If any of the parameters ASK, BASK, or the alert priority string (all free
access static data parameters) are modified, alert code 3EH must be issued. The
process to support this action is modeled using the REPORT_CHG integer described
on page 8 of the "Alert" paper.
The design of the Alert system (see the paper by that name) provides for
several alerts under the code number 3EH that report changes to the data base.
The DBWS must monitor those changes and generate the alert report.
As a service for all of the data record in a function block, the DBWS
will severely restrict write access to a block while either of the following
conditions exist:
1) the block's requested mode is LO.
2) the block's actual mode is in any form of LO mode.
The only block information that will be writeable during that time is:
1) the block's requested mode.
2) the block's data base revision numbers.
3) the values of writeable input agents.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
4) the status bits of the cascade transfer locations (full writes of
value and status will only change the status but the count-out
counters will be reset by the write and the writer will get a normal
response).
5) any alarm acknowledge word.
Likewise, the DBWS will severely restrict writes to the data record of an
output bit in a Discrete Register block or a Discrete Output block when:
1) the bit has OUTLO set.
2) the bit has a keylock set.
The only bit information that will be writeable during that time is:
1) the bit's OUTLO value.
2) the alarm acknowledge word.
All of the restrictions that follow from the parameter's number range must be
implemented by the DBWS logic. In addition, the special requirements of the
"parameter specific" parameters must be built into the DBWS logic. This section
of this paper will highlight those parameters that require extensive or unusual
support. The two papers that give the arrays of parameters contain the specific
references for the definitions of these restrictions.
The User Layer Standard defines a number of function block TO_TYPE's and
provides for TO_TYPE1. Both parameters are indirectly but not directly writeable
and are under a data base revision number. These parameters can only be changed
if the function block is in O/S mode. The DBWS must be aware of the types of
function blocks supported by the logical node and reject any writes of an
unsupported type.
The function block may have up to 5 active I/O agents. The function block
must be in O/S mode in order to change either the agent type or the pointer of an
active agent. When that is done, the DBWS will be responsible for notifying the
--```,``-`-`,,`,,`,`,,`---
Application Layer that all associations with the block, and all cyclic services
involving the block should be stopped. The DBWS will also place any necessary
default data into the agent's parameters. Associations with, and cyclic reads of
the block can be reestablished at any time. The only exception to this rule
occurs when the agent type is changed between "writeable" and "required
writeable", between "on-block" and "on-block counted" and/or just the action upon
No-Com is changed. In that case, associations do not have to be broken and the
value should not be set "Bad", etc.
The DBWS will enforce some of the restrictions on writing the requested mode
(the item numbers will be referred to in Attachment 2, Figure 4):
S1) One and only 1 bit can be set at one time.
S2) Bit 6 (IMan) can never be set.
S3) Can not set a mode bit that corresponds to a reset bit in the mode
permitted byte.
S4) the following limit on setting O/S mode:
IF the block being written to is an Output block AND
IF the block is keylocked OR all output bits are keylocked, THEN
The requested mode can be O/S only if the actual mode is O/S
S5) mode writes from an on logical node control block can not change the
mode of a block that has had a protected parameter in its data
record changed but has not yet had its revision number incremented.
The first two constraints will have a common but dedicated error response code;
the third and fourth violations will have their own dedicated response error
codes.
The DBWS will block any write to the parameter ACQUIROR that attempts to set
a non-zero value when the current value is non-zero. This violation will have
its own dedicated error response code. In addition, whenever ACQUIROR is
changed, the DBWS will make the appropriate changes in the mode attribute byte of
the same block. If the high bit of the new value of ACQUIROR is set, the high
bit of the attribute byte will be set, ELSE it will be reset. If any of the low
15 bits of ACQUIROR are set, bit 6 of the attribute byte will be set, ELSE it
will be reset (see the paper "Modes", page 8) (these rules will be referred to as
"Rule S6" in Figure 6, Attachment 2).
If any of the parameters ASK, BASK, or the alert priority string (all free
access static data parameters) are modified, alert code 3EH must be issued. The
process to support this action is modeled using the REPORT_CHG integer described
on page 8 of the "Alert" paper.
--```,``-`-`,,`,,`,`,,`---
currently equals 0.
D2) No writes to the block's "Setpoint" unless:
a) the Auto mode bit is the lowest priority bit set in the actual
mode AND PV tracking is not active AND the algorithm is not
initializing the Setpoint.
OR
b) the Auto mode bit is set in the requested mode and there are no
mode bits of priority higher than Auto set in the actual mode.
D3) Any write to the "Setpoint" or "Target_SP" of an analog block must
be setting a value within the Setpoint Limits if the Setpoint Limit
function is supported in the block. If both values are written in
one write message, this rule applies to the result of both writes,
NOT to the intermediate transient state between the two changes.
D4) The Setpoint Ramp logical (RAMP_FLAG) can not be set while:
a) there are any mode bits other than Auto set in either the
actual or requested modes.
b) the Input #1 of the block can not be "bad".
D5) The value being written into the Setpoint or the cascade transfer
locations of a Standard discrete block that has a 3-bit Setpoint
must have 1, and only 1, of the low order 3 bits set.
D6) Enforce the read-only status of the agent data area except it will
allow writing to the value and value status parameters of an input
agent that is of the type "writeable" or any agent's value in O/S
mode.
D7) The service will perform a function that is critical to the success
of the cascade scheme. It will, as part of its monitoring of the
writing into the block Setpoint and Output, mirror any write into
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@
the Setpoint also into the Cas and RCas transfer values. Similarly,
it will mirror any external write to the Output into the ROut value.
In all cases, it will set TRANSFER_VOID. See page 11 of the paper
"Function Block Structure" for the details of this operation.
D8) Reset the count-out-gate on the Cas, RCas, and ROut transfer
locations. It will reset the gate every time it receives a write to
the location. The individual blocks can then increment the gate
counter at each execution and drop the mode if the maximum count is
exceeded.
D9) A write into the value of the Cas, RCas, and ROut transfer locations
will be blocked when the status bits of the location indicate that
the value is "doubly wound up". The write of the status byte will
proceed but only bits 2, 3, and 5 will be allowed to be altered.
However, the count-out-gate will be reset as normal and a normal
response will be returned to the writer.
D10) Reset the count-out-gate on any Required Writeable agent values. It
will reset the counter every time it receives a write to the
location. The individual blocks can then increment the gate counter
at each execution and set a No-Com status if the maximum count is
exceeded.
D11) Add the default status byte to any write (except the 3 cascade
transfer locations) that does not have a status byte but is directed
to a data base variable that has a status byte.
D12) Trap the write of any status byte that is marked No-Com and reset
the No-Com status bit and set the Bad status bit.
D13) Convert a floating point + or - infinity to NaN. Also, set a
floating point -0 to +0.
D14) Detect the write of a value of NaN to any data base variable that
has a status byte and force the status byte to "Bad",
"Not-from-Process", and "No-path-to-Process".
The first 6 rules will have individual response error codes.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
244
the DBWS. These writes will appear to be indirect writes to parameters and be
placed in the DBWS buffer. The DBWS will recognize the write and execute the
service that is associated with the parameter number, using the write message as
the arguments.
This paper includes the following sections:
INTRODUCTION
DEFINITIONS AND BASIS
WRITE STATIC DATA
0) Write Data With Temporary O/S
Mode. 1) Write Data With
Temporary Man Mode. 2) Write Data
and Index Revision Number.
3) Mask Write Data With Temporary O/S Mode.
4) Mask Write Data With Temporary Man Mode.
5) Mask Write Data and Index Revision Number.
6) Index Revision Number.
7) Write Bit.
WRITE CLIPBOARD DATA
8) Obtain Clipboard Semaphore.
9) Write Clipboard Data and Increment
Revision Number. AH) Release Clipboard
Semaphore.
INITIALIZE COUNT_TIME
BH) Initialize COUNT_TIME.
GENERIC CONDITIONAL WRITES
CH) Conditional Write.
DH) Complex Conditional Write.
RESERVED AND AVAILABLE FOR MANUFACTURERS
Figure 1 -Generic Conditional Writes
Figure 2 - Generic Conditional Writes (cont.)
INTRODUCTION:
Each of these services is assigned an "actor" data base parameter number.
The numbers are in a special range of parameter numbers easily recognized by the
DBWS.
When an indirect write message is sent to one of these actor parameters, the
write is placed in the DBWS buffer just as for an ordinary indirect write. The
removal of the message from the buffer will be handled exactly as any other
indirect write: the addressed TO must not have writes to its data base inhibited.
After removing the message from the buffer, the DBWS will recognize the
parameter as being an actor and execute the service that is associated with the
parameter number, using as arguments the data that was passed as the "data to be
written" to the actor parameter.
All of the actor parameters will have their parameter number bits 15-6 =
1101000000B. The low order 64 values will be defined here.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
The last actor in this set provides a simple bit manipulation service.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
246
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
This service will simply index the revision number (causing the
data
base change monitor to drop off if it was running).
7) Write Bit:
This service will allow the value of a selected bit in a bit string,
integer, or status byte to be manipulated.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
byte 2 defined below must be present and reset.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
249
--```,``-`-`,,`,,`,`,,`---
normal write command.
The actor will provide two extra services for the clipboard:
- if the clipboard page index > CUR_CLIP_P, then
CUR_CLIP_P = index
- if the data is all spaces [character 32 (base 10)]
AND the clipboard index = CUR_CLIP_P AND
CUR_CLIP_P > 0, then decrement CUR_CLIP_P by 1.
(Refer to page 14 of the "Human Interface Considerations" paper
for
details on CUR_CLIP_P.)
The DBWS will have to check to be sure that the clipboard is supported
by the addressed TAG and that the index is:
+ not in the ROM based section of the clipboard.
+ equal to, or less than, the number of pages in the clipboard.
If either test fails, or if the semaphore = 0, the write will
fail.
INITIALIZE COUNT_TIME:
There is one service that is needed for the COUNT_TIME variables in the
physical node: they have to be initialized with NODE_TIME and all of their
associated counters have to be reset.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
250
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
251
This service assumes that the "value" has already been converted to the correct
data type as implied by the operation code. For example, if the operation code
is the simple write command and the parameter happens to be a floating point
number, the service will ASSUME that "value" is a floating point number; it will
not be able to float an integer "value".
This service will not assume that the "value" is the same length as the
parameter. That is supplied separately so that:
- selected portions of bit strings can be written
- the service logic does not have to determine the data type of
the parameter value in order to parse the command.
This service will not assume that the mask is the same length as "value". That is
supplied separately so that selected portions of "value" can be masked. The
format of the "data" directed to this actor will be:
Bytes 1&0 = CONTROL WORD (format defined below)
Required.
Bytes 3&2 = PARAMETER number of the parameter that is to be
altered (standard parameter number and format).
Required.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
252
5 = Add
6 = Subtract
7 = Subtract & Clamp @0
8 = Increment
9 = Increment & Skip 0
AH = Decrement
BH = Decrement & Skip 0
The service will check to be sure that these seven
operators are not invoked on a visible string or
discrete. Only operators 5-7 can be invoked on a
floating point parameter value.
--```,``-`-`,,`,,`,`,,`---
Increment (decrement) PARAMETER's value by 1. IF
PARAMETER's value = 0, then
Increment (decrement) PARAMETER's
value by 1.
CH = <x
DH = =x
EH = <>x
FH = >x
"x" will be defined as either 0 or 1.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
253
Bit 4 = x
Bit 5 = 0 if low order bit of mask = low order bit of value
= 1 if high order bit of mask = high order
bit of value Bits 6-8 = mask length in bytes.
= 0 = no mask
1 = length = 1 byte
2 = length = 2 bytes
3 = length = 3 bytes
4 = length = 4 bytes
5 = length = 5 bytes
6 = length = 17 bytes
7 = same as value
Bits FH-9 = value length in bytes [(value can not be larger
than (116 - length of mask)].
This write will fail if:
1) the specified parameter is not supported by this TAG
2) the write is targeted to a revision number or a
requested mode.
3) the parameter is a data type that
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
is not supported by the selected operation.
4) the message is too short - it does not include the
indicated status and mask bytes.
5) any of the write restrictions specified in the
simple indirect write service are not met.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
--```,``-`-`,,`,,`,`,,`---
The CONTROL BYTE is outlined in the bottom half of Figure 1. It always has the
"operation type" indicator in its low order bit - "test" if reset, "action" if
set. Each step can define the TAG.PARAMETER that it is to operate on AND TO
LEAVE AS THE DEFAULT FOR THE NEXT STEP. Bit 6 is set if a new parameter number
--```,``-`-`,,`,,`,`,,`---
is to be used; bit 7 is set if a new TAG is to be used. The CONTROL BYTE for
step 0 must have bit 6 set but it may default to the same TAG as used to address
the actor. It is required that all TAG's be in the addressed physical node.
It should be noted that the write message is removed from the DBWS buffer and
executed according to the ability to write to the data base of the TAG to which
the message was originally addressed (based on both indirect write inhibit and
NO_WRITE. Frequently, the first few steps of the message will be tests, not
writes. Therefore, if a message is interacting with several TAG's, the message
SHOULD NOT necessarily be addressed to the TAG that is addressed by the first
step. Rather, it should be addressed to the TAG that is addressed by the first
ACTION step. In that case, step 0 will have to identify its own TAG.
The details of the CONTROL BYTE for a "test" step are given in the top of Figure
2. Notice that bit 0 is always 0. "Test" can be any one of the following types:
0 = no test (the whole step is null but it may have value and
mask data bytes).
1 = the parameter is < x.
2 = the parameter is = x.
3 = the parameter is <> x.
4 = the parameter is > x.
5 = the low bit of the parameter is = x.
The value of x can be defined right in the CONTROL BYTE if it is equal to 0 or 1.
These two indicators are defined to be without an implied data type. For
example, if the parameter is a floating point variable, then the service will use
x as a floating point number with a value of 0 or 1 as indicated. (Note that a
floating point -0 is defined by this Standard to be identically equal to +0 but
the floating point representations are different. For purposes of this
comparison, they ARE identically equal; the actor must test for both
representations.)
Alternately, x can be defined by two or more bytes of "step data": the first
byte gives the length of the value of x (in bytes), and the second and succeeding
bytes gives the value itself, always in the correct data type. An additional 2
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
or more bytes can give a mask length and data. Bits 4 and 5 in the CONTROL BYTE
select between these alternatives as is shown in Figure 2. The general structure
of the bytes that constitute a "test" step are:
Byte 0 = CONTROL BYTE
Bytes 2&1 = parameter number of addressed parameter (if bit 6 in
CONTROL BYTE = 1)
Next 2 Bytes = internal ID of the addressed TAG (if bit 7 in
CONTROL BYTE = 1)
Next Byte = length of value (in bytes) (present if, and only if,
bit 5 in CONTROL BYTE is set)
Next l bytes = value (present if, and only if, bit 5 in CONTROL
BYTE is set AND if the length byte <> 0). If present,
must be exactly as long as specified in the length
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
byte.
Next Byte = length of mask (in bytes) (present if, and only if,
bits 6&5 in CONTROL BYTE = 11B).
Next l bytes = mask (present if, and only if, bits 6&5 in CONTROL
BYTE = 11B AND if the mask length byte <> 0). If
present, must be exactly as long as specified in the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
length byte.
Next Byte = another CONTROL BYTE
OR
end of message data.
The details of the CONTROL BYTE for an "action" step are given in the bottom of
Figure 2. Notice that bit 0 is always 1. "Action" can be any one of twelve
subtypes. They are defined exactly the same as the first twelve types in the
normal conditional write defined above.
The argument for the action is defined by two or more bytes of "step data": the
first byte gives the length of the value (in bytes), and the second and
succeeding bytes gives the value itself, always in the correct data type. In an
action step, the length byte must always be present. If the length = 0, the
action is null. If the length <> 0, the exact number of bytes as defined by the
length must be present in the message.
An additional 2 or more bytes can give a mask length and data. Bit 5 in the
CONTROL BYTE indicates if a mask is provided as is shown in Figure 2. The mask
length byte must be present if bit 5 is set, and must not be present if it is
reset. If the length is present and <> 0, then the exact number of bytes as
defined by the length must be present in the message.
The general structure of the bytes that constitute an "action" step are:
Byte 0 = CONTROL BYTE
Bytes 2&1 = parameter number of addressed parameter (if bit 6 in
CONTROL BYTE = 1)
Next 2 Bytes = internal ID of the addressed TAG (if bit 7 in
CONTROL BYTE = 1)
Next Byte = length of value (in bytes) (required, 0 for Action
CH).
Next l bytes = value (present if, and only if, the length byte <>
0). If present, must be exactly as long as specified
in the length byte.
Next Byte = length of mask (in bytes) (present if, and only if,
bit 5 in CONTROL BYTE = 1).
Next l bytes = mask (present if, and only if, bit 5 in CONTROL BYTE
= 1 AND if the mask length byte <> 0). If
present, must be exactly as long as specified in the
length byte.
Next Byte = another CONTROL BYTE
OR
end of message data.
This actor will progress through each step in order. If any step fails,
NONE of the alterations of the Data Base will be consummated and the
write will be "failed".
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
--```,``-`-`,,`,,`,`,,`---
The ultimate limit on this actor is imposed by the requirement that the
total message to the actor must be less than 121 bytes long.
Parameter numbers in the range of 0EH to 3FH will be reserved for future
standards. The range 40H to 4FH will be available for manufacturer-specific
definitions of actors.
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
257
--```,``-`-`,,`,,`,`,,`---
Value Description
0 Write
1-3 Boolean OR, XOR, AND
4 Low Bit = x
4 Bits: Operation 5&6 Ad, Subtract
1 Bit: "x" 7 Subtract & Clamp @0
1 Bit: Mask justification 8 Increment
(0=Low bit align. 1=hi bit 9 Increment & Skip 0
align) AH Decrement
3 Bits: Mask length (bytes) BH Decrement & Skip 0
CH-FH <x, -x, <>x, >x
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Value Description
0 Test
Operation type 1 Action
1 if new parameter
1 if new tag
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
Figure 2
7 6 5 4 3 2 1 0 Complex Conditional
Write -Test Subtypes
0 Value Description
0 No Test
1-4 <x, =x, <>x, >x
5 Low Bit = x
3 Bits: subtype
6&7 Reserved
2 Bits: attribute description
00 = 0
Complex Conditional
01 = 1
Write -Action Subtypes
10 =value appended
11 = masked value appended
Value Description
0 Write
Complex Cond. Write - 1-3 Boolean OR, XOR,
Action Type: 4 AND
5&6 Low Bit = x
7 6 5 4 3 2 1 0 7 Add, Subtract
8 Subtract & Clamp @0
1 9 Increment
AH Increment &Skip 0
4 Bits: Subtype BH Decrement
1 Bit: set if mask provided CH Decrement & Skip 0
DH-FH Index Revision Number
SP-50 User Layer Technical Report Database Write Service At. 1 Complex Write Service
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
259
Attach. 2 Logic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
DBWS LOGIC
The logic that is to be executed by the Data Base Write Service (DBWS) is
detailed in six drawings. This Attachment explains the detailed logic shown in
those drawings. The explanation will be given in the same order as the logic
drawings - starting with Figure 1, "Buffer Service Logic".
Most of the incoming write messages processed by the Application Layer will
be placed in the "Write Buffer" shown at the top of the drawing. This Attachment
will concentrate on the logic that removes the messages from the write buffer; it
is modeled as being processed by the function block logic processor in the Field
Device, not by the communication processor (if they
are separate processors).
If the block or node that is addressed happens to have requested that all of
its writes be temporarily blocked, the message will be retained in a User Layer
queue. Messages received later but addressed to other blocks or nodes will be
processed ahead of a message to the blocked destination but other messages to the
same blocked destination will be retained in their proper order, first received -
first written.
If the write is from off of this physical node, the Isolation_Timer in all
logical nodes in this physical node will be reset if they are running (see Data
Owner Structure - Logical Nodes, p21)
A write message to an actor will be found in the buffer just like any other
indirect write message. At a point later in the logic, the messages to actors
will be identified and directed to the complex write service. That service will
then have to write or modify data base parameters. Before doing so, the complex
write service will normally reenter this logic and confirm that the altering or
writing of the targeted parameter is permissible. This is not necessary for
actors 8-BH; they can always be written. The entry to this logic in the upper
left corner of Figure 1 is that reentry point for the complex write service.
The logic will check that the TAG and parameter being written to are
supported and the parameter is an indirectly writeable parameter. This heck was
performed by the Application Layer prior to loading the message into the buffer.
However, the tag's data base may have been changed in the meantime. In addition,
it is needed for the actor logic. If this test fails, one of the following error
messages giving the reason for the rejection of a write at this point will be
reported:
1) TAG not supported in this physical node.
2) PARAMETER not supported in this TAG.
3) PARAMETER not indirectly writeable.
The logic will determine if the write targets a static or Auto-format data
base revision number. If it does, the node labeled "A" indicates that the sub
logic in Figure 2, explained below, is to be executed.
The logic checks to see if the logical node's NOWRITE bit is set and, if so,
--```,``-`-`,,`,,`,`,,`---
whether the parameter being addressed can be written during NOWRITE (see the list
on page 12 of the paper "Data Base Write Service"). Note that the NOWRITE
restriction does NOT affect physical node parameters: hence messages to the
clipboard and COUNT_TIME data will NOT be blocked by NOWRITE. The logical node's
NOWRITE DOES affect the data in ALL function blocks in that logical node.
The logic will next check the parameter being written to see if it is a
parameter that has special write restrictions such as requiring a masked write or
can not be set negative. These requirements are defined as part of the
definition of the standard parameters (see the papers "Array of Basic Parameters"
and "Array of Standard Block Parameters"). It is required that the reason for
the rejection of a write due to a restriction be reported with one of the
following error identifiers:
1) discrete that can only be set, not reset.
2) scalar value that can not be set negative.
3) scalar value that can be written as non-zero only if currently zero.
4) a write to this variable must be a masked write.
5) a write to this variable must be a conditional write.
6) a write to this variable must be a masked conditional write.
7) a write to this variable must be a masked conditional write with the
compare done against the mode attribute byte.
The last three checks were not done ahead of the servicing of the data base
revision number because the logic in "A" is the special logic for revision
numbers and writes of revision numbers are not blocked by NOWRITE. In the same
vein, a write to an actor will not be blocked by NOWRITE BUT thecomplex write
service will return to this same logic to check the low level write command: it
will then be subject to NOWRITE restrictions.
If the write is to a requested mode, the node labeled "C" indicates that the
"sub" logic in Figure 4, explained below, is to be executed.
If the write is not to any of the specific parameters checked by the logic to
this point, it must be to a function block's data record. The node labeled "D"
indicates that the sub logic in Figure 5 is to be executed. Again, that logic
will be explained below.
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
//^:^^#^~^^"~~:~"~$
If this logic is being exercised by the complex write service, it must check
that the actor type and action type are acceptable. The only actors that can
manipulate the static or Auto-format revision numbers are numbers 0-6 and DH.
Any other actor will cause a rejection of the write.
A write to the revision number can be one of two forms: either the writing of
a specific revision number or a complex write that requests an index of the
number. Two important restrictions will be imposed by the logic. First, only an
absolute revision number can be written if the existing revision number is the
special value zero. Any other time, an absolute revision number can not be
written and only the command to index is available. When the absolute value can
--```,``-`-`,,`,,`,`,,`---
be written, the new value can not be zero nor an odd number.
The second restriction involves the complex message that indexes the existing
revision number: there is no mechanism for the writing device to define the size
of the increment. The following logic will always increase the value by twice
the number of changes that were made in its associated data base.
A complex write request that the revision number be indexed can only be
executed if the revision number is currently non-zero, the "monitor" is on, and
there is some non-zero value in a counter that has been counting the number of
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
changes to this data base. The counter is not checked in the logic because the
counter is incremented off of zero when the monitor is started by this logic.
If these tests are passed, a write command to index the revision number is
allowed. The DBWS will have been monitoring the data base revisions; the "change
counter" will contain the number of data base changes (not counting the requested
mode nor FAIL-SAFE) that have been made. All of the steps of "indexing" as
defined on page 8 of the main paper will be executed and a response message will
be sent to the writer indicating success.
If the monitor is currently "off", then no data base changes have been made
requiring a change in the revision number. The logic will not allow a writer to
index the number unnecessarily: it rejects the write and sends
the shown message to the source of the write.
A change to a logical node's TAG name is trapped and handled according to the
rules given on page 13 of the main paper.
The logic next checks for three variables that only concern logical nodes,
not physical nodes: TO_TYPE, CX, and CB. When their values are changed, the
logical node must implement a new time schedule. The model of the system assumes
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
that the generation of the new time schedule will take some finite time, after
which the logical node will restart with the new time cycle. It is assumed that
it is the DBWS that monitors these values and forces the rescheduling action by
setting an internal flag (not accessible from Field Bus). The monitor is started
or reset on this logic path. See page 13 in the main paper for additional
details.
The next logic check involves the agents for the 5 logical node variables.
If the agent type or the pointer of the agent is changed, there are specific
rules given on page 14 of the main paper for the required handling. The
operation of setting the agent's value "Bad" (and also "Not-from-Process" and
"No-path-to-Process") is shown separately so that the following step can share
the larger box on the diagram.
Function block tag names are actually logical node variables. The next step
in the logic checks for a change in one of these names. If so, then the special
rules, also given on page 13, have to be followed.
If the write is to the Auto-format variables associated with the physical I/O
hardware, either instances or I/O type, the DBWS will check for an LO key and for
the existence and mode of the associated function block(s). If LO is set by a
physical key, the write will be rejected. If there is no LO key AND if there is
no associated function block (i.e., no function block has a hardware agent
pointing to this particular I/O instance or set), the write can proceed. If
there is an associated function block, then that block must be in either O/S or
Man requested mode for the write to proceed. Note that if LO has been set by
Field Bus, it will be reflected in the mode of the associated block. There are
two different write rejection messages to cover the two different cases: 1) LO
key set but no associated function block, and 2) improper mode in the associated
function block.
Next, the logic separates the writes to the static data bases from the writes
to the dynamic data bases. Writes to the dynamic data base are simply written
and the response to the writer is sent. The others are checked for a write to
Fail-safe; if the write is to Fail-safe, the logic will apply the checks given on
page 3 of the main paper. If the rules are violated, a specific error message
will be returned to the sender.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
For all other static data base items, the logic will confirm that all writes
to parameters with "parameter specific rules" obey the rules. If the rules are
violated, a specific error message will be returned to the sender.
--```,``-`-`,,`,,`,`,,`---
For most of the remaining writes, the logic will reset the monitor if it is
on. If it is currently off, the logic will check to be sure that the value is
really being changed, and, if it is, turn the monitor on and set the least
significant bit in the associated data base revision number. The value is
written and the sender is told that the write was successful. In the special
case of a on logical node write, the value is written to the data record but the
monitor is not started nor reset.
That concludes the logic for writing physical and logical node parameters.
When logic is being exercised by the complex write service, it must again
check that the actor type and action type is acceptable. The only actors that
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
can manipulate mode are number 2 and action CH in actor DH. Any other actor will
cause a rejection of the write.
A write to the block's requested mode can be one of two forms: either a
simple indirect write to the requested mode or a complex write that requests that
the data base revision number be indexed along with the write to the requested
mode word.
Any write that changes the requested mode FROM O/S to any lower priority mode
will set FORCE_INIT = 3. This insures that the block fully initializes any time
it starts up from O/S (see page 23 of the paper "Function Block Structure").
The rest of the logic for writing modes depends on the block's data base
monitors. If both of them are currently "Off", then no data base changes have
been made requiring a change in the revision number. Therefore, the write of the
new requested mode is simple but requires an alert if there was actually a
change. Note the special check for actor 2 while the monitor is off: unnecessary
indexing is not allowed.
Figure 4
This check of the monitors is quite complicated for actor DH. It is required
that the write to the actor fail if the sender is unnecessarily requesting an
"index" of the revision number. However, it is entirely possible that "actions"
in the complex conditional write request to actor DH set up the need to index the
revision number. It is up to the complex write service logic to ensure that this
testing is done correctly.
The logic to handle the "monitor on" cases is concerned with the source of
the write message. The logic will not allow mode writes from an on logical node
control block to interfere with the handling of the data base revision number.
The logic step labeled "Write from on logical node?" prevents the downstream
logic from indexing the revision number or resetting either monitor due to an on
logical node write.
Figure 4
Note that, when this check is violated, the sender is notified that the write
was successful! This method of handling mode writes from the same logical node
results in the following:
1) the on logical node control block writing the mode will not count
out nor issue an alarm.
2) the on logical node control block writing the mode can not cause a
block to be put into control while it has a "mixed" static
configuration.
If a monitor is on and the write command is from an off logical node source,
the logic next inspects the mode being written. If the mode is lower in priority
than Man (for a block that supports Man, lower than Auto otherwise), the mode is
written, an alert warning of the new requested mode is sent if the write actually
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
264
changed the value, both function block revision numbers are indexed, and a
response message to the writer indicating success is sent.
Any mode manipulation by an actor is sent on the same path. This follows
from the very limited nature of the actors that were originally allowed to write
to the requested mode - actor 2 or DH (action CH). They specifically requested
the index of the revision number and the previous special testing confirmed that
actor DH was not unnecessarily requesting an "index".
If the write command is from an off logical node source but the new mode is
O/S, LO, or Man, the logic leaves the monitor running, the timer on the monitor
will be reset, the mode will be written, and a response message to the writer
indicating success is sent. Note that the monitor "reset" means that the timer
will be reset to zero but the monitor will continue in operation and the change
--```,``-`-`,,`,,`,`,,`---
counter is left alone.
The top portion of this Figure is concerned with the logic for writing to a
block that is in LO mode. The lower portion is concerned with the logic for
writing to static data base values that require that the block's mode be in O/S
or Man. A small logic step at the bottom of Figure 5 asserts a few rules that
apply to both cascade transfer location writes and other writes to the dynamic
data base.
LO Mode Check:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The logic checks the "class" of the parameter vs. the status of the
block's mode. This check implements the restrictions listed on page 14
of the main paper:
1) If the parameter can be written while LO mode is set, the checks
are bypassed.
2) For parameters that can be limited by the LO mode status:
a) if the requested mode is set to LO, the block will not go
into LO mode until the next execution of the block but this
situation will inhibit writes immediately.
b) if the actual mode is either LO or IMan(LO) (not any other
combinations of mode bits), then the pure LO mode has been
set in this block and writes are blocked.
c) if the write being processed is to a Discrete Output block
or an Output bit in a Discrete Register, the logic must
also check for the existence of the OUTLO flag and/or the
presence of a keylock for the particular bit whose data is
being changed by the write message.
Any of these cases will block most writes to either the block or the
bit. Even if only 1 bit among several are blocked, the message is
rejected. A response message indicating the exact cause of the
rejection will be returned to the sender. Note that this check must
recognize any mask in the write message so that the sender can
manipulate unrestricted bits in a word that has locked bits by using the
suitable mask.
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
If the block is in O/S mode, then the logic will check for a change
to the TO_TYPE, TO_TYPE1, BX, or PN values. If the write is to any of
these parameters, refer to page 14 of the main paper for the rules.
Otherwise, the value is written and the special values such as
CHANGE_PENDING and the monitor are appropriately adjusted as shown.
Note that the integer that will force the block to execute the special
three-cycle operation (FORCE_INIT) does not need to be set because that
will be done when the mode transitions out of O/S.
This step was allowed based on the requested, not actual mode.
This rather lax test is possible since the DBWS sets the initialization
counter based on the requested mode. The block will be forced to
correctly initialize even if there are a series of mode changes that are
fast compared to the cycle time of the block. The block will always go
through the three special cycles.
The logic for a parameter that is read-only unless the block's mode
is Man or a higher priority mode is similar to the logic just covered.
The requested modes that are acceptable are O/S or Man for analog
blocks, O/S and Auto for discrete blocks. In this case, FORCE_INIT must
be set as well as CHANGE_PENDING. This is because a requested mode
change out of Man DOES NOT automatically generate an initialization
pass. If the block executes before the mode is changed out of Man, it
will process the initialization and reset FORCE_INIT even while it is in
Man mode.
The next major step in the logic will be concerned with writes to
the cascade transfer locations. However, there are several rules that
apply to both those locations and other dynamic data base items. Those
rules are applied at this point.
D14) trap a NaN data value and set its "Bad", "Not-from-Process",
and "No-path-to-Process" status bits, leaving the NaN value.
Only the first rule blocks the write and generates a rejection code.
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
--```,``-`-`,,`,,`,`,,`---
The other three rules simply modify the write and continue, generally
producing only a "successful" response to the sender.
In each case, the logic checks the current status of the receiving
location. If the mode is blocking the higher level device or if the
transfer location is "doubly-wound-up", the write will not take place
BUT THE SENDER WILL BE NOTIFIED THAT THE WRITE WAS SUCCESSFUL. In the
--```,``-`-`,,`,,`,`,,`---
In each case, the logic resets the counter on the count out gate of
the transfer location if the requested mode is correct. This is done so
that the remote handshake is not broken by a doubly wound up condition.
Also, in each case, the logic will complete the writing of bits 3, 5,
and 7 in the status byte of the transfer location if the required mode
is current (for analog blocks; bits 3 and 5 of the status bytes of each
discrete bit and bits 5 and 7 of the Setpoint value of a 3-bit Setpoint
value). This allows LO mode and failure acknowledgement to pass through
a cascade that is doubly wound up.
If the state of the transfer location and the mode of the block is
appropriate, the value is written and the sender is notified of the
success.
If the above 5 checks are passed, the dynamic data write is forced
to follow the following rules. Note that these rules are simply
imposed: they do not cause the write to be rejected nor do they cause
any response error message. They simply add steps to the write
procedure:
D1c) set initialization counter to 1 for a write to "Output"
D7) mirror Setpoint and Output writes to the cascade transfer
locations.
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
D10) reset the count out gate on required writeable agent values
After these checks are completed, the value is written and the
procedure returns to Figure 2.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
will carry error codes that are at least as detailed as the "S" rules
themselves:
S6) limit on writes to ACQUIROR.
S7) limits on writes to the Setpoint Limits.
If all of the checks are passed, and after the auxiliary operations
are done, the write is executed if the value changed. If the write was
on logical node, the monitor is not affected. If the write was from a
different logical node and changed the value, the monitor is turned on
or reset. If the write was from a different logical node but did not
change the value, the monitor is reset if it is on but not turned on if
it is currently off. The procedure then returns to Figure 2.
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
269
Figure 2
STATIC & AUTO-FORMAT
A DATABASE REVISION NUMBER
Write
mode
Yes 0-6 No Reject Write:
Actor or Invalid mode.
? DH?
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
No Yes
No
No Reject write:
Monitor Can't freely
On? Index rev. #
Ye Index Return
Revision #
Figure 27: DBWS Figure 2, Static & Auto-format Data Base Revision Number
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
--```,``-`-`,,`,,`,`,,`---
Figure 3
LOG./PHY. NODE VALUES
B
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Db
Write See comments,
No Change main paper, page 12 Set flag to shut down
Log Node Object at end of cycle
TAG Yes Change value and restart.
? Follow rules given in main
Paper, pages 12 and 13
Yes Yes Yes
See main If value
Change No Change No Change Paper, page Change
TO_TYPE CX CB 12, Break AND
? ? ? associations, Off-node
Change param. Write:
Yes start
Allow new
Or restart
Chg. associations Monitor,
FB LNNo
Ver.
No inc.
TAG Type or Set var.
No Change ctr.
Name Ptr. Yes Value bad
? ?
Write LO
To Yes Key Yes Reject write:
Hrdw. Set? LO Key Set.
A-F? No
Assoc. Block
No No Block O/S or Reject write:
? Ye Man Requires O/S
? Or Man. mode
Write Yes No
To Yes
Write Value
Dynamic
Yes Send alert if change
DB? Write Yes Fail-
To Fail- Safe
No Reject write:
Safe? Rules No Violates Fail-safe Rules
OK?
No
Violates Reject write:
Param. Yes Violates parameter If Monitor on - reset it.
Spec. Specific rules. If value changes and rev.
Rule >0 start monitor, inc. change
--```,``-`-`,,`,,`,`,,`---
On
? No ctr. And set LSB of rev. #
No Logical
Node
? Yes Write value. Return
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
C Figure 4 MODE
Write
mode
Valid Reject Write:
No
Mode? Invalid mode.
S1-S4,
p15
Yes No No No
DH, Reject Write:
Actor #2
Action Invalid target
? ?
CH?
Any No Yes Yes
Related
Rev.# Reject Write:
No =0? Yes Must change
0 rev. # first.
--```,``-`-`,,`,,`,`,,`---
Yes
No
Leaving CHANGE New + Write mode.
No Yes
O/S PENDING Mode + If change,
Mode Set? (Man) send alert
? ? +Index both
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Yes No Rev. #'s
Set Yes
Force Write
From on Yes
Init. = 3 Actor Write
Logical ?
Node? No Mode
Reset And, if
Either Yes Change,
Monitor
Monitor No Send
No Times.
On? No alert
Actor
#2?
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
D
DB Figure 5 DATA BASE VALUES Reject write-
Write LO mode set - can't
Yes write now.
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
273
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Data Logical
OK Reject Write: Out, Node
?
? SP, Limits, Ramp ?
Flag & agents ctl. Write
Yes
No Value
Rule Value
No Reject Write: Change
S6, p15 Yes
OK ACQUIROR ?
No
? Control
Yes
S7 Chg. No Yes
Yes To Rev.
P14 Fix bits 6&7 in
OK? ACQUIROR ATT_ACCESS. #=0
Yes ? No ?
SP-50 User Layer Technical Report Database Write Service Attach 2 Logic
--```,``-`-`,,`,,`,`,,`---
The following is the logic for DBWS handling of writes to parameters in the
range of parameter numbers that includes status byte handling.
The Data Base Write Service will not issue any No-Com nor Bad
alarms nor reset any existing such alarms.
CASE Analog:
IF the parameter number selected is "z", then
inhibit direct writes.
write the value into parameter z
write the value into the value of parameter (z+1).
write the default status byte into the status of parameter (z+1).
IF the value of z = NaN, then
set the following bits in the status byte of parameter (z+1):
bit 1 (Bad)
bit 2 (Not-from-Process)
IF the value written to is Setpoint, then
copy the value in parameter (z+1) into (z+1) of the Cas
Transfer location.
copy the value in parameter z into z of the Cas Transfer
Location.
copy the value in parameter (z+1) into (z+1) of the RCas
Transfer location.
copy the value in parameter z into z of the RCas Transfer
Location.
IF the value written to is Output, then
copy the value in parameter (z+1) into (z+1) of the ROut
Transfer location.
copy the value in parameter z into z of the ROut Transfer
Location.
permit direct writes.
set the counter integer for parameter z = 1.
reset the counter integer for parameter (z+1).
IF the parameter number selected is "(z+1)", then
IF the value of the data = NaN, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Database Write Service Attach Indirect Writes
--```,``-`-`,,`,,`,`,,`---
CASE Discrete:
IF the parameter number selected is "z", then
inhibit direct writes.
write the value into parameter z, using the mask if provided.
copy the value of parameter z into the value of parameter (z+1).
write the default status byte into the status of (z+1).
copy the value of parameter z into the value of parameter (z+3).
write the default status byte into each of the 16 status bytes
of (z+3).
IF the value written to is Setpoint, then
copy the value in parameter (z+3) into (z+3) of the Cas
Transfer location.
copy the value in parameter (z+1) into (z+1) of the Cas
Transfer location.
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Database Write Service Attach Indirect Writes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
276
Setpoint, then
set bit 5 in the value of parameter (z+1) (Remote).
set bits 6 and 7 (ATW).
IF bit 1 in the status byte of the data is set, then
set bit 2 (Not-from-Process) in the same byte.
inhibit direct writes.
write the value into the value of parameter (z+1), using the
mask for the value and status byte if provided.
write the value of parameter (z+1) into the values of parameters
z and (z+3).
write the status byte of parameter (z+1) into EACH of the status
bytes of parameter (z+3).
IF the value written to is Setpoint, then
copy the value in parameter (z+3) into (z+3) of the Cas
Transfer location.
copy the value in parameter (z+1) into (z+1) of the Cas
Transfer location.
copy the value in parameter z into z of the Cas Transfer
Location.
copy the value in parameter (z+3) into (z+3) of the RCas
--```,``-`-`,,`,,`,`,,`---
Transfer location.
copy the value in parameter (z+1) into (z+1) of the RCas
Transfer location.
copy the value in parameter z into z of the RCas Transfer
Location.
permit direct writes.
set the counter integer for parameter z = 1.
set the counter integer for parameter (z+1) = 1.
reset the counter integer for parameter (z+3).
IF the parameter number selected is "(z+3)", then
inhibit direct writes.
FOR each of the 16 bits in the value of parameter (z+3):
IF the bit in the value mask corresponding to this bit in
value is set, then
IF (the No-Com status bit is set AND the first bit in
the mask for the status byte corresponding to
this value bit is set), then
reset the No-Com status bit (Bit 0).
set the Bad Value status bit (Bit 1).
set the Not-from-Process status bit (Bit 2).
set the Failed status bit (Bit 4).
reset the No-Path status bit (Bit 5).
set the ATW status bits (Bits 6 and 7).
IF (the receiving location is a transfer location
OR the Setpoint), then
set bit 5 in the value of parameter (z+3).
NEXT value bit.
write the value into the value and status of parameter (z+3),
using the mask for the value and status bytes if provided.
write the value of parameter (z+3) into the value of parameter z.
write the value of parameter (z+3) into the value of parameter
(z+1).
calculate the transverse Boolean "OR" of the status bytes of
parameter (z+3) and set the result into the status byte of
parameter (z+1).
IF the value written to is Setpoint, then
copy the value in parameter (z+3) into (z+3) of the Cas
Transfer location.
copy the value in parameter (z+1) into (z+1) of the Cas
Transfer location.
SP-50 User Layer Technical Report Database Write Service Attach Indirect Writes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
277
SP-50 User Layer Technical Report Database Write Service Attach Indirect Writes
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
278
Figure 2
Complex No
Semaphore Set
Write: Semaphore
Test:
Obtain = Value
Active
Semaphore
?
Yes
No
Complex Index
Semaphore Yes
Write: Do Revision
Clipboard Test: Write
Active Number
Page
?
No
Complex Semaphore
Write: Yes Write
Test: Semaphore
Release Active = 0 OK.
Semaphore ?
Write
Done
Fail
SP-50 User Layer Technical Report Database Write Service Attach Indirect Writes
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
279
Figure 1
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
APPLICATION LAYER - WRITING TO BUFFER
Write
Msg. Watch Dog
* = Data Flow Timer on UL
Logic engine.
Agent type
Parameter * Check by
Table * DBWS
Direct
Write Yes * Reject write:
Command Parameter not
No
? Writeable.
No Direct
Yes
Writeable
Param. Write directly
? To memory.
Buffer
Full\ Yes
? Respond
Reject Write:
To sender.
Can't write -
Buffer full.
Store value
No In buffer.
Done
Write Buffer
* = Data Flow
SP-50 User Layer Technical Report Database Write Service Attach Indirect Writes
--```,``-`-`,,`,,`,`,,`---
Alert Function
Alerts will be recognized by the physical node, the logical nodes, and the
function blocks in Field Bus devices that are both interchangeable and data
owners. The "Alert Function" is concerned with the services that are provided by
the Field Bus devices to detect events and to allow higher level devices to be
aware of the occurrence of these events and to achieve that awareness with
optimum efficiency relative to communication on the Field Bus.
--```,``-`-`,,`,,`,`,,`---
INTRODUCTION:
The alert service will be concerned with two types of events: "alarms" and
"notifications". An alarm is a report of a state change. A node or block can go
into an alarm state, stay in that state for a period of time, then exit, or
"return", from the alarm state. The alert service will report both the
transition into, and the transition out of, the alarm state. Between those two
events, a discrete will be maintained showing the existence of the alarm state.
A notification is a report of an event but there is no connotation of a "state"
or a "return". For example, the loss of the validity of the static data base
will cause the generate of a notification alert (the data base will immediately
be changed to the default data base).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
281
This paper will define the alert descriptions that will be available for use
by the Standard nodes and blocks. It will also describe the alarm identification
functionality that must be provided by all Standard nodes plus a reporting
mechanism that can optionally be provided in each logical node.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The alert service is designed to be supported by an alert reporting service
at the Application Layer (see the paper "Application Support Services Interface"
and its attachment - User Layer Support Services). Because of the communication
traffic associated with a burst of alert reporting, the Field Device's alert
service is designed to minimize the size of the alert record.
--```,``-`-`,,`,,`,`,,`---
ASK AND BASK:
Two parameters, designed to be of assistance to higher level devices in alert
handling, are required for all Standard nodes and Standard, Alternate, and
Generic Function Blocks - the "alert sort key" (ASK) and the "batch alert sort
key" (BASK). These two parameters are of no direct use to the field devices that
house them.
The ASK is an 8 bit unsigned integer. Every tagged object on Field Bus has
one and only one ASK. It is intended to be used by a higher level device to sort
the alerts reported up from the field buses for purposes of distribution within
the higher level system. It is intended to be an essentially permanent
assignment that shows the relationship of the tagged object to one or more
operator domains for purposes of alert display and acknowledgement.
The BASK is a 16 bit unsigned integer. Every tagged object on Field Bus has
one and only one BASK. It is intended, just like the ASK, to be used by a higher
level device to sort the alerts reported up from the field buses. However, the
BASK is specifically designed to be used in applications such as batch control
where a second sort key, in addition to the ASK, is needed. Typically, a BASK
describes a much smaller tagged object set than an ASK and is more related to
batch report preparation than to alert acknowledgement.
The ASK and BASK will be contained in the PN/LN/FB parameters in the Data
Dictionary as well as being parameters on their own right in the tag's data base
(see the paper "Application Support Service Interface", p7 and the "Array of
Basic Parameters" paper). The intended methods of using the ASK and BASK are
explained in the appendix paper "Explanation of ASK, BASK, and ACQUIROR").
provided to the physical node but not all logical nodes in a physical device have
to use the service.)
The Standard "Alert Service" is designed on the basis of the use of code and
subcode numbers to represent the description of each alert. There can be a
maximum of 63 types of alerts, each with up to 32 subcodes. The Standard nodes
and blocks will have defined lists of codes and subcodes. Each manufacturer can
choose the appropriate codes and subcodes from those lists as needed. In
addition, the undefined codes can be used if needed. There is absolutely no
intention that any field device would need or support all of the codes.
The alert code is passed in the alert record. An alert code of 3FH will
indicate that the Standard alert coding system is not being used. Since there
are no alternate systems defined, this Standard does not define what follows the
3FH code.
Most of the Standard code numbers will be in the number range of 0 - 1FH. In
addition, alerts are defined in the range of code numbers 39H to 3EH. Later
sections of this paper will define a list of alerts for all physical nodes, a
base list for all logical nodes and a base list for all function blocks.
Attachment 1 will define a list of additions for each type of logical node and
Attachment 2 will define a list of additions for each type of Standard function
block. Each list of alerts will allow a few code and subcode numbers within the
range of 0-1FH for extensions to the standard nodes/blocks; all of the codes
between 20H and 2FH inclusive are available to non-standard entities.
The code numbers 1DH - 1FH are always undefined but have associated
descriptor string variables. The manufacturer can define one or more of these
three codes for alerts that are not included in the Standard list. The descriptor
can default to a manufacturer entered string. The user can, as part of the
--```,``-`-`,,`,,`,`,,`---
device configuration, load a revised description into the descriptor string
variables (in the style and language chosen by the user). In addition, several
other code numbers in the range 0 - 1CH are usually available for manufacturer
definition but there is no defined support for labeling more than the three
alerts.
There will be a maximum of 32 (1FH) subcodes for each code. There are two
subcodes that will have a consistent definition and are implied in all of the
code lists. Subcode 1EH will always mean "the subcode identification was lost
because the alert system was full at the time of the alert". Subcode 1FH will
always mean "there is no appropriate defined subcode for the alert that
occurred".
When an alert occurs in the same cycle as an alert with the same code but a
different subcode, records for each of the alerts will normally be passed to the
Application Layer alert reporting service if it can accept them. However, later
sections of this paper define a number of situations in which alert reports are
suppressed by other simultaneous or preceding
alerts.
The alert service will include certain data base items for each of the first
32 possible alerts in each node/block. The list of those items is presented in
detail in a later section; a summary is as follows:
Configuration data:
a) alert priority - 4 bits.
b) reset unacknowledged alert option - 1 bit.
Dynamic Data:
a) alert state - 1 bit.
b) unacknowledged alert - 1 bit.
c) unreported state - 1 bit.
The Application Layer alert service will accept a user-entered value that
will prevent an alert from being overwritten if it has been "exposed" for less
than the defined amount of time. When alerts can not be passed to the
Application Layer because of that limit, the User Layer must be prepared to
provide some degree of backup. Specifically, it will retain an indication that
the NEW alerts occurred but were not reported. A later section of this paper
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
will provide an illustration of detailed logic that must appear to be performed
at the succeeding executions of the node or block. This function will be called
"overflow flagging".
The objective of this paper is to completely define the data owner parameters
that are both accessible to Field Bus and a part of the alert service. In
addition, the paper will demonstrate that there is at least one reasonable
implementation of the system. In order to meet those objectives, it is necessary
to refer to two additional variables that are not accessible to Field Bus. These
variables are used in the example implementation; they are not required. Any
implementation that preserves the exact meaning of the parameters accessible over
Field Bus is acceptable within a fully interchangeable field device. One
additional variable is an integer, called the "OVER_CTR", associated with each
physical node. Its use will be detailed in the "Field Device Alert Service
Logic" section of this paper. The second is an integer, called REPORT_CHG, that
will be explained in the section of this paper called "Report Change Indicator".
Node alerts 3 - 1CH will be defined for individual types of Standard logical
nodes in Attachment 1. As normal, alerts 1DH - 1FH may be defined and used by
the manufacturer; for each of these three alerts that are used, the associated
variable that contains the visible string description will be required.
--```,``-`-`,,`,,`,`,,`---
Function block alerts 3-1CH will be defined for individual types of Standard
function blocks in Attachment 2. As normal, alerts 1DH - 1FH may be defined and
used by the manufacturer; for each of these three alerts that are used, the
associated variable that contains the visible string description will be
required. (Refer to the definition of the Data Dictionary variable FB in the
paper "Application Support Services Interface", p12 for the indicator of which of
these codes is implemented.)
defined for alerts 20H to 3EH and, in fact, the parameter numbers have been
reserved in the paper "Array of Basic Parameters". In those cases where this
standard has defined alerts 3BH - 3EH, the alerts that have been assigned those
codes do not need any data base support.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The following lists the data that will be provided in the static
data base for each of the first 32 alerts in a block or node:
1) a single bit showing the "unacknowledge" option (required).
The bits for each alert will be arranged in a 32 bit string,
called ALERT_UNACK_OPT, for each node or block in the order
defined in the alert lists. Alert 0 will be the low-order bit.
The definition of the option will be given below. These bits
will be initialized reset.
2) A 4 bit integer showing the priority of the alert (required).
The integers will be arranged into one 128 bit string, called
ALERT_PRIORITY, with the 4 bits for alert 0 at the low order
position. The meanings of the low order 3 bits (integer values
0-7) of each nibble are:
0 = no alert - do not set alert state - do not report - do
nothing.
1 = set alert status but do not report the alert (see page
9 for a definition of "report").
2 = default value for diagnostic alerts.
3-7 = alert priorities used by higher level device.
The fourth (high-order) bit of each nibble will be reset to
indicate that the alert is temporarily inhibited (alert is not
to be reported). Thus the 4-bit integer must have a value of >9
for the alert to be reported. However, the high order bit in
Alert 0 is used as a master switch for the reporting of all of
the block's alerts EXCEPT for Alert 0. The reporting of Alert 0
can not be inhibited.
The following is the data that will be provided in the Field Bus
readable dynamic data base for each of the first 32 alerts supported by
a node or block:
1) a single bit showing the status of the alert at the last execution of
the node or block (required) (read-only).
The bits for each alert will be arranged in two 16 bit strings,
This bit will be set for one cycle for alerts that are
notifications. These bits will always reflect the true current
state of any alert independent of any alert service flow
control states.
2) a single bit called the "unacknowledged" bit (required) (read/write
Field Bus access).
This bit will be set when an alert is detected AND reported. It
will be reset by the node or block when (there is no ALARM state
AND the alarm has been reported AND the option bit above is
set). It will be reset by the node or block 1 cycle later IF
(it is a notification AND it has been reported AND the
unacknowledged option bit is set). This bit is never reset by
the node or block if the option bit is reset.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
286
reporting" is supported.
When these alert codes are used, there is no mechanism to label the
subcodes. However, there is a method of identifying which are alarms
and which are notifications. If the subcode is between 0 and 0FH, it
will be an alarm; if it is above 0FH, it is a notification. Also,
subcodes 0EH and 0FH will have the same meaning for these alert codes as
the meanings of subcodes 1EH and 1FH given above. Thus, the two
standard subcodes are available for both alarms and notifications.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The "Alert Type" that will be passed to the Application Layer will be the
alert number (i.e., the code numbers in the listing of alerts given in Tables 1-3
and Attachments 1 and 2).
Note that it is assumed that the higher level device has direct access to the
following information:
1) translation of the internal to external tag name (from its own
Application Layer Directory, see paper "Application Support
Service Interface", Attachment 1 - "User Layer Support Services").
2) TO_TYPE and TO_SUB_TYPE (i.e., node type or block algorithm number)
(from its own Data Dictionary).
3) ASK and BASK for the reported tag (from its own Data Dictionary).
4) definition of the alert number (as a function of node/block type, and
block algorithm) (for all alerts defined in the Standard).
5) NODE_TIME_OFFSET for each physical node (reported upon change by the
clock service - see the paper "Data Owner Structure - Hardware").
The alert service will NOT generate an alert report in the following
situations:
1) If the alert is NOT Alert 0 and the alert priority is less than AH.
2) If the alert is NOT Alert 0 AND the node's/block's alerts are
temporarily inhibited (high bit of Alert 0's priority reset).
3) If the alert is Alert 0 and the low 3 bits of the alert priority has
a value less than 2.
4) If an alert is defined as a "notification" as opposed to an "alarm",
there is no such event as the "return" of the alert.
5) If an alert is the low priority of a dual alert (see next Section).
will issue an alert if there have been no alerts for 3 days, and it will maintain
a non-field bus accessible variable that indicates an alert reporting overload.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
places and used as the time in 1/32 of a milliseconds. This gives
EXPOSE a range of 8 milliseconds to 397 days.
No-Alert Alert:
The time stamp for alerts will roll over after 3.1 days.
Therefore, there will be a service in the physical node executive that
will keep the time since the last alert was reported. After exactly
3*24 hours, it will issue a code 3BH physical node alert.
Three basic actions are necessary when an alert occurs. They are:
1) set status bit (for 1 cycle for notifications, till return for
alarms).
2) set unacknowledged bit.
3) generate the alert record and pass it to the Application Layer Alert
Service.
This paper will refer to action 3 as "reporting". There are certain situations
in which reporting will NOT occur. This is done to avoid unnecessary alerts to
the operator. These situations will be referred to as "dual" alerts - they are:
There will probably be failure modes in field devices in which multiple I/O
connections fail but the physical node itself can still communicate on Field Bus.
There are conflicting requirements on the alert reporting of such failures:
- It is undesirable for a failure report to be blocked by a prior
failure.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
290
The alert system will inspect the priority of each "BAD" or "FAILURE" alert
that is generated in a single execution of a function block with a hardware I/O
connection. If a physical node alert is generated as part of the servicing of a
hardware connection, the physical node and function block alerts will be combined
for purposes of suppression. Only the highest priority alert (with a priority
>9) will be issued; the other alerts in the same execution cycle will be
suppressed (not stored and issued later). Their alarm bits will be set BUT NOT
--```,``-`-`,,`,,`,`,,`---
the unacknowledged bit. If there are two or more alerts with the same priority,
the following rules will be used to break the tie:
- a FAILURE is superior to "Bad".
- the alert for the connection to the hardware is superior
- the alert for the PV is the next lower prefered.
- the alert for the parameter that is the default value of
the PV is the third preference.
- the alert for the auxiliary outputs are the next lower
preference. Each I/O function block will define the subranking.
- the alert for any other parameter except the TARGET are next.
- the lowest preference will be the TARGET parameter.
All further references to "new alerts" in this section will refer to the highest
priority alert.
The rest of this section will define a model of the operation of one aspect
of the alert system in a PHYSICAL NODE that has more than ONE hardware connection
of one type or more than THREE connections in total. It is not necessary that
the actual mechanism employed in the hardware be implemented according to the
model to be described. It is necessary that it APPEAR to implement the model -
that its Field Bus response be the same as the response that would be obtained
from the model.
IF x < y, then
x = y
IF x > 8, then
x = 8
IF x < 2, then
x = 2
+ Recognition of events
The physical node must be capable of recognizing a new failure or
recovery of each of its physical connections. If it has more than one
hardware point of a type, it can not do this using the alarm state of
the appropriate alarm because the alarm serves more than one hardware
point.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
reset FLAG_MF
- When any physical node alert that concerns the failure of a
specific hardware I/O point (i.e., codes AH - 17H) is newly
generated, the logic of Figure 1 will be executed.
- When any function block alert that concerns the failure of a
specific hardware I/O point is newly generated, the logic of
Figure 1 will also be executed. The "base" alert of Figure 1
will be the survivor of the function block's suppression rules.
Note that the "alert 39H" is a physical node alert while the
"base" alert is a function block alert.
returns" alert.
- When any physical node alert that concerns the return from
failure of a specific hardware I/O point (i.e., the "return" of
code AH - 17H) is generated, logic equivalent to Figure 1 will
be executed. The logic will, of course, be altered as necessary
for returns, and will use alert 3AH, not 39H.
- When any I/O function block alert that results from the return
from "Bad" or "FAILURE" of a specific hardware I/O connection is
generated, logic equivalent to Figure 1 will be executed. The
logic will, of course, be altered as necessary for returns instead
of initial alerts. Again, the "alert 3AH" is a physical node
alert while the "base" alert is a function block alert.
+ Method results:
When a hardware failure occurs after a period of normal operation,
the first failure is reported in the normal way. If there is a physical
hardware failure in a connection that has no function block, the
physical node will handle the alert. If a second failure occurs in the
time period, the second alert will not be reported but a special
"multiple failures" alert will replace it. The time period will depend
on the slowest node cycle time but will always be less than 8 minutes
and more than 4 seconds. Alerts for recovers will operate separately
but in the same fashion.
All Cycles:
- IF processing the physical node, then
the OVER_CTR will be serviced as described above.
- IF processing a logical node, then
IF LN_OOS = TRUE, then
IF REPORT_CHG = 1, then
set REPORT_CHG = 0
set all alarm states = 0
set all unacknowledged bits = 0
DO NOT do any further processing of the alerts this cycle.
- IF processing a function block, then
IF the actual mode of the block = O/S, then
IF REPORT_CHG = 1, then
set REPORT_CHG = 0
set all alarm states = 0
set all unacknowledged bits = 0
DO NOT do any further processing of the alerts this cycle.
- IF REPORT_CHG > 0, then
set temp = 0
FOR x = 0 to 31
IF alert state bit for alert x = set, then
temp = 1
set unreported bit for alert x
NEXT x
IF OVER_CTR is set, then
IF REPORT_CHG > 1, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
293
IF temp = 1, then
OVER_CTR = 2
skip alert service for this node/block this cycle.
- IF (OVER_CTR is <> 0 OR REPORT_CHG = 1) then,
execute the logic given in the CASE "Cycle(s) After A 'Buffer
Blocked' Cycle".
ELSE
Do CASE "Normal".
CASE Normal:
If (a supported alert is a notification AND its state bit is set),
then
reset the state bit.
IF the unacknowledge option bit is set, then
reset its unacknowledge bit.
Any alert (alarm or notification) that is found active but whose state
bit is reset will be "worked". If more than one subcode of an alert
is active, they all can be worked at the same time.
For each new alert that is being worked, the state bit will be set if
the priority is not 0 or 8. The alert will be reported (once for each
subcode unless there is alert suppression) if the priority is greater
than 9 and reporting for this tag is not inhibited. Note that setting
the unacknowledged bit is included in the "reporting" action. Note
also that bits 1EH and 1FH in the time word of the alert record must
be reset in a "normal" report.
Any alarm that is found inactive but whose state bit is set will be
report as "returned". The subcode is never reported with a return.
will be, then the unreported bit will be set on that node or block
alert.
For all subsequent alerts found in this physical or logical node (but
not in this function block), there will be an attempt to write the
alert reports to the Application Layer. They will all have bit 1EH in
the time word set because OVER_CTR is set.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
294
of the report; bit 1FH of the time field in the report will be
set (of course, bit 1EH will also be set because OVER_CTR > 0).
The higher level device will interact with the Application Layer in its Field
Bus interface and receive the alerts when reported. The Field Bus interfaces of
the higher level devices will receive the sequence number assigned to each alert
by the Application Layer of the Field Device and will be able to request any
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
295
missed alerts from the Field Device as long as the missed alert is still in the
Alert Service buffer.
When there is a change in the static data that is critical to the reporting
of alerts, the Field Bus node serving a higher level device will receive an alert
--```,``-`-`,,`,,`,`,,`---
code 3EH with a priority of 0. It is assumed that that alert will be reported to
all higher level devices getting the ASK or BASK of that tag. If the alerts are
being sorted based on the use of priority 3 for system alarms, the priority of 0
will be a key indicator - the alert 3EH should go to both classes of consumers.
The higher level devices will know that the current alerts for that tag should be
canceled and that they will be repeated, if they still currently exist, using the
new static data.
No reproduction or networking permitted without license from IHS Not for Resale
296
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Subcode: 00 - complete hot restart executed.
01 - all static data OK, timer 0 expired but not timer 1.
02 - all static data OK, timer 1 expired.
03 - complete loss of static data bases. (Suppresses
code 3EH).
04 - loss of physical node static data base but all
logical node and function block static data is OK.
(Suppresses code 3EH).
05 - loss of physical node and one or more logical node
static data bases but function blocks OK. (Suppresses
code 3EH).
06 - loss of physical node and one or more function block
static data bases but logical nodes OK. (Suppresses
code 3EH).
07 - configuration error fatal to the operation of the
physical node and all of its logical nodes.
08 - configuration error fatal to the operation of the
physical node but all logical nodes unaffected.
09 - 19H - reserved for future standardization.
1AH - 1DH - manufacturer specific.
2) Field Bus communication port failure (alarm).
Subcode: 00 - No response on the bus.
Note: when a physical node that supports a
clock first establishes a value for
NODE_SOCIAL_OFFSET, it will send a
RETURN of this alarm unless the
actual failure code is known.
01 - no response from Field Bus interface A.
02 - logic processor failure - Field Bus A.
03 - non-volatile system code parity violation - Field
Bus A.
04 - non-volatile system code failure (i.e., "check-sum"
or equivalent failure) in Field Bus A.
05 - static data memory parity violation - Field bus A.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
06 - static data memory failure (i.e., "check-sum" or
equivalent failure) in Field Bus A.
07 - static data memory failure (actual diagnostic such as
write and readback, not parity nor "check-sum" nor
equivalent) in Field Bus A.
08 - RAM memory parity violation - Field bus A.
09 - RAM memory failure (i.e., "check-sum" or
equivalent failure) in Field Bus A.
AH - RAM memory failure (actual diagnostic such as write
and readback, not parity nor "check-sum" nor
equivalent) in Field Bus A.
BH - excessive message errors while on Field Bus A.
Note: for physical nodes with only one Field Bus
interface, use the codes for Field Bus interface A.
CH - no response from Field Bus interface B.
DH - logic processor failure - Field Bus B.
EH - non-volatile system code parity violation - Field
Bus B.
FH - non-volatile system code failure (i.e., "check-sum"
or equivalent failure) in Field Bus B.
10H - static data memory parity violation - Field bus B.
11H - static data memory failure (i.e., "check-sum" or
equivalent failure) in Field Bus B.
12H - static data memory failure (actual diagnostic such as
write and readback, not parity nor "check-sum" nor
equivalent) in Field Bus B.
13H - RAM memory parity violation - Field bus B.
14H - RAM memory failure (i.e., "check-sum" or
equivalent failure) in Field Bus B.
15H - RAM memory failure (actual diagnostic such as write
and readback, not parity nor "check-sum" nor
equivalent) in Field Bus B.
16H - excessive message errors while on Field Bus B.
17H - 1AH - reserved for future standardization.
1BH - 1DH - manufacturer specific.
3) Primary or "A" power supply lost (alarm).
Subcode: 00 - output power lost.
01 - 0FH = Reserved.
10H - low voltage (i.e., "gray out").
11H - high voltage.
12H - supply hot.
13H - supply cold.
14H - cooling fan lost.
15H - excessive electrical noise in output.
4) Primary or "A" power supply warning (alarm) (must be suppressed if
alert #3 is already set or if it is set at the same time).
Subcode: 00 - maintenance switch open.
01 - 0FH = Reserved.
(subcodes 10H+ the same as for code #3).
5) Back-up or "B" power supply lost (alarm).
Subcode: (subcodes the same as for code #3).
6) Back-up or "B" power supply warning (alarm) (must be suppressed if
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
299
function blocks.
11H) Node hardware failure - Pulse Output (alarm).
Subcode = the number of the hardware identifier (1CH = "identifier
number 1CH or higher", 1DH = "all hardware of this type",
1EH and 1FH are reserved for their general meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
12H) Node hardware failure - SI's 00 - 1CH (alarm).
Subcode = the number of the hardware identifier (1DH = "all Scalar
Inputs in this range", 1EH and 1FH are reserved for
their general meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
13H) Node hardware failure - SI's 1DH - 39H (alarm).
Subcode = the number of the hardware identifier - 1DH (1DH = "all
Scalar Inputs in this range", 1EH and 1FH are
reserved for their general meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
14H) Node hardware failure - SI's 3AH+ (alarm).
Subcode = the number of the hardware identifier - 3AH (1CH =
"identifier 56H or higher", 1DH = "all Scalar Inputs 3AH
and above", 1EH and 1FH are reserved for their general
meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
15H) Node hardware failure - SO (alarm).
Subcode = the number of the hardware identifier (1CH = "identifier
number 1CH or higher", 1DH = "all hardware of this type",
1EH and 1FH are reserved for their general meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
16H) Node hardware failure - VD (alarm).
Subcode = the number of the hardware identifier (1CH = "identifier
number 1CH or higher", 1DH = "all hardware of this type",
1EH and 1FH are reserved for their general meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
17H) Node hardware failure - VS (alarm).
Subcode = the number of the hardware identifier (1CH = "identifier
number 1CH or higher", 1DH = "all hardware of this type",
1EH and 1FH are reserved for their general meaning).
Note: it is assumed that this alert will normally be turned off
and the hardware failures reported through the associated
function blocks.
18H - 1AH) Reserved for future Standards definition.
1BH - 1CH) Available for manufacturer definition.
1DH - 1FH) Available for manufacturer definition and associated with
the three alert descriptor strings.
20H - 2FH) Available for manufacturer definition
30H - 38H) Reserved for future Standards definition.
39H) Multiple Hardware Failures (notification):
Subcode: 00 - physical node notification that more than one alert
has occurred in or related to physical hardware
failure during the time period.
3AH) Multiple Hardware Failure Returns (notification):
Subcode: 00 - physical node notification that more than one alert
has occurred in or related to return from physical
hardware failure during the time period.
3BH) No-Alert Alert (notification):
Subcode: 00 - physical node notification that 3 days have elapsed
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
300
--```,``-`-`,,`,,`,`,,`---
report it to the human interfaces (or even historize it?).
There is no need for the acknowledgement bits. The
unreported bit is not needed because the "LR_OFFSET"
(described in the paper "Data Owner Structure - Hardware",
page 15) can simply not be updated until the report is
accepted by the Application Layer. Thus there is no data
base needed for this alert.
Note: No other subcode can be used.
3DH) Physical node static data base change (notification):
Subcode: 00 - physical node data base revision numbers changed -
both base data and Auto-Format variables.
01 - physical node static data base revision number
change - not Auto-Format variables.
02 - physical node auto-format variable data base change.
Note: this alert is NOT set when the auto-format
variables associated with a hardware instance
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The discrete hardware will NOT set a hardware failure alert when less than
all bits in a multibit discrete register are detected as failed: all such
failures will be allowed to flow through to the control function using the data.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
--```,``-`-`,,`,,`,`,,`---
1AH - 1DH - manufacturer specific.
1) Logical node static data base validity notification.
Subcode: 00 - not used.
01 - not used.
02 - not used.
03 - complete loss of static data bases for the logical
node and all of its function blocks. (Suppresses
code 3EH in the logical node and codes 2 and 3EH in
all function blocks in the logical node.
04 - not used.
05 - loss of logical node static data base but all function
block static data is OK. (Suppresses alert code 3EH).
06 - all logical node static data OK, all function block
static data lost. Suppresses alert codes 2 and 3EH
for all function blocks in the logical node.
07 - 19H - reserved for future standardization.
1AH - 1DH - manufacturer specific.
2) Logical node configuration error (not fatal) (notification).
00 - entered CX < MX (MX used).
01 - entered CB > MBC (MBC used).
Note: this subcode will not be used when the set of
values for PN causes an excessive number of
blocks per cycle in one of the cycle/phase
type logical nodes.
03 - violation of MBC due to the current values of PN.
(node PH's adjusted to continue logical node
operation).
04 - Logical Node variable #0 configuration error - that
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
303
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
06 - Failsafe hardware bypass switch in effect.
07 - 19H - reserved for future standardization.
1AH - 1DH - manufacturer specific.
4) - 1CH) See Attachment 1 - Logical Node Extensions
1DH - 1FH) Available for manufacturer definition and associated with
the three alert descriptor strings.
20H - 2FH) Available for manufacturer definition.
30H - 3BH) Reserved for future Standard definition.
3CH) Private Clock Bias Change (notification):
Subcode: 00 - the logical node has recognized a change in the
PRIVATE_OFFSET value such that the current value is
different from the last reported value by more than
than the change limit (P_OFFSET_DB - see the paper
"Data Owner Structure - Hardware", page 14).
Note: the "time" value that will be included in the record for this
alert will be based on the Field Bus system time.
Note: this alert will have a priority of 3; it is assumed that
the higher level device would use the information but not
report it to the human interfaces (or even historize it?).
There is no need for the acknowledgement bits. The
unreported bit is not needed because the "LR_BIAS" (described
in the paper "Data Owner Structure - Hardware", page 14) can
simply not be updated until the report is accepted by the
Application Layer. Thus there is no data base needed for
this alert.
Note: no other subcode can be used.
3DH) Logical node static data base change (notification).
Subcode: 00 - logical node static data base revision number change
- not Auto-Format variables.
01 - logical node auto-format variable data base change
Note: this alert is not sent when the auto-format
variables associated with hardware are changed.
It is only set for the LN_AF_x (i) variables.
02 - FAIL-SAFE bit 0 value change.
Note: this alert will have a priority of 3; it is assumed that the
higher level device would use the information but not report
it to the human interfaces (or even historize it?). There is
no need for the acknowledgement bits. It is assumed that the
data base change is signaled by an internal flag that can
simply not be reset until the Application Layer will accept
the report. Thus there is no data base needed for this alert.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
show multiple changes.
Note: this alert MUST be successfully transmitted before the change
takes place and before any more alerts are issued by this
node/block.
Note: this alert will be unique in that it will have a priority of
0; it is assumed that the higher level device would use the
information but not report it to the human interfaces. There
is no need for the acknowledgement bit. The REPORT_CHG
mechanism that is modeled in this paper substituted for the
unreported bit. Thus there is no data base needed for this
alert.
Note: no other subcode can be used.
3FH) Reserved for coding system escape.
--```,``-`-`,,`,,`,`,,`---
Figure 1
Yes Base No
No Yes Alert
Set 39H Alert
Priority
Alert 39H
FLAG_MF No >9?
Status Priority
Set?
>0? Yes
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The following is the table of the alerts that are to be added to the logical
node alert list for each of the specific node types:
--```,``-`-`,,`,,`,`,,`---
05) Configuration Violation (Notification).
Subcode:
for Unscheduled logical nodes -
00 - 09H - reserved for future standardization.
0AH - 1CH - manufacturer specific.
for other types of unscheduled logical nodes -
see the detailed definition of the specific logical node.
06) Node disabled (Alarm).
Subcode:
for Unscheduled logical nodes -
00 - 09H - reserved for future standardization.
0AH - 1CH - manufacturer specific.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
310
--```,``-`-`,,`,,`,`,,`---
from Field Bus.
d) Keylock set while block mode = O/S (Alarm).
This alarm can only be set by output blocks that support a
hardware keylock.
e) Block Calculation Error (Alarm).
Any time a block encounters an Overflow in its process value
calculations, it will set this alarm. The alarm will be reset
when the block calculations in any one cycle do not encounter
an overflow condition.
f) Block Initialization Tolerance Error (Notification).
This alarm is used, for example, by the Math block when
initialization causes division by a number that is smaller than
the tolerance set by the user.
g) PV "Bad" (Alarm).
In a discrete block that supports this alarm, it is only set
when all of the PV bits are "Bad".
h) PV HIHI (Alarm).
This alarm is only used by analog blocks.
i) PV HI (Alarm).
Note that this alarm and the next one will be repeated in the
Alert buffer according to the rules of the alarm repeat
function defined in the paper "Standard Block Functions". This
alarm is only used by analog blocks.
j) PV LO (Alarm).
This alarm is only used by analog blocks.
k) PV LOLO (Alarm).
This alarm is only used by analog blocks.
l) PV Deviation (Alarm).
Detail code: 00 - no detail code.
01 - Lo Deviation.
02 - Hi Deviation.
This alarm is only used by analog blocks.
m) PV Target "Bad" (Alarm).
Detail code: 00 - no detail code.
01 - analog value bad or all bits bad.
02 - 1 bit bad (used in discrete blocks only).
03 - 2 bits bad (used in discrete blocks only).
04 - no bits set (used in discrete blocks only).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
312
valve or pump.
ae) Low Driver Power Warning (Alarm).
This Alarm is intended to be used to indicate that the primary
motivating power of the output device is below its normal
level. For example, the instrument air pressure supplied to an
air-driven valve is below its normal pressure.
af) Driver Saturated (Alarm).
This Alarm is intended to be used to indicate that the output
driver is "full on" or "full off" but still can not drive the
output such that the feedback matches the desired output.
ag) Hardware Override (Alarm).
This Alarm is intended to be used to indicate that an external
signal has taken control of the hardware. For example, this
would be the Alarm used to indicate that an external signal
from a safety system has taken control of the output.
ah) I/O signal path failed (Alarm).
This Alarm is intended to be used to indicate a failure
external to the field bus device itself.
ai) One or more discrete signals grounded but still operable (Alarm).
aj) One or more discrete signals shorted (Alarm).
ak) One or more discrete signals open (Alarm).
al) One or more discrete signals have dirty contacts (Alarm).
am) One or more discrete signals integrity bad (Alarm).
Note: this alarm is not intended to be used in cases where one
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
of the previous 4 alarms is appropriate.
ia) Input 0 quality (Alarm).
Detail code: 00 - no detail code.
01 - No-Com, but "Good".
02 - Bad.
ib) Input #1 quality (Alarm).
Detail code: 00 - no detail code.
01 - No-Com, but "Good".
02 - Bad.
ic) Input #1 Not-From-Process (Alarm).
id) Input #2 quality (Alarm).
Detail code: 00 - no detail code.
01 - No-Com, but "Good".
02 - Bad.
ie) Input #3 quality (Alarm).
Detail code: 00 - no detail code.
01 - No-Com, but "Good".
02 - Bad.
if) Input #4 quality (Alarm).
Detail code: 00 - no detail code.
01 - No-Com, but "Good".
02 - Bad.
ig) Input #5 quality (Alarm).
Detail code: 00 - no detail code.
01 - No-Com, but "Good".
02 - Bad.
ih) Setpoint Limit (Alarm).
Detail code: 00 - no detail code.
01 - LO Limit.
02 - HI Limit.
ii) Setpoint Ramp Turned Off (notification)
Detail code: 00 - no detail code.
01 - Output Failed
02 - LO mode set
03 - No path to process
04 - IMan set
05 - Change to non-Auto mode (none of above)
05 - Input #1 Bad
06 - Input #1 not from process
07 - Target outside of Setpoint Limits
ij) Input #2 or higher "No-Com" (Alarm).
ik) Input #2 or higher "Bad" (Alarm).
il) Input #3 or higher "No-Com" (Alarm).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
314
INTRODUCTION
THE VARIABLE SFail-Safe
FORMAL DEFINITION OF OPTION SUPPORT
CHANGES TO THE DATA BASE DURING SHUTDOWN
READ/WRITE DURING FAILURE
RESTART
Self Check Output Block Logic
Inhibit R/W at Power-up Outputs Held or Have Feedback
Check Clock TIMER1 OK or "Go" Set
Read Timers Initialize Inputs
Check Combined Data Base "Go" Set
Work Each Logical Node Set Failed
Check Static Data Base Check Logical Node Dyn. Data Base
Hardware Output Block Work Each Physical Hardware Point
Check Dynamic Data Base Physical Node Static Data Base
TIMER0 Expired FB_FAIL Set
Hardware Input Block Start-Up
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Set Initialization Counter Initialize Timers
COMMUNICATION INTERFACE RESTART
Figure 1 - Physical Node Power-Up
Figure 2 - Logical Node Power-Up
Figure 3 - Communication Interface Power-Up
INTRODUCTION:
The start/restart procedure provides for four types of restarting. The fastest
one might be called a "hot" restart. The block restarts without even
initializing itself: it simply resumes operation as if nothing ever happened.
The second is analogous to a "warm" restart: operation resumes after
initialization is accomplished. Following the same analogy, the third is a
"cold" restart; it is used only for output function blocks. The cold restart
will force a configured block in the cascade structure to go into Man mode (Auto
mode for output and discrete blocks) as a result of the restart. These first
three types are differentiated based on timer values, the validity of the dynamic
data base, and the block algorithm. The final type, restarting with a null data
base, is forced when the data base security testing determines that a required
static data base was corrupted.
Two timers are included in the logic to be described. It is assumed that these
timers are implemented in such a way that they operate independently of the logic
processors and independently of the power to the device. When the block
execution logic processor restarts, the timers will indicate the length of time
SP-50 User Layer Technical Report Field Device Start and Restart
since the block execution logic processor stopped execution, even if the failure
was due to the total loss of power to the device. If either or both of the
timers are not implemented, they should be considered as "expired" in the logic
to be described below.
Both of these timers apply to the complete physical node and their requested
and actual settings are part of the physical node's static data base. They are
controlled by the block execution logic processor, not by the communication logic
processor. They are assumed to be "count down" timers so that the physical
node's data base is not needed to determine if they have "expired".
required that the timers be able to time the full time value defined above. It is
only required that the time parameters exist in the data base and that the field
device accept, retain, and support the reading of, the timer ranges specified
above. If the actual timers can not count to the full time of the requested
value, then the value shown in the timers will be less than the requested time.
There is no intent to require that a field bus device implement the assumed
model. The only requirements are:
1) the field devices must respond to a failure in a way that is a
functional duplicate of the model, noting the many options.
2) the device must support the data base parameters consistent with the
chosen (and indicated) options.
3) the two timers defined in the following discussion must operate as
defined if they are implemented.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
4) the communication logic must control writing into, and reading
from, the data base of blocks whose processor is stopped or whose
logical node's data base has a revision number of zero.
The purpose of the following discussion is to completely define the data base
items associated with "Restart" and to give an existence proof of at least one
reasonable restart procedure.
This variable defines the desired action for ALL of the output points in the
physical node in the event of a failure that precludes both normal operation and
the application of the FailSafe definitions that are provided for each individual
output point. The alternatives are:
1) reset = go to the no-power state
2) set = hold at the present state
SP-50 User Layer Technical Report Field Device Start and Restart
The value is also used to control the action of the total physical node when the
physical node's data base is lost. If SFail-Safe is reset, the physical node
will shutdown when the physical node's data base is lost. There will be a
parameter in the physical node's data base that can only be written to when the
processor is stopped. That parameter, RESTART, will be a discrete variable.
When the set state is written to it, the physical node processor will again try
to start up. See the paper "Array of Basic Parameters" for a definition of that
parameter. For purposes of this paper and the Standard, the terms "physical
node's processor" or "logic processor" will refer to either a real processor (if
there is one real processor for communications and another for the physical node
functions) or to the physical node task as in a single processor, multitasking
system.
The parameter called SFAIL-SAFE will be an 8-bit binary string variable in the
physical node's data base. The logical state of the variable SFail-Safe
referenced in this logic will be the low order bit reported in that string. Bit
1 in the string will be the user selected value for SFail-Safe. The device will
transfer the state of bit 1 to Bit 0 IF the device can support that option and IF
the option is indeed "writeable". Bit 1 will be the only bit in the byte that can
ever be written over Field Bus. The Data Base Write Service of the field device
will require that it always be written as a masked write with only bit 1
writeable. The variable is defined as being in the static data base so that it
will be uploaded and downloaded in those situations in which bit 1 can be
written. The meaning of the other bits in the parameter SFAIL-SAFE will be
defined immediately below.
A manufacturer may choose to design a field device so that the value of bit 0 in
the parameter SFAIL-SAFE is not writeable over Field Bus. In that case, bit 2 of
the parameter SFAIL-SAFE will be set. If the value of bit 0 can be changed, for
example by a physical jumper, but it can not be written over the Field Bus, the
value of the current setting will be shown in bit 0 but it will, of course, not
be writeable. Nevertheless, Bit 1 MUST still be writeable, it just does nothing.
The manufacturer may choose to design the restart logic in a field device so
that it will always operate as if SFailSafe is fixed in value (set or reset) and
there is no procedure provided to the user to change it (even a physical
procedure). In that case, bits 2 and 3 of the parameter SFAIL-SAFE will be set.
If bit 3 is set, bit 2 can not be reset. Bit 0 will reflect the appropriate
value.
the user, associated with the correct physical output, and assured of being
correct after an upset. In this case, they will be used in place of SFailSafe in
the following logic for each physical output but SFailSafe will still be
implemented for the determination of the reaction to a loss of the physical
node's data base. This case will be indicated by setting bit 4 in the SFAIL-SAFE
byte.
Finally, bit 6 is set if the restart procedure is not consistent with this
description. Bit 7 is not currently used but is retained for future standards
use.
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
The physical node MUST support the following parameters, must never change
their values, and must protect them to the same extent that it protects the
remainder of the static data base.
- REQ_TIMER0
- REQ_TIMER1
- SFAIL-SAFE (the Data Base Write Service will automatically
mask all writes to this value so that only bit 1
is written.)
IF bit 2 in the physical node option bit string is set, then
The physical node must support the following additional
parameters: - RESTART
- TIMER0
- TIMER1
Assume the following NOT supported:
- logical node support for the Fail-Safe parameters and
logic. - logical node support for an actual physical input
to the
Fail-Safe logical.
- logical node support for an isolation timer.
- TIMER0.
- TIMER1.
IF the logical node's time critical options bit string has bit
4 set, then
the logical node has the Fail-Safe parameters and logic.
IF the logical node's non-time critical options bit string
has bit CH set, then
the logical node supports a physical input to the
Fail-Safe logical.
IF the logical node's time critical options bit string has
bit 5 set, then
the logical node supports an isolation timer.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
communication logic can continue to operate after the block execution logic
fails. When that happens in a field bus device, the data base of the device may
or may not be accessible for reading and writing. If it is not accessible, all
reads and writes will be reported as failed as defined by the Application Layer
of the Field Bus protocol (i.e., the User Layer of peer devices will recognize
the lack of communication as a "No-Com").
--```,``-`-`,,`,,`,`,,`---
In addition to making the data base of the failed device accessible for reads,
the designer of the field device may choose to provide the ability to write into
the data base. If so, the writes that occur under those conditions may not be
able to go through the normal write buffer since the failed node logic processor
may be responsible for servicing the buffer. The Field Bus User Layer has defined
certain parameters that can be written even while the logic processor is stopped.
It is assumed that these special values are similar to hardware I/O ports that
have been mapped into memory. The paper "Array of Basic Parameters" will identify
these data base items. This set of parameters will be independent of the
algorithm type.
If the designer of the field device does not choose to provide the ability to
write into the data base while the logic processor is failed, then all write
messages received under those conditions will be rejected with the normal "No-
Com" response.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
When communication can occur but a logical node, although running, has a
static data base with a revision number of zero, any write into the logical node
data base or that logical node's function blocks will be allowed but no function
blocks in the logical node will function because of two requirements of this
procedure:
1) the logical node will not process its function blocks if it has a zero data
base revision number
AND
2) the logical node will force the requested and actual modes of all of its
function blocks to O/S.
RESTART:
The following discussion of the restart procedures for the block execution
logic is presented in the order shown on the attached logic flow diagrams:
1) Physical Node Power-Up, which includes and surrounds -
2) Logical Node Power-Up
3) Communication Interface Power-Up
The static data base of each logical node must pass a consistency check
before its subordinate structures can be started. This is defined in the
following discussions. Note that there is no data at all in the Standard
physical node data base and no dynamic data in the Standard Logical node data
bases that is required for the function blocks to properly restart.
SP-50 User Layer Technical Report Field Device Start and Restart
The logic description will start in the upper left corner of Figure 1, at the
circle labeled "Power Up".
Self Check:
When the physical node logic starts operation, the condition of the
data base of the node is unknown. Therefore, the physical node logic
will temporarily inhibit all communication until it can determine the
current state of the data base.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
320
Check Clock:
Read Timers:
The two timers are assumed to have been running during the time
that the node was in the powered-down state. If the self-check passes,
the current state of the two timers (expired or not) will be
read once and then used for all blocks in the physical node.
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Once the physical node processor is known to be
operable, the logical nodes and their function blocks will
be prepared for operation. Note that there is no data in the
physical node data base that is needed to operate the
logical nodes and function blocks. The logic description is
now to be found in Figure 2, the "Logical Node Power-Up"
drawing.
The logic for responding to a bad logical node data base has
two features that allow the total restart logic to be repeated
endlessly. First, the null logical node data base (defined in the
paper "Array of Basic Parameters") has a data base revision number
of zero. Thus, if the logic is repeated, it will again go down the
same logic path as was executed the first time with the bad
data base. Second, the null function block data base
(Algorithm 20H) that is used if a block has a bad data base
will also have a revision number of zero and will also cause
the logic to go down the same path as the original failed
data base. Because of this, the restart logic is
repeatable.
SP-50 User Layer Technical Report Field Device Start and Restart
its default values for the defined algorithm and the block
mode is set to the "requested" mode (the static data base
copy of mode). If the static data base is not secure or has
a revision number of zero, then the only alternative is to
set the whole block's data base to Null. In either case,
the block will not operate when the physical node is started
because the logical node's data base is null.
A block that is a hardware output block and has a valid static data
base will be analyzed for purposes of setting the "Output Addressed"
--```,``-`-`,,`,,`,`,,`---
table. The hardware agent of the output block will indicate the
particular hardware point that that block drives. The
Discrete Register block will be considered a "hardware
output block" for purposes of this test if the field device
includes any discrete outputting capability. Note that the
analysis of the Discrete Register block must include the
hardware agent mask so that the correct discrete points are
marked in the table.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
323
The attached logic diagram shows two results possible from the
check of the dynamic data base. If all of the dynamic data is known to
be valid, the logic can proceed to the inspection of TIMER0.
Otherwise, the logic can proceed down the "bad/not tested"
path to, in the case of control blocks, the logic that sets
a default set of dynamic data and the requested mode that is
found in the static data base. Note that a more
sophisticated analysis is possible at this point. It is
possible that a device manufacturer may select the portion
of the dynamic data base to protect that can not be
initialized so that only the initializable part of the
default data base can be lost. Such a procedure could
improve the probability that the default data base could
clear its NaN/Bad values and start to control. If such an
analysis is provided, then the logic should proceed down the
"bad/not tested" path but the appropriate changes to the
null dynamic data base can be made.
--```,``-`-`,,`,,`,`,,`---
Given that the logic is processing through the block
data bases, this is a convenient time to do one automatic
part of block restart: reset all of the communication No-Com
counters and reset all of the
count-out-gates on the cascade transfer locations.
TIMER0 Expired:
The first timer in the logic flow is provided for a "Hot" recovery
from a momentary loss of power. It is assumed that the time is set (by
the user through REQ_TIME0) for a time in the order of 100 ms. To 4
seconds. Given that the block logic processor is
operational, the data base is completely good, and the device
has only been shut down for a short period of time, it is
reasonable to start operations as if there had been no
interruption: a "Hot" restart. Note that this logic path
ignores the possibility that the FailSafe outputs were set.
SP-50 User Layer Technical Report Field Device Start and Restart
The logic will also set the NOWRITE tattle bit in the
logical node's data base at this point since the validity of
the process data can not be guaranteed.
The logic for the restart of a block after a relatively long outage
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
is different for Output blocks from all other blocks. Therefore, the
two logic paths are split. The Discrete Register block
mentioned above is to be considered an "Output Block" for
purposes of this logic if any
discrete I/O capability is provided in the physical device.
The human interface and serial communication function blocks
are not to be considered output blocks.
SP-50 User Layer Technical Report Field Device Start and Restart
If the outputs were held at their previous state during the outage
and the outage was shorter than the setting of TIMER1, the block can
restart after initialization - a "warm" restart. Alternately, the
individual output block may have an explicit option to "Go"
on restart do a warm restart no matter how long it was down.
Otherwise, the Inputs of the block will be marked "Failed"
as described below.
SP-50 User Layer Technical Report Field Device Start and Restart
Initialize Inputs:
"Go" Set:
If the output block is processed on this logic path, its explicit
option to "Go" on restart is still honored. The logic branches to a
"warm" restart with the initialized output if that option is set.
Set Failed:
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Field Device Start and Restart
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
--```,``-`-`,,`,,`,`,,`---
processed all logical nodes. If so, it returns to Figure 1
at the point where it left. If not, it processes the next logical node.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
calibration data must, of course, be prevented from starting
and an alarm must be set for that point. The hardware data
will be set to completely zero. The algorithms that service
the hardware will be designed to set themselves into O/S
mode as long as the data is completely zero. Any time they
change their mode, they must, of course, issue a "mode
change due to failure" alert.
The physical node static data base is checked and set to its Null
value set if it is not secure or has a revision number of zero. Note
that the physical node can safely operate without any of the data in
SP-50 User Layer Technical Report Field Device Start and Restart
Note: the above logic makes the assumption that the clock variable
ALARM_TIME is not critical (see the paper "Data Owner
Structure Hardware", page 18).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Note that the above discussion did not even mention the physical
node's tag name and address, which are stored in the physical node's
data base! If the physical node's data base is intact, it is assumed
that the node's name and address, being part of that data
base, are valid. If the physical node's data base is lost
and SFailSafe is reset, then the whole physical node will
set all of its outputs to their SFailSafe state and "Die".
However, if the SFailSafe bit is set when the physical
node's data base is lost, THE RESTART WILL PROCEED EVEN
THOUGH THE PHYSICAL NODE'S TAG NAME AND ADDRESS MAY HAVE
BEEN LOST.
THAT IS THE INTENT OF THE DESIGN AND PART OF THE
CONSEQUENCE OF SETTING SFailSafe! If the manufacturer has
provided some method of retaining the physical node's name
and address, then the physical node will be able to respond
correctly and resume communications much easier, but that
does not affect this logic.
FB_FAIL Set:
SP-50 User Layer Technical Report Field Device Start and Restart
If the static data base was lost for any of the function
blocks except for blocks known to be above CB, there is no
known safe alternative to the SFailSafe value.
Start-Up:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
initializing counters and starting the actual processing of the
functional blocks.
Initialize Timers:
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
until the logical node with the LARGEST CX (i.e., the slowest cycle
time) has executed 1 cycle. Unscheduled logical nodes or logical
nodes that are not processing are ignored for purposes of
determining the delay time; if there are only unscheduled logical
nodes and/or logical nodes that are not processing in the physical
node, the timers may be initialized immediately.
--```,``-`-`,,`,,`,`,,`---
number, the communication interface will allow communication as defined above
(see "Read/Write During Failure"). However, the physical node will inhibit
communication during part of its restart procedure (see "Inhibit Read/Write at
Power-Up").
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
See separate Diagram.
Communications
Work Each Physical Hardware Point. And all Logical
If Manufacturer Data was lost, Nodes.
Mark hardware Point Failed
No
Initialize Timers
Is Set Null Physical After 1 Cycle Done
SfailSafe No In Logical Node
Physical Node
Set? Node DB. Static With Largest CX.
OK?
Yes Yes
Figure 35: Field Device Start and Restart, Figure 1, Physical Node Power-Up
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
--```,``-`-`,,`,,`,`,,`---
Data Base
Bad/Not Block?
Yes OK?
Tested No
Hardware
Output FORCE_
Yes Null
Block? INIT=2
Blocks
Dynamic Data= DB
Defaults No
Figure 36: Field Device Start and Restart, Figure 2, Logical Node Power-Up
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^
334
Figure 3
Wait Sufficient
Comm. Yes Time for the
Power Function Physical Node
Start
Up Self check To Inhibit Comm.
OK? Communications.
No
Die
Figure 37: Field Device Start and Restart, Figure 3, Communications Interface Power-Up
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
the physical nodes, logical nodes, and function blocks. It will also document the
rules and suggested enumerations for HI/F displays.
It is the intent of the design of the standard blocks that the display
attributes of every piece of data in their data base be defined. However, there
are many different methods used for defining those attributes. They are:
1) implicit in the parameter data type.
example: a visible string.
2) implicit by definition for selected parameters.
3) implicit in the parameter definition but decimal point not located
and/or precision not defined.
example: the PID gain (dimensionless).
4) defined to be in "Extended SI" units with a "SI Units" descriptor.
example: Input #0 in an AI block.
5) user-specified units, display ranges, and decimal point locator
provided for analog values.
example: the Setpoint of an analog block.
6) user-specified enumeration set code number and discrete display code
provided for discrete values.
example: the Setpoint of a discrete block.
7) auto-formatting data supplied for manufacturer public data.
8) "clipboard" in physical node.
The next section describes the basis for the descriptions in this paper and
the first step in the display of any data item. The bulk of the paper will
detail the display procedures for each of the above cases. Finally, the Human
Interface requirements of the "triggered calibration" procedure will be
described. The details of the auto-formatting procedure and the material
description procedure will be given in the two attachments.
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
Given the TO_TYPE, the HI/F device can determine from its own data tables for
the tagged objects defined in the standard:
--```,``-`-`,,`,,`,`,,`---
VISIBLE STRINGS:
There are many different methods of encoding character fonts. This standard
recognizes two methods as fundamental and also provides "escape codes" to shift
into many other methods. One of the fundamental methods uses one byte per
character font and the other uses two bytes per font.
The one byte method is defined in Table 11 (Recognized General Single Byte
Font Codes). It is based on ISO-646 with many of the control codes specially
defined.
The two byte method is based on the "Unicode Standard"; details are available
from:
Kenneth W. Whistler, Secretary
Unicode, Inc.
1965 Charleston Road
Mountain View, CA 94043 USA
Table 12 (Recognized General Two Byte Font Codes) gives the Unicode
representation for the same character fonts that were defined in Table 11. The
control codes in the Unicode range of 0000H to 0020H are exactly the same as
defined for the single byte codes in the range 00H to 20H. In addition to the
fonts defined in Table 12, the Unicode system defines many other fonts. All
references to specific details of the Unicode system are based on the draft
available in June, 1991 and labeled "pre-copy-edit draft".
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
337
The tag name, manufacturer's name, and model number will ALWAYS be entered
into the field device's data base using the one byte identification of the fonts
given in Table 11.
Visible strings in the clipboard will DEFAULT to the one byte identification
of the fonts given in Table 11. A complete set of "escape" codes is defined
below to indicate a change to and from other representations.
Any data base item that is defined as being a "visible string" may contain
certain display formatting commands. The commands are given here as single byte
commands. However, when the above definitions or escape commands have indicated
a two-byte representation of each font, the following representations will be
expanded to two bytes by adding a zero byte in front of the value given. If the
visible string representation has been changed (by using an escape sequence) to a
system that has one of the following representations defined as a visible font,
then that font will prevail.
1) the only commands allowed in a string whose maximum length is 32
characters or less are:
"Record Separator" <RS> [Char. 30(base 10)] (See Table 10).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
display field, say less than 0.1 or greater than 999, then
display the value in engineering notation (i.e., displayed with
an exponent of 10 where the exponent is a multiple of 3.
Finally, left justify the display of the value. This display
alternative will be seldom used and is restricted to parameters
of limited use to Operators.
--```,``-`-`,,`,,`,`,,`---
algorithms, in the proper alphabet and language but with meanings faithful to the
parameter definitions in the algorithms.
Many of the algorithms also include discrete values whose state enumerations
are implicit. It is assumed that a Human I/F will provide a customized set of
enumerations, again in the proper alphabet and language but with meanings
faithful to the parameter definitions in the algorithms.
SP-50 User Layer Technical Report Field Device Start and Restart
There are 6 items of information that are necessary to display a Field Bus
variable in extended SI units based on this generic form. They are:
1) The magnitude of the variable
2) The first numerator term of the engineering units description
3) The second numerator term of the engineering units description
4) The denominator of the engineering units description
5) The multiplier to use for display
6) The number of decimal places to display
The magnitude of a Field Bus variable will be under its own parameter. All of
the rest of the information will be packed into two words using a generic form.
Each of the SI units in the numerator and the denominator of the engineering
units description will be one of the items from the "Extended SI Units" list
shown in Table 1. This list includes defined units, provision for future defined
items, manufacturer specific items, and user specific items. The number next to
the item will be denoted as "a", "b", or "c" where each symbol can have a value
of 0 to 255.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
340
When the human interface or the server for a higher level device knows the
numerator and denominator units that are appropriate, it can, if desirable,
convert the number into any set of units that is appropriate for the user.
However, the Field Bus Standard does not provide for display scaling or decimal
point location for the converted value.
Finally, the number of decimal places that should be shown in the display
must be defined. The number will be in the range 0-7 and will be denoted as "d".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
c in the high byte
--```,``-`-`,,`,,`,`,,`---
ANALOG VALUES WITH UNITS AND ATTRIBUTES:
Most analog I/O parameters and any analog Setpoints in defined function
blocks are provided with their own user-specified units, ranges, and decimal
point locator. In many algorithms, one display attribute will serve for several
block parameters. For example, the Setpoint, Input #0, and Input #1 in a PID
block all have the same display attributes. It is suggested that the following
procedures be applied to display these values with their units descriptor:
1) determine from the block type data in the HI/F device which data
item contains the display attributes.
2) Read the visible string containing the Units Descriptor. Also
read the display attribute. It is an 8 bit string that defines
the multiplier and the decimal point locator for display in the
following format:
bits 0&1: decimal positions to the right of the decimal
point, value = 0 - 3
bits 2-4: Multiplier for exponent of ten for display
bits 5-7: decimal positions to the left of the decimal
point including room for the sign, value = 0 -
8.
Definition for display exponent:
let the value in bits 2-4 = "a"
SP-50 User Layer Technical Report Field Device Start and Restart
There is one situation that requires special consideration for this display
type. What is the default value of the visible string for the Units Descriptor?
In the general case, the manufacturer does not even know the language that will
be used with the device! Therefore, a special notation will be defined and
available for use in the null data set.
If the manufacturer wishes to put a true visible string in the device as the
default value, that can easily be done.
An alternative for the manufacturer is to pack the entire string with spaces.
--```,``-`-`,,`,,`,`,,`---
DISCRETE VALUE WITH ENUMERATION SET CODE NUMBER:
Most of the discrete I/O parameters and any discrete Setpoints and PV's in
the Standard function blocks are provided with their own user-specified
enumeration codes. In many algorithms, one code will serve for several block
parameters. For example, the Setpoint, Feedback, and Output in the Device
Control Block all use the same code.
It is assumed that the Human I/F will provide, in the proper alphabet and
language, certain simple enumeration sets that have been defined by this
Standard. In addition, certain enumeration sets particularly applicable to the
Device Control Block are defined and may be provided by the Human I/F. The Human
I/F might also allow a user to enter other sets of enumerations corresponding to
the "manufacturer specific" and "user specific" code numbers. Table 2 (attached)
defines the code numbers for the defined enumerations. (The code numbers for the
enumerations are defined to be in the range of 0 - 255.) The "range" defines the
number of least significant bits in the bit string that are taken as the
enumeration.
Table 3 defines the three enumeration sets for binary, decimal, and
hexadecimal numbers. Tables 4 to 7 define a set of enumerations designed for the
Device Control Block. However, it is recognized that the length of the display
field and the desired alphabet and language will vary. Therefore, it is assumed
that a Human I/F will provide a customized set of enumerations with meanings
faithful to the meanings of the enumerations as given in Table 8.
SP-50 User Layer Technical Report Field Device Start and Restart
Many discrete variables will have an associated "Display Code". This code is
based on a display model derived from panel-board lights - 1, 2, or 3 lights
being defined by one display code to display one discrete variable - up to 3 bits
long. An individual light will be assigned to one bit of the discrete variable.
By convention, the first "light" is at the top or the left of the display. Each
"light" is then configured with one of eight codes to define the display
characteristics of the light when the bit is set and 1 bit to define the display
characteristics of the light when the bit is reset.
Since the "Display Code" is set up for three lights, it will only consider
the low three bits of a discrete variable. Therefore, the bit connected to the
third "light" is determined by default once the first two connections are
defined.
3) determine from the block type data in the HI/F device which
parameter describes the enumeration code and/or display code.
4) Read the code from the field device.
5) Obtain the enumeration display string or display information
from the table contained in the Human I/F device.
DATA SETS:
It is recognized that Human Interface devices will need to display values
quickly after an initial request for a particular display. In order to avoid
multiple access calls over Field Bus to support the initial call-up and
subsequent refresh of displays, each Standard Block will have several parameters
called "display sets". In general, there are complementary sets: the "call-up"
AND the "refresh" display set are needed for initial screen build while only the
"refresh" display set is needed for the equivalent refresh.
SP-50 User Layer Technical Report Field Device Start and Restart
A display set will be defined for simple displays of the important tag data -
PV. If the tag supports the PV function, it will consist primarily of the PV,
Target, Output #0, the block mode, and the range and display information needed
to display them. If the tag does not support the PV function, the default
parameters defined for the PV function will be substituted. For example, the PID
defines its default PV pointers as Setpoint for the Target and Input #1 for the
PV. If the PV function is supported, the set will include the PV and Target. If
the PV function is not supported, the set will include the Setpoint and Input #1.
The "Tag" display set is designed for a summary of the whole tag knowing only
the tag name and its algorithm number. This set will be defined for every
standard algorithm and node. In general, this display set will be designed such
that the 117 byte message length is fully utilized but it will specifically
exclude the variables contained in the PV display set. Thus, a Human Interface
would only need to read four parameters (in parallel) to access most of important
data in a tag.
In all cases, the display sets will be less than 117 bytes long so that they
can be obtained with a single simple read command.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
parameters. In that case, the user will need a method that allows him to enter
the parameters Using a human interface or a higher level device that is unknown
to the instrument manufacturer. This is called "manufacturer public data".
All of the auto-format variables will support two parameter numbers, both of
which access this value. The first parameter (low bit reset) will refer to a
data base structure that is in the exact form of the auto-formatting parameter
defined in Attachment 1. The second parameter (low bit set) will refer to just
the data portion of the same parameter (NOT the "header" NOR "format" portion).
In addition, when the Auto-Formatting variable is used in conjunction with I/O
hardware instances it will have two more parameter numbers. The first two
numbers will be used to access the parameter using the physical node tag name.
The third and fourth numbers will be used with the function block tag name. The
actual data for all four parameter numbers will map together, not into separate
data base values as is done with the status byte parameters.
Each tagged object (TO) will have a record in the "Data Dictionary" that is
kept by every application layer on the Field Bus. This data is available quickly
to each higher level device. In that data record (see the paper "Application
Support Services Interface" for the definition of these records), there will be 3
six bit unsigned integers that define the number of auto-formatting variables
that are present in the data base. Since they will have sequential parameter
numbers in known ranges, they can be directly accessed by a human interface.
SP-50 User Layer Technical Report Field Device Start and Restart
Using this procedure, the manufacturer can define a new variable in the data
base, including the auto-formatting format data and a default descriptor. The
user can, if the manufacturer allows it, change the format data and/or the
descriptor. For example, the user could change the language of the descriptor.
A human interface that knew nothing about this variable could determine that
it exists by inspecting the information in the data dictionary on "its end" of
Field Bus. It could then read the full variable to determine the formatting and
descriptor information needed to build a display. For refresh information, the
human interface could read the parameter number one higher to obtain just the
dynamic data from the variable.
The manufacturer specific data that is contained in the physical node's data
base is assumed to be specific to the physical node, not to the service in which
the physical node is currently applied. For example, calibration data for a
transmitter measuring a flow rate would be specific to the transmitter, not to
the flow measurement application. Therefore, the auto-formatting variables that
are hardware related (i.e., that are in the physical node's data base) WILL NOT
be covered by the physical node's data base revision number and should not be
included in any images of the data base retained by higher level devices for
purposes of restoring a physical node's data base. It is assumed that this data
will be stored in retentive memory in the physical device.
This standard does not address the handling of "manufacturer private data" as
would be encountered in a situation where the manufacturer has a unique entry
procedure or violates the definition of the parameter data string given in
Attachment 1.
EXTENDED PARAMETERS:
A manufacturer may optionally include parameters in a tagged object in
addition to the ones defined by the Standard. The Auto-formatting variables
defined above are one form of such extensions. Another form is defined in some
function blocks; they give the formatting information in defined and directly
addressable variables. The Standard includes an array of names for these
parameters and a method of indicating the existence of them using a special
"options bit string" defined for the algorithm (see the definition of EXTEND in
the paper "Interoperable Generic Block"). Although both of these procedures
extend the data base of a defined tagged object, they are not referred to as
"extensions"; that word is reserved for the next procedure.
--```,``-`-`,,`,,`,`,,`---
The options bit strings for all tagged objects that are stored in the data
dictionary (called "PN", "LN", or "FB") will include an "options bit" that will
indicate the existence of yet another form of extension. If the bit used to
indicate the existence of extension variables is set, one of the parameters
"EXP0", "EXL0", or "EXB0" must exist in the data dictionary. See Attachment 2 -
"Extended Parameters" to the paper "Application Support Services Interface" for a
detailed explanation of this procedure.
Note: it might be well to note again that a block that ADDS parameters
to a Standard function block, and defaults back to the Standard
block functionality if the parameters are never changed from their
default values, is called an "Extended Standard" block. The above
are three ways of adding the extended parameters.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
345
--```,``-`-`,,`,,`,`,,`---
identified and, in the case of items (1), (2), (4), (6) and (8), decoded
into any language and display format.
To illustrate the use of the codes, assume that a manufacturer included some
materials of construction as coded information in the clipboard, some other parts
were described using visible strings, and two process-wetted gaskets were not
described at all. Neither of the two bits can be set. If the two gaskets were
also described, then the "complete" bit could be set but not the "coded" bit. It
the coded material covered all parts and some of the parts were ALSO described
with visible strings, then both bits could be set. Even without the visible
descriptions, both bits could be set in the last case. If the device included a
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
346
wetted part for which there is no part code, both bits can be set even though
that part is described but not coded.
The clipboard will have multiple "pages". Each page will be 116 bytes long
so that it can be read in one Field Bus command and be easily handled by a simple
human I/F. The physical node data base MUST include the parameter - MAX_CLIP_P
if bit 5 in the physical node options string is set. This is a 16 bit binary
string that is read-only. If bit 5 is set, MAX_CLIP_P must be 1 or greater. Its
low 8 bits define the maximum number of 116 byte "pages" of clipboard information
that this device supports (255 or less). The rest of this discussion assumes
that bit 5 in the options string is set.
The manufacturer may decide to make part of the clipboard read-only. This is
permitted by the introduction of the third required variable. This is an integer
that defines the number of pages, from the beginning of the clipboard, that are
read-only. Rather than defining a new Field Bus parameter, the high order 8 bits
in MAX_CLIP_P are used for this variable, leaving the low 8 bits for the number
of pages. Hence, the clipboard "book" can be a total of 255 pages (29,580 bytes)
long and any part of it (in whole pages) can be read-only.
The above discussion and the one that follows are based on a relatively
simple implementation model of the clipboard. It is assumed that the first
portion of the clipboard is contained in ROM type memory, not volatile nor
changeable. The size of this portion is defined in the high 8 bits of
MAX_CLIP_P. Then, the clipboard can continue into writeable memory. This would
be the area where user-entered data would be stored. This second portion of the
clipboard might have a check-sum or other type of validity indicator. None of
the clipboard is modeled as being in dynamic type memory.
There may be instances in which some of the data in the clipboard is in fact
service, not device, related. For example, many of the maintenance instances
will be in this category. It is assumed that the higher level system will
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
retrieve such data and delete it from the clipboard rather than maintain it in
the device's clipboard.
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
The second clipboard will contain data for the "associated" device. The
second clipboard will operate exactly the same as the first. Its parameter names
will be the same except that the "_P" (for primary) will be replaced with a "_A"
(for associated). The actual parameter codes will, of course, be a separate set
of integers. For the rest of this paper, the general term "clipboard" will refer
to either the primary or associated clipboard.
The hierarchy of the clipboard structure is based on the terms used by the
standard control commands:
- a "file" corresponds to an entire page of the clipboard; its beginning
and end are indicated by "file separator" commands <FS> [Char.
28 (base 10)].
- multiple groups can exist in one file. A group can not span files
(and hence can not span clipboard pages). The "group separator"
command <GS> [Char. 29 (base 10)] is used to indicate the beginning
and end of one kind of group - a part/material description. The "Field
Bus escape" command <FBE> [Char. 25 (base 10)] is used in
conjunction with sub codes to indicate the beginning and end of all of
the other types of groups.
- multiple records can exist in one group. Within the clipboard, the
<FBE> escape command is used to indicate the beginning and end of
all records.
- the concept of "units" is not used in Field Bus.
- a "field" is a general term that can be either a group or a record.
The clipboards must be formatted using certain rules. First, no file, group,
or record can span two clipboard pages. Second, most files, groups, and records
must start and finish with defined parsing commands. The only exceptions are the
fields that have an explicitly defined structure. Table 10 provides the single
character non-print commands that will be used in the clipboards, Table 11
provides the single character printable characters that will be used, and Table
13 details the <ESC> and <FBE> escape command structures.
The two letters will be the letters used to identify the types
of hardware points in the paper "Data Owner Structure -
Hardware", page 3 and will be entered as capital alpha visible
characters - one byte representation. The integer will be
entered in the form of 1 to 4 numeric visible characters - one
byte representation - and will indicate the index of the
hardware point (using zero based numbering).
b) The numeric characters can optionally be followed by the visible
character representing a dash (-) [Char. 45 (base10)]. The
dash indicates that a range of hardware I/O points are to be
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
All of the information is entered in coded form so that a Field Device does
not have to contend with different languages.
The particular hardware point must be identified even if the device only has
one hardware point so that a search of the clipboard by a higher level device can
be relieved of determining the type of field device. A set of 5 to 13 characters
corresponding to item (1) above can be inserted any place in the clipboard, thus
allowing several hardware points to be described. One special case is defined:
if all of the instances of a particular hardware type, for example all of the
SI's in the physical node, are to be referenced, the visible character for space
[32 (base 10)] will be taken to mean "all". In this special case, item (1) above
reduces to only 5 total characters.
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
349
There are two features of Table 13 that require some explanation. First, it
is anticipated that some manufacturers will enter the materials of construction
in read-only memory. However, it is possible that maintenance on the hardware
will result in major changes to the materials of construction. Since the
materials of construction data is in ROM memory, it is not changeable by the
user. One alternative is to enter new information to override each of the
earlier entries. By definition, the later enter will override the earlier entry.
A second sweeping method is also provided: there are two codes in Table 13 that
can be used to indicate that all of the materials of construction in the portion
of the clipboard before the code are to be ignored. One code applies to the
individual hardware I/O currently defined (i.e., the last statement by item (1)in
the above list). The other code clears ALL of the materials of construction
information.
The second feature of the table that requires explanation is the presence of
two formats for time: code letters "B" and "C". The purpose of having both
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
formats is to allow flexibility for alternate sources of the data. If a human
enters the data, it is advantageous to have a variable precision. Alternately,
if it is entered automatically by the field device or the hand held communicator,
it is simpler to use the format of the Field Bus's social time. This also makes
it practical for a simple hand held communicator to not support the code required
to convert one form to the other and to not have the conversion code in the field
device itself.
Another function that has been standardized for the clipboard is a method of
storing and displaying data on field maintenance activities. Again, the
manufacturer of a field device can only anticipate the need for clipboard space
for this information. However, since the information would be entered by a "hand
held human I/F" and extracted by higher level control systems, there is a need
for standardization of the coding procedures.
The second record in the group - the identification of the maintenance person
- is independently optional. Again, Table 13 indicates the details of this
record. It is intended that the field be relatively small, enough for a person's
initials, identification number, etc.
The third record in the group - the "maintenance work order number" - is also
independently optional. Table 13 indicates the details of this record. It is
intended that the field be simply a string of printable alpha-numeric characters.
The next record is the one that must be defined in order to achieve
integration of the hand held human interface and the higher level control system.
Table 16 gives the details of a record that contains three fields: two characters
to describe a device component, one character to describe the maintenance
activity trigger, and two characters to describe the result of the activity.
Coded values for each of the fields are given in Table 16. It is the intent of
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
the Standard that both the hand held human interface devices and higher level
control systems would incorporate methods of allowing easy use of these codes.
The final group that is defined for the clipboard is defined in the following
section - the automatic record entered by the optional "triggered calibration"
service.
TRIGGERED CALIBRATION:
Most of the interaction between a human and a Field Bus device will be with
specific Tag.parameter values and will not involve complex scenarios. However,
one exception to this generality concerns the user calibration of I/O devices.
Many of the Input and Output blocks will include a set of parameters, including a
trigger mechanism, designed to simplify device calibration.
The basis for the design of the procedure is:
1) it is assumed that true "calibration" will be done in a "shop"
environment and will use the procedures and Auto-formatted variables
defined by the manufacturer. The procedures may well include some
sort of human interface that is knowledgeable about the instrument
model being calibrated. Standard Field Bus devices will handle these
variables as Auto-format variables.
2) Since most of the "field calibration" done by a user will involve no
more than 2 calibration points, frequently only one, Field Bus will
only support linear calibration of field devices by the user.
3) Each analog I/O algorithm will define the proper place in the
procedure for the user calibration. For example, it will adjust the
value of Input #0 in the AI blocks, the value of "Feedback" in an AO
block with actual positional (measured) feedback, and it will adjust
the physical output for AO blocks without feedback.
4) In the calibration procedure, the user will set the external variable
and indicate the proper value of the function block value to the
Field Bus device. For example, he will set the actual analog input
variable and define the correct converted value in the AI block. For
an AO block with no feedback, he will set the output at a position
and define to the AO block the correct output value in percent. For
an AO block with feedback, he will set the valve position and define
to the AO block the correct feedback value in percent.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
351
The parameters in the calibration set are defined using an "upper" and
"lower" notation. By definition, "upper" will refer to the algebraically larger
value of the "calibration unit value". The triggered calibration procedure
involves a total of seven parameters:
1) LO_CAL and HI_CAL:
The lower and upper current calibration points - the measurement
value at which the currently active calibration curve was determined.
32 bit floating point numbers - in units defined by the algorithm
2) LO_ADJ and HI_ADJ:
The lower and upper adjustments - the actual adjustment included in
the device's displayed value that is being used at the upper and
lower calibration points. 32 bit floating point numbers - in the
units defined by the algorithm.
3) LO_TARGET and HI_TARGET:
The lower and upper target calibration points - the measurement value
at which the current calibration is being done or the points for
which the adjustments are to be shown. 32 bit floating point numbers
- in units defined by the algorithm
--```,``-`-`,,`,,`,`,,`---
The function block will immediately reset all eight bits when it does
the action of the lowest bit set. For example, when bits 1-4 are
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
set, the action of bit 1 will be executed. After the action is done,
all of bits 0-7 will be reset.
The first 6 parameters will be stored in the NORMAL STATIC DATA BASE of the
function block and they will be under the associated static data base revision
number.
The first eight values are always "alive". Each cycle, the function block
will calculate the 2 adjustments it would make at the 2 target values. The two
calibration values always indicate the last calibration points. However, there is
one misleading situation built into this design. Consider a differential
pressure transmitter calibrated at 0 and 100 inches of water. Later, the user
does a bias adjustment at 0 inches of water. The adjustment at 100 inches of
water will change because it will include the same bias adjustment as was
SP-50 User Layer Technical Report Field Device Start and Restart
determined for 0 but there is no indication that the bias adjustment was done.
Everything in the data base is consistent with the original calibration at 100
inches still being the true basis for calibration at 100 inches. It is assumed
that the user's maintenance procedures will consider this situation.
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
353
--```,``-`-`,,`,,`,`,,`---
Attach. 1 Auto-Formatting
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Most of the parameters that are defined for the Standard and Alternate
function blocks are single value parameters with detailed, widely known
definitions. However, there are some instances, particularly for the I/O blocks
and blocks with extensions, in which a manufacturer needs the ability to include
sets of data in the device that are not defined in the Standard and to provide
read/write access to the data. This section will describe the autoformatting
procedure that is defined and available for use in Standard Field Bus devices.
This method supports the display of multiple values from one parameter.
INTRODUCTION:
The Standard defines several parameters that are combinations of
configuration data words. For example, the Boolean operators that can be
included in some function blocks combine all of their configuration data into one
parameter. These parameters are defined to be of the type described here. This
provides the mechanism for (selectively) writing to the data.
SP-50 User Layer Technical Report Field Device Start and Restart
The manufacturer may choose to leave no room in the parameter for the detail
format. He may choose to install all of the detail format and not allow the user
to change it. Between those two extremes, he may choose to provide space for the
parameter to be expanded from its original size by the addition of user-
configured detail formats. In any event, the field device is assumed to totally
ignore the detail format information - it is assumed to simply store the data for
the higher level devices. It makes the format data available to be read and, at
the manufacturer's option, can accept writes into the format data area.
The maximum sizes of the total variable and the data field allow either
parameter to be written using any one of several of the "complex write services"
defined in the paper "Data Base Write Services" without overflowing one or two
words into another message segment.
DETAILED DEFINITIONS:
Parameter Header:
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
The most important function of the header is to provide the number of bytes
in the entire parameter or write message. If the manufacturer allowed extra room
for detail format information but the user has not yet used that room, then that
room will NOT be included in this value. The parameter "N" is defined as one-
half of this number - the number of words in the message. The total number of
bytes must be an even number so that N is a whole number.
When the parameter is read, the first byte of the response message will be
the size of the parameter as read from the data base. In a write command, the
size of the write message will be contained in this location.
The second byte of the parameter's header is the code number of the
formatting procedure that is to be used for the parameter data. The first 64
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
code numbers are reserved for use by the Field Bus Standard. The second 64
numbers are reserved for Field Device manufacturers. The third set of 64 codes
are reserved for manufacturers of higher level devices while the last 64 are
reserved for user-specific applications.
The third and fourth bytes of the parameter or write message will be referred
to as "word 1". The format of this word will be significantly different
depending on whether it exists in a read (i.e., in the parameter data base) or in
a write message. This word is the only one in the whole parameter that can never
be actually written into the device's data base by a Standard Field Bus write
message.
1) The low order 7 bits define the start of the detail format area in
the parameter. The value entered is the starting word number ("F")
based on 16 bit words and a zero based numbering of words in the
parameter. This value can not be less than 3 because the header is
in words 0 and 1 and there must be at least one data word.
2) Bits 7 through CH define the maximum possible size of the parameter.
No write message can write data beyond the end of this area. The
integer value in this field is the maximum size, in words ("M"),
divided by 2. Therefore, the maximum size of a parameter - M - must
always be an even number of words.
3) Bit DH will be set if the user can not write into the format area.
4) Bits EH and FH define the minimum priority mode-level access to the
data area:
00 - Read only - the user can not write to the data area.
01 - Write only in O/S mode
10 - Write only in Man or O/S mode.
11 - Freely writeable.
This code identifies the minimum priority mode-level required to
execute a write. It is the most severe restriction needed by any of
the data in the parameter. The detail formatting can relax the access
for selective writing of the less critical parts of the total data
set. However, it can never relax code 00.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
11 - Illegal
7) Bits EH and FH define the "minimum" mode that must exist at the time
of the actual writing of the message data into the data base.
00 - Error - a write message can not contain 00 in this location.
01 - Write the message only if the block is in O/S mode
10 - Write the message only if the block is in Man or O/S mode.
11 - Any mode will do.
In a read message or in the parameter data base, the data will start in word
2 of the record and continue through to the word before the start of the detailed
format area [i.e., through (F - 1)]. This area's data format method is defined
by the format code in the second byte of the parameter's data base.
If the code is 10B, then the higher level device did not "bother" to remove
the parameter data from the message string that it read up before modifying the
detail format data and writing it back to the field device. In this case, the
parameter data words in the written message must be skipped. Thus, the words to
be written start in word F of the write message. The value in W will still be
honored as the starting point in the parameter although it is expected that W
will almost always be equal to F in this particular case.
SP-50 User Layer Technical Report Field Device Start and Restart
STANDARD FORMATS:
At this time, there are relatively few Standard formats defined. They are:
single bit but all patterns ultimately repeat on byte boundaries. The directives
for displaying the pattern are defined using a "Detail Flow Word", 0 to 4
optional "Data Format Words", 0 to 8 SI units words, one "Data Control Word", and
0 to 8 "Mask Words".
SP-50 User Layer Technical Report Field Device Start and Restart
The display directives associated with one "Detail Flow Word" can be applied
to a specified number of bytes in the parameter. After the required number of
bytes are processed, the display control can pass to the next set of formatting
words or control can be recycled back to earlier formatting words.
1 - 2 - A - B - C - Y - Z
x x
xxx < xxx
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
359
Notice that there is no provision for the values of the parameter data to
control the recycle loop. Also, the detail formats within the loop can not
change as a function of the pass number. For example, if there were to be fewer
words for a particular detailed format during the second pass than during the
first pass, that can not be done (with one exception - detail Y could cause an
early termination of the loop because it could take control at a specific
parameter data byte).
There is also no way to count the number of loops. The only way a loop can
be stopped is to reach the end of the data or for detail Y to take control at a
specified data byte.
The first "Detail Flow Word" must always be located at word F in the
parameter [if N > (F-1)]. Bits 0 through 8 will contain an unsigned integer "X".
The meaning of X is actually dependent on the value of X! If (X/2) < F, then it
refers to parameter data. It will identify the number of the byte in the
parameter data at which this detail format should start. If that particular byte
has already been processed, X is ignored.
If (X/2) => F, then it will identify the number of the byte in the parameter
--```,``-`-`,,`,,`,`,,`---
to which formatting control should pass after this detail format has finished its
specified number of bytes. The word at that location MUST be a "Detail Flow
Word". Also, since the formatting area must start on a word boundary and all
formatting data is entered as words, x must be even for this case.
Bits 9 through EH define the unsigned integer value of the number of data
area bytes that this display pattern will process before control will pass on to
the next Detail Flow Word. Note that the maximum value of this integer is 64
bytes. This means that only 12 - 32 bit floating point numbers with status bytes
can be formatted with one Detail Flow Word. If there are more data items than
that, a second Detail Flow Word will be needed simply because of this constraint.
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
360
Note: This command appends the NEXT visible character string, not
a particular one. For example, in a recycle through Detail
Formats, the string that is added by the above command can
be different each time the command is executed.
Bits CH-EH:
The display type is intended to be a description of the data that
can be used by the higher level device to INFER a color, font,
blink command, etc. to the human interface. The display types
are described in general terms in the Standard so that a
manufacturer can set the type of data in a format without knowing
how the Human Interface will customize the display of each data
type. A user or the manufacturer of the human interface can
assign colors, etc. to each display type as appropriate without
knowing particular field device instances. The defined display
types and their codes are:
000 - Background - the variable is advisory and should be
displayed to recede into the background;
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
361
There can be 0 to 12 data format words following the Detail Flow Word and
before the Detail Control Word. They will appear in the following order with
unneeded words simply eliminated:
0) Detail Flow Word (mandatory)
1) Data Format Word - (mandatory if bit EH set in Detail Flow Word)
2) First SI units word (if data display type "SI")
3) Second SI units word (if data display type "SI")
4) Data Format Word - (mandatory if bit FH set in word 1 above)
5) First SI units word (if data display type "SI")
6) Second SI units word (if data display type "SI")
7) Data Format Word - (mandatory if bit FH set in word 4 above)
8) First SI units word (if data display type "SI")
--```,``-`-`,,`,,`,`,,`---
9) Second SI units word (if data display type "SI")
10) Data Format Word - (mandatory if bit FH set in word 7 above)
11) First SI units word (if data display type "SI")
12) Second SI units word (if data display type "SI")
13) Detail Control Word (mandatory)
The Detail Flow Word and the 0 to 12 data format words are followed by the
required "Detail Control Word". This word can serve either of two functions. It
can define the display directives or it can indicate that a particular display
directive is defined by a separate word (a "mask") of its own. In the former
case, the one display directive is used for all repeats of the detail format. In
the latter case, there are up to 16 instances defined for a particular display
directive: they are applied in order, then repeat until the Detail Flow Word is
completed.
The low order 6 bits are arranged into three pairs of bits as shown on
the figure. The three pairs are similar. The first pair is used to
define the access authority. The whole parameter, its data and detail
format information, is assumed to require a "high" (i.e., "restricted")
level of authority for write access. (There is nothing that requires
that that assumption be followed by a higher-level device, it is simply
the assumption for the design of this function.) The following table
gives the meaning of the four possible values of this pair of bits:
0 = continue with "high" access
1 = all of the patterns of data being formatted will be
relaxed to "low" (i.e., less restricted) access.
2 = the first word after this word contains a 16 bit
string that is to be used to define the access for
each of the data items in this detail format. Bit 0
in that word will be used for the first data item,
then bit 1, etc. until bit 16 is used. If the
Detail Flow Word allows the decoding to continue to
17, bit 0 will repeat, then bit 1, etc.
3 = illegal
Bits 2 and 3 operate exactly the same as the first pair except that
they define the patterns that can have a mode priority access level
1 level more relaxed than the level defined for the whole parameter
in bits FH and EH of Word 1 of the parameter header.
Bits 4 and 5 operate exactly the same as the first pair except that
they define the patterns that can have a mode priority access level
2 levels more relaxed than the level defined for the whole
parameter in bits FH and EH of Word 1 of the parameter header.
SP-50 User Layer Technical Report Field Device Start and Restart
Note: the two "mode access relax" directives can not add because
"Read Only" can not be relaxed. The remaining 3 levels only
represent two steps of relaxation. If the 2-Step directive
is set, the 1-Step directive will be ignored.
Bits 6 through 9 are arranged into two pairs of bits as shown on the
figure. The two pairs are similar. Bits 6 and 7 are used to direct a
carriage return/line feed AFTER the display item (and its optional
visible character string) or to indicate the presence of a mask for this
option. The following table gives the meaning of the four possible
values of this pair of bits:
0 = after the pattern ends, do not advance one line in
the display
1 = after each display item and its optional visible
character string, advance one line in the display.
2 = a word following this word contains a 16 bit string
that is to be used to define the CR/LF for all of the
data items of this Detail Flow Word. Bit 0 in the
string will be used for the first instance, then bit
1, etc. until bit 16 is used. If the repeats
continue to 17, bit 0 will repeat, then bit 2, etc.
3 = illegal
Bits 8 and 9 are used in a similar way except that they direct that
the display item (but NOT its optional visible character string)
not be displayed on the human interface device:
0 = display this display item as otherwise directed.
1 = do not display this display item.
2 = a word following this word contains a 16 bit string
that is to be used to determine whether the data item
is to be displayed or deleted for each of the
instances of data items under this Detail Flow Word.
Bit 0 in that word will be used for the first
instance, then bit 1, etc. until bit 16 is used. If
the instances continue to 17, bit 0 will repeat, then
bit 2, etc.
3 = illegal
In simple applications, there may be one data format defined. The data
that has been discussed already is sufficient to fully define the
display of one or more items in the data field each with the same
format.
Bits AH and BH in the Detail Control Word form four control codes for
the "Field Control". They are as follows:
00 = Continue - the last display item from the previous
detail control word is to be continued using the
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
363
Bits CH through FH of the Detail Control Word are arranged into two
pairs of bits as shown on the figure. The two pairs are related. Bits
CH and DH are used to direct either the primary or secondary display
type. Bits EH and FH are used to direct type set 0 or type set 1. The
following table gives the meaning of the four possible values of bits CH
and DH:
0 = display this pattern using the primary data type.
1 = display this pattern using the secondary data type.
2 = a word following this word contains a 16 bit string
that is to be used to define the display type for all
of the repeats of this detail format. Bit 0 in that
word will be used for the first instance, then bit 1,
etc. until bit 16 is used. If the repeats continue
to 17, bit 0 will repeat, then bit 2, etc. If the
bit is set, use the secondary data type.
3 = illegal
The following table gives the meaning of the four possible values of
bits EH and FH:
0 = display this pattern using type set 0.
1 = display this pattern using type set 1.
2 = a word following this word contains a 16 bit string
that is to be used to define the type set for all of
the repeats of this detail format. Bit 0 in that
word will be used for the first instance, then bit 1,
etc. until bit 16 is used. If the repeats continue
to 17, bit 0 will repeat, then bit 2, etc. If the
bit is set, use type set 1.
3 = illegal
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
364
As the data items are processed, control moves across the masks, one bit
at a time, thus manipulating the treatment accorded to each data item.
When 2 or more data items are combined into one display set, there can
be multiple copies of display directives. Therefore, there can be
conflicts in the directives. All eight pieces of information will be
used from the first data item in the data display that is encountered.
The only information that will be used from succeeding data item formats
will be the information necessary to determine the number of bits to add
to the already started display item. Status byte information
specifically will be ignored for the succeeding data items.
There is one question unanswered by the above procedure. How does the
Field Control mask string get started - can the first data item
encountered be concatenated with the immediately previous item left over
from the previous Detail Control Word? The answer is yes - by using a
Field Control code of "00" (continue) or "10" (reset and mask). The
former is used for one or more data items with no Field Control mask -
all of the items will be concatenated together. The latter is used with
a Field Control mask. The "old" mask bit will be reset. If the new
mask bit is reset, the concatenation will continue.
There can be 0 to 8 data format words indicated by the detail control word.
They will appear in the following order with unneeded words simply eliminated:
0) Detail Control Word (mandatory)
1) Access authority mask (if detail control word bits 0 and 1 = 10)
2) Base R/W + 1 mask (if detail control word bits 2 and 3 = 10B)
3) Base R/W + 2 mask (if detail control word bits 4 and 5 = 10B)
4) CR/LF mask (if detail control word bits 6 and 7 = 10B)
5) Delete mask (if detail control word bits 8 and 9 = 10B)
6) Field Control mask (if detail control word bits AH and BH = 10B)
7) Primary/Secondary Type mask (if detail control word bits CH and DH =
10B)
8) Type Set mask (if detail control word bits EH and FH = 10B)
9) end of display directives for this Detail Flow Word. The next item
can be:
- the next Detail Flow Word
- the start of the visible character fields
- the end of the parameter
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP-50 User Layer Technical Report Field Device Start and Restart
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
1B " Decimal integer
1C " Hex integer
1D Binary string, 16 bits Binary string
1E " Decimal integer
1F " Hex integer
20 Binary string, 8 bits Binary string
21 " Decimal integer
22 " Hex integer
23 Binary string, 4 bits Binary string
24 " Decimal integer
25 " Hex integer
26 Binary string, 1 bit,
condensed status byte Binary string
27 " Decimal integer
28 " Hex integer
29 Binary string, 1 bit Binary string
2A " Decimal integer
2B " Hex integer
2C Millisecond Time Millisecond Time
2D " Clock Time
2E Clock Time Clock Time
2F-36 Reserved for Field Bus Revisions
37-3A Human Interface Manufacturer Specific
3B-3F Field Device Manufacturer Specific
Notes:
1 - All stated data item lengths exclude the status byte. The
length of the status bytes must be included in the data field
length and byte numbers of this procedure.
2 - Time can be stored in the Field Device in either of two general
forms - as a difference in time expressed in milliseconds and
SP-50 User Layer Technical Report Field Device Start and Restart
--```,``-`-`,,`,,`,`,,`---
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Field Device Start and Restart
Figure 1 AUTO-FORMATTING
PARAMETER LAYOUT
Parameter:
Bytes 2*N
4
2
W
Words F
N
M
Write:
Header 1
Writing Code = 00
Words 2
N
F E D C B A 9 8 7 6 5 4 3 2 1 0
F E D C B A 9 8 7 6 5 4 3 2 1 0
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
W = First word in parameter to
be written. (1 < W < 128)
Mask off first byte of write.
Mask off last byte of write.
Free.
Set if 2*N is to be written into data base.
Set if C is to be written into data base.
Writing code: 00 = Normal write. 10 = Long write.
01= Masked write. 11 = Error
Required mode-level access.
00= Error. 10 = Write in Man or O/S only.
10 = Write in O/S only. 11 = Freely write.
--```,``-`-`,,`,,`,`,,`---
F E D C B A 9 8 7 6 5 4 3 2 1 0 Pri/Sec. Type.
Type set
Data display
0 = Static, 1 = Dynamic Data
0 =No Status Byte, 1 =Present
1= Append Next ASCII string.
Display type
000 = Background 101 = Proc. Desc.
001 = Inst. Desc. 110 = Bit Conf.
010 = Inst. Calibra. 111 = Proc. Meas.
011 = Inst. Cond.
100 = Inst. Oper.
Bit set if a Data format Word follows.
F E D C B A 9 8 7 6 5 4 3 2 1 0
00 = base value
Access Authority 01 ==relax
Base R/W + 1 10 = mask
Base R/W + 2 11 = illegal
CR/LF 00 = no effect 10 = reset
01 = apply 11 = illegal
Delete
00 = continue 10 reset and mask
Field control 01 = secondary type 11 = illegal
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
370
--```,``-`-`,,`,,`,`,,`---
66 Power: Watt = W
68 Power Ratio: decibels (ten times the
logarithm of the power ratio relative
to an arbitrarily chosen base level).
70 (Absolute) Pressure: Pascal = Pa
72 (Relative) Pressure: Pascal gauge = Pag
74 (Square Root) Pressure: (Pa)^(1/2)
76 Solid angle: steradian = sr
78 Speed = m/s
80 Temperature interval: Kelvin = K
82 Time: seconds = s
84 Time^2: seconds^2 = s^2
86 Valve Size or opening: CV = US Gal/Minute
(measured at 1 pound per square inch
differential pressure)
88 Viscosity: poise = dyne-seconds per cm^2
90 Volume: meters^3 = m^3
All values < 140 - Reserved
All values 140 - 199 - Manufacturer Specific
All values 200 - 255 - User Specific
NOTES:
The units for gauge pressure and the square root of differential pressure
were added for those cases where mathematical expressions prevented the easy
conversion of relative to absolute values.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
371
The units of time^2 and the units with codes 42, 56, 58, and 60 were added to
condense certain more complex units so that they would fit within the abc form of
the expression.
--```,``-`-`,,`,,`,`,,`---
This table lists a simple description of each Standard enumeration set vs.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
the code number that will be used for the set. The "range" defines the number of
least significant bits in the bit string that are taken as the enumeration.
Enumeration
Code Range Enumeration Set
0 - None.
1 - User definable.
--```,``-`-`,,`,,`,`,,`---
2 All Express the enumeration as a binary number - see Table 3.
3-8 - User definable.
9 1 Single Bit Yes/No - 0 = "No", 1 = "Yes"
10 All Express the enumeration as a decimal number - see Table 3.
11 1 Single Bit Pass/Fail - 0 = "Fail", 1 = "Pass"
12 1 Single Bit Go/Stop - 0 = "Stop", 1 = "Go"
13 1 Single Bit Full/Empty/ - 0 = "Empty", 1 = "Full"
14 1 Single Bit Hi/Lo - 0 = "Lo", 1 = "Hi"
15 1 Single Bit Fast/Slow - 0 = "Slow", 1 = "Fast"
16 All Express the enumeration as a Hexidecimal number -seeTable 3.
17 1 Single Bit Normal/Reset - 0 = "Reset", 1 = "Normal"
18 1 Single Bit Hi/Normal - 0 = "Normal", 1 = "Hi".
19 1 Single Bit Lo/Normal - 0 = "Normal", 1 = "Lo".
20 1 Single Bit Abnormal/Normal - 0 = "Normal", 1 = "Abnormal".
21 1 Single Bit On/Off - 0 = "Off", 1 = "On".
22 1 Single Bit Open/Close - 0 = "Close", 1 = "Open".
23 1 Single Bit Raise/Lower - 0 = "Lower", 1 = "Raise".
24 1 Single Bit Run/Stop - 0 = "Stop", 1 = "Run".
25 1 Single Bit Set/Reset - 0 = "Reset", 1 = "Set".
26 1 Single Bit True/False - 0 = "False", 1 = "True".
27 1 Single Bit Up/Down - 0 = "Down", 1 = "Up".
28 1 Single Bit Fill/Drain - 0 = "Drain", 1 = "Fill"
29 1 Single Bit Filling/Draining - 0 = "Draining", 1 = Filling".
30 3 Alarm Indication Hi/Hi/Hi -
if all bits are set, enumeration = "Hi-Hi-Hi"
if bit 2 is set and (bit 0 or bit 1 is reset),
enumeration = "Hi-Hi-Hi?"
if bit 2 is reset and bits 0 and 1 are set,
enumeration = "Hi-Hi"
if bits 0 and 2 are reset and bit 1 is set,
enumeration = "Hi-Hi?"
if only bit 1 is set, enumeration = "Hi"
if no bits are set, enumeration = "Normal"
31 3 Alarm Indication Lo-Hi/Hi -
if bits 1 and 2 are set and bit 0 is reset,
enumeration = "Hi-Hi"
if bit 2 is set and (bit 1 is reset or bit 0 is
set), enumeration = "Hi-Hi?"
if only bit 1 is set , enumeration = "Hi"
if only bit 0 is set, enumeration = "Lo"
if bits 0 and 1 are set, enumeration =
"Impossible"
if no bits are set, enumeration = "Normal"
32 3 Alarm Indication Lo/Lo-Hi -
if only bit 2 is set, enumeration = "Hi"
if only bit 1 is set , enumeration = "Lo"
if bit 0 is set and (bit 1 is reset or bit 2 is
set), enumeration = "Lo-Lo?"
ENUMERATION SET 2
(Binary Numbers)
Value
(Hex) Display Meaning
0 &B00000000 Number in Binary
1 &B00000001 "
2 &B00000010 "
3 &B00000011 "
' ' '
' ' '
' ' '
FF &B11111111 "
ENUMERATION SET 10
(Decimal Numbers)
Value
(Hex) Display Meaning
0 0 Number in Decimal
1 1 "
2 2 "
' ' '
' ' '
9 9 "
A 10 "
' ' '
F 15 "
10 16 "
etc. etc. etc.
ENUMERATION SET 16
(Hexidecimal Numbers)
Value
(Hex) Display Meaning
0 0 Number in Hexidecimal
1 &H1 "
2 &H2 "
' ' '
' ' '
A &HA "
10 &H10 "
' ' '
FF &HFF "
etc. etc. etc.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
(Feedback Bit #2 Pointer = Null)
Value 40 41 42 43 44
--```,``-`-`,,`,,`,`,,`---
(Hex) Motor Pump Lift Tank Mixer
0 No Feedback? --------------------------------------------------->
1 On Run Raise Fill Fast
2 Off Stop Lower Empty Slow
3-7 Impossible ---------------------------------------------------->
8 No Feedback? --------------------------------------------------->
9 On Running Raising Filling Fast
AH Off Stopped Lowering Emptying Slow
BH-FH Impossible ---------------------------------------------------->
10H No Feedback? --------------------------------------------------->
11H-17H Impossible ---------------------------------------------------->
Value 45 46 47 48
(Hex) Heater Cooler Alarm State
0 No Feedback? --------------------------------------->
1 Heat Cool Normal Set
2 Fan Fan Abnormal Reset
3-7 Impossible ---------------------------------------->
8 No Feedback? --------------------------------------->
9 Heating Cooling Normal Set
AH Fan Fan Abnormal Reset
BH-FH Impossible ---------------------------------------->
10H No Feedback? ---------------------------------------->
11H-17H Impossible ----------------------------------------->
Value 50 52 53 54
(Hex) Motor Lift Tank Mixer
0 No Feedback? ----------------------------------------------->
1 On Raise Fill Fast
2 Off Stop Hold Stop
3 Impossible ------------------------------------------------>
4 Reverse Lower Empty Slow
5 Impossible ------------------------------------------------>
6 Impossible ------------------------------------------------>
7 Impossible ------------------------------------------------>
8 No Feedback? ----------------------------------------------->
9 On Rising Filling Fast
AH Off Stopped Holding Stopped
BH Impossible ------------------------------------------------>
CH Reverse? Lowering? Emptying? Slow?
DH Impossible ------------------------------------------------>
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
EH Impossible ------------------------------------------------>
FH Impossible ------------------------------------------------>
Value 55 59
(Hex) HVAC Resource
0 No Feedback? ------------------------------------------------->
1 Heat Acquire
2 Fan Standby
3 Impossible -------------------------------------------------->
4 Cool Release
5 Impossible -------------------------------------------------->
6 Impossible -------------------------------------------------->
7 Impossible -------------------------------------------------->
--```,``-`-`,,`,,`,`,,`---
8 No Feedback? ------------------------------------------------->
9 Heating Acquired
AH Fan Standby/Acqui'd
BH Impossible -------------------------------------------------->
CH Cooling? Released?
DH Impossible -------------------------------------------------->
EH Impossible -------------------------------------------------->
FH Impossible -------------------------------------------------->
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
378
Value 60 62 63 64 65
(Hex) Valve Div. Valve Elevator Tank Machine
0 Traveling Traveling Traveling Changing Changing
1 Open Divert Raise Fill Start
2 Impossible ------------------------------------------------------->
3 Impossible ------------------------------------------------------->
4 Close Straight Lower Empty Stop
--```,``-`-`,,`,,`,`,,`---
5 Impossible ------------------------------------------------------->
6 Impossible ------------------------------------------------------->
7 Impossible ------------------------------------------------------->
ENUMERATION SETS 70 - 73
(Used with "Limit" Feedback)
Value 70 71 72 73
(Hex) Valve Chg.Valve Div. Valve Elevator
0 Traveling Traveling Traveling Traveling
1 Open Open Divert Raise
2 Stop Stop Stop Stop
3 Open/Stopped Open/Stopped Diverted/Stopped Up/Stopped
4 Close Close Straight Lower
5 Impossible ---------------------------------------------------->
6 Closed/Stopped Closed/Stopped Straight/Stopped Down/Stopped
7 Impossible ---------------------------------------------------->
--```,``-`-`,,`,,`,`,,`---
FH Impossible ---------------------------------------------------->
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
380
The enumerations given below are intended to be the basis for enumerations
used for North American English versions of Conformant equipment. The strings
given require a 17 character display window. The following table expands each of
the enumerations to a full expression:
--```,``-`-`,,`,,`,`,,`---
the last command was to straighten the valve.
Diverted? The valve is Diverted but the last command was to
straighten it.
Diverting The valve is Diverting.
Down The elevator is Down.
Down/Running? The elevator is Down but the motor is still running
Down/Stopped The elevator is Down and the motor is Stopped.
Down/Stopped? The elevator is Down and the motor is Stopped but
the last command was to Raise the elevator.
Down? The elevator is Down but the last command was to
Raise the elevator.
Dribble The valve is in the Dribble position.
Empty Command the device to empty / the device is empty.
Empty? The device is empty but the last power command was
to fill it.
Emptying The device is emptying.
Fan Command the HVAC system to Fan-only.
Fan/Cooling The HVAC system is Fan-only and in the cooling mode
Fan/Heating The HVAC system is Fan-only and in the heating mode
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
to empty it.
Heat Command the HVAC system to Heat.
Heating The HVAC system is Heating.
Heating? The HVAC system is Heating but the last command was
to Cool.
Hold Command the device to hold its present position or
state.
Holding The device is holding its present position or state
Impossible The feedback signals are crazy.
Lower Command to Lower the elevator.
Lowering The elevator is Lowering.
Lowering? The elevator is Lowering but the last power command
was to raise it.
No Feedback? There is no Feedback but there should be.
Normal The tag is in its normal state.
Off Command the device to turn off or the device is off
On Command to turn the device On or the device is On.
On? The motor is On in the Forward direction but the
last command was to turn it On in the Reverse
direction.
Open Command the valve to Open.
Opening The valve is Opening.
Open/Running? The valve is Open but the motor is still running.
Open/Stopped The valve is Open and the motor is Stopped.
Open/Stopped? The valve is Open and the motor is stopped but the
last command was to close the valve.
Opened? The valve is Open but the last command was to Close
it.
Raise Command to Raise the elevator.
Release Command to Release the resource.
Released The resource has been Released.
Released? The resource is released but the last command was
to Claim it.
Reset Command the device to go to its reset state/
the device is in its reset state.
Reverse Command to turn the device On in the reverse
direction or the device is On in the Reverse
direction.
Reverse? The device is On in the Reverse direction but the
last command was to turn it On in the Forward
direction.
Rising The elevator is Rising.
Rising? The elevator is rising but the last power command
to it was to lower.
Run Command the device to run.
Running The device is in its run state.
Set Command the device to go to its set state/ the
device is in its set state.
Slow Command the device to go to its slow operating
state/ the device is operating in its slow state.
Slow? The device is in its slow operating state but the
last power command was go go to fast.
Standby Command to put the resource into Standby.
Standby/Claimed The resource is in Standby; it is Claimed.
Standby/Released The resource is in Standby; it is Released.
Stop Command the device to Stop or the device is Stopped
Stopped The device is stopped.
Straight Command the diverter valve to move to the Straight
position.
Straightening The diverter valve is Straightening.
Straight/Running? The diverter valve is Straight but the motor is
still Running.
Straight/Stopped The diverter valve is Straight and the motor is
Stopped.
Straight/Stopped? The diverter valve is Straight and the motor is
Stopped but the last command was to Divert.
Straight? The diverter valve is Straight but the last command
was to Divert.
Traveling The valve or elevator is Traveling.
Up The elevator is in the Up position.
Up/Running? The elevator is in the Up position but the motor is
still Running.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
This table lists the commands that the Field Bus Standard recognizes as the
common meaning of single non-printable visible characters. Table 10 will present
alternate or more precise definitions and/or codes for the 21 commands shown with
a "*". For the rest of these commands, the Field Bus definition will be exactly
the same as the generally recognized definition.
Character
Value
(Base 10) Code Meaning
* 0 NUL Null Character
1 SOH Start Of Heading
2 STX Start Text
3 ETX End Text
4 EOT End Of Transmission
5 ENQ Enquiry
6 ACK Affirmative Acknowledge
7 BEL Bell
8 BS Backspace
--```,``-`-`,,`,,`,`,,`---
* 9 HT Horizontal Tabulation
* 10 LF Line Feed
* 11 VT Vertical Tabulation
* 12 FF Form Feed
* 13 CR Carriage Return
* 14 S0 Select Double-width Mode - 1 line (see 20)
* 15 S1 Select Condensed Mode (see 18)
16 DLE Data Link Escape
* 17 DC1 Select Printer (see 19)
* 18 DC2 Cancel Condensed Mode (see 15)
* 19 DC3 Deselect Printer (see 17)
* 20 DC4 Cancel Double-width Mode - 1 line (see 14)
21 NAK Negative Acknowledge
22 SYN Synchronous Idle
23 ETB End Transmission Block
* 24 CAN Cancel Line
* 25 EM End Medium
26 EOF End of File (as in CP/M and DOS Operating Systems)
* 27 ESC Escape
* 28 FS File Separator
* 29 GS Group Separator
* 30 RS Record Separator
* 31 US Unit Separator
* 32 SP Space
*127 (Various)
*255 SP Space
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Note: the Field Bus definitions for the structure of the clipboard will
use the hierarchy of: record, group, and file (in order, from
lowest to highest classification). "Unit" will not be used.
Character
Value
(Base 10) Code Meaning
0 NUL Null Character (ignore in display/print string - do
not display/print, do not skip a space, but
include in all error detection procedures as if a
read character)
9 HT Horizontal Tab [tab positions fixed at every 8
character positions starting at the leftmost
position in the display (print) field - positions
0, 8, 16, etc.].
10 LF Line Feed (line feed will IMPLY a carriage return)
11 VT Vertical Tab (tab positions fixed at every line -
this control character will advance one line
with no horizontal change in position)
12 FF Form Feed [clears display (advances to top of paper)
and positions cursor (printer) at top left
position]
13 CR Carriage Return [returns carriage (cursor) to left-
most position BUT DOES NOT IMPLY a line feed].
14 SD Select Double-width Mode - 1 line (remains in effect
until <LF> or <CD>) (default is single-width
mode)
15 SC Select Condensed Mode (see <CC>) (default is normal
mode).
17 SP Select Printer (see <DP>) (will cause printing to
start- note that default is printer selected)
18 CC Cancel Condensed Mode (see <SC>)
19 DP Deselect Printer (see <SP>) (will cause printing to
stop - note that default is printer selected)
20 CD Cancel Double-width Mode - (see <SD>) (default is
single-width mode)
24 HB High Bit - this character will be treated exactly as a
NUL except the immediately next character will
--```,``-`-`,,`,,`,`,,`---
have its high-order bit set. (This will allow a
7-bit communication link to activate the extended
characters.)
25 FBE Field Bus Escape (see Table 13)
27 ESC Escape
28 FS File Separator - used in a Field Bus clipboard to
denote BOTH the beginning and end of the
meaningful data on a single page of the
clipboard. If the clipboard has any meaningful
data, <FS> will be the first character on the
page. There can only be 0 or 2 of these commands
on a page of the clipboard. (see p15, "Human
Interface Considerations").
29 GS Group Separator - used in a Field Bus clipboard to
denote BOTH the beginning and the end of a
part/material description. The GS commands must
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
This table lists the fonts that the Field Bus Standard recognizes as the
common meaning of single byte CODES. These codes and fonts are identical to
those found in the "Alternate" character set in the "IBM Proprinter".
This table lists the two byte codes that the Field Bus Standard recognizes
for each of the fonts given in Table 11. These codes are identical to the codes
found in the "Unicode" character set. The leading two zeros have been omitted
from many of the hex values for clarity.
--```,``-`-`,,`,,`,`,,`---
36 24 $ 234 EA 2592 250C
37 25 % 235 EB 2593 2588
38 26 & 232 E8 2502 2585
39 27 ' 239 EF 2524 258B
40 28 ( 238 EE 2561 2590
41 29 ) 236 EC 2562 2580
42 2A * 196 C4 2556 03B1
43 2B + 197 C5 2555 03B2
44 2C , 201 C9 2563 0393
45 2D - 230 E6 2551 03C0
46 2E . 198 C6 2557 03A3
47 2F / 244 F4 255D 03C3
48-57 30-39 0-9 246 F6 255C 03BC
58 3A : 242 F2 255B 03C4
59 3B ; 251 FB 2510 03A6
60 3C < 249 F9 2514 0398
61 3D = 255 FF 2534 03A9
62 3E > 214 D6 252C 03B4
63 3F ? 220 DC 251C 221E
64 40 @ 162 A2 2500 03C6
65-90 41-5A A-Z 163 A3 253C 03B5
91 5B [ 165 A5 255E 03B7
92 5C \ 20A7 255F 039E
93 5D ] 0192 255A 177 B1
94 5E ^ 225 E1 2554 2265
95 5F _ 237 ED 2569 2264
96 60 ` 243 F3 2566 2320
97-122 61-7A a-z 250 FA 2560 2321
123 7B { 241 F1 2550 247 F7
166 A6 | 209 D1 256C 2248
125 7D } 170 AA 2567 176 B0
126 7E ~ 186 BA 2568 2219
32 20 191 BF 2564 183 B7
199 C7 2310 2565 221A
252 FC 172 AC 2559 207F
233 E9 189 BD 2558 178 B2
226 E2 188 BC 2552 25AA
228 E4 161 A1 - 2553 32 20
This table lists the characters that can follow the "Escape" and "Field Bus
Escape" characters as defined in this Standard and gives the meaning of each set
of characters (i.e., each "escape command").
Note that the enabling and suppression of 8-bit Japanese codes are unique to
--```,``-`-`,,`,,`,`,,`---
this Standard. The default condition for the clipboard will be single byte
(Table 11) mode enabled and 8-bit Japanese modes disabled.
Characters After "Field Bus Escape" (<FBE>),(25 base 10) (see Note (1)
below):
Note: links
built on the character symbol refer to notes at the end of the table.
Character
Value
(Base 10) Symbol Meaning
- any 4 bytes - In the first (left most) character of a Units
Description field, <FBE> indicates that the next
4 bytes are to be interpreted as an "Extended SI"
description (see p4 of Human Interface
Considerations) and the rest of the field is to
be ignored.
35 # Start of Hardware I/O Reference Definition (see item
1, p16, "Human Interface Considerations"). Can
be used outside of any clipboard group or inside
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
time (i.e., 00-23, not 00-11)
The value must be 00 - 23 or
99. The latter will be
interpreted as "unknown".
dd = TWO visible numeric characters
showing the day of the month.
The value must be 01 - 31 or
99. The latter will be
interpreted as "unknown".
mm = TWO visible numeric characters
showing the month of the year.
The value must be 01 - 12 or
99. The latter will be
interpreted as "unknown".
yyyy = FOUR visible numeric
characters showing the year.
Can also be used in the "repair shop" group
but can not be used by an original
manufacturer.
67 C Start of maintenance time (the high order
three bytes of Field Bus Social Time must
follow immediately, low order byte first.
Note that this is one of the few records in
the clipboard that is in binary format. It
must always consist of exactly 5 bytes
including the <FBE>, the letter "C", and
the three bytes of time.
68 D Start of maintenance person identification record
Can also be used in the "repair shop" group
but can not be used by an original
manufacturer.
69 E End of maintenance person identification record.
70 F Start of maintenance work order number record.
Can also be used in the "repair shop" group
but can not be used by an original
manufacturer.
71 G End of maintenance work order number record.
72 H Start of coded maintenance record (two-character
maintenance code from Table 16 must follow
immediately; it in turn must be immediately
followed by the other 3 characters of the
record). Can also be used in the "repair
shop" group but can not be used by an
original manufacturer.
74 J Start of free visible maintenance record.
Can only be used in the "maintenance
activity" group.
75 K End of free visible maintenance record.
76 L End of Maintenance activity group.
77 M Start of User's free information group.
Can not be used by an original manufacturer
total clipboard but they can not be nested. The <FBE><S> must
immediately precede the binary data. A page break can not
separate the <FBE><S> from the binary data and the binary data
can not itself be split by a page break nor be separated from
the trailing <FBE><T> by a page break. The binary data must
be exactly as long as is specified.
There are four sources for the parts definitions/descriptions used in this
table. They are:
1) ISA SP-16.s - "Variable Area Meters"
2) ISA SP-20 - "Specification Forms"
3) ISA SP-75.05 - "Control Valve Terminology"
4) ISA SP-50 definition.
References are given for all parts defined in sources 1-3.
Pressure Transmitter
Pressure Transmitter (gauge, absolute, or differential), Differential Pressure
Transmitters Used As Level Transmitters, and Pressure Switches:
Body (wetted parts of)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Target Flowmeter
Body (wetted parts of)
Body Flanges
Force Bar
Force Bar Seal
Target
Level Transmitter:
Body (wetted parts of)
Body-to-Chamber Bolts
Cage/Chamber (wetted parts of)
(ISA-S20-1981, Form S20.26, line 4)
Cage/Chamber Flange
Displacer Trim
Float/Displacer (including rod)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
395
Temperature Transmitter:
Head
(ISA-S20-1981, Form S20.12a, line 7)
(ISA-S20-1981, Form S20.13a, line 4)
Packed Connector
(ISA-S20-1981, Form S20.12a, line 5)
Thermocouple/RTD Type
(ISA-S20-1981, Form S20.12a, line 2)
(ISA-S20-1981, Form S20.13a, line 6)
Thermocouple/RTD Sheath
(ISA-S20-1981, Form S20.12a, line 3)
(ISA-S20-1981, Form S20.13a, line 10)
Thermowell/Tube
(ISA-S20-1981, Form S20.11a, line 22)
(ISA-S20-1981, Form S20.12a, line 9)
(ISA-S20-1981, Form S20.13a, line 13)
Centrifugal Pump:
Body (wetted parts of)
Body Gasket
--```,``-`-`,,`,,`,`,,`---
Body Lining
Connection Pipe Flange
Connection Pipe Gaskets
Connection Pipe Sections
Impeller
Shaft
Rotating Shaft Seal
Agitator:
Shaft
Impeller
Rotating Shaft Seal
Valve
Valve (valve information in positioner delivered as part of the valve assembly):
Body (wetted parts of)
(ISA-S20-1981, Form S20.50, line 9)
(ISA-S20-1981, Form S20.51, line 10)
(ISA-S75.05-1983, Section 4.1)
Body Seal
(ISA-S75.05-1983, Drawing 5.1{b})
Body-to-Body Bolts
(ISA-S75.05-1983, Drawing 5.1{b})
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
396
Bonnet
(ISA-S75.05-1983, Section 4.2)
Bonnet-to-Body Bolts (Bonnet bolting)
(ISA-S75.05-1983, Section 4.2.3)
Bonnet-to-Body Gasket (Bonnet gasket)
(ISA-S75.05-1983, Section 4.2.2)
Bottom Flange Gasket
Flexible Closure Member/Elastomeric Tubular Member/Body Liner
(ISA-S75.05-1983, Section 5.3, Section 5.4, Appendix B)
Guides (bearings, bushings, or cage)
(ISA-S75.05-1983, Sections 4.7 and 5.1.4)
--```,``-`-`,,`,,`,`,,`---
Plug Contour
Used as the part description for the hardening material description
when the entire plug contour is hardened (material description is a
hardening process) or a plug insert is used (material description
is a material) (see "Trim").
Seal Back-up Ring
Seat and Orifice
Used as the part description for the hardening material description
when the entire seat and orifice is hardened (see "Seat/Seal")
Seat Ring/Seal (Primary)
(ISA-S20-1981, Form S20.50, line 14)
(ISA-S20-1981, Form S20.51, line 16)
(ISA-S75.05-1983, Section 4.4.1)
Note: an indication of hardening will imply only the seal edge of
the seat (see "Seat and Orifice")
Secondary (Back-up) Seal Ring
Shaft/Stem
(Shaft: ISA-S20-1981, Form S20.50, line 14)
(Stem: ISA-S75.05-1983, Section 4.5)
Stem Bellows (Bellows Stem Seal)
(ISA-S75.05-1983, Section 4.6.3)
Stem Packing
(ISA-S20-1981, Form S20.50, line 10)
(ISA-S20-1981, Form S20.51, line 11)
(ISA-S75.05-1983, Section 4.6.1)
Trim (i.e., ball, cage, disk, gate, plug, seat ring, stem, but not
seat nor shaft/stem)
(ISA-S20-1981, Form S20.50, line 14)
(ISA-S20-1981, Form S20.51, line 15)
(ISA-S75.05-1983, Sections 4.3, 4.4, and 4.5)
Note: if hardening or surface treating is shown for "trim", it
will be known to apply to the sealing edge of the
ball/disk/gate/plug only (see "Plug Contour"). If a
surface covering is indicated, such as a rubber liner, it
will be known to apply to the disk/gate/plug only.
Solenoid Valve:
Body (wetted parts of)
(ISA-S20-1981, Form S20.55, line 8)
Diaphragm
(ISA-S20-1981, Form S20.55, line 10)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Packing
(ISA-S20-1981, Form S20.55, line 12)
Seat
(ISA-S20-1981, Form S20.55, line 9)
--```,``-`-`,,`,,`,`,,`---
5 Bearings
6 Blades
7 Bluff Body (shedder)
8 Body (wetted parts of)
9 Body-to-Chamber Bolts
10 Body Cover
11 Body Flanges
12 Body Lining
13 Body Seal(s)
14 Body-to-Body Bolts
15 Bonnett
16 Bonnett-to-Body Bolts
17 Bonnett-to-Body Gasket
18 Bottom Flange Gasket
19 Bubbler Fluid
20 Bulb
21 Cage/Chamber (wetted parts of)
22 Cage/Chamber Flange
23 Capillary
24 Capillary Fill Fluid
25 Chemical Seals
26 Connection Pipe Flange
27 Connection Pipe Gaskets
28 Connection Pipe Sections (up and down stream runs)
29 Diaphragm
30 Displacer Trim
31 Electrode
32 Element (i.e., sensing diaphragm, bourden tube, bellows)
33 Enclosure ("Secondary", "Pressure")
34 End Fittings
35 Extension Well/Housing
36 Extension Well to Body Gasket
37 Fill Fluid
38 Flange, other (not Body, Bottom Flange, Cage/Chamber,
connection Pipe, Orifice, nor Pipe flange)
39 Flexible Closure Member/Elastomeric Tubular Member/Body Liner
40 Float/Displacer (including rod)
41 Float/Displacer Cable/Spring/Tape/Tube
42 Force Bar
43 Force Bar Seal
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
398
--```,``-`-`,,`,,`,`,,`---
63 Purge Fluid
64 Ring Joint Assembly Material
65 Rotating Element (ex. blades)
66 Rotating Shaft Seal
67 Rotor
68 Rotor Shaft
69 Seal Back-up Ring
70 Sealing Gland
71 Seat and Orifice
Note: Used as the part description for the hardening
material description when the entire seat and
orifice is hardened (see "Seat/Seal")
72 Seat Ring/Seal (Primary)
Note: an indication of hardening will imply only the seal
edge of the seat (see "Seat and Orifice")
73 Secondary (Back-up) Seal Ring
74 Sensor
75 Shaft
76 Shaft/Stem
77 Stem Bellows
78 Stem Packing
79 Straightening Vanes
80 Switch Contact Plating
81 Target
82 Thermowell/Tube
83 Thermocouple/RTD Sheath
84 Trim (i.e., ball, cage, disk, gate, plug, seat ring, stem, but
not seat nor shaft/stem)
Note: if hardening or surface treating is shown for
"trim", it will be known to apply to the sealing
edge of the ball/disk/gate/plug only (see "Plug //^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Contour"). If a surface covering is indicated,
such as a rubber liner, it will be known to apply
to the disk/gate/plug only.
85 Tube
86 Tube Lining
87 Tube Material
88 Tube Packing (tube seat gasket)/Tube O-Ring
89-99 Reserved for future SP-50.
Tx Temp-Partx
where x = last digit of the code number. The free-format
part of the clipboard can then be used to define
Temp-Partx.
a0-z9 Reserved for future standards.
where "a" to "z" represents any capital alpha letters except
the letter "T".
0a-9z Manufacturer Specific
where "a" to "z" represents any capital alpha letters.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The maintenance code that must follow the "Field Bus Escape, H" characters in
the clipboard will be composed of 5 characters, arranged into records of 2, 1,
and 2 characters. The first field identifies the component of the field device
that was the object of the maintenance work (essentially the noun of the code);
the second identifies the trigger for the work; and the third identifies the
resolution of the work (essentially the verb).
This table lists the basic codes suggested for each field and their
descriptions. The table includes a "major group" description for the groups of
two-character codes. This entry is for information only: the symbols ending in
a "-" are never actually used in a clipboard.
Characters After "Field Bus Escape - H" (26 base 10 + 72 base 10):
Character
Value
(Base 10) Symbol Meaning
--```,``-`-`,,`,,`,`,,`---
C- Major group "Cabinet"
67,80 CP Cabinet/enclosure purge supply
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
67,70 CF Cabinet/enclosure purge supply filter
67,85 CU Cabinet/enclosure purge supply pressure gauge/block
valve - upstream side
67,82 CR Cabinet/enclosure purge supply regulator
67,76 CL Cabinet/enclosure purge supply pressure gauge/flow
indicator/block valve - load side
67,84 CT Cabinet/enclosure purge supply tubing/pipe
67,67 CC Cabinet/enclosure cooler
67,69 CE Cabinet/enclosure electrical heater
67,83 CS Cabinet/enclosure steam heater
67,78 CN Cabinet/enclosure fan
67,72 CH Cabinet/enclosure hydrocarbon sensor
67,68 CD Cabinet/enclosure door/cover - gasket/hinge/latch/
bolts
67,73 CI Cabinet/enclosure door/cover interlock switch/wire
67,77 CM Cabinet/enclosure corrosion monitor
--```,``-`-`,,`,,`,`,,`---
73,80 IP Power supply board
73,77 IM Main Circuit board
73,68 ID Daughter board
73,70 IF Field Bus driver board
73,73 II Input board/module
73,79 IO Output (or I/O) board/module
73,65 IA Instrument alarm switch
73,66 IB Field Bus connection to field instrument.
73,87 IW Field Bus wire at field instrument (used in
conjunction with "connected" maintenance
service.)
73,88 IX Field Bus flex/conduit
73,71 IG General electronics (used in conjunction with
"started" and "commissioned" maintenance
services.)
73,67 IC Electronics cover/bolts/gasket
73,76 IL Field instrument local ground system
73,69 IE Wire entry cover/bolts/gasket
--```,``-`-`,,`,,`,`,,`---
77,83 MS Solenoid
77,82 MR Relay
77,76 ML Loop
77,49 M1 Block Valve
77,50 M2 Cotter Pin
77,51 M3 Cutout switch
77,52 M4 Sample time stamp switch
77,53 M5 Switch contacts
77,54 M6 Tape
77,55 M7 Turnbuckle
77,56 M8 Union
77,57 M9 Union w/ Plug
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
403
65 A Accounting
67 C Critical
50 2 Critical, call-out
73 I Installation
84 T Turnaround
82 R Routine - scheduled
85 U Routine - unscheduled
83 S Safety - scheduled
49 1 Safety - unscheduled
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
404
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
H- Major group "Hardware"
72,65 AA Adjusted (but not "calibrated/tuned/proved")
72,66 AB Broken - replaced
72,67 AC Car-seal missing - replaced
72,76 AL Loose - fixed
72,77 AM Missing - replaced
72,79 AO Open - closed/resealed.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
W- Major group "Warning" (intention: statement of fact:
not proceeding to fix).
87,65 WA Calibration needed
87,66 WB Cover bolts missing
87,67 WC Cover missing
87,69 WE Engineering change required
87,70 WF Fireproofing needed/damaged
87,71 WG Cover gasket missing
87,72 WH Cover hinge broken
87,73 WI Insulation needed/damaged
87,76 WL Leaking - can't stop
87,80 WP Poor condition
87,82 WR Extensive corrosion
87,87 WW Winterizing not working
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
90,52 Z3 Not confirmed bad - blocked from process
90,53 Z4 Sent out for repairs, not replaced
90,90 ZZ No appropriate code
--```,``-`-`,,`,,`,`,,`---
Material Description
This attachment defines the exact structure of a "material description" used
in a standard SP-50 Field Bus clipboard. The material description is combined
with a part code to indicate the material of construction of a part of a field
device. The procedure is primarily oriented toward describing the material of
construction of parts of the field device that are "wetted" by process fluids and
hence more susceptible to corrosion.
--```,``-`-`,,`,,`,`,,`---
?9&?Z - Material Descriptions Defined by the Manufacturer
Table 1 - Industrial Ceramics, Cermets, and Powder Metallurgy
Table 2 - Miscellaneous Material Descriptions
Table 3 - Surface Treating and Hardening, Material Color, and
Paint Systems
MD FORMAT:
The clipboard uses the non-printable ASCII command <GS> (Char. 29) to
indicate the beginning and the end of a part/material description. The first
<GS> is followed by the code for the part as defined in the Human Interface
Considerations document. That is followed by the material description described
in this attachment. The second <GS> command follows the (last) material
description.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
408
Bus defined alpha character denoting the nationality of the standard referenced
and hereafter called "National".
Unless explicitly stated otherwise, all alpha characters in the line called
out will be upper case.
--```,``-`-`,,`,,`,`,,`---
In all cases, the material description will end with an ASCII non-printable
command to facilitate data base parsing. The command will be the ASCII command
<US> (value of 31 decimal, 1F hex). Hereafter in this specification, it will be
referred to as the "MD-End" symbol. The ASCII character 31 can not be used
between a pair of <GS> commands for any other purpose in the clipboard.
NATIONAL DESCRIPTION:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
CLASS DESCRIPTION:
The alpha-numeric "Class" character, combined with the leading National
identifier, defines a material description as being based on (note that this
table is arranged in Class order):
AB - The standard "Ring-Joint Gaskets and Grooves for Steel Pipe
Flanges" (ANSI B16.20).
VC - The material of construction will be given as visible characters.
ZC - A description system for industrial ceramics (including glass and
refractories), cermets, and powder metallurgy.
AD - The standard "Double-Jacketed Metallic Gaskets" (API 601).
VD - The date will be given as visible characters.
AE - A description system for defining the most severe electrical
classification for which the device is suitable (NFPA - NEC).
AF - The standard "Standard Classification System for Nonmetallic
Gasket Materials" (ASTM F 104).
AG - A description system for all other gaskets and non-plastic
diaphragms.
AI - The standard "Rubber-Gasket Joints for Ductile-Iron Pressure Pipe
and Fittings - (ANSI/AWWA C111/A21.11). (Current version - 1990.)
ZL - A set of material descriptions for liquids and gases.
ZM - A set of miscellaneous material descriptions defined by the SP-50
Standard.
ZN - Null - material not defined.
AP - The standard "Standard Classification System for Specifying
Plastic Materials" (ASTM D-4000).
AR - The standard "Standard Practice for Rubber and Rubber Latices -
Nomenclature" (ASTM D-1418).
AS - The standard "Spiral-Wound Metallic Gaskets" (API 601).
ZT - A description system for thermocouples and resistance temperature
devices.
AU - The standard "Unified Numbering System for Metal and Alloys" (ASTM
--```,``-`-`,,`,,`,`,,`---
DS-56)
ZV - A description system for all stem and shaft packing materials and
seals.
ZW - A description system for defining power demand.
AX - A description system for defining the service pressure limit.
ZY - A description system for surface treating and hardening, material
color, and paint systems.
?9&?Z - A set of material descriptions defined by the manufacturer where
"?" is the nationality of the manufacturer or "Z".
All other characters - reserved.
NATIONAL/CLASS DEFINITIONS:
The definition of the call-out for the material description is given below
for each of the classes in the order shown above.
+ This class will not be used for gaskets that meet API Standard
"6A-Wellhead Equipment". (API = American Petroleum Institute.)
+ The ANSI B16.20 standard does not define a specific line call-
out: that will be accomplished as part of SP-50. The
terminology of the definition of the line call-out in SP-50 will
use the terminology of ANSI B16.20. (ANSI = American National
Standard Institute.)
+ If the line called out is not zero length, the first character of
the line (immediately following the class symbol "B") will be a
single alpha-numeric character that defines the shape of the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
410
If there is only one character in the entire line called out, the
gasket material will, by default, be G10YYY (generic low-carbon
steel).
VC - Visible Characters
VC - The "material of construction" will be given as a string of visible
characters. The characters given in Table 9, unless prohibited by
formatting rules, can be used as control characters. Also, the
escape characters (the special codes that start with the "Escape"
code) in Table 13 will be allowed in this field.
--```,``-`-`,,`,,`,`,,`---
ZC - Industrial Ceramics, Cermets, and Powder Met.
ZC - A description system for industrial ceramics (including glass and
refractories), cermets, and powder metallurgy.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
11 - Chromium carbide (see Note 1 below).
13 - Silicon carbide (see Note 1 below) (see
Carborundum).
15 - Tantalum carbide (see Note 1 below)
16 - Titanium carbide (see Note 1 below)
17 - Titanium nitride (see Note 2 below)
18 - Tungsten carbide (see Note 1 below)
19 - Zirconium nitride (see Note 2 below)
Ferrites
22 - Iron oxide + barium oxide (barium ferrite)
24 - Iron oxide + manganese oxide
26 - Iron oxide + nickel oxide + zinc oxide
Glass:
30 - Aluminosilicate (chemically resistant
borosilicate glass (80% SiO2, 12%
B2O3, 4% N2O, 2% Al2O3)
Borosilicate crown glass:
31 - 70/75% SiO2, 5/10% B2O3
32 - 65/70% SiO2, 10/15% B2O3
33 - 60/65% SiO2, 15/20% B2O3
35 - Fused silica (100% SiO2)
36 - 96% Silica glass (96% SiO2, 3% B2O3)
37 - Soda-lime (SiO2, Na2O, and CaO)
38 - Lead glass
39 - Other
Piezoelectrics
42 - Barium titanate
44 - Lead niobate
46 - Lead zirconate + lead titanate
Porcelain enamels:
50 - Aluminum enamel
52 - Iron enamel
54 - Copper enamel
+ The API 601 standard does not define a specific line call-out:
that will be accomplished as part of SP-50. The terminology of
the definition of the line call-out in SP-50 will use the
terminology of API 601. (API = American Petroleum Institute.)
+ If the line being called out is not zero length, the first
character of the line (immediately following the class symbol
"D") will be a a single alpha-numeric character that defines the
pipe flange standard for which the gasket is suitable. The
definition of this character is completely consistent with API
601. However, in a Standard Field Bus clipboard, the character
must be provided and will be one of:
A - Suitable for use with flanges conforming to API
Standard 605.
M - Suitable for use with flanges conforming to MSS
SP-44. (MMS = Manufacturers Standardization Society
of the Valve and Fittings Industry).
--```,``-`-`,,`,,`,`,,`---
The abbreviations given in API 601 for the materials for the
jacket specifically WILL NOT be used in the SP-50 version of the
call-out. The following table gives the conversion between the
1988 list of jacket materials and the call-out for the
National/Class "AU" system:
Stainless Steels SYYYYY
Inconel 600 N06660
Inconel 625 N06625
Incoloy 800 N08800
Monel N04YYY
Titanium R5YYYY
Nickel N0YYYY
Inconel X750 N07750
Copper C1YYYY
Zirconium R6YYYY
Tantalum R05YYY
Hastelloy B N10001
Hastelloy C N10002
Carbon Steel K0YYYY
+ If the line being called out for the gasket continues past the
first material description, the next character will be the start
of a standard material description for the filler. A binder will
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The abbreviations given in API 601 for the materials for the
filler specifically WILL NOT be used in the SP-50 version of
the call-out. The following table gives the conversion between
the 1988 list of filler materials and the SP-50 material
descriptions (the call-out plus the National/Class code but not
including the required MD-Start and MD-End symbols):
VD - Visible Date
VD - The "material of construction" will be given as a visible date.
This form requires the following format immediately after the
letters VD:
ddmmyyyy
where dd = the day as a TWO digit integer, 01 - 31 only.
A value of 00 will be allowed for the day and
will be taken to mean "not known".
mm = the month as a TWO digit integer, 01 - 12 only.
A value of 00 will be allowed for the month and
will be taken to mean "not known".
yyyy = the year as a four digit integer.
This field MUST consist of 8 visible number characters.
AE - Electrical classification
AE - A description system for defining the most severe electrical
classification for which the device is suitable (NFPA - NEC).
Reminder: this description system is only intended for
the National description "A" and those other
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
National applications that find it convenient
to follow essentially the same definitions.
+ This description system will be a pure superset of the NFPA
(National Fire Protection Association) "National Electric Code",
Article 500. That is, all portions of the system that refer
to the NFPA marking procedures will be entirely consistent with
those procedures as of the date of manufacture of the device.
+ The Field Bus Standard basic line call-out for this class will
consist of a highly variable string of characters that can be
parsed into individual groups of descriptions. The parsing
will depend on the restrictions imposed on the use of certain
characters.
+ The clipboard may contain more than one of these descriptors
in those cases where a device is designed to be used in a
variety of hazardous applications. Note, however, that the
description of the protective technique that is used can be
repeated within one descriptor.
+ The first one or more characters will indicate the protective
technique used. At least one character must be present.
The character(s) will be:
D - Flameproof (explosion proof) enclosure
E - Reserved (if NEC gives recognition to the equivalent of
the CENELEC method called "Increased safety", then this
letter will automatically become available for use for
that NFPA method).
G -
General Purpose
I -
Intrinsic safety
M -
Encapsulation
N -
Non-incendive
O -
Oil filled
P -
Dust-ignition-proof
Q -
Powder filling
S -
Special
V -
Outside of the scope of the Field Bus description method.
X -
Purging - Type X installation as defined by NFPA 496.
Note: if more than 1 technique code is used and X is one
of them, then the letter X MUST be first.
Y - Purging - Type Y installation as defined by NFPA 496.
Z - Purging - Type Z installation as defined by NFPA 496.
All digits and the letters A,C,F,K, and T must never be used.
All other characters - reserved.
+ The second character (optional) will be a digit that defines the
most severe division in Class I for which the device is
applicable:
0 - Reserved (if NEC gives recognition to the equivalent of
CENELEC zone 0, then this digit will automatically become
available for use for that NFPA "division").
1 - Division 1
2 - Division 2
3 - Reserved (if NEC gives recognition to the equivalent of
CENELEC zone 1, then this digit will automatically become
available for use for that NFPA "division").
9 - General Purpose/not rated
4 - reserved
5-8 - must never be used
All alpha characters - must never be used.
--```,``-`-`,,`,,`,`,,`---
+ If the Class I Division is defined, then the next character must
be present and will be a letter that defines the Group(s) within
Class I for which the device is applicable:
A - Group A, B, C, and D
B - Group B, C, D
C - Group C and D
D - Group D
E - Group A, C, and D but not B
F - Group A only
Z - not applicable
All other alpha characters - reserved
All digits - must never be used
+ The basic description can terminate after the above characters.
Alternately, a digit can follow that defines the most severe
division in Class II for which the device is applicable:
5 - Division 1
6 - Division 2
4 - reserved
All alpha characters - must never be used.
All other digits - must never be used.
+ If the Class II division is defined, it must be followed by an
alpha character. The character will define the most severe Group
for which the device is applicable:
E - Group E
F - Group F
G - Group G
Z - not applicable
All digits - must never be used.
All other letters - reserved
+ The basic description can terminate with only the above
characters. Alternately, a digit can follow that defines the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
417
following exceptions:
- The "ASTM F 104 (F" at the beginning of the line and the ")"
at the end of the line will be deleted.
- The remaining portion of the line call-out must be
structured as specified. It can contain only capital
letters, digits, and a single dash with no spaces.
- Any one of the first six numbers have a meaning of "not
specified" when set equal to zero. When applied in
an SP-50 clipboard, any one or more of the numbers can
be replaced with a "X" to mean "unknown".
- As specified by the F 104 standard, any one of the numbers
has a meaning of "as specified" when set to 9. This
reference can be to the free-format portion of the clipboard
as well as to the references mentioned in F 104.
- The suffix letter-numeral symbols are optional. If a
suffix is used, neither the letter nor the number can
be replaced with a "X".
- The portion of the material description derived from F 104
can be truncated at any position (including before the
first digit!).
- The portion of the call-out obtained from F 104 does not
have a terminator.
+ Note: reference can be made to ASTM F 36 - 88, Table 1 for
examples of materials described using the F 104 Standard.
+ The last character of the description will be a standard MD-End
symbol (not part of the call-out) even if that results in two
such symbols in series.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
K - Suitable for large tongue and groove pipe flanges,
not referencing ANSI B16.21.
O - O-Ring
Note: the following definition of an O-Ring will
be used: a product of precise dimensions
molded in one piece to the configuration of
a torus with circular cross section
suitable for use in a machined groove for
static or dynamic service. (ASTM D
1566-90)
R - Non-plastic Diaphragms
T - Full face, meeting ANSI B16.21, suitable for flat
face pipe flanges.
U - Self-centering flat ring, meeting ANSI B16.21,
suitable for raised face pipe flanges.
V - Small flat ring, meeting ANSI B16.21, suitable for
raised face pipe flanges.
W - Suitable for large male and female pipe flanges,
meeting ANSI B16.21.
X - Gasket not meeting any other gasket class in this
table.
Note: Materials that are liquid and are applied as a
bead or other form to one or both mating faces
of a joint and act as a static seal are
included in the ZL material description class.
Y - Suitable for large tongue and groove pipe flanges,
meeting ANSI B16.21.
Z - Manufacturer specific.
0 - Facing material (gasket not fully enveloped)
1 - Envelope material
Note: enveloped gaskets are described as gaskets
having some corrosion-resistant covering over
the internal area normally exposed to the
corrosive environment. The shield material may
be plastic (such as polytetrafluoroethylene) or
metal (such as tantalum). A resilient
conformable filler is usually used inside the
envelope (ASTM F 112-80, section 1.1) For Field
Bus:
- the term envelope will serve for any
covering that totally encloses the
resilient filler.
- the term "base material" will refer to the
majority component of the resilient
(enclosed) portion of the gasket.
2 - Gasket (diaphragm) base material
3 - Gasket (diaphragm) base material filler/binder
4 - Gasket (diaphragm) substrate - fiber/wire
--```,``-`-`,,`,,`,`,,`---
AI - Rubber-Gasket Joints for Ductile-Iron Pressure Pipe
AI - The standard "Rubber-Gasket Joints for Ductile-Iron Pressure Pipe
and fittings - (ANSI/AWWA C111/A21.11). (Current version - 1990.)
+ The ANSI C111 standard does not define a specific line call-out:
that will be accomplished as part of SP-50. The terminology of
the definition of the line call-out in SP-50 will use the
terminology of ANSI C111 (ANSI = American National Standard
Institute.)
+ In the 1990 version of C111, flanged-joint gaskets are described
in Appendix B, which is for information only and is not a part of
ANSI C111. The SP-50 reference below is to the appendix
material.
+ If the line called out is not zero length, the first character of
the line (immediately following the class symbol "I") will be a
single alpha-numeric character that defines the type of gasket.
The definition of this character is completely consistent with
ANSI C111. However, in a Standard Field Bus clipboard, the
character must be provided and will be one of:
D = Push-on joint - dual rubber hardness
F = Flanged joint - full face gasket
M = Mechanical joint gasket
R = Flanged joint - ring gasket
S = Push-on joint - single rubber hardness
Z = modified but meets the performance requirements
All other characters - reserved for assignment by the Field
+ If the line called out for the gasket is longer than one
character, the second character will be the start of a material
description for the gasket. The description will start with its
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
420
own MD-Start symbol and end with its own MD-End symbol.
If there is only one character in the entire line called out, the
gasket material will, by default, be SBR (styrene-butadiene
rubber).
Materials that are liquid and are applied as a bead or other form to
one or both mating faces of a joint and act as a static seal are
also covered by this class of materials
The line call-out will consist only of the two-digit code number
that is assigned to the material by the SP-50 Standard. Either the
line being called out can be zero length or both digits must be
supplied. The following material names are provided:
"Antifreeze":
00 - 40% Calcium chloride solution (CaCl2)
01 - Ethyl alcohol, (C2H6O)
02 - Ethyl alcohol in ethylene glycol
03 - Ethylene glycol, (C2H6O2)
05 - 50% Ethylene glycol in water
06 - 57% Ethylene glycol in water
07 - 64% Ethylene glycol in water
08 - Glycerin (glycerol), (C3H8O3)
09 - Glycerin in water
Gases:
10 - Air
12 - Heated N2
13 - Helium
15 - Inert Gas
17 - Natural Gas
18 - Nitrogen
Liquid gaskets:
24 - Shellac type sealant ("liquid gasket") compounds
26 - Sealant ("liquid gasket") compound, not shellac,
PTFE, nor silicone).
27 - PTFE based sealant ("liquid gasket") compounds.
--```,``-`-`,,`,,`,`,,`---
28 - Silicone based sealant ("liquid gasket") compounds,
Mineral Oils:
30 - Benzene, (C6H6)
32 - Heavy virgin gas oil
33 - Kerosene
35 - Light virgin gas oil
36 - Mineral Oil
38 Toluene, (C6H5CH3)
39 - Virgin naphtha
Misc. Liquids:
43 - Mercury
45 Process Fluid (clean)
46 - Sodium/Potassium
47 - Syltherm 800
49 - Water
Silicone Fluids
52 - Dimethylsiloxane
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
421
Silicone fluid
56 - pour point approx. -85 deg. F.
--```,``-`-`,,`,,`,`,,`---
Asbestos:
00 - Actinolite asbestos
02 - Amosite asbestos
03 - Asbestos (generic)
04 - Chrysotile asbestos
06 - Crocidolite asbestos
08 - Tremolite asbestos
Carbon:
10 - Activated charcoal
11 - Carbon and graphite fiber (generic) (used for fiber-
reinforced materials) (defined to match the
symbol "C" in Table 2, ASTM D 4000-89) The same
symbol will be used for carbon yarn packing.
12 - Diamond
13 - Graphite (pure)
14 - Graphite (with binder - flexible)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Temporary:
20 - Temp_Mtl0 | see elsewhere in the clipboard for a
21 - Temp_Mtl1 |-- definition of this material (note that a
22 - Temp_Mtl2 | "Temp_Mtlx" material can be defined by
23 - Temp_Mtl3 | other part/material specifications).
33 - Cellulose
34 - Cotton
36 - Felt (any of wool, fur, or hair)
37 - Leather
39 - Wood
Misc.:
42 - Asphalt
46 - Combinations of reinforcements and fillers (generic) (used
for reinforced materials) (defined to match the symbol
"R" in Table 2, ASTM D 4000-89)
50 - Petroleum based Grease
54 - Lithium base white grease
56 - Lubricated (used for filled/reinforced materials) (defined
to match the symbol "L" in Table 2, ASTM D 4000-89)
58 - Manufacturer Proprietary
60 - Mica
62 - Mineral reinforcement (generic) (used for reinforced
materials) (defined to match the symbol "M" in
Table 2, ASTM D 4000-89)
64 - Molybdenum Disulfide
68 - Petroleum Wax (Petrolatum)
72 - Stem packing "plastic"
90-99 - Manufacturer specific.
All other characters - reserved.
The call-out for this class will be a null string. The entire
material description will consist of the MD-Start symbol, the
letters "ZN", and the MD-End symbol.
AP - Plastic Materials
AP - The standard "Standard Classification System for Specifying Plastic
Materials" (ASTM D-4000) (Current version - Nov. 1989)
+ This name class WILL NOT be used for non-plastic materials nor
blends of elastomers that contain one or more non-plastic
components or more than one generic family (use class "R").
+ The "line call-out" specified in ASTM D-4000 will be obeyed
exactly except that the "ASTM D 4000" at the beginning of the
line will NOT be included.
+ The line being called out must present all of its components in
order but it may terminate at any location including the
beginning (thus generating the simple "plastic" description).
However, the line must not terminate within the generic family
name.
+ Note that this called out line may start with either a digit
followed by at least two alpha characters or it may start with at
least two alpha characters.
+ It is possible that the third or subsequent character in the
generic family name (the fourth or subsequent character in the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
call-out if the line starts with a digit) may be a "+". (See
abbreviation for a polyamide blend in ASTM D-1600.)
The abbreviations given in API 601 for the materials for the
winding specifically WILL NOT be used in the SP-50 version of the
call-out. The following table gives the conversion between the
1988 list of winding materials and the call-out for the
National/Class "AU" system:
Type 304 stainless steel S30400
Type 316 stainless steel S31600
Type 347 stainless steel S34700
Type 321 stainless steel S32100
Monel N04YYY
Nickel N0YYYY
Titanium R5YYYY
Alloy 20 N08020
Carbon Steel K0YYYY
Hastelloy B N10001
Hastelloy C N10002
Inconel N06YYY
If there are less than three characters in the entire line being
called out, the winding material will, by default, be S30400
(18Cr-8Ni stainless steel, AISI Type 304).
+ If the line called out for the gasket continues past the first
material description, the next character will be the start of a
standard material description for the filler. A binder will be
implied as appropriate. The description will start with its own
MD-Start symbol and end with its own MD-End symbol.
The abbreviations given in API 601 for the materials for the
filler specifically WILL NOT be used in the SP-50 version of
the call-out. The following table gives the conversion between
the 1988 list of filler materials and the SP-50 material
descriptions (the call-out plus the National/Class code but not
including the required MD-Start and MD-End symbols):
Chrysotile asbestos ZM04
Blue African asbestos ZM06
Polytetrafluoroethylene APPTFE
Ceramic ZCW
Flexible graphite ZM14
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
425
+ If the line being called out for the gasket continues past the
third material description, the next character will be the start
of a standard material description for the centering ring. The
description will start with its own MD-Start symbol and end with
its own MD-End symbol.
+ The Field Bus Standard line call-out for this class of materials
must be at least one character long but can optionally be
extended to include two characters giving concise information and
two standard material descriptions.
- The first character of the call-out will be a single
character that indicates one of the following types of
material:
B - Platinum-30% Rhodium/Platinum-6% Rhodium (type B)
C - Tungsten-5% Rhenium/Tungsten-26% Rhenium (type C)
D - Tungsten-3% Rhenium/Tungsten-25% Rhenium (type D)
E - Chromel/Constantan (type E)
G - Tungsten/Tungsten-26% Rhenium (type G)
I - Nickel-10% Chromium (Tophel II)/Nickel-2.5%
Silicon (Nial II) (note: closely models type K)
J - Iron/Constantan (type J)
K - Chromel/Alumel (type K)
L - Platinel 5355/Platinel 7674 (type L)
Note: Platinel is a trademark of the Engelhard
Industries, Inc.
M - Nickel-18% Molybdenum/Nickel-1% Molybdenum
N - Nicrosil/Nisil (type N)
Nickel-14.2% Chromium/Nickel-4.4% Silicon-0.1%
Magnesium
O - Thermistor
P - Chromel/Gold-0.07% Iron
Q - Platinum-40% Rhodium/Platinum-20% Rhodium
(Land-Jewell)
R - Platinum-13% Rhodium/Platinum (type R)
S - Platinum-10% Rhodium/Platinum (type S)
T - Copper/Constantan (type T)
U - Platinum-20% Rhodium/Platinum-5% Rhodium
V - Platinum-13% Rhodium/Platinum-1% Rhodium
Y - Platinum RTD, 50 Ohms
Z - Platinum RTD, 100 Ohms
0 - Platinum RTD, 200 Ohms
1 - Platinum RTD, 500 Ohms
2 - Nickel RTD, 10 Ohms
3 - Nickel RTD, 50 Ohms
4 - Nickel RTD, 100 Ohms
5 - Nickel/Iron, 2000 Ohms
6 - Nickel/Iron, 10000 Ohms
7 - Copper RTD, 10 Ohms
8 - Copper RTD, 25 Ohms
9 - Copper RTD, 100 ohms
W & X - Manufacturer specific.
+ If the called out line for the material description is longer
than one character, the next character may be a single letter
+ The Field Bus Standard line call-out for this class of materials
will start with the 6 character Unified Numbering System (UNS)
number. This number can not be truncated.
+ Immediately following the UNS number, a standard material
description can optionally be appended. Such an appended
description must be self-defining. An example of the application
of this option would be the addition of a class "Y" description
to indicate surface treating of the metal.
The UNS uses very specific notation for metals and alloys and does
not always represent a clean hierarchical structure. Therefore, the
UNS will be extended in the SP-50 clipboards by the following
conventions and definitions:
+ Where there is a hierarchical structure, digits of the name
structures may be substituted with the capital letter "X".
Higher level systems will recognize the "X" as a "wild-card"
that can be considered to be any digit.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
427
+ This class shall be used for all stem and shaft sealing materials
except O-Rings.
+ This class shall not be used for any material other than stem or
shaft sealing.
+ The description of a packing system is based on the following
structure of the necessary information:
- four single characters of concise data.
- up to six material identifiers.
+ If a valve is shown as having a bellows seal and a stem packing
assembly, it will be understood that the stem packing assembly
is the secondary seal.
+ The Field Bus Standard line call-out for this class of materials
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
is as follows:
- The first character of the call-out will indicate the type
of packing box or seal (the line being called out must be at
least one character long):
S - Screwed packing box
B - Plain bolted box, packing follower, packing flange
L - As in B plus lantern ring and lubricator
I - As in L plus isolating valve
F - As in B plus freeze-seal
M - Mechanical Seal
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
429
--```,``-`-`,,`,,`,`,,`---
will be the start of a standard material description for the
treating material/lubricant in the packing. If the third
character of the line is the digit 3 (solid cover), the
material description will identify the cover material. The
description will start with its own MD-Start symbol and end
with its own MD-End symbol.
- If the line being called out does not terminate after the
second material description, the next character of the line
will be the start of a standard material description for the
binder in the packing. The description will start with its
own MD-Start symbol and end with its own MD-End symbol.
- If the line being called out does not terminate after the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
+ The Field Bus Standard line call-out for this class will consist
of an alpha character followed by any number of digits.
+ The first character will be an alpha character indicating the
following:
D - the DC power drawn by the field device from its own
power source - in watts.
M - the milliwatts of power drawn from Field Bus
P - the milliwatts of power supplied to Field Bus
The Field Bus Standard line call-out for this class will consist of
one alpha character followed, optionally, by one integer of any
length. The first character will be a character indicating the
following:
A - atmospheric to 100 inches water column
B - atmospheric to 15 psig
C - atmospheric to 25 psig
D - atmospheric to 125 psig
E - full vacuum to 100 inches water column gauge
F - full vacuum to 15 psig
G - full vacuum to 25 psig
H - full vacuum to 125 psig
--```,``-`-`,,`,,`,`,,`---
I - full vacuum to 150 psig
J - full vacuum to 250 psig
K - full vacuum to 300 psig
L - full vacuum to 400 psig
M - full vacuum to 600 psig
N - full vacuum to 800 psig
O - full vacuum to 900 psig
P - full vacuum to 960 psig
Q - full vacuum to 1500 psig
R - full vacuum to 2000 psig
S - full vacuum to 2500 psig
T - full vacuum to 2900 psig
U - full vacuum to 3000 psig
V - full vacuum to 5000 psig
W - full vacuum to 10000 psig
X - reserved
Y - maximum vacuum follows (in units of inches of Hg.)
Z - maximum pressure follows (in units of psig)
The Field Bus Standard line call-out for this class will consist of
two alpha-numeric characters. It can not be truncated. The first
character will be a digit indicating the following:
0 - Alpha letter applies to the material itself (hardening,
coloring constituents, material color)
1 - Alpha letter applies to an anodizing treatment or a
surface layer of metal as in electroplating,
metallizing, sherardizing, etc.
2 - Alpha letter applies to the first paint coat, applied
cold, air dried
3 - Alpha letter applies to the build paint coats, applied
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
431
Note 1:
A description using this second character may optionally
follow the second character with a standard material
description of the coating material (or, for coal tar, the
plastic portion of the coating). The description will start
with its own MD-Start symbol and end with its own MD-End
symbol.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
432
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
433
TABLE 1
Several important, general terms used to define the materials in this class
will be defined. Those definitions will be followed by a larger set of
definitions of more specific terms.
GENERAL DEFINITIONS:
The SP-50 Field Bus Standard will not be concerned with the first
and last classes. Note that the class "whitewares" includes
chemical and electrical porcelain and products with good mechanical
and thermal properties.
--```,``-`-`,,`,,`,`,,`---
an article.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
DETAIL DEFINITIONS:
See "Cermet".
Ceramic Whiteware - a fired ware consisting of a glazed or unglazed ceramic
body which is commonly white and of fine texture. This term
designates such product classifications as tile, chine, porcelain,
semivitrous ware and earthenware (ASTM C 242-90). Called
"whiteware" in Field Bus.
Clay - a natural mineral aggregate, consisting essentially of hydrous
aluminum silicates; it is plastic when sufficiently wetted, regid
when dried en masse, and vitrified when fired to a sufficiently
high temperature (ASTM C 242-90).
Copper enamel - a porcelain enamel specifically designed for application to
copper (ASTM C 286-83a).
Cordierite Porcelain - any vitreous ceramic whiteware in which cordierite
(2MgO.2Al2O3.5SiO2) is the essential crystalline phase (ASTM
C 242-90).
Cordierite Whiteware - any ceramic whiteware in which cordierite
--```,``-`-`,,`,,`,`,,`---
(2MgO.2Al2O3.5SiO2) is the essential crystalline phase (ASTM
C 242-90).
Corundum - a naturally occurring hexagonal mineral of the composition
Al2O3 which can also be prepared synthetically to high purity.
It is noted for its hardness and refractoriness. It forms the gem
varieties ruby and sapphire with appropriate impurities (chromium
produces the read of ruby, iron and titanium produce the blue of
sapphire (Encyclopaedia Britannica)). It may contain associated
minerals such as diaspore or various silicates, or both (ASTM C
242-90).
Decarburized enameling steel - a special type of steel sheet of extremely
low carbon content, suitable for porcelain enamel cover coat
application direct to the metal (UNS K00100) (ASTM C 286-83a).
Dry process - the method of preparation of a ceramic body wherein the
constituents are blended dry, following which liquid may be added
as required for subsequent processing (ASTM C 242-90).
Dry process enameling - a procelain enameling process in which the metal
article is heated to a temperature above the maturing temperature
of the coating (usually 1600 to 1750 deg. F, (approximately 870 to
955 deg. C)), the coating materials applied to the hot metal as a
dry powder, and fired (ASTM C 286-83a).
Fluorite (fluorspar) (CaF2) - a common mineral and is the principal
fluorine mineral. It has a low melting point and is used in
metallurgy as a flux. Most varieties fluoresce strongly under
ultraviolet light (Encyclopaedia Britannica).
Forsterite Porcelain - any vitreous ceramic whiteware in which forsterite
(2MgO.SiO2) is the essential crystalline phase (ASTM C 242-90).
Forsterite Whiteware - any ceramic whiteware in which forsterite
(2MgO.SiO2) is the essential crystalline phase (ASTM C 242-90).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
In Field Bus, "Glass or Glass-ceramic coated or lined" (general
type "G" in National/Class "ZC") will refer to an article with a
coating material that is not crystallized (glass) or is
specifically a "glass-ceramic" material. "Porcelain enamel"
(general types "D", "E", and "F" in National/Class "ZC") will refer
to an article with a coating material that is crystallized and not
a glass-ceramic. See definition of "Glass-ceramic)
Glaze - a ceramic coating matured to the glassy state on a formed ceramic
article, or the material or mixture from which the coating is made
(ASTM C 242-90).
Ground coat - (1) a porcelain enamel applied directly to the base metal to
function as an intermediate layer between the metal and the cover
coat.
(2) - on sheet steel, a porcelain enamel coating containing
adherence-promoting agents which may be used either as an
intermediate layer between the metal and the cover coat or as a
single coat over the base metal. (ASTM C 286-83a)
--```,``-`-`,,`,,`,`,,`---
Impervious - that degree of vitrification evidenced visually by complete
resistance to dye penetration. The term impervious generally
signifies zero absorption, except for floor and wall tile which are
considered "impervious" up to 0.5% water absorption (ASTM C 242-90)
Magnesia - magnesium oxide (MgO), calcined or hard burned as periclase.
Loosely applied also to the hydrate Mg(OH)2. Made synthetically
from seawater or brine, or (impure) from magnesite. Used in basic
refractories, as a filler in rubber, and elsewhere (ASTM C 242-90).
Maturing temperature - the temperature at which porcelain enamel must be
held for a selected time to achieve the desired properties (ASTM C
286-83a).
Mullite Porcelain - any vitreous ceramic whiteware in which mullite
(3Al2O3.2SiO2) is the essential crystalline phase (ASTM C
242-90). One uncommon source mineral, dumortierite, is especially
desirable for spark plugs and laboratory ware. Other minerals that
convert to mullite when heated are topaz and kyanite (Encyclopaedia
Britannica).
Mullite Whiteware - any ceramic whiteware in which mullite
(3Al2O3.2SiO2) is the essential crystalline phase (ASTM C 242-90).
Powder Metallurgy - the fabrication of useful items from a metal powder or a
mixture of metal powders, followed by sintering (Encyclopaedia
Britannica).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
the general types of ceramics and porcelains. 2) Solid state
powder metallurgy sintering: the sintering temperature is such
that there is no molten metal present during the major portion of
the sintering period (Encyclopaedia Britannica).
TABLE 2
Several important terms used to define some of the materials in this class
will be defined.
GENERAL DEFINITION:
DETAIL DEFINITIONS:
--```,``-`-`,,`,,`,`,,`---
(Encyclopaedia Britannica).
Carbon - essentially pure amorphous elemental carbon; includes coke,
lampblack, carbon black, gas black, gas carbon, retort carbon,
soot, and charcoal (Encyclopaedia Britannica).
Chrysotile asbestos (Canadian asbestos) -fibrous form of the mineral
serpentine (Mg3Si2O5(OH)4. The source of the bulk of
commercial asbestos. Individual fibers are white, but the color of
the aggregate in the veins varies from green to greeenish-yellow to
amber (Encyclopaedia Britannica).
Crocidolite Asbestos (blue African) - (Na2(Fe(2+)3Fe(3+)2)-
Si8O22(OH)2). Dull blue Higher tensile strength than
chrysotile but is less resistant to heat: fuses to a black glass
at a relatively low temperature. Most of the world's supply from
South Africa (Encyclopaedia Britannica).
Diamond - a mineral consisting of the element carbon, crystallizing in the
cubic system (Encyclopaedia Britannica).
Graphite - a mineral consisting of the element carbon, crystallizing in the
hexagonal system. Graphite is manufactured from petroleum coke.
(Encyclopaedia Britannica).
Tremolite-actinolite asbestos - the type of asbestos referred to under the
names "amphibole asbestos", "hornblende asbestos", or merely
"asbestos". The chemical composition of tremolite is
(Ca2Mg5Si8O22(OH)2). Iron may substitute in part for the
magnesium, and when it reaches 2%, the mineral is called
actinolite. Pure tremolite asbestos is white, actinolite is green
(Encyclopaedia Britannica).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
439
TABLE 3
Several important terms used to define the materials in this class will be
defined.
--```,``-`-`,,`,,`,`,,`---
Other terms defined here are used for a zinc coating applied using
other methods.
Induction Hardening - A process for the surface hardening of steel. The
surface of the article is rapidly heated to above the critical
temperature range by means of a high frequency induced current and,
after a period varying from a second to a few minutes, the article
is quenched. (Encyclopaedia Britannica).
Metal Sprayed - see "Metallized", the term used by Field Bus.
Metallic Sprayed - see "Metallized", the term used by Field Bus.
Metallized - an article that has a surface coating of overlapping scales of
a metal applied as a fine spray or cloud of metallic globules.
In Field Bus, the methods of generating the spray or cloud and the
method of propelling the globules to the article are not specified.
Nitriding - A process for the surface hardening of steel. The special alloy
steel acticle is heated in contact with ammonia at temperatures
below the transformation range for steels, usually between 950 deg.
F and 1050 deg. F., for periods of from 5 to 100 hours.
(Encyclopaedia Britannica).
Sherardized - a steel article that has a protective coating of intermetallic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
440
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SPECIAL DEFINITIONS
FUNDAMENTAL DESIGN BASIS
PARAMETER RANGE DEFINITIONS
Virtual Ranges
Protocol Selectors
Mode Restrictions
Secondary Ranges
DEFINED GROUPS
EXPLANATION OF Table 1
HELPFUL READER GUIDE
Table 1 - Parameter List - QUATRO-PRO Presentation (Guide)
- simplified text version.
- else see paper version.
BACKGROUND:
All parameters in the data base of a field device will appear to be accessed
over Field Bus using a "TAG.PARAMETER" format where "PARAMETER" is a 16 bit
unsigned integer. This Technical Report defines certain ranges of the parameter
numbers so that the lower layers of the Field Bus protocol (see the paper
"Application Support Interface"), the User Layer's write handling services, and
the Data Base Write Service (DBWS) (see the DBWS paper) can determine the
required handling of the parameters simply by the range of the parameter number.
Within each of the defined ranges, this Technical Report defines the parameters
needed by the Standard nodes and function blocks, leaving room in each range for
extensions.
--```,``-`-`,,`,,`,`,,`---
There are basically six absolute constraints on the design undertaken by this
paper. These constraints are given in the papers of the "Structure" section of
this Report. They are:
1) the Application Layer Interface will use the three high order bits of
the 16 bit parameter number field to define access restrictions for
each parameter. Those bits must be defined for each parameter (see
the paper "Application Support Services Interface", page 16)
2) Because the high order 3 bits are not transmitted by the Field Bus,
each parameter must have a parameter number that is unique within
the node or block and whose uniqueness is in the low 13 bits.
3) since the parameters for a physical node, a logical node, and a
function block collapse together if there is only one block in the
logical node and only one logical node in the physical node, the
parameters within the resulting collapsed entity must retain their
uniqueness (see the paper "Data Owner Structure - Logical Nodes",
page 2).
4) an agent that is to select an individual bit from a parameter's value
only has room in its configuration for the low order 10 bits of the
parameter's number; the high 6 bits are "virtual" and are defined to
The three access restriction definitions that have to be defined for each
parameter are:
1) can this parameter be directly/cyclically read or does it require
that reading be done via. a read handler?
2) can this parameter be directly written or does it require that
writing be done via. a write handler?
3) is this parameter read-only?
--```,``-`-`,,`,,`,`,,`---
its agent's type?
7) for function block parameters:
a) is the write accessibility of this parameter a function of
its agent's type?
b) does the function block have to be in O/S (actual) mode
before the parameter can be changed?
c) does the function block have to be in O/S or Man requested
mode with LO mode not set in the actual mode before the
parameter can be changed?
d) does the function block have to be in a mode of higher
priority than Auto before the parameter can be changed?
e) does the function block have to be in a mode of higher
priority than Cas before the parameter can be changed?
One should note that there are only 5 Standard logical node parameters, and
no Standard physical node parameters, that have status bytes.
SPECIAL DEFINITIONS:
Throughout this entire Technical Report, parameters have been given alpha-
numeric names. These names are intended to make the Technical Report easier to
understand compared to using parameter numbers. An actual implementation of this
Standard will only be concerned with the parameter number that is assigned to a
parameter and the defined meaning of that parameter. Its visible name is freely
determined by the higher level control system or by the human interface. The
implemented visible name will usually be in the language used at the User's site.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
443
Certain information in the data base of the field device will be entered by
the user, will be necessary for the correct operation of the device, and will be
changed infrequently. This data is called "static" data. The User Layer design
supports an operation in which a higher level device on Field Bus maintains a
copy of this data and can write it to the field device if that device should
loose its data or be replaced. In order to have anup-to-date copy of the data,
the higher level device must monitor the field devices for changes in the data
base. Field Bus supports this by providing "static data base revision numbers".
A single number would be associated with a portion of the data base in a field
device. Any time a change is made to that data set in the field device, the
revision number is incremented and an alert report is sent. The DBWS defines a
special procedure for handling these values. If the low order bit of the
revision number is set, the data base covered by the revision number is currently
being modified. If the revision number is not zero, the DBWS will require that
the number be incremented by itself rather than written by any other Field Bus
device. When the changes are completed, it will be incremented by a value that
indicates the total number of data changes that occurred since the previous
value.
There will be a static data base revision number in each tagged object (TO)
that covers all "static" data except the auto-format variables; their names are
PN_SDBRN, LN_SDBRN, and FB_SDBRN across the three types of tagged objects.
There will be a second data base revision number in each TO that covers all
of the auto-format variables in that TO except for auto-format variables
associated with hardware in the physical node. Their names will be PN_AFRN,
LN_AFRN, and FB_AFRN, again across the three types of TO's. The appropriate one
of these three parameters will be required if there are any Auto-format variables
in the individual TO other than ones associated with hardware. (Note that the
auto-format variables associated with the hardware in the physical node are
called I/O_AF and I/O_Type_AF.) Individual ones of these variables are also
labeled with a function block parameter and can be addressed from the associated
block. These variables, no matter how addressed, are NOT under the revision
numbers.
The requested mode and FAIL-SAFE will not be under a static data base
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
revision number but a change in either of them will cause an alert report
(function block or logical node alert, respectively) just as if it were. By
monitoring the alert reports and the revision numbers, a higher level device can
ensure that it has an up-to-date copy of all of the static data plus the
requested mode without excessive communication on the Field Bus.
Immediately above, and throughout this paper, parameters are labeled as being
stored in a specific type of memory. These references are used as convenient
labels but are not intended to require any particular type of implementation in
actual Field Bus devices. The only meaning of the "types" of memory is the
following:
Static specifically requires two separate but concurrent concepts.
First, the appropriate static data base revision number will
be incremented and an alert reported if the parameter is
changed (or simply an alert in the case of the two specified
parameters). Second, if the field device implements the
restart timers (see the paper "Field Device Start and
Restart", page 2) there must be some way to hold this
parameter through the stopped condition and to confirm its
validity upon restart.
The "remaining" 13 bits represent the "actual" parameter number. They must
provide a unique identification of a parameter since the high-order 3 bits will
not be transmitted as part of the TAG.PARAMETER variable identification.
The "remaining" 13 bits have been divided into essentially five sets. Bits 12
--```,``-`-`,,`,,`,`,,`---
and 11 are used to define four different parameter number decoding protocols.
Bits 10 and 9 are used to define the mode status required for writing for two of
the four protocols.
In the two protocols that use the mode restriction definitions in bits 10 and
9, bits 8 and 6 are sometimes used to add bit-specific definitions to the
parameters. Bits 1 and 0 are sometimes used to select members of a parameter
set. The remaining bits are used to identify specific instances of parameters.
In a TAG.PARAMETER label, the high three bits of the parameter field will be
reset. When configuration data that includes a field for a PARAMETER is written
over the Field Bus to Standard field devices, the information in bits 15-13 will
never be included. If the bits exist in the field, they will be reset.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
445
Virtual Ranges:
The separate (virtual) three bits of information essentially define
eight primary ranges of parameters consisting of all combinations of
the following:
1) any parameter with bit 15 set can not be directly/cyclically
read.
2) any parameter with bit 14 set can not be directly written.
3) any parameter with bit 13 set is read-only.
Layer of the data owner will change bit 14 to set. At the same time,
this paper will define the rules and the corresponding parameter bits 13
- 0 for indirect, restricted writing.
The three virtual bits have direct and simple configuration rules
in Standard function blocks:
- No function block agent can be configured with a pointer to a
parameter that can not be directly/cyclically read.
- No function block output agent can be configured with a pointer
to a parameter that is read-only OR can not be directly written.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Protocol Selectors:
Bit 12 will be used to disable the mode restriction definitions for
bits 10 and 9 that will be defined below. If Bit 12 is reset, bits 10
and 9 define the mode required before the block can be written. If Bit
12 is set, bits 10 and 9 are simply part of the consecutive number set
formed by the lower order bits.
The Application Layer design requires that the special case of all
bits set in the full parameter number be reserved. That special number
falls under the case of bits 12 and 11 both set. Therefore, the unique
parameter number with bits 12-0 all set must not be assigned to any
parameter.
There are 2 last groups that will be set aside in the "Bit 12 =
--```,``-`-`,,`,,`,`,,`---
Mode Restrictions:
When bit 12 is reset, the mode restrictions defined by bits 10 and
9 will apply. Note particularly that the mode restrictions plus the
states of bits 14 and 13 are taken to IMPLY whether the parameter is
under a data base revision number.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
447
Secondary Ranges:
There is no structure defined for bits 10-0 in variables whose
parameter numbers have bit 12 set. They are assigned in random order
but, again, those parameters can not be accessed bit-wise by agents. In
addition, there will, of course, be no generalized logic in the DBWS to
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
under this logic are therefore the only ones that are
accessible to such agents.
IF Bit 8 = set, then
This parameter is associated with a set of parameters that
has a status byte or a set of status bytes. (xxx00xx1)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
"Application Support Services Interface").
IF Bits 10 & 9 = 01B, then
This parameter can only be written IF
The actual block mode = O/S, OR
(The requested block mode = O/S AND the actual
block mode does not have LO set.) OR
The agent is type writeable, OR
The agent is type required writeable OR
[(The agent is NOT type "null" NOR type "immediate")
AND
The status = No-Com] OR
[The agent is type "immediate" AND
the agent is associated with an Output Word AND
the block is in one of the following mode
states:
The highest priority active mode bit set =
Man
OR
(Requested mode = Man AND the active mode
does not have LO nor IMan set)]
ELSE 'bits 10 & 9 <> 01B
Follow the mode rules given above.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
451
(0000101111)
DEFINED GROUPS:
The Application Support Service Interface has the ability to "group"
parameters in response to a suitable command from a higher level device. However,
it is clear that communication efficiency can be obtained by permanently defining
certain groups. Groups of parameters can be identified that will be read
frequently as part of the updating of the backup copy of the static data base.
By permanently defining these groups, the higher level device does not have to
command the grouping and the Field Device can employ a more efficient method of
implementation.
--```,``-`-`,,`,,`,`,,`---
It is assumed that the group parameters are simply a mapping of the already
existing data base items into one readable and writeable set.
The group variable "BACK_UP(0)" is defined for each type of tagged object.
All of the parameters in each set are static data base items that are freely
writeable. With one exception, the parameters are required in all Standard TO's.
The required parameters will be mapped into BACK_UP(0) in the order of their
parameter numbers, low parameter number first. The exception involves three
parameters (in a Physical node, 2 in logical nodes and function blocks) that are
part of one option - alert reporting. If the tagged object supports alert
reporting, the three parameters will be appended to the end of the list
(subordered in the order of their parameters numbers). If the three parameters
are in a list written to a TO that does not support the option, they will simply
be ignored. The exact parameters included will be identified in the next
section.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
452
node supports logical node variables, then it must support "BACK_UP(1)". Again,
the parameters will be identified in the next section and will be entered in
BACK_UP(1) in the order of their parameter numbers, low number first.
EXPLANATION OF TABLE 1
The attached Table 1 lists all of the parameters that have been assigned
parameter numbers in the physical and logical nodes. In addition, it contains
all of the function block parameters whose existence is independent of the
algorithm number.
The body of the table is broken into three sections: PHYSICAL NODES, LOGICAL
NODES, AND FUNCTION BLOCKS. Note that the low 13 bits in the actual parameter
numbers must be unique across ALL THREE sections because of the collapsing of the
data bases.
The first column gives the name of the parameter as used in the other papers
of this report. This name is often NOT unique across sections. If the name is
followed by the notation "(i)", then that parameter will use an index. If the
maximum possible value of the index is known (and is reasonable), the maximum
value will be shown within the parentheses instead of the "i".
The second and third columns give an exact paper and page reference to the
definition of the parameter.
The fourth column gives the data type of the variable using the following
names:
Visible a visible string (refer to the paper "Human I/F
Considerations", page 2)
U-Int. an unsigned integer.
S-Int. a signed integer.
Float a floating point number.
Bit Str. a bit string.
Discrete an 8 bit value whose low order bit indicates Set
(1)/Reset (0).
Auto-F an Auto-format parameter.
Pack U-I a complex data type consisting of packed unsigned
integers (may not be on byte boundaries and
may include some discrete bit assignments).
Complex a complex data type containing a variety of data types.
? the data type depends on other information - see the
defining reference.
--```,``-`-`,,`,,`,`,,`---
Refer to the paper "References" for the definition of these data types.
The fifth column gives the size of the parameter's value in bytes. In some
cases, a parameter number has been assigned to a parameter that is otherwise
undefined; in those cases, the size of the parameter may be shown as "?" because
the manufacturer must define the size. In the case of auto-format parameters,
the parameter size is not defined but the variable will self-define its size.
Therefore, that data type is always shown with the letter "S" under the size
column.
The sixth column gives the memory "type", using the definitions given above.
When the memory is given as "ROM/Dyn.", it is possible for either type of memory
to satisfy all requirements of the Standard depending on the Field Device design.
When the memory is given as "ROM/Stat", it is recognizing the option of having
part of the parameter in ROM and part in Static. See the defining reference.
Some of the entries for "Static" in this column are followed by a "*". This
notation identifies the specific parameters that are grouped into the parameter
BACK_UP0. The entry for BACK_UP0 also has the "*". The entries under Logical
Nodes that have two "*"'s after "Static" are the specific parameters that are
grouped into the parameter BACK_UP1. The entry for BACK_UP1 also has the two
"*"'s.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
453
The seventh column indicates which parameters are "required" and which are
"optional" as defined in the reference. The entries in this column require
"expansion" due to the lack of space in the Table. Their meanings are:
Req. - Required
Opt. - Optional. For Standard tagged objects, the presence of the
option will be indicated in the "Option Bit Strings".
Note: "Optional" is used here in the total device sense.
Many parameters shown here as "Optional" are referred
to as required in the reference paper. In all such
cases, the section of the reference paper has
previously focused on an optional function. Once that
function is supported, a whole set of parameters become
"required" in the context of the reference.
Note: the existence of every "Optional" parameter is
indicated, directly or indirectly, by a time critical
option bit string bit. If there is no directly related
bit defined, then the "Optional" parameter is one
defined as "required" once some functional option is
shown as supported by one of the defined option bits.
R-I/O - Required if the physical node has any I/O hardware.
R-FB1 - Required if the physical node has a second Field Bus
Interface (redundant or independent).
RxUD - A logical node variable that is required expect for
"Undefined" type logical nodes.
R-C&T - A logical node variable that is required in all Cycle/Phase
and Timed Standard type logical nodes.
R-CP - A logical node variable that is required in all Cycle/Phase
type logical nodes.
R-LNV - Required if the logical node supports logical node
variables.
R-Off - Required if the logical node supports off-logical node
agents.
The tenth column indicates if the parameter is under a data base revision
number. If it is, then a "Yes" is entered in this column; if not, a "No" is
entered; a "-" is entered if the variable is read-only. Two standard parameters,
REQ_MODE and FAIL_SAFE, are not under any revision numbers but are expected to be
handled as special cases by higher level devices. Therefore, when either of
these parameters is written, a special alert may be required. In these cases,
this column shows the entry "Part", short for partial. See the paper "Data Base
Write Service" for the exact handling of these two variables.
The eleventh column indicates the write access control that applies to the
parameter. It describes not only block mode constraints, but also includes
consideration of agent type, hardware status, and other special considerations.
In function blocks, this column will be dominated by mode considerations. It can
have one of the following indications:
"-" - the variable is read-only
"Free" - the variable is freely writeable
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
454
--```,``-`-`,,`,,`,`,,`---
directly written but the parameter (z+2) never is and the agent itself will
restrict the other three parameters if the agent type does not allow direct
writes.
The twelfth column gives the high-order bits in the parameter number that is
assigned to the parameter IN BINARY NOTATION. Bits 15-13 are shown separated
from the lower order bits and bits 12 & 11 are also separated from their lower
order bits, in both cases to improve readability. Because of the definitions of
the bits given above, the length of these bit strings vary.
The thirteenth column gives the sequence number, in hex, which normally forms
the low order portion of the parameter number. However, there are three special
cases. For the parameters that use the hardware type in their parameter numbers,
the hardware type code is indicated by "HT". An entry of "SP" for special is
used for the sequence number of I/O_AF (i) because its index is compound. For
all auto-format variables, the least significant bit selects a partial or full
access of the variable, it is shown as an "x" to the right of the sequence
number. Finally, for parameters associated with a status byte, the low two bits
are used to distinguish between the set of four parameters. They will be shown
by two "x"'s to the right of the sequence number.
The next to the last column defines the "default" value that is to be used
for all of the static parameters and for some of the dynamic parameters. The
default value will be entered into the value of the parameter whenever:
1) the device starts up with an invalid data base (static or dynamic, as
appropriate).
2) the TO_TYPE is changed.
In case 2, the requested, not the default, value for TO_TYPE is obviously used
and the TAG_DESC is not to be altered. In general, the default values are
designed to set all node/algorithm options to the do-nothing value (usually
zero).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
configured, then CX can default to n.
The entries for the logical node variables in the Table require explanation.
The first two logical node variables can be either analog or discrete. The other
three can only be discrete. There are 7 parameters defined for LN_VAR0 in the
table. For LN_VAR1 there is simply a note that the same 7 parameters are
repeated using the format for the name as indicated. In both of these cases, the
value can be either analog or discrete. For LN_VAR2, there is a new (specific)
definition of the data type. The other 6 parameters simply repeat. Then for
LN_VAR3 and LN_VAR4, the full 7 parameter set from LN_VAR2 repeats.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
457
PHYSICAL NODES:
TAG Hardware 2 Visible 16 EEPROM 011 10 16 char. visible name for the physical node.
Dflt = set by Appl. Layer
ADDRESS Hardware 2 U-Int. 2 Static 011 10 Application Layer assigned Field Bus
address.
Dflt = set by Appl. Layer.
TAG_DESC Hardware 2 Visible 64 Static* 010 11 32 Character descriptor of the tag.
Dflt = <us> + zero's
MFG_NAME Hardware 21 Visible 32 ROM 011 10 Manufacturers name (single byte per char.).
MODEL_NUMBER Hardware 21 Visible 32 ROM 011 10 Physical device's model number
(1 byte/char).
SERIAL_NUMBER Hardware 21 U-Int. 4 ROM 011 10 Physical device's serial number.
FIELD_BUS_REV Hardware 22 U-Int. 2 ROM 011 10 Revision number of Field Bus standard used.
DEVICE_REV Hardware 22 U-Int. 2 ROM 011 10 Revision number of the device's program.
FB_POWER Hardware 22 Float 4 ROM 011 10 Power drawn from Field Bus - milliwatts.
FB_CAPAC Hardware 22 Float 4 ROM 011 10 Device capacitance on Field Bus - mf.
FB_INDUCT Hardware 22 Float 4 ROM 011 10 Device inductance on Field Bus - mH.
ASK Alert 2 U-Int. 1 Static* 010 11 Alarm Sort Key for Physical Node.
Dflt = 0
BASK Alert 2 U-Int. 2 Static* 010 11 Batch Alarm Sort Key for Physical Node.
Dflt = 0
TO_TYPE Log. Nodes 3 U-Int. 1 Static 010 01 001xx Actual type of the Physical Node (xx<>11B).
Dflt = Actual or 0H
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
TO_MFG_SUBTYPE Log. Nodes 3 U-Int. 1 ROM/Dyn. 011 10 Manufacturer-assigned display type for PN.
TO_USER_SUBTYPE Log. Nodes 3 U-Int. 2 Static* 010 11 User-assigned (display) type for PN.
Dflt = TO_MFG_SUBTYPE
SFAIL-SAFE Start-Rest 3 Bit Str. 1 Static 010 00 00011 "System" Fail-safe option.
Dflt = Bit1 = Bit 0
RESTART Start-Rest 3 Discrete 1 Physical 000 01 00111 Writeable "start" button.
Dflt. = 0
NODE_TIME Hardware 14 U-Int. 6 Dynamic 011 10 48 Bit, 1/32 of millisec.
time since start-up.
Dflt. = 0
OFFSET_DB Hardware 15 U-Int. 2 Static 010 11 Deadband on bias adjustment alert report .
Dflt = 1B
ALARM_TIME Hardware 18 U-Int. 6 Static 010 11 48 Bit, 1/32 of millisec. time to "set
alarm".
Dflt = 0
ALARM Hardware 18 Bit Str. 1 Dynamic 010 00 00011 Bit 0- Alarm clock rang / Bit 1- clock
lost.
TIME_CRIT0 Hardware 20 Bit Str. 2 ROM 011 10 Time critical options bit string #0.
TIME_CRIT1 Hardware 23 Bit Str. ? ROM 011 10 Time critical options bit string #1.
TIME_CRIT2 Hardware 23 Bit Str. ? ROM 011 10 Time critical options bit string #2.
MIN_TC0 Hardware 22 Bit Str. 2 Static* 010 11 User set "minimum" TIME_CRIT0.
Dflt = 0
N_TIME_CRIT0 Hardware 23 Bit Str. ? ROM 011 10 Non-time critical option bit string #0.
N_TIME_CRIT1 Hardware 23 Bit Str. ? ROM 011 10 Non-time critical option bit string #1.
N_TIME_CRIT2 Hardware 23 Bit Str. ? ROM 011 10 Non-time critical option bit string #2.
CLEAR_OUT Hardware 12 Discrete 1 Dynamic 010 00 00011 Discrete to force unused outputs off.
Dflt. = 0
AX Hardware 14 S-Int. 1 ROM/Dyn. 011 10 Physical node self-diagnostic cycle time.
EXPOSE Alert 10 U-Int. 4 Static* 010 11 Min. time in Application Layer Alert
Buffer. Dflt = 5 min.
ALERT_UNACK_OPT Alert 6 Bit Str. 4 Static* 010 11 First 32 alert codes - unack. option bits.
Dflt = 0
ALERT_UNACK_OPT1Alert 3 Bit Str. 4 Static 010 11 Second 32 alert codes - unack. option bits.
Dflt = 0
ALERT_PRIORITY Alert 6 Bit Str. 16 Static* 010 11 First 32 alert codes - priorities.
Dflt = All 10H
ALERT_PRIORITY1 Alert 3 Bit Str. 16 Static 010 11 Second 32 alert codes - priorities.
Dflt = All 10H
ALERT_SET0 Alert 7 Bit Str. 2 Dynamic 011 00 First 16 alert codes - current state.
Dflt. = 0
ALERT_SET1 Alert 7 Bit Str. 2 Dynamic 011 00 Second 16 alert codes - current state.
Dflt. = 0
ALERT_SET2 Alert 3 Bit Str. 2 Dynamic 011 00 Third 16 alert codes - current state.
Dflt. = 0
ALERT_SET3 Alert 3 Bit Str. 2 Dynamic 011 00 Fourth 16 alert codes - current state.
Dflt. = 0
ALERT_UNACK0 Alert 7 Bit Str. 2 Dynamic 000 00 000 First 16 alert codes - unack. state.
Dflt. = 0
ALERT_UNACK1 Alert 7 Bit Str. 2 Dynamic 000 00 000 Second 16 alert codes - unack. state.
Dflt. = 0
ALERT_UNACK2 Alert 3 Bit Str. 2 Dynamic 000 00 000 Third 16 alert codes - unack. state.
Dflt. = 0
ALERT_UNACK3 Alert 3 Bit Str. 2 Dynamic 000 00 000 Fourth 16 alert codes - unack. state.
Dflt. = 0
ALERT_UNRPT0 Alert 7 Bit Str. 2 Dynamic 011 00 First 16 alert codes - unreported state.
Dflt. = 0
--```,``-`-`,,`,,`,`,,`---
SP-50 User Layer Technical Report Array of Basic Parameters
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
No reproduction or networking permitted without license from IHS
Reproduced by IHS under license with ISA
Copyright The Instrumentation, Systems, and Automation Society
459
--```,``-`-`,,`,,`,`,,`---
ALERT_UNRPT1 Alert 7 Bit Str. 2 Dynamic 011 00 Second 16 alert codes - unreported state.
Dflt. = 0
ALERT_UNRPT2 Alert 3 Bit Str. 2 Dynamic 011 00 Third 16 alert codes - unreported state.
Dflt. = 0
ALERT_UNRPT3 Alert 3 Bit Str. 2 Dynamic 011 00 Fourth 16 alert codes - unreported state.
Dflt. = 0
ALERT_DESC0 Alert 8 Visible 64 Static 010 11 Descriptor for alert #29.
Dflt = Mfg. Default
Reserve 1-18 Alert 8 Visible 64 Static 010 11 Reserved for Descriptors for alerts
#30 - #47. Dflt = Mfg. Default
REQ_TIME0 Start-Rest 2 U-Int. 2 Static 010 11 Requested "hot" restart timer setting.
Dflt = 4 sec.
REQ_TIME1 Start-Rest 2 U-Int. 2 Static 010 11 Requested "warm" restart timer setting.
Dflt = 6 min.
MAX_CLIP_P H I/F Con. 14 Bit Str. 2 ROM 011 10 Maximum number of primary clipboard pages.
CUR_CLIP_P H I/F Con. 14 U-Int. 1 Static 011 10 Current last page of primary clipboard.
Dflt = high 8 of MAX_CLIP_P
CLIP_REV_P H I/F Con. 15 U-Int. 2 Static 010 10 00001 6Primary clipboard revision number.
Dflt = 0
CPAGE_P (255) H I/F Con. 14 Visible 119 ROM/Stat 011 11 Individual primary clipboard pages.
MAX_CLIP_A H I/F Con. 15 Bit Str. 2 ROM 011 10 Maximum number of alternate clipboard pages.
CUR_CLIP_A H I/F Con. 15 U-Int. 1 Static 011 10 Current last page of alternate clipboard.
Dflt = high 8 of MAX_CLIP_A
Not for Resale
CLIP_REV_A H I/F Con. 15 U-Int. 2 Static 010 10 00001 7Alternate clipboard revision number.
Dflt = 0
CPAGE_A (255) H I/F Con. 15 Visible 128 ROM/Stat 011 11 Individual alternate clipboard pages.
COUNT_TIME0 Hardware 23 U-Int. 6 Dynamic 010 00 00011 48 Bit, 1/32 mill.time since zero counters.
Dflt. = 0
RESYNC_COUNT Log. Node 28 U-Int. 2 Dynamic 011 10 Number of resync. by all logical nodes.
Dflt. = 0
TOT_MESSAGES0 Hardware 23 U-Int. 4 Dynamic 011 10 Total messages (FB0).
Dflt. = 0
APPL_FAIL0 Hardware 23 U-Int. 2 Dynamic 011 10 Application Layer message failures (FB0).
Dflt. = 0
FRAMING_ERROR0 Hardware 24 U-Int. 2 Dynamic 011 10 Count of framing errors (FB0).
Dflt. = 0
CRC_ERROR0 Hardware 24 U-Int. 2 Dynamic 011 10 Count of CRC errors (FB0).
Dflt. = 0
PARAM_NOT0 Hardware 24 U-Int. 2 Dynamic 011 10 Count of times param. not supported (FB0).
Dflt. = 0
WRITE_BUF_FUL0 Hardware 24 U-Int. 2 Dynamic 011 10 Count of times write buffer full (FB0).
Dflt. = 0
READ_HAND_BSY0 Hardware 24 U-Int. 2 Dynamic 011 10 Count of times read handler busy (FB0).
Dflt. = 0
ALERT_BUF_FUL0 Hardware 24 U-Int. 2 Dynamic 011 10 Count of times alert buffer full (FB0).
Dflt. = 0
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
No reproduction or networking permitted without license from IHS
Reproduced by IHS under license with ISA
Copyright The Instrumentation, Systems, and Automation Society
460
CYCLE_OVERRUN0 Hardware 24 U-Int. 2 Dynamic 011 10 Times write buffer not empty in cycle.
Dflt. = 0
ERROR_RATE0 Hardware 24 Float 4 Dynamic 011 10 Filtered framing + CRC error rate (FB0).
Dflt. = 0
FILTER0 Hardware 25 U-Int. 1 Static* 010 11 Filter factor for ERROR_RATE (FB0).
Dflt = 255
ERROR_RATE_LIM0 Hardware 25 Float 4 Static* 010 11 Alarm limit on ERROR_RATE (FB0).
Dflt = 0.01
COUNT_TIME1 Hardware 25 U-Int. 6 Dynamic 010 00 00011 48 Bit, 1/32 mill.time since zero counters.
Dflt. = 0
TOT_MESSAGES1 Hardware 25 U-Int. 4 Dynamic 011 10 Total messages (FB1).
Dflt. = 0
APPL_FAIL1 Hardware 25 U-Int. 2 Dynamic 011 10 Application Layer message failures (FB1).
Dflt. = 0
FRAMING_ERROR1 Hardware 25 U-Int. 2 Dynamic 011 10 Count of framing errors (FB1).
Dflt. = 0
CRC_ERROR1 Hardware 25 U-Int. 2 Dynamic 011 10 Count of CRC errors (FB1). Dflt. = 0
PARAM_NOT1 Hardware 25 U-Int. 2 Dynamic 011 10 Count of times param. not supported (FB1).
Dflt. = 0
WRITE_BUF_FUL1 Hardware 25 U-Int. 2 Dynamic 011 10 Count of times write buffer full (FB1).
Dflt. = 0
READ_HAND_BSY1 Hardware 25 U-Int. 2 Dynamic 011 10 Count of times read handler busy (FB1).
Dflt. = 0
ALERT_BUF_FUL1 Hardware 25 U-Int. 2 Dynamic 011 10 Count of times alert buffer full (FB1).
Not for Resale
Dflt. = 0
CYCLE_OVERRUN1 Hardware 25 U-Int. 2 Dynamic 011 10 Times write buffer not empty in cycle (FB1).
Dflt. = 0
ERROR_RATE1 Hardware 25 Float 4 Dynamic 011 10 Filtered framing + CRC error rate (FB1).
Dflt. = 0
FILTER1 Hardware 25 U-Int. 1 Static 010 11 Filter factor for ERROR_RATE (FB1).
Dflt = 255
ERROR_RATE_LIM1 Hardware 25 Float 4 Static 010 11 Alarm limit on ERROR_RATE (FB1).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Dflt = 0.01
P_FREE_FLOAT0 Hardware 25 Float 4 Static* 010 11 Free floating point number for higher level.
Dflt = NaN
P_FREE_FLOAT1 Hardware 25 Float 4 Static* 010 11 Free floating point number for higher level.
Dflt = NaN
P_FREE_STRING0 Hardware 25 Bit Str. 2 Static* 010 00 000xx Free bit string for higher level (xx<>11B).
Dflt = 0
P_FREE_STRING1 Hardware 25 Bit Str. 2 Static* 010 00 000xx Free bit string for higher level (xx<>11B).
Dflt = 0
P-FREE_LABEL0 Hardware 25 Visible 32 Static 010 11 Free label for higher level.
Dflt = <us> + zero's
P_FREE_LABEL1 Hardware 25 Visible 32 Static 010 11 Free label for higher level.
Dflt = <us> + zero's
LN_TAG (255) Log. Nodes 2 Visible 16 Static 010 00 00011 Array of Logical Node tag names.
--```,``-`-`,,`,,`,`,,`---
461
PN_SDBRN Basic Parm 3 U-Int. 2 Static 010 10 00001 0 Physical node static data base
revision num. Dflt = 0
PN_AFRN Basic Parm 3 U-Int. 2 Static 010 10 00001 3 Physical node Auto-Format revision number.
Dflt = 0
P_BACK_UP(0) Basic Parm 14 Complex 112 Group* 010 11 Group of Static-Free-R/W parm.for
BU/Restore.
Subtotal - Req. (w/ 1 FB & I/O) 194 Static
51 Dynamic
105 Other
LOGICAL NODES:
LN_NUM Log. Nodes 2 U-Int. 1 ROM/Dyn. 011 10 Index number of logical node in physical
node. Dflt = set by Appl. Layer
TAG_DESC Log. Nodes 2 Visible 64 Static 010 11 32 Character descriptor for tag.
Dflt = set by Appl. Layer
--```,``-`-`,,`,,`,`,,`---
LN_OOS Log. Nodes 2 Discrete 1 Static* Logical Node - O/S. Dflt = 0
ASK Alert 2 U-Int. 1 Static* 010 11 Alarm Sort Key for Logical Node.
Dflt = 0
BASK Alert 2 U-Int. 2 Static* 010 11 Batch Alarm Sort Key for Logical Node.
Dflt = 0
TO_TYPE Log. Nodes 3 U-Int. 1 Static 010 01 111xx Actual type of the Logical Node (xx<>11B).
Dflt = actual or 10H
TO_MFG_SUBTYPE Log. Nodes 3 U-Int. 1 Dynamic 011 10 Manufacturer-assigned display type for LN.
TO_USER_SUBTYPE Log. Nodes 3 U-Int. 2 Static* 010 11 User-assigned (display) type for LN.
Dflt = TO_MFG_SUBTYPE
MB Log. Nodes 8 U-Int. 2 ROM 011 10 Maximum blocks allowed.
MV Log. Nodes 8 U-Int. 2 ROM 011 10 Maximum number of measured variables.
CB Log. Nodes 8 U-Int. 2 Static 010 00 00011 Current blocks being used.
Dflt = 1 or n (see Note 3)
MX Log. Nodes 9 S-Int. 1 ROM/Dyn. 011 10 Manufacturer's (min.) exponent for
cycle time.
CX Log. Nodes 9 S-Int. 1 Static 010 00 00011 Current exponent for cycle time.
Dflt = 7 or n (see Note 4)
AX Log. Nodes 7 S-Int. 1 ROM/Dyn. 011 10 Repeat rate of alert detection.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
No reproduction or networking permitted without license from IHS
Reproduced by IHS under license with ISA
Copyright The Instrumentation, Systems, and Automation Society
462
MBC Log. Nodes 10 U-Int. 2 ROM/Dyn. 011 10 Maximum blocks per cycle allowed.
TIME_CRIT0 Log. Nodes 25 Bit Str. 2 ROM 011 10 Time-critical options bit string #0.
TIME_CRIT1 Log. Nodes 26 Bit Str. ? ROM 011 10 Time-critical options bit string #1.
TIME_CRIT2 Log. Nodes 26 Bit Str. ? ROM 011 10 Time-critical options bit string #2.
MIN_TC0 Log. Nodes 27 Bit Str. 2 Static* 010 11 User set "minimum" TIME_CRIT0.
Dflt = 0
N_TIME_CRIT0 Log. Nodes 27 Bit Str. 2 ROM 011 10 Non-time critical option bit string #0.
N_TIME_CRIT1 Log. Nodes 27 Bit Str. ? ROM 011 10 Non-time critical option bit string #1.
N_TIME_CRIT2 Log. Nodes 27 Bit Str. ? ROM 011 10 Non-time critical option bit string #2.
MIN_NTC0 Log. Nodes 27 Bit Str. 2 Static* 010 11 User set "minimum" N_TIME_CRIT0.
Dflt = 0
FAIL-SAFE Log. Nodes 23 Bit Str. 1 Static 010 00 00011 Fail-safe option bit string.
Dflt = 00B
FS_KILL Log. Nodes 23 Discrete 1 Static 000 00 000 Discrete to disable the fail-safe option.
Dflt = 0
FS_REPEAT Log. Nodes 23 U-Int. 1 Static 010 11 Repeat rate for "fail-safe inactive" alarm.
Dflt = 5 min.
IT Log. Nodes 21 U-Int. 2 Dynamic 000 10 Isolation timer current value.
Dflt. = 0
ISOLATE_TIME Log. Nodes 21 U-Int. 2 Static 010 11 Isolation timer setpoint.
Dflt = 0
NOWRITE Log. Nodes 23 Bit Str. 1 Static 010 00 00011 Bits to control option to prevent writing.
Not for Resale
Dflt = 0
PRIVATE_OFFSET Hardware 16 S-Int. 4 Dynamic 011 10 Private clock offset in 1/32 of
milliseconds. Dflt. = 0
P_OFFSET_DB Hardware 16 U-Int. 2 Static 010 11 Deadband on bias adjustment alert report.
Dflt = 0
ALGO_STR Log. Nodes 5 Bit Str. 32 ROM 011 10 List of supported algos in this log. node.
ALGO_STR1 Log. Nodes 5 Bit Str. 32 ROM 011 10 List of non-standard algos in this log node.
SYNC_POINT Log. Nodes 27 Bit Str. 2 Static* 010 11 Packed integers to control cycle sync.
SYNC_TOL Log. Nodes 28 Integer 2 Static* 011 10 Sync. tolerence (deadband).
ALERT_UNACK_OPT Alert 6 Bit Str. 4 Static* 010 11 First 32 alert codes - unack. option bits.
Dflt = 0
ALERT_UNACK_OPT1Alert 3 Bit Str. 4 Static 010 11 Second 32 alert codes - unack. option bits.
Dflt = 0
ALERT_PRIORITY Alert 6 Bit Str. 16 Static* 010 11 First 32 alert codes - priorities.
Dflt = all 10H
ALERT_PRIORITY1 Alert 3 Bit Str. 16 Static 010 11 Second 32 alert codes - priorities.
Dflt = all 10H
ALERT_SET0 Alert 7 Bit Str. 2 Dynamic 011 00 First 16 alert codes - current state.
Dflt = 0
ALERT_SET1 Alert 7 Bit Str. 2 Dynamic 011 00 Second 16 alert codes - current state.
Dflt = 0
ALERT_SET2 Alert 3 Bit Str. 2 Dynamic 011 00 Third 16 alert codes - current state.
Dflt = 0
--```,``-`-`,,`,,`,`,,`---
463
ALERT_SET3 Alert 3 Bit Str. 2 Dynamic 011 00 Fourth 16 alert codes - current state.
Dflt = 0
ALERT_UNACK0 Alert 7 Bit Str. 2 Dynamic 000 00 000 First 16 alert codes - unack. state.
Dflt = 0
ALERT_UNACK1 Alert 7 Bit Str. 2 Dynamic 000 00 000 Second 16 alert codes - unack. state.
Dflt = 0
ALERT_UNACK2 Alert 3 Bit Str. 2 Dynamic 000 00 000 Third 16 alert codes - unack. state.
Dflt = 0
ALERT_UNACK3 Alert 3 Bit Str. 2 Dynamic 000 00 000 Fourth 16 alert codes - unack. state.
Dflt = 0
ALERT_UNRPT0 Alert 7 Bit Str. 2 Dynamic 011 00 First 16 alert codes - unreported state.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Dflt = 0
ALERT_UNRPT1 Alert 7 Bit Str. 2 Dynamic 011 00 Second 16 alert codes - unreported state.
Dflt = 0
ALERT_UNRPT2 Alert 3 Bit Str. 2 Dynamic 011 00 Third 16 alert codes - unreported state.
Dflt = 0
ALERT_UNRPT3 Alert 3 Bit Str. 2 Dynamic 011 00 Fourth 16 alert codes - unreported state.
Dflt = 0
ALERT_DESC0 Alert 8 Visible 64 Static 010 11 Descriptor for alert #29.
Dflt = Mfg. Default
Reserve 1-18 Alert 8 Visible 64 Static 010 11 Reserved for descriptors for alerts #30 -
#47. Dflt = Mfg. Default
PHASE_MAP Log. Nodes 10 Pack U-I 16 Dynamic 011 10 Array of # blocks/phase in logical node.
Dflt = 0
--```,``-`-`,,`,,`,`,,`---
PREFETCH Appl. Sev. 19 U-Int. 2 Dynamic 011 10 Prefetch time for logical node variables.
Dflt = 0
MAX_PREFETCH Appl. Sev. 19 U-Int. 2 Static 0 0 High alarm limit for prefetch.
Dflt = (2**CX)/2
--```,``-`-`,,`,,`,`,,`--- 464
ASSIGN_USER Modes 6 Pack U_I 11 Static* 010 11 String of parameters under User access.
Dflt = 0
LN_AF (63) Appl. I/F 12 Auto-F. S Static 010 01 0001 ,x Array of Log. Node Auto-Form. variables.
Not for Resale
Dflt = 0
FB_TAG (i) Log. Nodes 2 Visible 16 Static 010 00 01011 Array of function block names in LN.
Dflt = set by Appl. Layer.
LN_SDBRN Basic Parm 3 U-Int. 2 Static 010 10 00001 1 Logical node static data base revision
number. Dflt = 0
LN_AFRN Basic Parm 3 U-Int. 2 Static 010 10 00001 4 Logical node auto-format data revision
number. Dflt = 0
L_BACK_UP(0) Basic Parm 14 Complex 55 Group* 010 11 Group of Static-Free-R/W param.for
BU/Restore.
L_BACK_UP(1) Basic Parm 14 Complex 109 Group** 010 11 Group of Static-Free-R/W param.for
BU/Restore.
FUNCTION BLOCKS:
FB_NUM Log. Nodes 2 U-Int. 2 ROM/Dyn. 011 10 Index number of function blk. in
logical node.
TAG_DESC Log. Nodes 2 Visible 64 Static* 010 11 32 Character description of the tag.
Dflt = <us> + zero's
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
No reproduction or networking permitted without license from IHS
Reproduced by IHS under license with ISA
Copyright The Instrumentation, Systems, and Automation Society
465
ASK Alert 2 U-Int. 1 Static* 010 11 Alarm Sort Key for function block.
Dflt = 0
BASK Alert 2 U-Int. 2 Static* 010 11 Batch Alarm Sort Key for function block.
Dflt = 0
ACQUIROR Modes 7 U-Int. 2 Static* 010 11 Higher level program that acquired tag.
Dflt = 0
TO_TYPE Log. Nodes 3 U-Int. 1 Static 010 01 111xx Actual type of the Function Block (xx<>11B).
Dflt = Actual or 20H
TO_TYPE1 Log. Nodes 4 U-Int. 1 Static 010 00 01011 Actual extended type of the Function Block.
Dflt = 0
TO_MFG_SUBTYPE Log. Nodes 3 U-Int. 1 Dynamic 011 10 Manufacturer-assigned display type for FB.
TO_USER_SUBTYPE Log. Nodes 3 U-Int. 2 Static* 010 11 User-assigned (display) type for FB.
Dflt = TO_MFG_SUBTYPE
BX Log. Nodes 10 U-Int. 1 Static* 010 11 Block exponent for cycle/phase function
blks. Dflt = 0
PN Log. Nodes 10 U-Int. 1 Static* 010 11 Phase index for cycle/phase function blocks.
Dflt = 0
TIME_CRIT0 Log. Nodes 25 Bit Str. 2 ROM 011 10 Time-critical options bit string #0.
MIN_TC0 Log. Nodes 27 Bit Str. 2 Static* 010 11 User set "minimum" TIME_CRIT0.
Dflt = 0
OPTIONS0 Algo. Bit Str. 2 Static* 010 11 User options bit string #0.
Dflt = 0
OPTION_INT0 Algo. U-Int. 1 Static* 010 11 User option integer #0.
Dflt = 0
Not for Resale
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
FAIL_OPT0 F.B.Struc. 23 Bit Str. 2 Static* 010 11 User options - bit pairs for failure alerts.
Dflt = 0
FAIL_OPT1 F.B.Struc. 23 Bit Str. 2 Static 010 11 User options - bit pairs for failure alerts.
Dflt = 0
ALERT_UNACK_OPT Alert 6 Bit Str. 4 Static* 010 11 First 32 alert codes - unack. option bits.
Dflt = 0
ALERT_UNACK_OPT1Alert 3 Bit Str. 4 Static 010 11 Second 32 alert codes - unack. option bits.
Dflt = 0
ALERT_PRIORITY Alert 6 Bit Str. 16 Static* 010 11 First 32 alert codes - priorities.
Dflt = all 10H
ALERT_PRIORITY1 Alert 3 Bit Str. 16 Static 010 11 Second 32 alert codes - priorities.
Dflt = all 10H
ALERT_SET0 Alert 7 Bit Str. 2 Dynamic 011 00 First 16 alert codes - current state.
Dflt = 0
ALERT_SET1 Alert 7 Bit Str. 2 Dynamic 011 00 Second 16 alert codes - current state.
Dflt = 0
ALERT_SET2 Alert 3 Bit Str. 2 Dynamic 011 00 Third 16 alert codes - current state.
Dflt = 0
ALERT_SET3 Alert 3 Bit Str. 2 Dynamic 011 00 Fourth 16 alert codes - current state.
Dflt = 0
ALERT_UNACK0 Alert 7 Bit Str. 2 Dynamic 000 00 000 First 16 alert codes - unack. state.
Dflt = 0
ALERT_UNACK1 Alert 7 Bit Str. 2 Dynamic 000 00 000 Second 16 alert codes - unack. state.
--```,``-`-`,,`,,`,`,,`---
No reproduction or networking permitted without license from IHS
Reproduced by IHS under license with ISA
Copyright The Instrumentation, Systems, and Automation Society
466
Dflt = 0
ALERT_UNACK2 Alert 3 Bit Str. 2 Dynamic 000 00 000 Third 16 alert codes - unack. state.
Dflt = 0
ALERT_UNACK3 Alert 3 Bit Str. 2 Dynamic 000 00 000 Fourth 16 alert codes - unack. state.
Dflt = 0
ALERT_UNRPT0 Alert 7 Bit Str. 2 Dynamic 011 00 First 16 alert codes - unreported state.
Dflt = 0
ALERT_UNRPT1 Alert 7 Bit Str. 2 Dynamic 011 00 Second 16 alert codes - unreported state.
Dflt = 0
ALERT_UNRPT2 Alert 3 Bit Str. 2 Dynamic 011 00 Third 16 alert codes - unreported state.
Dflt = 0
ALERT_UNRPT3 Alert 3 Bit Str. 2 Dynamic 011 00 Fourth 16 alert codes - unreported state.
Dflt = 0
ALERT_DESC0 Alert 8 Visible 64 Static 010 11 Descriptor for alert #29.
Dflt = Mfg. Default
Reserve 1-18 Alert 8 Visible 64 Static 010 11 Reserved for descriptors for alerts #30 -
#47. Dflt = Mfg. Default
PREFETCH Appl. Sev. 19 U-Int. 2 Dynamic 011 10 Pre-schedule time for off-node fetches.
Dflt = 0
MAX_PREFETCH Appl. Sev. 19 U-Int. 2 Static* 011 10 High alarm limit for PREFETCH time.
Dflt = (2**CX)/2
ACTUAL_MODE Modes 3 Bit Str. 1 Dynamic 011 00 Mode bit string calculated by block.
Dflt = 80H
REQ_MODE Modes 3 Bit Str. 1 Static 000 00 000 Requested mode.
Not for Resale
Dflt = 80H
TATTLE Modes 11 Bit Str. 1 Dynamic 010 00 00011 Bit string to report reset att/access bit.
Dflt = FFH
MODE_PERMIT Modes 4 Bit Str. 1 Static 010 00 00011 Bit string showing permitted modes.
Dflt = 80H
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ATT_ACCESS Modes 5 Bit Str. 1 Static 010 00 00011 Bit string showing attributes and access.
Dflt = 38H
FREE_MODE Modes 12 Bit Str. 1 Static* 010 11 Byte left free for higher level ctl. system.
Dflt = 80H
F_FREE_FLOAT0 Hardware 25 Float 4 Static* 010 11 Free floating point number for higher level.
Dflt = NaN
F_FREE_FLOAT1 Hardware 25 Float 4 Static* 010 11 Free floating point number for higher level.
Dflt = NaN
F_FREE_STRING0 Hardware 25 Bit Str. 2 Static* 010 00 000xx Free bit string for higher level (xx<>11B).
Dflt = 0
F_FREE_STRING1 Hardware 25 Bit Str. 2 Static* 010 00 000xx Free bit string for higher level (xx<>11B).
Dflt = 0
F-FREE_LABEL0 Hardware 25 Visible 32 Static 010 11 Free label for higher level.
Dflt = <us> + zero's
F_FREE_LABEL1 Hardware 25 Visible 32 Static 010 11 Free label for higher level.
Dflt = <us> + zero's
FB_AF (63) Appl. I/F 12 Auto-F. S Static 010 01 0001 ,x Array of Fun. Block Auto-Form. variables.
Dflt = 0
--```,``-`-`,,`,,`,`,,`---
No reproduction or networking permitted without license from IHS
Reproduced by IHS under license with ISA
Copyright The Instrumentation, Systems, and Automation Society
467
--```,``-`-`,,`,,`,`,,`---
FB_SDBRN Basic Parm 3 U-Int. 2 Static 010 10 00001 2 Function block static data base revision
num. Dflt = 0
FB_AFRN Basic Parm 3 U-Int. 2 Static 010 10 00001 5 Function block auto-format data revision
num. Dflt = 0
F_BACK_UP(0) Basic Parm 14 Complex 113 Group* 010 11 Group of Static-Free-R/W param.for
BU/Restore.
Not for Resale
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
468
Function Blocks:
--```,``-`-`,,`,,`,`,,`---
All function blocks on Field Bus must support a "tag name" and a "mode". See
page 2 of the paper "Data Owner Structure - Logical Nodes" for a discussion of
tag names and the "Block Modes" paper (both papers are in the Structure section
of this Technical Report) for a complete definition of mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
A major consideration of the design of the Standard function blocks was the
reaction of the block algorithm to unexpected changes in the status of input and
output variables. Analog numbers can have a "NaN" value; both analog and
discrete variables can be marked "Bad" or communications to them may fail.
Cascade structures can fail or be broken, etc. The control system must be robust
in the face of such unexpected events. The reader is referred to the sections in
the Structure part of the Technical Report that define the status byte (the paper
by that name), and Attachment 1 to the paper on "Function Block Structure" where
the detailed logic of the manipulation of the status bytes is defined.
The description for each function block will detail any deviations or
extensions to the "General" handling defined in these references. In particular,
the Selector and Splitter algorithms will have major additions to the procedure
because of their unique structure.
An "Open" and two "Generic" block types are defined for use in those
situations in which the more rigidly defined Standard, Extended, and Alternate
blocks are not suitable. These two types are defined in the immediately
following sections. Specific Extended and Alternate blocks are, of course, not
defined since they are manufacturer variants of Standard blocks.
In any logical node that supports more than one type of function block, there
is a need for a "do nothing" block to serve as the initial default block
algorithm. The first Standard block defined will be the "Null" algorithm - truly
a do nothing.
Each of the 32 Standard algorithms are presented. One part of the section
for each algorithm will give an input/output drawing for each algorithm. The
variables shown in that drawing will almost always have their own agents and
status bytes - see the papers with those names for detailed descriptions of those
design elements.
Appendix papers have been prepared to assist the reader in understanding the
design basis or the application of certain features of some of the algorithms.
There are absolutely no normative statements in the Appendix papers. All
requirements for all algorithms are as stated in the Technical Report ex the
Appendix.
Finally, the last part of the algorithm section is an array showing the
parameters accessible from the Field Bus for each of the 32 algorithms. This
array will include only the parameters that are algorithm type specific. The
similar paper - "Array of Basic Parameters" in the Structure section defined all
of the node and universal function block parameters.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
470
Open Blocks
BASIC CHARACTERISTICS:
The following block characteristics apply to open-type blocks which are used
with standard, alternate, or generic blocks:
- The specifics of the algorithm and algorithm options of open blocks are
defined by the manufacturer. Rules and data for use with standard,
alternate, or generic blocks are defined by this standard.
- The standard block features which are used by open blocks are defined by
the manufacturer, except as required below. If a manufacturer chooses
to incorporate certain standard block features in a particular open
block, those features shall operate as described in the User Layer
Technical Report.
- The number and characteristics of input and outputs, and the means used
for off logical node connections via field bus, are specified by the
manufacturer.
- The number and characteristics of any other parameters are specified by
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
the manufacturer.
NODE FEATURES:
The following characteristics ARE REQUIRED for nodes supporting generic blocks
which are interworkable with standard, alternate, or other generic blocks:
- Open blocks operate in a logical node and are identified by a standard
tag identifier. The logical node may use any type of block scheduling
scheme, as required by the function of the block as determined by the
manufacturer.
Static Database:
- MFG_SUBTYPE: Manufacturer's block subtype Required 16-bit integer
This is the manufacturer's subtype code for the generic
block algorithm code. It is set to a manufacturer- and
function-specific value by the manufacturer. A value of
Zero (0) will be interpreted as a "Null".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Explanations for parameters which are defined for Standard Blocks, and which
support functions described above as required or optional for Open Blocks, are
defined in the Process Control User Layer Technical Report section titled "Array
of Standard Block Parameters".
Generic Block
BASIC CHARACTERISTICS:
The following block characteristics apply to generic blocks which are
interoperable with standard, alternate, or other interoperable generic blocks:
- The specifics of the algorithm and algorithm options of interoperable
blocks are defined by the manufacturer. Rules and data for use with
standard or alternate blocks are defined by this standard.
- The standard block features which are used by interoperable blocks are
defined by the manufacturer, except as required below. If a
manufacturer chooses to incorporate certain standard block features in a
particular interoperable block, those features shall operate as
described in the Process Control User Layer Technical Report.
- The number of input and outputs, their data types, and whether or not
they have status byes and/or off logical node agents, are specified by
the manufacturer.
- The number of extension parameters, and their data types, are specified
by the manufacturer.
- The number of mode-dependent parameters, and their data types, are
specified by the manufacturer.
NODE FEATURES:
The following characteristics ARE REQUIRED for nodes supporting generic blocks
which are interoperable with standard, alternate, or other interoperable generic
blocks:
- Interoperable blocks operate in a logical node and are identified by a
standard tag identifier. The logical node may be any type, as required
by the function of the block as determined by the manufacturer.
- Logical nodes supporting interoperable blocks support the Data Base
Note that the optional PV_BUILD, PV_REFRESH, TAG_BUILD and TAG_REFRESH parameters
have required additions to meet the needs of generic blocks. These are specified
in Tables 1 and 2.
Static Database:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
475
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
- IN_DISPLAYx: Input x display attribute As Applicable 8 bit string
X ranges from 0-7; one "IN_DISPLAYx" parameter is required
for each input used by this generic block (as indicated by
the "EXTEND" parameter). This parameter includes the
display attribute code as specified in the User Layer
Technical Report, "Human Interface Considerations".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
477
As Applicable 32 Character
W ranges from 0-15; one "TUNE_DESCRw" parameter is
required for each extension parameter used by this generic
block (as indicated by the "EXTEND" parameter). This
parameter includes the user-entered parameter descriptor.
Other requirements for these parameters are the same as
for "IN_DESCRx".
Access-Controlled Database:
Parameters in the "access-controlled" portion of a block database are changeable
via field bus, but only with the block in modes specified by the manufacturer.
Access-controlled parameters must at least be changeable with the block in
"Out-of-Service" (O/S) mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
- OUT_AGENT_TYPEy:Output y agent type As Applicable 8 bit integer
Agent type for "OUTPUTy", as specified in the User Layer
Technical Report, "Agents". Y ranges from 0-7; one
"OUT_AGENT_TYPEy" parameter is required for each output
provided with the agent function, as indicated by the
"OPTIONS" parameter. This parameter may be changed only
with the block in "O/S" mode.
Dynamic Database:
- PV_REFRESH: PV Display Refresh Set Optional per Table 1
The contents and structure of the PV_REFRESH display set
are described in Table 1.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
481
Considerations".
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
1 byte Input Status - note 1
1-128 bytes Input Extended Status - notes 1 & 2
The Outputs Refresh segment, which includes
(for each output bit set in the Includes byte):
1-8 bytes Output Low Range - notes 1 & 2
1-8 bytes Output Hi Range - notes 1 & 2
1-8 bytes Output Low Limit - notes 1 & 2
1-8 bytes Output Hi Limit - notes 1 & 2
1-8 bytes Output Value - note 2
1 byte Output Status - note 1
1-128 bytes Output Extended Status - notes 1 & 2
The Extensions Refresh segment, which includes
(for each extensions bit set in the Includes byte):
1-8 bytes Extension Low Range - notes 1 & 2
1-8 bytes Extension Hi Range - notes 1 & 2
1-8 bytes Extension Value - note 2
The Tuning Refresh segment, which includes
(for each tuning bit set in the Includes byte):
1-8 bytes Tuning Low Range - notes 1 & 2
1-8 bytes Tuning Hi Range - notes 1 & 2
1-8 bytes Tuning Value - note 2
Notes:
1. The presence of the optional parameters must be determined by the
higher-level device, based on the contents of the OPTIONS parameter
and the Includes string.
2. The byte counts for parameters whose data type is specified by the
field device manufacturer must be determined by the higher-level
device, based on the contents of the associated "Type" parameters
contained in the TAG_BUILD display set.
3. The Includes string has the same structure as the EXTEND parameter,
but with bits set only for those parameters which are included in the
tag display set.
4. TAG_BUILD and TAG_REFRESH may be longer than 128 bytes, depending on
the number and data types of parameters included in the display set
by the manufacturer.
5. The TAG_BUILD and TAG_REFRESH data sets also include the following
delimiter characters:
<RS> (char. 30 base 10) at the end of each parameter
(except the last of a segment)
<GS> (char. 29 base 10) at the end of each segment (except
the last segment)
<FS> (char. 28 base 10) at the end of the display set.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#
float - 32 bit 0 1 0 0 1 1 1 1
float - 64 bit 0 1 0 1 1 1 1 1
--```,``-`-`,,`,,`,`,,`---
Octet string - 8 byte 1 0 0 1 1 1 1 1
Notes:
1. 1-bit string encoded as bit 0 (low order) of an octet, all unused
bits reset.
2. Enumerated states are represented by an 8-bit integer.
3. Two BCD digits per byte. Bytes 7-4 represent digits to the left of
the decimal, bytes 3-0 represent digits to the right of the decimal.
4. Time format is milliseconds from field device restart (49.7 days
maximum).
5. Time format is milliseconds from January 1, 1970, 00:00 am,
International Standard Time. The high-order bit (bit 43) is not used
(reset = 0).
6. Characterts are interpreted as defined in the User Layer Technical
Report, "Human Interface Considerations", Tables 9-12.
7. All other possible codes are reserved for future use by the Field Bus
standard.
BASIC CHARACTERISTICS:
The following block characteristics apply to generic-type blocks which are
interworkable with standard, alternate, or other generic blocks:
- The specifics of the algorithm and algorithm options of interworkable
blocks are defined by the manufacturer. Rules and data for
interworkability with standard or alternate blocks are defined by this
standard.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
- The standard block features which are used by interworkable blocks are
defined by the manufacturer, except as required below. If a
manufacturer chooses to incorporate certain standard block features in a
particular interworkable block, those features shall operate as
described in the User Layer Technical Report.
- The number of input and outputs and their data types, and whether or not
they have off logical node agents, are specified by the manufacturer.
- The number of extension parameters, and their data types, are specified
by the manufacturer.
- The number of mode-dependent parameters, and their data types, are
specified by the manufacturer.
NODE FEATURES:
The following characteristics ARE REQUIRED for nodes supporting generic blocks
which are interworkable with standard, alternate, or other generic blocks:
- Interworkable blocks operate in a logical node and are identified by a
standard tag identifier. The logical node may use any type of block
scheduling scheme, as required by the function of the block as
determined by the manufacturer.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
sets, if supported for a particular interworkable generic block, are as
defined for interoperable generic blocks.
- One autoformat parameter is required for an interworkable generic block,
if the autoformat option is supported.
This paper explains the notation used for general architecture functions that
are detailed in other papers and explains in detail the "common" block functions:
+ General:
EXPONENTIAL FILTERS
TIME CRITICAL OPTION BIT STRING
MINIMUM OPTION INDICATOR
USER OPTION BIT STRING
USER OPTION INTEGER
HANDLING OF NaN, BAD, AND NOT-FROM-PROCESS
Default Values
Block Operation to Compliment Default Handling
Not-from-Process Status
+ Standard Block Functions:
1 - MODE
2 - HARDWARE AGENTS
3 - BIT POINTERS
4 - CASCADE STRUCTURE
Analog Blocks
Discrete blocks
5 - BY-PASS
6 - SET POINT LIMITS
7 - SETPOINT RAMP
8 - OUTPUT LIMITS
9 - PV POINTER
10 - BOOLEAN OPERATOR
+ GENERAL:
EXPONENTIAL FILTERS:
Many Standard algorithms call for a first order exponential filter. A direct
implementation of such a filter would require mathematical support that would
probably not be otherwise needed in the Field devices. In fact, most control
systems approximate the exponential calculation with a factorial expansion.
In all Standard Field Bus algorithms, therefore, the factorial expansion will
be DEFINED as being the correct solution of the exponential filter calculation
and the exact solution will, by DEFINITION, BE WRONG!
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
493
The first order exponential filter applied to the measurement "X" to produce
the filtered value "Y" will be calculated according to the following equation and
logic:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Y = Xn
where Xn = linearized, unfiltered measured value at
cycle (n)
ELSE
Y = P * Yn-1 + (1-P) * Xn
where Y = linearized, filtered value at cycle (n)
P = filter constant
Yn-1 = filtered value at cycle (n-1)
The Standard will assign one of the defined options to each bit in the bit
string. If the bit is set, the defined option is supported. In all cases,
support of the option directly implies the existence of one or more data base
parameters. If the option is not supported, the associated parameters should not
be assumed to exist.
This bit string will be called TIME_CRIT0. In some case, there may be a
second such string, TIME_CRIT1, defined by the Standard.
The parameter's name is derived from the fact that this data is time critical
to a human interface that does not know anything about a tag but must display its
data base. In order to avoid successive accesses to the tag's data base over the
relatively slow Field Bus, this parameter will be stored in the User Layer
Support Services' Data Dictionary. Therefore, the data will be available "on the
human interface's side" of Field Bus when needed.
assignments as TIME_CRIT0. The algorithm does not use MIN_TC0 in any way: it
simply retains it in the static data base.
The intent is that the user will set the bits in MIN_TC0 that correspond to
manufacturer's options that are necessary for a particular application. When a
higher level device is restoring the static data base to a Field device, it can
read the TIME_CRIT0 from the device and compare it to MIN_TC0. If there are bits
RESET in TIME_CRIT0 that are SET in MIN_TC0, the Field device is not satisfactory
for the service and an alarm should be issued by the higher level device.
Any value that has a status of NaN will have a status of Bad. Any value that
has a status of Bad will be marked "Not-from-Process".
Default Values:
In general, values for parameters stored in the dynamic data
base are not known whenever a block's TO_TYPE is changed or the
device restarts after a power loss. Most static data is also
unknown whenever a block's TO_TYPE is changed and all static data
is unknown when the static data base integrity is lost. Data is
assumed to be lost in sets, not as individual items. The reader
is reminded of the discussion on page 11 of the paper "Field
Device Start and Restart" concerning the manufacturer's ability
to provide added integrity for all or part of this data and,
therefore, provide valid data under conditions that would
normally indicate that the data was lost.
Not-from-Process Status:
--```,``-`-`,,`,,`,`,,`---
The reset Not-from-Process status can only be initiated by a
hardware input block or a higher level device. Each Field Bus
algorithm then has the task of properly handling that status and
calculating the status of its own outputs. In general, an
algorithm must have at least one input "from-Process" in order
to mark its output "from-Process". Some algorithms will require
that the "from-Process" indication must be supplied only by
certain inputs. The special agent type "immediate with status
reset" is provided to allow configured violation of these rules.
1 - MODE:
The mode structure has been defined in the paper "Block Modes". It consists
of a mode byte with the eight bits corresponding to the eight primary modes
possible for a functional block. The bits are defined in priority order. One
version of the mode byte, stored in the static data base, is called the
"requested mode". Field Bus writes can set one, and only one, bit in that byte.
Based on the requested mode and block conditions, the block algorithm generates a
second version of the mode byte, stored in the dynamic data base, called the
"actual mode". The highest priority bit set in the actual mode is the operative
mode but the lower priority bits allow the higher level nodes to interact
properly and provide valuable information for the operator interface.
The mode structure also includes four other 8-bit binary strings. The entire
mode structure is always required.
Some of the standard function block algorithms do not have an operating state
corresponding to one or more of the defined modes. Therefore, the "Standard
Block Functions" table includes an entry for "Mode" and shows the particular
modes (if any) that are not supported. Note that O/S must always be supported.
All of the above data base items will be present in a block's data base no matter
how many modes are not supported. The identification of a mode that is not
appropriate for a particular block type will result in the following conditions
for that mode:
1) Its actual mode bit will always be reset by the algorithm.
2) The corresponding mode permitted bit will always be reset.
3) The corresponding bit in the undefined byte will always be reset.
2 - HARDWARE AGENTS:
See the separate discussion of "Data Owner Structure - Hardware" for the
definitions of these hardware connections.
Some of the standard block types include hardware type agents in their
definitions. In all cases, the block type uniquely defines the type of hardware
that the block can access.
The "Standard Block Functions" table includes an entry for "Hardware Agents".
It will list "none" if that block can not access any hardware I/O. Alternately,
it will list the one type of hardware that can be accessed by that block type.
It will also indicate if the hardware agent must be used with an input or an
output word in the block.
3 - BIT POINTERS:
"Bit Pointers" are used to define the source of individual bits in the
configuration of the blocks. These pointers are significantly more limited than
the general I/O Word agents described in the "Agents" paper. All bit pointers
are restricted to being on-block or to 5 special registers in the local logical
node.
Bit pointers may be used to select the bits for the SP (if there is a SP) in
discrete blocks. They are always used to select the bits in the PV and Target
for the discrete PV Pointer function (described below); they are always used if
Boolean operators are supported (described below), and they may be used to select
the source of the bits in other parameters.
The "Standard Block Functions" table includes an entry for "Bit Pointers".
--```,``-`-`,,`,,`,`,,`---
It will list "none" if that block does not support any bit pointers.
Alternately, it will give the number of bit pointers in the block if any are
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
supported.
Most logical nodes that support blocks that include bit pointers must support
5 special registers in the data base of the logical node. See the description of
these registers in "Data Owner Structure - Logical Nodes".
The bit pointer configuration includes the parameter number of the source of
the bit but there is no provision for the source tag name since their reference
must be on-block (the logical node register parameter names appear as if they are
on-block because they are in the local logical node's data base). The pointer
has the ability to select one bit from the low 16 bits in the named parameter.
All bit pointers include the option to invert the state of the discrete that is
transferred.
The bit pointers are defined using one 16 bit word. The format of a bit
pointer configuration word is:
Bits 0 - 6: Parameter Number
7 - A: Bit Number
B: Invert state of bit if Set
C & D: If Bad: 00 - Null
01 - Use 0 and a generated status (see p3 of
the paper on "Status Byte")
10 - Use 1 and a generated status
11 - Keep Old with its old status but set bit 2
(not from process).
E & F: Force: 00 - Null
01 - Force to 0 and generated status
10 - Force to 1 and generated status
11 - Keep Old value but with a generated status
Bits 0 - AH define the bit to use. Bit BH of the bit pointer allows the
chosen bit to be inverted if desired. The pointer bits CH and DH define the
action to be taken if the chosen bit happens to be marked "bad". Finally, it is
sometimes necessary to force the value of the bit to a particular value, thus
disabling the action of a particular input bit. It is desirable to be able to do
this without loosing the normal configuration information. This is provided by
the "Force" option in the pointer bits EH and FH. The force option overrides the
value determined by the first 14 bits.
There are six special values for the bit pointer configuration word called
the "Detail Word (Pointer)". They are invoked by the following hex value in bits
0 - BH of that word:
1) value = 000: the bit is fixed to reset or "Off" (called the "Null"
value)
value status = the generated status
2) value = 001: the bit is fixed to reset or "Off" (called the "Null"
value)
--```,``-`-`,,`,,`,`,,`---
These special definitions have the result that parameters 0 through 5 can not
be addressed by bit pointers. Those five parameters are defined with that
limitation in mind.
When more than one bit pointer is necessary to define the source of a named
parameter, for example the three bit pointers for the SP, then the configuration
words for all of the bit pointers for that parameter are themselves combined
under one parameter name. The bit pointer definition word for the lowest order
bit (bit 0) is reported first.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
498
4 - CASCADE STRUCTURE:
Many of the standard blocks defined by Field Bus can be configured to have a
"cascade" structure. This structure allows the mode parameter to control the
source of the SP of the block and to control the access to the Output by a
configured higher level control device. This cascade structure can be found in
both analog and discrete blocks.
The Cas and RCas transfer location values will, in general, have the same
data type and engineering units as the set point and the ROut transfer location
value will have the same data type and engineering units as Output Word 0. Any
exceptions to these rules will be explicitly defined in the algorithm. The No-
Communication_Counter will be reset every time there is a write to the associated
transfer location and it will be incremented every cycle by the block algorithm.
The algorithm will monitor the value and "count-out" the RCas or ROut mode if the
value exceeds 32 (for RCas, 8 for ROut). The Cas No-Communication_Counter, which
will count out at 32, can be used by an "active, on-block agent (counter)". This
process is also defined in the above referenced paper.
Note:
The standard function block types are defined as analog or discrete
according to the data type of their "PV Pointer" (see below). If
the PV Pointer is analog, then the block is considered as an analog
block. If the PV Pointer is discrete or not supported, then the
block is considered a discrete block.
Note:
In order to minimize the traffic on Field Bus, a higher level
device should never write to the RCas or ROut transfer locations
when all three of status bits 7, 6, and 3 are set (analog, when
value bits 7, 6, and 5 are set in discretes) (see Attachment 2 to
the "Status Byte" paper). Since the remote connection must execute
the Remote Handshake, there is no advantage to having the count-out
counters reset when the cascade is allowed. The Cas transfer
location should be written all of the time from peer blocks.
Note:
It is important that the primary's in a cascade structure properly
implement masking in order to correctly manipulate the status
bytes. Refer to the paper "Application Layer Service Interface"
for details on writing to the cascade connections.
Analog Blocks:
When the "Cascade Structure" is included in the block structure,
Input Word 0 and Output Word 0 are normally associated with the cascade
structure.
The mode of the block will determine the source of the SP. In any
mode of Auto or higher priority, the SP will not be changed by the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
499
cascade structure. In Cas mode, the block will use the value pointed to
by the Input Word 0 pointer. Often, that will be the Cas transfer
location. In RCas mode, the block will use the value found in the RCas
transfer location as the block's SP. In any mode, the block will set
the new value of the SP into the two transfer locations and update the
status bytes of both.
The mode of the block will determine the source of the Output. In
IMan mode, the value of Output Word 0 will be left as set by the
location to which the Output was pointed. In LO mode, Output Word 0 can
not be changed at all. In Man mode, Output Word 0 can only be changed
by a write from the Field Bus. In Auto, Cas, and RCas mode, the block's
--```,``-`-`,,`,,`,`,,`---
algorithm (or by-pass) controls Output Word 0. In ROut mode, the value
in the ROut transfer location will be moved into Output Word 0. In all
cases, the new value in Output Word 0 will be set into the ROut transfer
location and the status byte of the transfer location will be updated.
Discrete blocks:
There are two differences in the cascade structure between analog
and discrete blocks. First, there are no standard discrete blocks that
support ROut mode, hence there is no connection between the Cascade
structure and any particular Output Word. Second, the selection of the
source of the SP in Cas mode is more complex and does not necessarily
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The "Status Byte" paper defines the rules that the algorithms will
follow in manipulating the bits in the status bytes and Attachment 1 to
the "Function Block Structure" paper gives the logic details.
Note that the "Data Base Write Service" paper defines a number of
constraints on, and functions to service, the Cascade transfer
locations. The most important service is the one that causes any write
to the block's SP to also be written to the Cas and RCas transfer
locations and the setting of the logical TRANSFER_VOID. This action
results in the rejection of the next write to the transfer location (see
the paper "Function Block Structure" and the Appendix paper "Fundamental
Control Structure" - page 14). Likewise, any write to Output Word 0 in
an analog block is also written to the ROut transfer location and its
TRANSFER_VOID is set. These functions are critical to the correct
functioning of the cascade structure.
5 - BY-PASS:
All of the Standard function blocks have a defined algorithm. In general,
the algorithms use block inputs to manipulate the block outputs. In some
situations with some algorithms, the operator may want to simply bypass the
operation of the algorithm, moving a block input directly to an output. The "By-
Pass" function provides this option as a specific standard function.
The "Standard Block Functions" table includes an entry for "By-Pass". It will
list "yes" or "no" to indicate if that block supports by-pass. Each function
block that permits by-pass will also include an 8 bit binary string to control
by-pass. The string, called "CONFIG_BY", will be a static data base item that is
structured as follows:
Bit 0 = set if bypass active.
Bit 1 = set if bypass prohibited.
Bit 2 = set if an authority 1 level higher than an operator's is
needed to change bit 0.
Bit 3 = set if an authority 1 level higher than an operator's is
needed to change bit 1.
Bit 4 = set if an authority 2 levels higher than an operator's is
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
6 - SET POINT LIMITS:
Most of the analog blocks have a functional need for a method of limiting the
movement of the set point: "Set Point Limits". An alarm will be set when one of
the limits is reached. One alarm with the following detail codes will be
provided:
Detail code: 01 - LO Limit.
02 - HI Limit.
The presence of this function will require the presence of the following data
base items:
1) SP_LIM_HI = High set point limit (real) (in the same units as the SP)
(default = NaN).
2) SP_LIM_LO = Low set point limit (real) (in the same units as the SP)
(default = NaN).
3) SP_DB = Limit deadband (real) (in the same units as the SP) (default
= NaN).
If a limit value is equal to NaN, then that limit will be ignored. If the
deadband is equal to NaN, then both limits will be ignored. The high set point
limit will not be allowed to be written to a value lower than the low set point
limit and the low set point limit will not be allowed to be written to a value
higher than the high set point limit. A value of NaN can always be written and
will not prevent the writing of the companion limit.
The alarm function that is provided for all blocks will have provision for
the following data base items associated with this alarm (see the paper
describing the "Alert Function" for details on the following):
1) Alarm priority
2) Unacknowledged bit reset option
3) Alarm state
4) Alarm Unacknowledged bit
The "Standard Block Functions" table includes an entry for "Set Point
Limits". It will list "yes" or "no" to indicate if that block supports the
limits.
A block may have the capability of back-calculating its SP during Iman mode
and also have set point limits. Alternately, the block may provide PV tracking
which forces the SP to track the PV in IMan, LO, or Man mode (and optionally, in
ROut mode) while it also has set point limits. There can be situations in which
the back-calculated SP would be outside of the set point limits. THIS WILL BE
ALLOWED IF THE AUTO MODE BIT IS NOT SET IN THE ACTUAL MODE. If the setpoint is
being back-calculated and the Auto mode bit is reset, the value will be set as
calculated. When the block reverts to forward calculations, the limit that has
been exceeded will act as a "ballooning" limit. For example, consider a
situation in which the high set point limit was exceeded by the back-calculated
SP. When forward calculations resume, a new SP value will be limited by the
GREATER of:
1) the last SP value
2) the high SP limit
The design of the setpoint limits is such that they will not balloon when the
immediate block is the primary of the cascade. When the immediate block is a
secondary and normal control is interrupted by initialization, the setpoint of
the block will balloon because this block's setpoint limits are acting
essentially as output limits on the primary. Output limits are always allowed to
balloon.
Note that the status of the set point limiting is considered in the setting
of the ATW bits in the status byte as defined in the "Status Byte" paper. The
set point is to be considered to be limited in one direction any time it is in a
ballooning situation (i.e., any time the SP is equal to, or beyond, the
configured limit).
There are certain situations in which the engineering units value of certain
process variables appear to be "reversed". Consider the case of "inches of
vacuum". Field Bus will ignore this apparent reversal. The engineering units
value will be used "as is". Therefore, 30 inches of vacuum is "higher" than 20
inches of vacuum.
Some function blocks will define a "control range". This range will be
associated with the Setpoint and will be used to convert the Setpoint and other
block parameters (which will be in engineering units) to a "percent of range".
It is assumed that the control range will not normally be manipulated by the
operator of the control system. THE SETPOINT LIMITS WILL NOT BE ALLOWED TO BE
SET OUTSIDE OF THE CONTROL RANGE if a control range is supported by the function
block.
7 - SETPOINT RAMP:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
There are many situations in which an operator may wish to change the
Setpoint of an analog control or output block but wants the change to be made
--```,``-`-`,,`,,`,`,,`---
The following three parameters will be included in the block's data base to
support Setpoint ramps:
1) TARGET_SP - indicates the desired final value of the Setpoint. Will
be limited by the Setpoint Limits if present. (stored
in the dynamic data base).
2) RAMP_RATE - gives the ramp rate in units of (engineering units)/
The RAMP_FLAG will not be permitted to be set if any mode bit other than Auto
is set in the actual mode of the block. If the RAMP_FLAG is set and any actual
mode bit other than Auto is set, RAMP_FLAG will be reset and a notification alert
will be issued.
If the Setpoint of the block goes into either wound-up state (or both) while
the ramp is active, the ramp will continue unless some other condition that stops
the ramp accompanies the wound-up state.
If Input #1 of the block becomes Bad, the RAMP_FLAG will not be allowed to be
set. If it is already set, it will be reset and a notification alert will be
issued. In the special case of the Setpoint ramp in a PID algorithm, the
RAMP_FLAG will not be allowed to be set if Input #1 is not from the process
(i.e., status bit #2 set). If the ramp is already in progress, RAMP_FLAG will be
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
At each operation cycle, the block will compare the ramp target value to the
Setpoint limits. If the limits are moved such that the target value is outside
of the limits, RAMP_FLAG will be reset and a notification alert will be issued.
The "Standard Block Functions" table includes an entry for "Set Point Ramp".
It will list "yes", "optional", or "no" to indicate if that block must support,
can optionally (manufacturer's option) support, or does not support the limits.
8 - OUTPUT LIMITS:
Most of the blocks that generate an analog output value have a functional
need for a method of limiting the movement of that Output. The "Output Limits"
function provides limits on the freedom of movement of the Output. This
function, if present, will apply to Output Word 0. The block can define a second
and perhaps a third instance of Output Limits. In such cases, the second set
will apply to Output #1 and the third will apply to Output #2.
The "Standard Block Functions" table will include a line item for "Output
Limits". Following that item will be either "none" or the numbers 1, 2, or 3.
This number indicates the number of instances of Output Limits in that one block.
The presence of the "output limits" function will require the presence of the
following data base items for each instance of the limits (all of these
parameters are real, are in the same units as the output, default to NaN, are
under the tuning attribute, and are not mode controlled):
1) LIM_HI = High Output limit.
2) LIM_LO = Low Output limit.
3) LIM_DB = Limit deadband.
If a limit value is equal to NaN, then that limit will be ignored. If the
deadband is equal to NaN or 0, then no deadband will be applied.
The Output Limit function will support one alarm for each instance of Output
Limits. The detail code of the alarm is as follows:
Detail Code: 01 - LO Limit
02 - HI Limit
The alarm function that is provided for all blocks will have provision for the
following data base items associated with each of these alarms:
1) Alarm priority
2) Unacknowledged bit reset option
3) Alarm state
4) Alarm Unacknowledged bit
The Output limits WILL NOT apply to values of the Output written into he
Output parameter from the Field Bus. Note that these writes can only occur when
the block is in Man or O/S mode. The limits WILL NOT apply to the value obtained
from the ROut transfer location.
The Output limits and associated alarm will apply to the block's forward
calculation algorithm and to the by-pass function. If the actual mode of the
block has only the ROut bit set, or if any actual mode bits with higher priority
than Auto are set, and existing Output Limit alarm will be cleared and not re-
alarmed until the mode changes.
When the block reverts to forward calculations, the limit that has been
exceeded will act as a "ballooning" limit. For example, consider a situation in
which the high Output limit was exceeded by an initialized or manually set
Output. When forward calculations resume, a new Output value will be limited by
the GREATER of:
1) the last Output value.
2) the high Output limit.
Since the mode will have changed to a mode that allows alarms, the Output Limit
alarm will be issued at that point.
Note that the status of the output limiting is considered in the setting of
the ATW bits in the status byte as defined in the "Status Byte" paper. The output
is to be considered to be limited in one direction any time it is in a ballooning
situation (i.e., any time the Output is equal to, or beyond, the configured
limit).
Some function blocks will define an "output control range". This range will
be associated with the Output and will be used to convert a calculated Output in
"percent of range" to the Output in engineering units. It is assumed that the
output control range will not normally be manipulated by the operator of the
control system. THE OUTPUT LIMITS WILL NOT BE ALLOWED TO BE SET MORE THAN 5%
OUTSIDE OF THE OUTPUT CONTROL RANGE if an output control range is supported by
the function block.
9 - PV POINTER:
The Field Bus Standard supports the concept that the fundamental variable of
a block (the "principle variable") is the "PV". In order to maximize the user's
flexibility to define the most important variable in a block, none of the
standard blocks identify any parameter as the PV. Rather, the PV is the
parameter defined by the "PV Pointer". It can be any parameter in the block of
--```,``-`-`,,`,,`,`,,`---
the same data type as the default value for the PV Pointer. The selected
parameter is the one that will be supplied when a Field Bus device requests the
"PV". It will also be the parameter that will have the standard "PV" alarms -
High PV, Low PV, Deviation, etc.
The "Standard Block Functions" table will include a line item for "PV
Function". Following that item will be either "none" or the default block
parameter to which the PV will point. All PV Pointers will be initialized to the
default parameter but any of them can be changed to point to any block parameter
of the same data type.
If a Standard block does not support the "PV Pointer", it will still support
a parameter called the "PV": the value of that parameter will be set equal every
cycle to the value of the default parameter defined above.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
504
The parameter "PV" will NEVER be writeable. Note that the parameter to which
the PV pointer points may be writeable; if so, it must be written by directly
addressing it, not by addressing the parameter "PV".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The data type of the default PV Pointer value is, as explained in the note
above, used to determine the classification of the whole block: either discrete
or analog.
The TARGET, its pointer, FREE_STAT, and FREE_DYNAMIC are required of all
blocks even if the PV Function is not supported.
The "PV Function" line item in the "Standard Block Functions" table will
include an entry that will be either "none" or the default block parameter for
the TARGET pointer . All TARGET pointers will be initialized to the default
parameter but any of them can be changed to point to any block parameter of the
same data type.
The parameter "Target" will NEVER be writeable. Note that the parameter to
which the Target pointer points may be writeable; if so, it must be written by
directly addressing it, not by addressing the parameter "Target".
The alert function that is provided for all blocks will have provision for
the following data base items associated with each of these alarms (see the paper
describing the "Alert Function" for details on the following):
1) Alarm priority
2) Unacknowledged bit reset option
3) Alarm state
4) Alarm Unacknowledged bit
The parameters associated with the PV Function that are always required in
all analog blocks are:
1) PV = The PV parameter and its status byte (dynamic data base
items).
2) FREE_STAT = Free_Static_Variable. This parameter is a static
data base item of the same data type as the default PV. It has
no explicit range or engineering units specifiers. It can be
used as the "target" value for the PV Pointer function or as a
"free" variable for other purposes. It has no status byte.
Since it is located in the static data base it will be restored
on a memory reload but it must not be dynamically changed.
(Default value = NaN)
3) FREE_DYN = Free_Dynamic_Variable. This parameter is a dynamic
data base item of the same data type as the default PV. It has
no explicit range or engineering units specifiers. It can be
used as the "target" value for the PV Pointer function or as a
"free" variable for other purposes. It has no status byte.
The presence of the "PV Pointer" function will require the presence of the
following data base items for an analog block:
1) PV_PARAM = Parameter number of the parameter chosen to be the PV
(must be on-block) (default value specified for each standard
algorithm) (value in the static data base).
2) PV_HI_DISP = High display range for the PV (value in engineering
units of the PV; the value determines the value of the PV that
will be shown as full range in a graphical representation of the
PV) (static data base), (default value = NaN).
3) PV_LO_DISP = Low display range for the PV (value in engineering
units of the PV; the value determines the value of the PV that
will be shown as minimum range in a graphical representation of
the PV) (static data base), (default value = NaN).
4) A parameter value for each of the following items:
Note: in this list, it is recognized that the function
being described may be either a "comparator" or
an alarm. It is labeled a comparator with the
understanding that it will become an alarm if
it is assigned an alert priority greater than
one. However, the repeat function is not useful
as a comparator.
a) HIHI_ALARM = High, High PV comparator setting (in the units
of the PV) (default value = NaN).
b) HI_RPT_ALARM = High PV alarm repeat setting (in the units
of the PV) (must be a positive value; default value = NaN).
c) HI_ALARM = High PV comparator setting (in the units of the
PV) (default value = NaN).
d) LO_ALARM = Low PV comparator setting (in the units of the
PV) (default value = NaN).
e) LO_RPT_ALARM = Low PV alarm repeat setting (in the units of
the PV) (must be a positive value; default value = NaN).
f) LOLO_ALARM = Low, Low PV comparator setting (in the units
of the PV) (default value = NaN).
g) TARG_FILTER = Time constant for target filter (sec.)
(default value = 0)
h) DEV_ALARM = Deviation comparator setting - the difference
--```,``-`-`,,`,,`,`,,`---
between the filtered PV and the filtered target (in the
units of the PV) (Default value = NaN). where:
current deviation = filtered PV - filtered target
and "Hi" refers to a large positive deviation
i) DEV_LOGICAL = Deviation comparator definition - a 2 bit
logical:
Value = 0 if comparator inactive
Value = 1 if comparator on high only
Value = 2 if comparator on low only
Value = 3 if comparator on both high and low deviation
Default value = 0
5) COMP_DB = comparator deadband (real) (in the same units as the
PV) (default value = NaN).
The PV itself will not have a standard status byte. The following is the
definition of its unique status byte:
bit 0 = Set if No-Com (same as standard)
1 = Set if Bad (same as standard)
2 = Set if not from process (same as standard)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
506
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
There are three algorithm processing procedure details that must be observed
for the above data items. They are expressed here in pseudocode form:
1) If the PV Pointer is configured to provide a rate of change alarm on
the Output, it is necessary to suppress the alarm in Man mode in
order to avoid extraneous alarms when the operator moves the Output
value.
Therefore:
IF PV Pointer = Output 0 AND
Target Pointer = Output 0 AND
the Actual Mode has a priority of Man or higher, THEN
Before doing the alarm comparisons, set the filtered Target
equal to the Target
2) Likewise, if the PV Pointer is configured to provide a rate of change
alarm on the Setpoint, the alarm must be suppressed in Auto or any
higher priority mode. Therefore:
IF PV Pointer = Setpoint AND
Target Pointer = Setpoint AND
the Actual Mode has a priority of Auto or higher, THEN
Before doing the alarm comparisons, set the filtered Target
equal to the Target
3) Given the relatively large number of PV Function alarms, it is
beneficial to suppress the less meaningful alarms when there are
multiple alarms active.
Each of the HHPV, HPV, LPV, and LLPV alarms will be tested for their
alarm states independently. However,
IF the PV is "Bad", THEN
no PV function alerts other than "Bad PV" and "Bad Target"
will be reported (see the "Alert" paper for a definition of
"reported".
IF the HHPV alarm is set AND
IF the alert priority of the HHPV alarm is higher than, or
equal to, the alert priority of the HPV alarm, THEN
a HPV alarm will not be reported.
IF the LLPV alarm is set AND
IF the alert priority of the LLPV alarm is higher than, or
equal to, the alert priority of the LPV alarm, THEN
a LPV alarm will not be reported.
IF the target value is Bad, THEN
the Deviation alarm will not be reported.
--```,``-`-`,,`,,`,`,,`---
The parameters associated with the PV Function that are always required in
all discrete blocks are:
1) The 3-bit variable PV and its 3 status bytes.
2) FREE_STAT = Free_Static Variable. This parameter is a static
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
data base 3-bit string. It can be used as the "target" value
for the PV Pointer function or as a "free" variable for other
purposes. It has no status byte. Since it is located in the
static data base it will be restored on a memory reload but it
must not be dynamically changed. (Default value = reset.)
3) FREE_DYN = Free_Dynamic_Variable. This parameter is a dynamic
data base 3-bit string. It can be used as the "target" value
--```,``-`-`,,`,,`,`,,`---
The presence of the "PV Pointer" function will require the presence of the
following data base items for a discrete block:
1) Three bit pointers to form the 3-bit string for "PV":
PV_PARAM0, PV_PARAM1, and PV_PARAM2.
(default value specified for each standard algorithm).
2) ALARM_LOGICAL = Eight bit string to control the alarms as
follows:
a) bit 0 set if alarm on PV bit 0 set
b) bit 1 set if alarm on PV bit 1 set
c) bit 2 set if alarm on PV bit 2 set
d) bit 3 set if alarm on PV bit 0 reset
e) bit 4 set if alarm on PV bit 1 reset
f) bit 5 set if alarm on PV bit 2 reset
g) bit 6 set if notification on any change in the PV
h) bit 7 free - reset unless specified
(Default value = all reset).
Note: the bad PV and bad target conditions are always alarmed.
3) ALARM_DOT = Alarm delay-off timer [the same setting applies
individually to all items 7(a) through 7(g) plus the bad PV and
bad target alarms] (real) (in seconds) (default value = 4)
The PV bits will not have standard status bytes. The following is the
definition of their unique format:
bit 0 = Set if No-Com (same as standard)
1 = Set if Bad (same as standard)
2 = Set if not from process (same as standard)
3 = Set if PV has other than 1, and only 1, bit set (will match
across all three status bytes)
3 = Set if Alarmed because this bit is reset
4 = Set if Alarmed because this bit is set
5 = Set if Target has other than 1, and only 1, bit set (will match
across all three status bytes)
6 = Set if the corresponding bit in Target is Bad.
7 = Set if not equal to corresponding bit in Target
10 - BOOLEAN OPERATOR:
Some discrete blocks will include Boolean operators that can be used to
operate on discretes before they are fetched by the bit pointers servicing other
block parameters. For example, two input discretes may have to be "OR"ed
together before use as a bit in the SP.
The "Standard Block Functions" table will define how many Boolean operators
are included in the block.
--```,``-`-`,,`,,`,`,,`---
ELSE the output is reset.
3) XOR - IF either of the two inputs but not both are set THEN
the output is set
ELSE the output is reset.
4) Latch
a) IF Input 0 is set this cycle AND was reset last cycle THEN
set "a".
b) IF Input #1 is set this cycle AND was reset last cycle THEN
set "b".
c) Output = the value of Output from the last cycle.
d) IF Output = reset AND "a" is set THEN
set Output
e) IF Output = set AND "b" is set THEN
reset Output
5) 1-Shot Latch -
IF Input 0 is set this cycle AND
Input 0 was reset last cycle AND
Output was reset after the last cycle THEN
set Output
ELSE reset Output.
6) Delay On Timer -
a) IF Output was reset last cycle THEN
IF Input 0 is set this cycle THEN
IF timer is off THEN
start timer with the setpoint time.
leave Output reset.
IF timer is running THEN
IF timer has timed out THEN
set Output
IF timer has not timed out THEN
continue timer.
leave Output reset.
ELSE stop timer.
ELSE
IF Input 0 is reset this cycle THEN
reset output.
ELSE leave Output set.
7) Delay Off Timer -
a) IF Output was set last cycle THEN
IF Input 0 is reset this cycle THEN
IF timer is off THEN
start timer with the setpoint time
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
IF timer is on but not timed out THEN
continue timer and set Output.
ELSE start timer with setpoint value.
set Output.
ELSE Reset Output and reset the timer.
The timer will be considered to be "not expired" if there is any time left
when a cycle executes. For example, if an Off-Delay timer is set for 300
milliseconds and the node cycle time is set by CX = -2 (250 milliseconds), then
the timer will delay the action until the second cycle after reset; it will not
have expired after the first cycle; it will act exactly the same as if the time
were set to 251 or to 500 milliseconds.
Each Boolean operator defined above has one or two input bit pointers and one
Boolean operation. The Boolean Operators are always solved after the new Input
and Output Words are fetched. The Boolean Operators are always solved before any
other bit pointers are executed. The Boolean Operators are always solved in
order with Operator 0 first. The result is available to any of the input bit
pointers for the succeeding Boolean Operators and the other bit pointers in the
block but the state of the Boolean product is not available over Field Bus nor
off-block. It is also not available to any of the standard I/O Word pointers.
Note that the Boolean inputs can come from the low 16 bits of any on-block
parameter as well as from the 5 logical node words.
The Boolean operator has three words of configuration. The attached drawing
"Boolean Operator", illustrates the format of the words. The operator will
always have a definition word. If the word defines the Boolean Operator as an
"AND", "OR", "XOR", "Latch", or "1-Shot Latch", then the second and third words
are "detail words (pointer)" and define the two (1 for the 1-Shot Latch) bit
pointers.
The Boolean Operator will calculate a status byte for its output based on the
--```,``-`-`,,`,,`,`,,`---
stati of its inputs. There are four options defined in the configuration of each
bit pointer to influence this calculation. The four defined pointer options are:
1) Set Bad if No-Com
If this bit is set, a No-Com status for the input bit will cause
the fetched input bit to be marked as Bad. The No-Com status
will always be cleared in the fetched bit. The status of the
source bit will NOT be affected.
2) Clear Bad Stat.
If this bit is set, the Bad status will be unconditionally reset
in the fetched input bit. The status of the source bit will NOT
be affected.
3) Clear Override
If this bit is set, the not-from-process status will be
unconditionally reset in the fetched input bit. The status of
the source bit will NOT be affected.
4) Set Override
If this bit is set, the not-from-process status will be
unconditionally set in the fetched input bit. The status of the
source bit will NOT be affected.
0 - FP 0 - NFP AND FP
1 - FP 0 - NFP AND NFP
0 - FP 1 - NFP AND FP
1 - FP 1 - NFP AND FP
0 - NFP 0 - FP AND FP
1 - NFP 0 - FP AND FP
0 - NFP 1 - FP AND NFP
1 - NFP 1 - FP AND FP
0 - FP 0 - NFP OR FP
1 - FP 0 - NFP OR FP
0 - FP 1 - NFP OR NFP
1 - FP 1 - NFP OR FP
0 - NFP 0 - FP OR FP
1 - NFP 0 - FP OR NFP
0 - NFP 1 - FP OR FP
1 - NFP 1 - FP OR FP
0 - FP 0 - NFP XOR FP
1 - FP 0 - NFP XOR FP
0 - FP 1 - NFP XOR NFP
1 - FP 1 - NFP XOR NFP
0 - NFP 0 - FP XOR FP
1 - NFP 0 - FP XOR NFP
0 - NFP 1 - FP XOR FP
1 - NFP 1 - FP XOR NFP
If the Boolean Operator is defined to be a 1-Shot Latch, then the second word
is a "detail word (pointer)" that defines the source of the single input bit.
The third word is not needed but it must be present in order to retain the
expected order of the configuration words. The contents of the word are not
significant.
All of the configuration words for the Boolean operators in one block are
reported under one parameter; the three words defining operator 0 are reported
first and the operator definition word is reported first in each set of three.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Null Algorithm
SUMMARY:
Required in all Standard Field Devices that support more than one type of
block and is then the default block type. Occupies the space of one Standard
function block and clearly identifies the block as being out of service.
Supports only basic required parameter and has no options.
BASIC ALGORITHM:
This block will force its null data base into the basic function block
Parameters that are identified in Table 1 of the paper "Array of Basic
Parameters". It adds no parameters of its own.
At each cycle, the block will force its REQ_MODE and ACTUAL_MODE to O/S. The
block will consume the entire time allocated to one function block in a timed
standard logical node. It will generate no alerts.
GENERAL DESCRIPTION:
The null algorithm is useful for several purposes. First, it is the default
algorithm in all logical nodes that support more than one type of function block.
When such a Field device is first activated but not downloaded with
configuration, all of its function blocks will be of this type.
The user can use the null block type for several purposes:
- force one block time in the cycle of function blocks
- clearly identify a function block that is to be reserved (this
is the application that requires access to the block descriptor).
- clearly identify the function blocks that have not (yet) been
configured.
- clearly identify the spare function blocks.
The block must support all of the parameters that are "basic" so that higher
level devices do not ever have to consult the TO_TYPE before accessing those
parameters. In addition, it will be useful to have access to the block
descriptor for entering appropriate "comments".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Analog
Analog Input
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SUMMARY:
Drives, and accepts measurements from, SI hardware. Converts major scalar
signal from measurement units to user selected units with linearization, damping,
clamping, and mode control. Converted major measurement provided as OUTPUT0.
Also converts major signal to user calibration units. Can optionally provide up
to three auxiliary measurements as Outputs 1-3. Can optionally accept, through
INPUT1, an analog value needed for generating the primary measurement.
BASIC ALGORITHM:
- Optionally provide a path for an external value from INPUT1 to the
measuring circuit, complete with units conversion and limiting.
- Apply linearization, damping, user unit conversion, and clamping to
the measurement of the major scalar input (INPUT0) to produce OUTPUT0.
- Apply calibration unit conversion to the measurement of the major
scalar input to produce the "calibration unit value" (CUV).
- Optionally apply linearization and user unit conversion to the
instrument limits of INPUT0 to obtain the "User Units Value" (UUV)
range in user units.
- If the optional triggered calibration procedure is supported, the
procedure will operate on the "CUV" value. The bias values calculated
by the procedure will be applied to the hardware value BEFORE it is
identified as INPUT0.
- Make any applicable auxiliary measurements available as Outputs 1, 2,
--```,``-`-`,,`,,`,`,,`---
Bit 8 = 0 = OUTPUT3 limited to OUT3_LO.
1 = OUTPUT3 limited and goes Bad at OUT3_LO.
Bit 9 = the same for the high limit of OUTPUT3.
Bit AH = 0 = EV simply limits if below EV_LO.
1 = EV goes Bad if below EV_LO.
Bit BH = the same for the high limit of EV.
Bit CH = set Man mode if INPUT1 = Bad.
Bit DH = reserved.
Bits EH & FH = manufacturer specific.
- OPTION_INT0 = user options integer #0.
= 8 bit unsigned integer, indirectly writeable, static data base.
= linearization type - integer value.
AGENT TYPES:
The following agent types will be associated with the Input and Output words:
Note: "Active" agents will include Off-Field Bus types if, and only if,
the logical node supports that type.
INPUT0: Null, Physical I/O (SI type)
INPUT1:
IF TIME_CRIT0, bit 0 = set and bit 1 = reset:
Null, Immediate, Writeable.
IF TIME_CRIT0, bits 0 and 1 = set:
Null, Immediate, Writeable, and all Active except
physical I/O and revision number versions.
OUTPUT's 0-3
IF TIME_CRIT0, bit 8 = reset:
Null, Immediate.
IF TIME_CRIT0, bit 8 = set:
Null, Immediate, and all Active except physical I/O and
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
516
ALGORITHM OPERATION:
Refer to the pseudocode for the details of the operation of this algorithm.
- The user-entered desired hardware filter time is moved to hardware (if
it is alterable); the hardware value is unconditionally moved to the
data base parameter showing the hardware filter time.
- Convert INPUT1 to ESI units, limit it, and move it to the manufacturer
specific processing area.
- Bring in the value of the major measurement and apply the triggered
calibration bias, generating INPUT0. Alternately, if triggered
calibration is triggered, back-calculate the calibration bias.
- Form INPUT0's status byte from the hardware indication of Good/Bad:
+ set bits 1 (Bad) and 2 (Not-from-Process) if Bad
+ set bit 4 (Failed) if the hardware has failed.
+ always set bit 5 (No-path-to-Process)
+ always reset all of the other 4 bits.
- Set INPUT0's status byte, bit 1 (Bad) if:
+ Bit 0 of OPTIONS0 is set and INPUT0 <= IN0_LO
+ Bit 1 of OPTIONS0 is set and INPUT0 >= IN0_HI
- Set INPUT0's status byte, bit 6 (ATW-h) if:
+ INPUT0 >= IN0_HI
- Set INPUT0's status byte, bit 7 (ATW-l) if:
+ INPUT0 <= IN0_LO
- Limit INPUT0 to the IN0_LO to IN0_HI range.
- Convert INPUT0 to "CUV" - calibration unit value - and generate its
status byte.
- Linearize and damp INPUT0 to generate "LV" - linearized value and
generate its status byte.
- Convert LV to "UUV" - User unit value and generate its status byte.
- Clamp UUV to form "CV" (clamped value) and generate its status byte.
Set CV Bad if:
+ Bit 2 of OPTIONS0 is set and CV = LIM_LO
+ Bit 3 of OPTIONS0 is set and CV = LIM_HI
- As a function of mode, move CV and its status byte into OUTPUT0,
resetting status bits 4, 6, and 7 if the agent is active.
- Move any auxiliary variables to OUTPUT's 1-3, resetting their status
bits 4, 6, and 7 if the agent for the output is active.
In yet another alternate case, the value of INPUT1 may be Good but the
INPUT1 conversion may fail. In that event, EV will be marked Bad but
its value will be left unchanged. Similarly, EV may be at or beyond
its limit. It will be clamped at the limit and optionally marked Bad
(based on Bits AH or BH of OPTIONS0).
If EV has a valid value but is marked Bad, its value will be passed to
the measurement circuit and the major measurement returned by the
circuit will be marked Bad. Those auxiliary variables that depend on
the EV will also be marked Bad.
- Bad may be set for the major measurement by the hardware input to
INPUT0. It may also be set if INPUT0 is at or beyond the instrument's
range limit and OPTIONS0, bit 0 or 1, whichever is applicable, is
set.
The Good/Bad of INPUT0 flows serially to the LV, UUV, and then CV. At
each step, the flowing Good/Bad status will be set Bad if the
operation fails. If the value exceeds the output limits, it will be
limited and can optionally be marked Bad. In Auto mode, the status of
CV is placed into OUTPUT0.
--```,``-`-`,,`,,`,`,,`---
+ bit 0 (No-Com) may be set if the INPUT1 agent is active.
+ they are reset on transition to O/S mode, not during O/S mode.
DETAILS OF PARAMETERS:
- Hardware Value
+ Physical node data base, parameter "I/O_VALUE".
+ Supported if bit 3 in TIME_CRIT0 is set.
+ Defined in the physical node as 16 bit unsigned integer.
+ Major measured input, before triggered calibration bias, provided
as a fraction of the full instrument range (all bits to the right
of the radix point).
- I/O Parameters:
+ INPUT0 = hardware value with optional triggered calibration bias.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
= read-only
= 4 byte floating point, with status
= in ESI units.
+ INPUT1 = present if, and only if, bit 0 set in TIME_CRIT0.
--```,``-`-`,,`,,`,`,,`---
Note: if bit 8 is set in TIME_CRIT0, then the OUTPUT's can support
an active agent. Therefore, they need a cyclic read buffer
and the local variable versions of the OUTPUT value (see page
10 of the paper "Function Block Structure").
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
519
+ EV
This set of parameters is present if, and only if, bit 0
is set in TIME_CRIT0 options bit string.
@ External Value = EV = INPUT1 converted to ESI units.
= 4 byte floating point, with status
= in ESI units.
= dynamic data base, read-only
@ EV_LO and EV_HI = instrument limits for EV
= same ESI units as EV
= 4 byte floating point, without status
= ROM
@ EVM and EVB = INPUT1 conv. slope and bias constants.
= 4 byte floating point, no status.
= static data base, indirectly writeable.
EVM units not stated.
EVB in units of EV.
@ EV_SI_UNIT0 and EV_SI_UNIT1 = ESI units for EV
= ROM
(See page 7, "Human I/F Considerations" paper.)
+ INPUT0
@ HFILTER = the actual hardware first order filter time.
= 16 bit unsigned integer - value in milliseconds.
= always present, even if filter not adjustable.
= read-only
@ IN0_LO and IN0_HI = instrument limits for INPUT0
= exist if, and only if, bit 2 of TIME_CRIT0 is set.
= in the same ESI units as INPUT0.
= 4 byte floating point, no status, read-only if
triggered calibration is supported, else ROM.
Note: if triggered calibration is supported, then these
values must include the effect of the bias terms.
The values must correspond to INPUT0 at the
limits. In addition, these are to be hard
limits, not nominal limits nor necessarily the
range for which accuracy is quoted.
@ IN0_SI_UNIT0 and IN0_SI_UNIT1 = ESI units for INPUT0
= ROM
(See page 7, "Human I/F Considerations" paper.)
+ CUV
@ Calibration Unit Value = CUV = INPUT0 converted to user
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
521
is set.
= in the same ESI units as OUTPUT3.
= 4 byte floating point, no status, ROM
@ OUT3_SI_UNIT0 and OUT3_SI_UNIT1 = ESI units for OUTPUT3
= ROM
+ Parameters of the Triggered Calibration procedure (if, and only
if, TIME_CRIT0, bit BH is set).
+ As many sets of parameters of the Standard limiting function
parameters as there are Output's (if, and only if, TIME_CRIT0,
bit 9 is set) (operates on CV and OUTPUT1-3).
+ Parameters of the Standard PV function (if, and only if,
TIME_CRIT0, bit CH is set).
ALERT SUPPRESSION:
- In the scheme to suppress multiple hardware failure alerts, OUTPUT2
will be superior to OUTPUT3 and OUTPUT3 will be superior to OUTPUT1.
- A failure of INPUT0 will unconditionally suppress any alerts for
OUTPUT0-3 that occur in the same cycle.
- A failure of INPUT0 is reported only if bit 0 in FAIL_OPT0 is set.
HARDWARE FILTER:
- A manufacturer may allow the user to adjust a hardware first order
filter on the major measurement. This filter is intended to be
optimized for the best measurement of the process signal by the
instrument; it is not expected to be optimized for process control
(Note that damping for control should be done after linearization.)
- Since this filter is optional, there is a need to retain the optimum
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
OPTIONAL INPUT1
Some devices need an external variable in order to measure their major
variable. For example, some devices that measure the temperature of the contents
of a tank must be supplied with the tank level. INPUT1 will be used to introduce
such a value.
The model of the Standard analog input block with INPUT1 is based on the
assumption that the value that is provided to the manufacturer specific portion
of the block is in the ESI units specified by the manufacturer. Therefore, the
INPUT1 value must be converted from user units to ESI units as shown in Figure 1.
The equation that will be used for the conversion is:
EV = EVM * INPUT1 + EVB
where EVM = the INPUT1 to EV unit conversion multiplier.
EVB is the INPUT1 to EV unit conversion bias.
The converted value, in ESI units, is called the "External Value" (EV). The
lower and upper limits of EV are set by the ROM values EV_LO and EV_HI; they are
called the instrument limits for EV. If INPUT1 is supported, then the value of
EV will be forced to be between EV_LO and EV_HI. Options bits AH and BH in
OPTIONS0 will be supported; an outlying value of EV will be marked Bad according
to the options selected by the user in bits AH and BH.
TRIGGERED CALIBRATION:
If the field device supports triggered calibration (bit BH in TIME_CRIT0),
then it will accept the calibration points in terms of the units of CUV. The
bias will be applied to the major measurement value before it is identified as
INPUT0. In order to retain correspondence, the values of IN0_LO and IN0_HI will
also have to be adjusted.
--```,``-`-`,,`,,`,`,,`---
obtained from the hardware is at a range limit, it may be marked Bad at the
option of the user. The option for INPUT0 is defined in bit 0 and 1 of the
OPTIONS bit string while the options for OUTPUTs 1-3 are defined in bits 4 - 9 of
the same parameter.
LINEARIZATION PROCEDURE:
- Correct for the non-linearity of the physical measuring system
using a user-selected linearization procedure. The manufacturer
indicates which of the procedures defined in Table 1 are supported
using N_TIME_CRIT0 and, optionally, any of N_TIME_CRIT1-3. The user
selects one of them by configuration by setting the integer identifier
of his choice in OPTION_INT0.
- Some of the linearization methods use the bias term LVB. Its ESI
units can be configured by the user. When LVB is active in the chosen
linearization equation, its ESI units descriptor and attributes will
be transferred from LVB_SI_UNIT0 and LVB_SI_UNIT1 to LV_SI_UNIT0 and
LV_SI_UNIT1 respectively. Otherwise, the values in the LVB locations
will be ignored and the block will set the values of the LV locations
based on the linearization method chosen.
DAMPING PROCEDURE:
- The "software" filter allows the user to apply a first order filter
to remove high frequency noise from the measurement value for purposes
of improving process control as opposed to signal measurement.
- The first order exponential filter will follow the rules for filters
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
523
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
where UUM = the unit conversion multiplier.
UUB is the unit conversion bias.
- The multiplier UUM is not always positive. For example, if LV is a
pressure in Pag (Pa gauge), and the user displays UUV in "inches Hg
vacuum", UUM will be negative. All references to "HI" and "LO" refer
to the algebraic value of the variable in its own units. For
example, INPUT0 could be near its HI limit and CV near its LO limit
simultaneously.
CLAMPING PROCEDURE:
The clamp function is a minor extension of the Standard block function called
limiting. It simply adds options (bits 2 and 3 in OPTIONS0) that allow the
following logic:
Retain the previous setting of the CV Bad status bit.
The status of CV = the status passed from UUV.
IF the value of UUV is within limits, then
The UUV value is moved to CV.
IF bit 2 in OPTIONS0 is set, then
IF CV was Bad after the last execution, then
IF [(CV - LIM_LO) < LIM_DEADBAND], then
mark the status of CV Bad
IF bit 3 in OPTIONS0 is set, then
IF CV was Bad after the last execution, then
IF [(LIM_HI - CV) < LIM_DEADBAND], then
mark the status of CV Bad
ELSE
The value of CV is set to the exceeded limit, LIM_LO or LIM_HI.
IF bit 2 in OPTIONS0 is set, then
IF the low limit is exceeded, then
mark the status of CV Bad
IF bit 3 in OPTIONS0 is set, then
IF the high limit was exceeded, then
mark the status of CV Bad
Note: any time Bad is set, "Not-from-Process" is also set.
If the user options are configured to "go Bad", the value of CV will be
marked Bad when a limit is exceeded and will remain Bad until UUV moves into the
good range by more than the configured deadband. This is done in order to avoid
chattering of the status byte and the "Bad" alarm.
There is no option to set the block mode to Man when OUTPUT0 goes to "Bad".
Since OUTPUT0 of an AI block may be used in a number of different applications in
parallel, including the normal process history collection system, the "go to Man"
option is provided at the blocks that would use OUTPUT0 (when appropriate) rather
than at the producer. Note that INPUT1 is an example of such a user.
UUV RANGE:
The instrument range is given by IN0_LO and IN0_HI. However, these two
values are in ESI units: units usually not very meaningful. As an option, the
manufacturer may choose to set bit 4 of TIME_CRIT0 and provide UUV_LO and UUV_HI.
These two values are calculated by passing IN0_LO and IN0_HI through
linearization and user unit conversion. Note that these conversions are modeled
as being done every cycle because the type of linearization and the coefficients
for user unit conversion can change at any time. Also, the value of IN0_LO and
IN0_HI will change if triggered calibration is executed.
GENERAL DESCRIPTION:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
An Analog Input (AI) block is used to measure one major physical variable
that is a scalar value, such as flow, temperature, pressure, or angle position.
It is associated, via. its hardware pointer, to a set of physical node hardware
of the scalar input (SI) type. There is hardware and software in the signal flow
of a measuring device, as shown in Figure 1. The physical variable is sensed
with a "primary sensor", typically using industry standard or industry-accepted
techniques. For example, an orifice plate for flow measurement, a thermocouple
for temperature measurement, a mechanical encoder for shaft angle, and so forth.
This Standard allows the major signal to be in any convenient units but
absolutely requires ESI units. It is expected that the signal type will be
designed to correspond to the recommended calibration signal. For example, most
temperature transmitters are calibrated with a millivolt generator, not with a
constant temperature bath. In addition to the major measurement, the MSP
provides information for the status byte associated with the major measurement
and the value and status of the auxiliary variable(s). The value of the
auxiliary variables are not accessible by Field Bus at this point. They can be
in any form.
The AI block receives the signals from MSP through the INPUT0 connection, a
hardware pointer. If the device supports auxiliary variables, they are included
as part of the INPUT0 connection. Physical devices that can support multiple
major SI signals would necessarily allow multiple AI blocks.
The connection between the MSP and the AI block is bi-directional. The data
flow in the reverse direction is, for example, data for setting the hardware
filter, triggering data conversion, and/or calibration of the MSP, as discussed
below. If the block supports INPUT1, then its value and status may flow to the
MSP. The bias values calculated by the triggered calibration procedure will be
added into the major value measurement before it exists as INPUT0.
The manufacturer may choose to design the Field device in such a way that the
hardware and the communication logic can continue to operate despite the fact
that the logic engine that executes the function blocks has failed. Given such a
design, the manufacturer may set bit 3 in the TIME_CRIT0 options bit string to
indicate to a higher level device that it may be able to read the value of the
input directly from the hardware in an emergency. When that functionality is
provided, the value of the major measurement will be found in the physical node
parameter "I/O_VALUE". The parameter will be a 16 bit unsigned integer; the
value is to be taken as a fraction of the instrument's range. The parameters
IN0_LO and IN0_HI define the range of INPUT0 and of this value. The
manufacturers of higher level devices are able to convert the value to a more
useful indication for the operator.
OUTPUT's 1-3 have status bytes. Bit 1 (Bad) and bit 2 (Not-from- Process)
will be set if the hardware indicates that the value is not good or, at the
user's option, at the range limit. Bit 4 will be set any time the hardware
recognized that the measuring equipment has failed. Bit 5 (No-path-to-Process)
will be set any time the block is not in O/S mode. Bits 6 or 7 will be set if the
value is at a limit. Status bits 0 and 3 will be reset.
When the block transitions to O/S mode, bits 1, 2, and 5 will be set
immediately after the transition. In subsequent cycles of O/S operation, all
values and status bytes will be left unaltered by the algorithm.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
526
Clamping is applied to the UUV to produce the "clamped value" (CV). The
clamping is simply the standard block function of limiting plus a user option to
set the value Bad if it is limited. The option is provided independently at the
low and high limits.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Finally, the CV is passed through mode control to the OUTPUT0 value. If the
mode is Auto, the value of CV is moved to OUTPUT0. If the mode is higher
priority than Auto but not O/S, the value in OUTPUT0 is left unaltered except bit
2 in the status (Not-from-Process) will be set. The value will be left unaltered
but marked "Bad" and "Not-from-Process" when the mode transitions to O/S mode.
For subsequent cycles in O/S, any value and status in the OUTPUT's will be left
unaltered.
All four of the values in this series are 4 byte floating point data types
and all have status bytes associated with them.
The Standard types of linearization are specified in Table 1. The types are
prepared for the primary sensors that are industry standards or are widely
accepted by the industry. When a vendor-specific primary sensor that is non-
linear is used, the required linearization may be made by the MSP with the
configured linearization being set to unity. Alternately, it may use piecewise
approximation (multi-segment curve) or a polynomial in the linearization section.
It is necessary to define the units for LV. In many cases, the units are
known explicitly from the linearization method: they are either defined by the
method or are identically the same as the units of INPUT0. In other cases, the
units are only known to the configurator. However, in all of these latter cases,
the term LVB appears in the linearization equation and its units must be the same
as the units of LV. Therefore, the following procedure will be used in a
Standard AI block:
- the LVB term will always be supported in the data base (as well as
LVM and LVC)
- there will be SI_UNITx parameters to describe the units (ESI) of LVB.
- if the linearization method does not use LVB, the above parameters
will be ignored (and left unchanged). The algorithm will provide the
--```,``-`-`,,`,,`,`,,`---
will be moved, by the block at every cycle, into the SI_UNITx of LV.
This will be done even if the value of LVB is equal to zero.
- The SI_UNITx of LV will always be read-only.
The trigonometry functions, sine or cosine, may be used to convert the angle
data received from a shaft encoder to an expression of linear position.
The second portion of the "Linearization and Damping" step provides a simple
first-order exponential filter for the result of the linearization calculation.
It is absolutely required that the linearization be done first, then the damping.
Note that the first two terms of the factorial series expansion of the first
order exponential is defined to be the correct implementation of an exponential
filter - an exact solution is defined to be incorrect. The filter time is given
in seconds.
in the same way that the block static data base revision number is
initialized. The number will be incremented every time the Output is
updated. The number can be read by an agent of the type "revision
number". The number will simply rollover when it reaches full scale.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
529
of 0.003850.
30H 0 Platinum 50 Ohms - IG LV = f(INPUT0); f = Plat. R/B Eq.
31H 1 Platinum 50 Ohms - Comm LV = f(INPUT0); f = Plat. R/B Eq.
32H 2 Platinum 100 Ohms - IG LV = f(INPUT0); f = Plat. R/B Eq.
33H 3 Platinum 100 Ohms - Comm LV = f(INPUT0); f = Plat. R/B Eq.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
34H 4 Platinum 200 Ohms - IG LV = f(INPUT0); f = Plat. R/B Eq.
35H 5 Platinum 200 Ohms - Comm LV = f(INPUT0); f = Plat. R/B Eq.
36H 6 Platinum 500 Ohms - IG LV = f(INPUT0); f = Plat. R/B Eq.
37H 7 Platinum 500 Ohms - Comm LV = f(INPUT0); f = Plat. R/B Eq.
--```,``-`-`,,`,,`,`,,`---
Figure 1
ANALOG INPUT ALGORITHM
Physical Variable
Primary Sensor
Primary Signal
Vendor Specific
Transmitter Sensor
Transmitter Sensor Signal
Front-end Circuit & ADC
Digitized signal
Mfg's Signal Processing
Pointer Connection
Input 0
(SI Units) Calibration
--```,``-`-`,,`,,`,`,,`---
CV
(Clamped
Man
INPUT1 Auto O/SValue)
Conversion
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Analog In Pseudocode
The Analog Input block has several optional functions. The following
pseudocode includes all of the options. If the options bit string indicates that
one or more of the options are not supported, then the associated sections of the
following pseudocode can be ignored if there is no affect on the remaining
supported functions.
The pseudocode presented below provides the total definition of the mode and
status byte manipulation. It includes all of the applicable portions of the
pseudocode provided as Attachment 1 - "Status Logic" to the paper "Function Block
Structure".
The manipulation of the two bit strings that report alarms and the 2 bit
strings that show unacknowledged alarms are not detailed in the pseudocode.
However, the bit strings are shown being written to the public data base at the
end of the procedure. All Standard implementations of the AI block will ensure
that these bit strings are updated coherently. Note that all alerts are released
to the User Layer Support Services immediately prior to the updating of the bit
--```,``-`-`,,`,,`,`,,`---
strings.
This pseudocode assumes that all agents are processed according to the
description in the paper "Agents". It assumes that input values are present hen
needed.
The pseudocode presented here uses the variable names defined in the
algorithm description paper. In addition, it uses the following notation:
MSP = the Manufacturer's Signal Processing section of the hardware.
T_VALUE = a temporary value without a status byte
T_STAT = a temporary status byte
ALGORITHM PSEUDOCODE:
START
' Internal parameters available to this code:
' FORCE_INIT (see the paper "Function Block Structure", page 24)
' OLD_CLAMPx
' (only exists if bit 9 in TIME_CRIT_0 is set - output
' limiting/clamping is supported)
' x = 0-3 for OUTPUT0-3
' 0 = no old clamp
' 1 = old low clamp
' 2 = old hi clamp
' IF TIME_CRIT0, bit 0 = set, then
' START_BAD_COUNT must be supported.
' This is the internal counter that is initialized to
' START_BAD_LIMIT (see the AI algorithm definition,
' page 7).
' SUPPRESS = control integer used to implement alert suppression
' as defined in the paper "Function Block Structure",
' page 23.
' 0 = no suppression
' 1 = suppress "Bad"
' 2 = suppress "Fail" and "Bad"
'
IF ACTUAL_MODE <> O/S, then
IF the hardware needs to be triggered ahead of time to snap a sample,
. then
' Note: If a user-configurable hardware filter or INPUT1 are
' supported, this is the least satisfactory time
' location to trigger the hardware that will satisfy the
' requirement of a Standard AI block.
. At the appropriate time to accomplish the timing required in the
. paper "Data Owner Structure - Hardware", page 9:
. IF N_TIME_CRIT0, bit 0 = set, then
. IF FORCE_INIT >= 2, then
. Hardware filter time constant = 0 or a manufacturer-
. set minimum reasonable value.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
534
'
' read required variables associated with the PV function
. T_FREE_STATIC = FREE_STATIC ' free static variable
. T_FREE_DYN = FREE_DYN ' free dynamic variable
. T_TARGET_PARAM = TARGET_PARAM ' param. # of param. = target
. IF TIME_CRIT0, bit CH = set, then
' read the variables associated with the PV function that are
' present only if the function is supported.
. T_PV_PARAM = PV_PARAM ' param. # of param. = PV
. T_HIHI_ALARM = HIHI_ALARM ' hi-hi PV alarm point
. T_HI_RPT_ALARM = HI_RPT_ALARM ' high repeat alarm setting
. T_HI_ALARM = HI_ALARM ' high PV alarm point
. T_LO_ALARM = LO_ALARM ' low PV alarm setting
. T_LO_RPT_ALARM = LO_RPT_ALARM ' low repeat alarm setting
. T_LOLO_ALARM = LOLO_ALARM ' lo-lo PV alarm setting
. T_TARG_FILTER = TARG_FILTER ' target filter time constant
. T_DEV_ALARM = DEV_ALARM ' deviation alarm setting
. T_DEV_LOGICAL = DEV_LOGICAL ' deviation config. logical
. T_COMP_DB = COMP_DB ' comparator deadband
Execute Run-time Agent Logic (see the paper "Agents").
' The I/O words are assumed to have been processed by the logic
' defined for agents. Therefore, each of the non-hardware
' I/O words has already been converted according to the agents
' logic. They are thus available as LV_x and will be calculated as
' LV_x.
Request User Layer Support Services to permit public access to memory.
'
' Certain main memory values are read-only to Field Bus (at least
' if the mode <> O/S) and did not have to be read in while
' memory access was blocked. They are:
' Manufacturer's Variables:
' TIME_CRIT0
' N_TIME_CRIT0
' Variables associated with the PV function:
' PV
' Variables associated with triggered calibration:
--```,``-`-`,,`,,`,`,,`---
' LO_CAL = the current low calibration point
' HI_CAL = the current high calibration point
' Block data:
' ACTUAL_MODE = actual mode
' INPUT0
' CUV, LV, UUV, CV
' However, their new values must be written during the mass
' write to maintain coherency. Note that there are 2 mass
' writes - one if the block changes to O/S mode, the other at
' the conclusion of the normal block calculations. They are
' mutually exclusive.
'
' *************************************************************
' *************************************************************
' ** **
' ** CLEANUP AFTER READING **
' ** **
' *************************************************************
' *************************************************************
'
IF T_REQ_MODE = O/S, then
. BREAK
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
IF FORCE_INIT = 3, then
. IF the agent type for INPUT0 is not supported, then
. BAD_CONFIG = set
. IF agent type for INPUT0 = Null, then
. FORCE_OS = set
. IF the pointer for INPUT0 > number of SI hardware points in the
. physical node, then
. BAD_CONFIG = set
. IF TIME_CRIT0, bit 0 is set, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
538
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
539
'
'
' *************************************************************
' *************************************************************
' ** **
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
' *************************************************************
' ** **
' ** CALCULATE INPUT0 **
' ** TRIGGERED CALIBRATION **
' ** **
' *************************************************************
'
IF T_STAT, bit 1 <> 1, then
. IF TC = set, then
' This pseudocode will assume that:
' There is a correction "LO_ADJ" at T_VALUE = LO_CAL
' and "ADJ_HI" at T_VALUE = HI_CAL. Then, the actual
' correction to a measured value, ADJ_MV, is obtained by
' linear interpolation or extrapolation based on the
' actual T_VALUE.
. T_LO_CAL = LO_CAL
. T_HI_CAL = HI_CAL
. ADJ_MV = the adjustment at the current T_VALUE - interpolated or
. extrapolated using LO_ADJ and T_LO_CAL with ADJ_HI and
. T_HI_CAL.
. IF T_TRIGGER has no bits set, then
. T_VALUE = T_VALUE + ADJ_MV
' Note: T_TRIGGER is not checked for more than 1 bit set
' because it can only be written indirectly - the
' DBWS can guard this parameter.
. ELSE ' triggered calibration is active
. IF [(the actual mode <> Man) OR (FORCE_INIT > 0)], then
. T_TRIGGER byte = reset
. T_VALUE = T_VALUE + ADJ_MV
. IF alerts are supported by this logical node, then
. Generate a "Wrong mode for Triggered Calibration"
. notification.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. ELSE ' mode = Man
. IF bit 0 or bit 2 set in T_TRIGGER, then
' Doing the low: must have sufficient span
' relative to the old high point.
. IF [(T_HI_CAL - T_LO_TARGET) < manufacturer set
. minimum], then
. BAD_CONFIG = set
. IF alerts are supported by this logical node,
. then
. Generate an "Insufficient Triggered
. Calibration Span" notification.
. IF bit 1 or bit 3 set in T_TRIGGER, then
' Doing the high: must have sufficient span
' relative to the old low point.
. IF [(T_HI_TARGET - T_LO_CAL) < manufacturer
. set minimum], then
. BAD_CONFIG = set
. IF alerts are supported by this logical node,
. then
. Generate an "Insufficient Triggered
. Calibration Span" notification.
. IF [(CUM = 0) OR (CUM = NaN) OR (CUB = NaN)], then
. ' Check for bad calibration units conversion
. BAD_CONFIG = set
. IF alerts are supported by this logical node, then
. Generate a "Bad Data - Can't Calibrate"
. notification.
. IF BAD_CONFIG = set, then
. T_TRIGGER byte = reset
. T_VALUE = T_VALUE + ADJ_MV
. BAD_CONFIG = reset
. ELSEIF (bit 0 or bit 2 set in T_TRIGGER), then
' Doing calibration at the low calibration
' point.
. C_INPUT0 = the back-calculated T_VALUE from
. ELSE
. T_LO_CAL = C_INPUT0
. LO_ADJ = C_INPUT0 - T_VALUE
. T_VALUE = C_INPUT0
. IF bit 2 is set in T_TRIGGER, then
' Apply the same change in bias
' to the high calibration bias.
. ADJ_HI = ADJ_HI + (LO_ADJ - ADJ_MV)
. ENDIF
. ELSEIF (bit 1 or bit 3 set in T_TRIGGER), then
' Doing calibration at the high
' calibration point.
. C_INPUT0 = the back-calculated T_VALUE from
. T_HI_TARGET and the calibration
. units conversion.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. IF [ABS(C_INPUT0 - T_VALUE) > manufacturer's
. limit], then
. T_VALUE = T_VALUE + ADJ_MV
. IF alerts are supported by this logical
. node, then
. Generate a "Bad Triggered Calibration"
. notification.
. ELSEIF [ABS(C_INPUT0 - T_VALUE) < manufacturer's
. limit], then
. T_VALUE = T_VALUE + ADJ_MV
. IF alerts are supported by this logical
. node, then
. Generate a "Trivial Triggered Calibration"
. notification.
. ELSE
. T_HI_CAL = C_INPUT0
. ADJ_HI = C_INPUT0 - T_VALUE
. T_VALUE = C_INPUT0
. IF bit 3 is set in T_TRIGGER, then
' Apply the same change in bias
' to the low calibration bias.
. LO_ADJ = LO_ADJ + (ADJ_HI - ADJ_MV)
. ENDIF
. ENDIF
. T_TRIGGER byte = all reset
. T_IN0_LO = hardware low range limit + adjustment at that
. value.
. T_IN0_HI = hardware high range limit + adjustment at that
. value.
. ENDIF
. ENDIF
. T_LO_TARG_ADJ = the adjustment at the current T_LO_TARGET value -
. the current T_LO_TARGET (in cal. units) is
. converted to ESI units using the calibration units
. conversion in reverse, then T_LO_TARG_ADJ is
. interpolated or extrapolated using T_LO_ADJ and
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. T_HI_TARG_ADJ = the adjustment at the current T_HI_TARGET value -
. the current T_HI_TARGET (in cal. units) is
. converted to ESI units using the calibration units
. conversion in reverse, then T_HI_TARG_ADJ is
. interpolated or extrapolated using T_LO_ADJ and
. T_LO_CAL with T_ADJ_HI and T_HI_CAL.
. ELSEIF TIME_CRIT0, bit BH = set, then
' This is the CX = MX case. If TIME_CRIT0, bit BH is set, the
' adjustment can not be lost when CX is changed to equal MX
' but no new triggered calibrations will be serviced.
. ADJ_MV = the adjustment at the current measured value -
. interpolated or extrapolated using LO_ADJ and T_LO_CAL
. with HI_ADJ and T_HI_CAL.
. T_VALUE = T_VALUE + ADJ_MV
. LO_TARGET = 0
. HI_TARGET = 0
' Note: these two parameter writes are allowed to violate
' the time coherent, blocked writes requirement.
. T_LO_TARG_ADJ = 0
. T_HI_TARG_ADJ = 0
. T_TRIGGER byte = all reset
. TC = set
--```,``-`-`,,`,,`,`,,`---
. ENDIF
ENDIF
IF T_STAT, bit 1 = reset, then
. Clear any "INPUT0 Bad" alarm in this function block.
IF T_STAT, bit 4 = reset, then
. Clear any "INPUT0 Failed" alarm in this function block.
. Clear the contribution to any physical node "Cold junction compensation
. failure" alarms or any failure alarms by this hardware point.
IF T_STAT, bit 4 = set, then
. IF FAIL_OPT0, bit 0 = set, then 'failure reported
. IF the failure is caused by a cold junction compensation
. circuit that serves more than one measurement point, then
. DO NOT set a function block alarm nor issue a function
. block alert.
. IF the physical node alert for cold junctions (12H) is
. not set, then
. Set the physical node alarm bits.
. Generate the physical node alert.
. ELSEIF the failure is associated with a single cold junction
. compensation, then
. DO NOT set a physical node alarm nor issue a physical
. node alert.
. Set the alarm bits for the function block's "cold
. junction compensation" alarm.
. Generate a "Cold junction compensation" function block
. alert.
. SUPPRESS = 2
. ELSEIF the failure is associated with any other part of the
. hardware, then
. IF the priority of the physical node alarm for the
. failure of this SI hardware is equal to, or greater
. than, the priority of the function block alarm for
. INPUT0 failure, then
. DO NOT set a function block alarm nor issue a
. function block alert.
. Set the alarm bits for the physical node alarm.
. Generate a physical node "SI hardware failure"
. alert.
. IF the priority of the physical node alarm for the
. failure of this SI hardware is less than the
. priority of the function block alarm for INPUT0,
. then
. DO NOT set a physical node alarm nor issue a
. physical node alert.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
544
. T_INPUT0
' T_VALUE may be NaN if the linearization and damping
' calculations fail.
. IF T_VALUE <> NaN, then
. IF dictated by the slope of the linearization equation, then
. exchange bits 6 & 7 in T_STAT
. T_LV = T_VALUE + T_STAT
. ELSE
. Set bits 1, 2, 6, and 7 in T_STAT
. ENDIF
. ENDIF
'
' calculate UUV
IF T_LV value <> NaN, then
. IF [(UUM = 0) OR (UUM = NaN) OR (UUB = NaN)], then
' Check for bad user units conversion
. BAD_CONFIG = set
. ELSE
. T_VALUE = "User Unit Conversion" operated on T_LV
' T_VALUE may be NaN if the units conversion fails.
. IF T_VALUE <> NaN, then
. IF UUM is negative, then
. exchange bits 6 & 7 in T_STAT
. T_UUV = T_VALUE + T_STAT
. ELSE
. Set bits 1, 2, 6, and 7 in T_STAT
. ENDIF
. ENDIF
'
' calculate UUV_LO and UUV_HI
IF TIME_CRIT0, bit 4 = set, then
' Support for the calculation of these two limits.
. IF BAD_CONFIG = set, then
. UUV_LO = NaN
. UUV_HI = NaN
. ELSE
. T_VALUE = "Linearization" (no Damping) operated on the value of
. IN0_LO
' T_VALUE may be NaN if the linearization and damping
' calculations fail.
. IF T_VALUE <> NaN, then
. T_VALUE = "User Unit Conversion" operated on T_VALUE
' T_VALUE may be NaN if the units conversion fails.
. T_UUV_LO = T_VALUE
. T_VALUE = "Linearization" (no Damping) operated on the value of
. IN0_HI
' T_VALUE may be NaN if the linearization and damping
' calculations fail.
. IF T_VALUE <> NaN, then
. T_VALUE = "User Unit Conversion" operated on T_VALUE
' T_VALUE may be NaN if the units conversion fails.
. T_UUV_HI = T_VALUE
'
' calculate CV
IF T_UUV <> NaN, then
. T_VALUE = value of T_UUV
. IF TIME_CRIT0, bit 9 = set, then
' device supports Output clamping
. IF T_LIM_LO = NaN, then
. IF OLD_CLAMP0 <> 2, then
. OLD_CLAMP0 = 0
. ELSE
. IF T_VALUE <= T_LIM_LO, then
. T_VALUE = T_LIM_LO
. Set bit 7 in T_STAT
. IF T_ACTUAL_MODE byte = Auto, then
. Set the alarm bits for an "OUTPUT0 Lo Limit" alarm.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
545
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
' The following procedure is detailed for OUTPUT1. The totally
' analogous procedure is to be followed for OUTPUT2 and OUTPUT3.
' The procedures are to be executed in the order:
' 1) OUTPUT2
' 2) OUTPUT3
' 3) OUTPUT1
' so that alert suppression will be in the rank order specified in the
' algorithm definition.
'
IF TIME_CRIT0, bit 5 = set, then
' bit 5 = set means OUTPUT1 is supported
' if cold junction temperature is an auxiliary value, then it must
' be here. Otherwise, if the instrument body temperature is an
' auxiliary value, then it must be here.
. T_STAT = 00100000B.
' Always set "No-path-to-process" in AI Outputs
. T_VALUE = value of auxiliary value 1 from the hardware.
. IF the hardware indicates that the measurement has "Failed", then
' The manufacturer may base "Fail" on indications from the
' hardware itself and/or on reasonableness checks of the
' measurement from the hardware.
'
' For a standard AI block, the hardware alert reporting will
' be consolidated with the function block alert reporting
--```,``-`-`,,`,,`,`,,`---
. prepare the "Fail" alert.
. SUPPRESS = 1
. IF a failure in this auxiliary will inevitably lead to
. failures in the other auxiliary values, then
. SUPPRESS = 2
. IF TIME_CRIT0, bit 9 = set, then
' device supports Output clamping
. IF T_LIM1_LO = NaN, then
. IF OLD_CLAMP1 = 1, then
. OLD_CLAMP1 = 0
. ELSE
. IF T_VALUE <= T_LIM1_LO, then
. T_VALUE = T_LIM1_LO
. Set bit 7 in T_STAT
. Set the alarm bits for an "OUTPUT1 Lo Limit" alarm.
IF SUPPRESS < 1, then
. IF alert reporting supported, then
. prepare the "OUTPUT1 Lo Limit" alert.
SUPPRESS = 1
. IF OPTION0, bit 4 = set, then
. Set bits 1 and 2 in T_STAT
. OLD_CLAMP1 = 1
. ELSEIF OLD_CLAMP1 = 1, then
. IF [(LIM1_DB <> NaN) AND (T_VALUE < (T_LIM1_LO +
. LIM1_DB))], then
. IF OPTIONS0, bit 4 = 1, then
. Set bits 1 and 2 in T_STAT
. Set bit 7 in T_STAT
. ELSE
. OLD_CLAMP1 = 0
. ENDIF
. IF T_LIM1_HI = NaN, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
548
. IF OLD_CLAMP1 = 2, then
. OLD_CLAMP1 = 0
. ELSE
. IF T_VALUE >= T_LIM1_HI, then
. T_VALUE = T_LIM1_HI
. Set bit 6 in T_STAT
. Set the alarm bits for an "OUTPUT1 Hi Limit" alarm.
. IF SUPPRESS < 1, then
. IF alert reporting supported, then
. prepare the "OUTPUT1 Hi Limit" alert.
. SUPPRESS = 1
. IF OPTION0, bit 5 = set, then
. Set bits 1 and 2 in T_STAT
. OLD_CLAMP1 = 2
. ELSEIF OLD_CLAMP1 = 2, then
. ELSEIF [(LIM1_DB <> NaN) AND (T_VALUE > (T_LIM1_HI -
. LIM1_DB))], then
. IF OPTIONS0, bit 5 = 2, then
. Set bits 1 and 2 in T_STAT
. Set bit 6 in T_STAT
. ELSE
. OLD_CLAMP1 = 0
. ENDIF
. IF T_STAT, bit 1 = reset, then
. Clear any "OUTPUT1 Bad" alarm in this function block.
. IF T_STAT, bit 4 = reset, then
. Clear any "OUTPUT1 Failed" alarm in this function block.
. IF T_STAT, bit 1 = set, then
. Set the alarm bits for a "OUTPUT1 Bad" alarm.
. IF SUPPRESS < 1, then
. IF alert reporting supported, then
. prepare the "Bad" alert.
. SUPPRESS = 1
. IF FAIL_OPT0, bit BH = set, then
. T_STAT, bit 4 = reset
' FAIL_OPT can block the passing of the failure.
. IF the OUTPUT1 agent type = active, then
. reset bits 4, 6, and 7 in T_STAT
. IF OUTPUT1 agent type <> Null, then
. LV_OUTPUT1 = T_VALUE + T_STAT
'
' This is the end of the procedure for OUTPUT1.
'
IF TIME_CRIT0, bit 8 = set, then
FOR OUTPUT's 0 - 4
IF the output is supported, then
IF the output's agent is active, then
IF [(FORCE_INIT = 3) AND (OUTPUT = Bad)], then
Instruct the agent to not store the output
ENDLOOP
IF FORCE_INIT > 0, then
. IF FORCE_INIT = 3, then
. Decrement FORCE_INIT
. ELSEIF FORCE_INIT = 2, then
. IF there are NO No-Com counters that have counts but have not
. counted out, then
. FORCE_INIT = 1
. ELSE 'FORCE_INIT = 1
. Follow the rules for decrementing FORCE_INIT; see page 25 of the
. paper "Function Block Structure".
. ENDIF
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
549
' *************************************************************
' *************************************************************
' ** **
' ** WAIT FOR THE END OF BLOCK TIME **
' ** **
' *************************************************************
' *************************************************************
--```,``-`-`,,`,,`,`,,`---
'
IF CX > MX, then
. All of the extra block time must be placed here.
'
' *************************************************************
' *************************************************************
' ** **
' ** WRITE TO DATA BASE WHILE PROTECTED **
' ** **
' *************************************************************
' *************************************************************
'
Send alerts to the User Layer Support Services
Request User Layer Support Services to block access to memory.
' write block variables
REQ_MODE = T_REQ_MODE
ACTUAL_MODE = T_ACTUAL_MODE
Update ALERT_SET0, ALERT_SET1, ALERT_UNACK0, and ALERT_UNACK1 as necessary.
INPUT0 = T_INPUT0
CUV = T_CUV
LV = T_LV
LV_SI_UNIT0 = T_LV_SI_UNIT0
LV_SI_UNIT1 = T_LV_SI_UNIT1
UUV = T_UUV
CV = T_CV
IF highest priority bit set in ACTUAL_MODE = Auto, then
. OUTPUT0 = LV_OUTPUT0
IF TIME_CRIT0, bit AH = set, then
. IF highest priority bit set in ACTUAL_MODE = Auto, then
. Increment the OUTPUT0 revision number
IF [(TIME_CRIT0, bit 5 = set) AND (OUTPUT1 Agent Type <> Null)], then
. OUTPUT1 = LV_OUTPUT1
. IF TIME_CRIT0, bit AH = set, then
. Increment the OUTPUT1 revision number
IF [(TIME_CRIT0, bit 6 = set) AND (OUTPUT2 Agent Type <> Null)], then
. OUTPUT2 = LV_OUTPUT2
. IF TIME_CRIT0, bit AH = set, then
. Increment the OUTPUT2 revision number
IF [(TIME_CRIT0, bit 7 = set) AND (OUTPUT3 Agent Type <> Null)], then
. OUTPUT3 = LV_OUTPUT3
. IF TIME_CRIT0, bit AH = set, then
. Increment the OUTPUT3 revision number
IF TIME_CRIT0, bit 0 = set, then
. EV = T_EV
IF TC = set, then
' write the variables associated with triggered calibration
. LO_CAL = T_LO_CAL
. HI_CAL = T_HI_CAL
. LO_ADJ = T_LO_ADJ
. HI_ADJ = T_HI_ADJ
. LO_TARG_ADJ = T_LO_TARG_ADJ
. HI_TARG_ADJ = T_HI_TARG_ADJ
. TRIGGER = T_TRIGGER
IF TIME_CRIT0, bit 2 = set, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
550
. IF TC = set, then
. IN0_LO = T_IN0_LO
. IN0_HI = T_IN0_HI
' Note: it is assumed that these two parameters are in ROM
' when TC is not supported.
. IF TIME_CRIT0, bit 4 = set, then
. UUV_LO = T_UUV_LO
. UUV_HI = T_UUV_HI
'
' write the variables associated with the PV function
PV = T_PV
TARGET = T_TARGET
Request "Agent System" support of all OUTPUT agents.
Request USer Layer Support Services to again allow a public access to memory.
'
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Analog Output
SUMMARY:
Drives, and accepts measurements from, SO hardware. Selects Setpoint from
cascade inputs and delivers desired output signal to Manufacturer's Signal
Processing (MSP). Can optionally command "bypass" of normal MSP. Converts
response measurement to INPUT1. Can optionally provide up to three auxiliary
measurement as Outputs 1-3. Can optionally accept, through INPUT2, a discrete
status byte representing external measurements of limiting.
BASIC ALGORITHM:
- Select the current Setpoint.
- Reverse the Setpoint value if necessary, and deliver the value to
OUTPUT0 (the setpoint of the MSP).
- If the optional triggered calibration procedure is supported, the
procedure will operate on the appropriate signal by, and within, the
MSP.
- Optional ability to bypass normal MSP processing.
- Retrieve the response signal from the MSP, reverse it if necessary,
and store it as INPUT1.
- Optionally use INPUT2 as an external source of control windup
information.
- Make any applicable auxiliary measurements available as Outputs 1, 2,
and/or 3 in "extended international standard" (ESI) units.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
552
--```,``-`-`,,`,,`,`,,`---
DH) Servo switch register supported
EH) "Vapor Pressure" Auto-Format variable is supported.
FH) Extended variables present in this TO.
- N_TIME_CRITx - Non-time critical manufacturer's options #0 and #1.
= 16 bit binary string, read-only.
+ the statement is true if the assigned bit is set.
+ N_TIME_CRIT0 (required)
0) Auto-bypass supported.
1) Triggered calibration only works if CX > MX (Note: this bit
has no meaning if bit BH in TIME_CRIT0 is reset.)
2) User can request reaction to loss of Field Bus power.
(see bit EH in OPTIONS0)
3) set if OUTPUT1 = process fluid temperature (this bit has no
meaning if bit 5 in TIME_CRIT0 is reset).
4) set if OUTPUT2 = process fluid inlet pressure (this bit has
no meaning if bit 6 in TIME_CRIT0 is reset).
5) set if OUTPUT3 = valve pressure drop (this bit has no
FH = reserved.
2 = Linear
3 = Modified linear.
4 = Modified parabolic.
5 = Equal Percentage (default)
6 = Hyperbolic.
7 = Manufacturer specific.
- OPTION_INT1 - User's options integer #1.
= 8 bit unsigned integer, static data base, indirectly writeable.
= desired characterization type of valve - integer value.
This integer describes to the MSP the characterization that
is desired of the valve - the MSP is instructed by this integer
to transform the setpoint value to its power output in such a
way as to produce this characteristic rather than the valve's
native characteristic (defined above).
= if the value in the low 7 bits is a characterization that can be
chosen, according to N_TIME_CRIT1, then the high bit will be
reset, ELSE it will be set. The high bit may also be set for
certain specific unsupported combinations of OPTION_INT0 and
OPTION_INT1. If the high bit is set, the MSP will use a linear
transformation on the Setpoint signal, thus the total AO system
will operate with the "natural" characterization of the valve as
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
defined in OPTION_INT0 above.
= same code numbers and default as given for OPTION_INT0.
AGENT TYPES:
The following agent types will be associated with the Input and Output words:
Notes: this block does not support measurement Revision Numbers, hence
no agents of that type will be supported.
"Active" agents will include Off-Field Bus types if, and only
if, the logical node supports that type.
INPUT0:
IF TIME_CRIT0, bit 1 = reset, then
Null, Immediate, Writeable, and block active.
IF TIME_CRIT0, bit 1 = set, then
Null, Immediate, Writeable, and all Active except
physical I/O.
INPUT1: forced to Null.
INPUT2 (if supported):
IF TIME_CRIT0, bit 1 = reset, then
Null, Immediate, Writeable
IF TIME_CRIT0, bit 1 = set, then
Null, Immediate, Writeable, and all Active except
physical I/O.
OUTPUT0:
Null, Physical hardware (SO type).
--```,``-`-`,,`,,`,`,,`---
OUTPUT's 1-3
IF TIME_CRIT0, bit 8 = reset, then
Null, Immediate
IF TIME_CRIT0, bit 8 = set, then
Null, Immediate, and all Active except physical I/O.
ALGORITHM OPERATION:
Refer to the pseudocode for the details of the operation of this algorithm.
- The normal mode logic is used to select the current mode.
- The normal cascade signal logic is used to select the current Setpoint
from INPUT0, CAS_TL, or RCAS_TL.
- If necessary, the Setpoint is reversed, then moved to OUTPUT0.
- If bypass is supported and requested, signal the MSP to use its bypass
operation.
- If triggered calibration is supported and triggered, command the MSP
to back-calculate the calibration bias.
- Implement the special reaction to failures.
- If the MSP section indicates a failure, set the IMan mode bit in
ACTUAL_MODE and execute the failure handshake. Clear IMan when the
failure is acknowledged and cleared.
- Retrieve the response measurement (already corrected for the
triggered calibration bias if necessary), reverse it if necessary, and
enter the value as INPUT1. Generate the INPUT1 status byte from MSP
information.
- Form the status bytes for Setpoint, CAS_TL, RCAS_TL, and INPUT0 from
the hardware indication of Good/Bad and windup. Boolean "OR" the
information from INPUT2 if supported.
- Move any auxiliary variables to OUTPUT's 1-3, implementing the
optional limiting/clamping.
- Execute the PV function processing if it is supported.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
556
DETAILS OF PARAMETERS:
- Hardware Value
+ Physical node data base, parameter "I/O_VALUE".
+ Supported if bit 3 in TIME_CRIT0 is set.
+ Defined in the physical node as 16 bit integer.
+ Output command to hardware, provided as a fraction of the full
output range (all bits to the right of the radix point). By
definition, a value of 0.0 corresponds to -5% of the command
range and 1.0 corresponds to 105% of the command range.
+ A manufacturer may decide to limit this capability to three
or even only two states. See MSP_READ_ONLY for the details.
- I/O Parameters:
+ INPUT0 - normal analog cascade structure INPUT0.
= 4 byte floating point, with status.
= in percent of command range.
+ INPUT1 - analog value supplied from the hardware pointed to by
OUTPUT0's agent.
= writeable only in O/S mode.
= 4 byte floating point, with status.
= in percent of command range.
+ INPUT2 - present if, and only if, TIME_CRIT0, bit 0 is set.
= 16 bit register, only bits 4 (failed), 6&7 (Windup) are
used. Ignored if bit 1 (Bad) is set.
+ OUTPUT0 - Output to the SO hardware.
= Setpoint, reversed if necessary.
= actual Setpoint of MSP
= read only.
= 4 byte floating point, with status
+ OUTPUT1 - present if, and only if, bit 5 is set in TIME_CRIT0.
= value of auxiliary variable 1 in ESI units.
= indirectly writeable only in O/S mode.
= 4 byte floating point, with status
Note: if the process fluid temperature is one of the auxiliary
variables, it must be OUTPUT1.
+ OUTPUT2 - present if, and only if, bit 6 is set in TIME_CRIT0.
= value of auxiliary variable 2 in ESI units.
= indirectly writeable only in O/S mode.
= 4 byte floating point, with status
Note: if the process fluid inlet pressure is one of the
auxiliary variables, it must be OUTPUT2.
+ OUTPUT3 - present if, and only if, bit 7 is set in TIME_CRIT0.
= value of auxiliary variable 3 in ESI units.
= indirectly writeable only in O/S mode.
= 4 byte floating point, with status
Note: if the pressure drop between the inlet and the
outlet of the value is one of the auxiliary variables,
it must be OUTPUT3. If not, then, if the differential
pressure between the inlet and the minimum pressure
point of the valve is one of the auxiliary variables,
then it must be OUTPUT3.
Note: in the scheme to suppress multiple hardware failure alerts,
OUTPUT3 will be superior to outputs 1 and 2 while OUTPUT2
will be superior to OUTPUT1.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
557
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
If bit 8 is set in TIME_CRIT0, then those variables are
needed.
- Stored Internal Parameters:
+ MIN_TC0 - "Minimum" image of TIME_CRIT_0 defined above.
= required.
= 16 bit binary string, static data base, indirectly
writeable.
= see the paper "Data Owner Structures", page 22, for a
description of the exactly analogous variable in the
physical node.
+ IN2_OVER - present if, and only if, TIME_CRIT0, bit 0 is set.
= 8 bit discrete
= bit 0 set to request the ability to override the value and
status of INPUT2. When bit 2 is set, the INPUT2 cyclic read
buffer will be ignored and the location will become
writeable. Note that direct writes may continue.
+ Bypass Operation Parameters:
= present if, and only if, TIME_CRIT0, bit 2 is set.
+ BYPASS_REQ - request to execute bypass instead of normal
control.
= 8 bit discrete
= bit 0 set to request Bypass action
= reset immediately if OPTIONS0, bit AH is set.
+ BYPASS_LO - low range value for bypass operation.
= 4 byte floating point, indirectly writeable, static
memory
+ BYPASS_HI - high range value for bypass operation.
= 4 byte floating point, indirectly writeable, static
memory
+ BYPASS_SI_UNIT0 and BYPASS_SI_UNIT1 = ESI unit for the
two bypass range values.
= ROM
(See page 7, "Human I/F Considerations" paper.)
+ VAPOR_PRESS - present if, and only if, TIME_CRIT0, bit EH is
set.
= an Auto-Format variable containing 20 - 4 byte floating
point numbers.
= ten pairs of numbers, each pair consisting of an absolute
temperatures (in deg. K) followed by the fluid vapor
pressure (in Paa), in that order
+ SETPOINT - the Setpoint of the AO block - required.
= 4 byte floating point, with status, dynamic data base.
@ START_BAD_LIMIT = number of cycles after FORCE_INIT goes to
zero before the mode will automatically
switch to Auto with no good SETPOINT from
Cas and RCas and bit 2 of OPTIONS0 set.
= required, unsigned 8 bit integer, defaults --```,``-`-`,,`,,`,`,,`---
to 0.
= static data base, indirectly writeable
@ REPL_SP - present if, and only if,TIME_CRIT0, bit 4 is set.
= the value transferred to the Setpoint when mode falls
to Auto.
= 4 byte floating point, no status, static data base.
= in percent of command range.
@ CAS_TL
= the Cas transfer location.
= 4 byte floating point, with status, dynamic data base.
= in percent of command range.
@ RCAS_TL
= the RCas transfer location.
--```,``-`-`,,`,,`,`,,`---
@ OUT1_SI_UNIT0 and OUT1_SI_UNIT1 = ESI units for OUTPUT1
= static data base, indirectly writeable.
+ OUTPUT2
@ OUT2_LO and OUT2_HI = instrument limits for OUTPUT2
= exist if, and only if, bit 6 of TIME_CRIT0
is set.
= in the same ESI units as OUTPUT2.
= 4 byte floating point, no status, ROM
@ OUT2_SI_UNIT0 and OUT2_SI_UNIT1 = ESI units for OUTPUT2
= static data base, indirectly writeable.
+ OUTPUT3
@ OUT3_LO and OUT3_HI = instrument limits for OUTPUT3
= exist if, and only if, bit 7 of TIME_CRIT0
is set.
= in the same ESI units as OUTPUT3.
= 4 byte floating point, no status, ROM
@ OUT3_SI_UNIT0 and OUT3_SI_UNIT1 = ESI units for OUTPUT3
= static data base, indirectly writeable.
+ Parameters of the Setpoint limiting function.
+ Parameters of the Triggered Calibration procedure (if, and only
if, TIME_CRIT0, bit BH is set).
Note: the triggered calibration values will always be in terms of
INPUT1.
+ Parameters of the Standard PV function (if, and only if,
TIME_CRIT0, bit CH is set).
+ Parameters of the MSP section.
Note: none of these parameters are in the static data base.
All are addressed using the tag name of the AO block.
All bit descriptons apply to the bit = set state. The
converse applies if the bit = reset.
@ Parameters showing state and configuration.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~"
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
560
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
561
--```,``-`-`,,`,,`,`,,`---
@ Alert Registers:
* MSP_ALERT - MSP Alert Register:
= dynamic memory, read only - data passing from MSP
to AO and detail behind device alerts.
= required
Note: if a bit indicates a piece of information
that is not available, it is to be left reset.
Bit 0 - Actuator failure.
Bit 1 - Response failure.
Bit 2 - External Processor Failure.
IF MSP_READ_ONLY, bits 8 and 9 = 00B, then
' a pneumatic valve
Bit 3 - Low air header pressure
Bit 4 - Low air-set pressure
Bits 5&6 - Manufacturer specific
Bit 7 - Servo Saturated
IF MSP_READ_ONLY, bits 8 and 9 = 01B, then
' a hydraulic valve
Bit 3 - Low oil header pressure.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
562
--```,``-`-`,,`,,`,`,,`---
Bit 0 - Valve body temperature
Bit 1 - Packing temperature.
Bit 2 - Seal pressure.
Bit 3 - Seal temperature.
Bit 4 - Leak sensor.
Bit 5 - Cavitation sensor - calculated
(as a time delay)
Note: see the description of the
cavitation detection methods
later in this paper.
Bit 6 - Cavitation sensor - internal sound.
Bit 7 - Cavitation sensor - free air sound.
Bit 8 - Auto-Format variable 5.
Bit 9 - Auto-Format variable 6.
Bits AH - CH = reserved
Bits DH - FH = manufacturer specific.
--```,``-`-`,,`,,`,`,,`---
Bit 2 - Seal pressure.
Bit 3 - Seal temperature.
Bit 4 - Leak sensor.
Bit 5 - Cavitation sensor (calculation).
Bit 6 - Cavitation sensor - internal sound.
Bit 7 - Cavitation sensor - free air sound.
Bit 8 - Inlet pressure measurement.
Bit 9 - Minimum pressure measurement.
Bit AH - Outlet pressure measurement.
Bit BH - Process fluid temperature.
Bit CH - Process fluid density.
Bit DH - Process fluid flow.
Bit EH - reserved.
Bit FH - manufacturer specific.
+ I/O_AF (indices 0-3) - AO-Standard Auto-Format variables
- Present if, and only if, TIME_CRIT0, bit AH = set.
- Indices 0 and 1 = indirect writeable; indices 2 and 3 are
read-only.
- Indices 0 and 1 are assumed to be implemented in the
device's non-volatile memory.
- Indices 2 and 3 are assumed to be implemented in the
device's dynamic memory.
- In the data base of the field device - not in the Field Bus
static data base.
- Length of each depends on bits 8-BH in MSP_READ_ONLY
- Bits 8-BH define whole sets of parameters as supported or
not supported in these variables. If an individual
parameter is not supported in a set that is otherwise
supported, its value may be set to NaN.
- Stored in the hardware data base.
- The above 4 parameters are Auto-format variables. Since
they are completely defined, it is not necessary that they
actually contain any formatting data. Higher level devices
and hand held communicators can be built with the
information necessary to unformat these parameters. The
parameters are totally defined in Table 2.
MAN MODE:
Manual mode is not normally supported in an AO block. There are two options
that only function in Man mode: the Servo Switch Register and Triggered
Calibration (both described immediately next). If either function is supported,
then Man mode must be supported. Therefore, if bits BH and DH of TIME_CRIT0 are
both reset, the block will reset the Man mode permitted bit every cycle, else Man
mode will be supported but may be "not-permitted" by the user.
IMAN MODE:
IMan mode is not normally supported in an AO block. There are only two
conditions under which a manufacturer would include this functionality. First,
IMan will be set if 1) the MSP and/or hardware section of the AO system supports
BYPASS OPERATION:
The exact function of a "bypass" operation varies depending on the form of
the AO hardware. The Standard AO block optionally provides the data base support
for the operation, as an alternative to the normal control of the hardware output
signal:
- indicator of functional support - bit 2 of TIME_CRIT0.
- ability to prohibit requests for bypass - bit AH of OPTIONS0.
- indicator of ability to automatically start bypass upon certain MSP
failures - bit 0 of N_TIME_CRIT0.
- ability to prohibit auto-bypass - bit BH of OPTIONS0.
- hardware switch to request bypass - bit 7 of MSP_DEVICE_STAT.
- data base discrete to request bypass and indicate its current state -
BYPASS_REQ
- two static data base values to specify variables needed from the user
in order to execute bypass operations - BYPASS_LO and BYPASS_HI.
- manufacturer-fixed ESI units for the previous two variables -
BYPASS_SI_UNIT0 and 1.
Note that the normal mode indicators apply equally to either the normal or the
bypass operation; bypass is not a mode, it is an alternate control algorithm.
points on the OUTPUT0 range. Note that these two values can be inverted - the
low value may well be the larger number.
OPTIONAL INPUT2:
There are situations in which the AO system itself can not determine if the
machine being manipulated by the powered output is at its limits or not. In that
case, it is not possible to accurately determine the wind-up bits for the cascade
structure. This can be overcome by supporting INPUT2 in the AO block. This
input allows external discrete detectors of wound-up low and wound-up high to be
introduced using limit switches. It also allows an external indication of
failure to be introduced into the cascade information if it can be measured as a
discrete.
The first operation on the data in INPUT2 is to "OR" the values of bit 1 of
--```,``-`-`,,`,,`,`,,`---
each of the status bytes of bits 4, 6, and 7 in INPUT2 with the value in bit 1 of
INPUT2 itself. The result is placed in bit 1 of INPUT2's value.
Then, if bit 1 of INPUT2 is set, the value is IGNORED. Otherwise, the value
of bits 4, 6, and 7 are Boolean OR'ed with the stati reported by the MSP and the
result is set into the status of the Setpoint of the AO block.
If the option is supported and not prohibited, the maintenance person can set
Man mode in the normal way (writing to REQ_MODE), then issue commands to the
register by writing to MSP_SERVO_SWITCH.
--```,``-`-`,,`,,`,`,,`---
AUTOMATIC CALIBRATION:
An AO system that has a full function measurement of the response to the
output (sometimes the actual "stem position") may include a fixed relationship
between the measurement of the response and a value that directly corresponds to
the Setpoint. An alternative to this is to "learn" the relation between the
Setpoint and the response while the AO system is known to be working accurately.
The parameters of the AO block have been set up to support such a function
but the function itself is totally undefined. There is a bit that indicates that
Auto-Calibration is supported - MSP_READ_ONLY, bit 7. There is a bit to instruct
the MSP to begin the "Auto-Calibration" - MSP_SERVO_SWITCH, bit 3. There is a
bit to indicate that the function is in progress - MSP_SERVO_STAT, bit 0. It is
intended that the function be turned of by the same bit that turned it on. Any
implementation might also want to include a maximum timer for this function so
that it could not be left on accidentally but such a time is not included (or
needed?) in the data
base.
TRIGGERED CALIBRATION:
If the field device supports triggered calibration (bit BH in TIME_CRIT0),
then it will accept the calibration points in percent of range. The bias will be
applied by the MSP to the appropriate values, depending on the type of hardware.
Refer to the paper "Human Interface Considerations", page 19 for a description of
triggered calibration.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
566
FLOW INDICATION:
It is expected that some manufacturers may decide to supply Field Bus
equipment that can measure fluid flow from data collected at a valve. This is
intended to be supported by using an AI function block in the Field device, not
as an auxiliary measurement on the AO block. The device would provide a physical
hardware connection point for a SI that would provide the necessary data to the
AI block.
CAVITATION:
A useful measurement of cavitation, or incipient cavitation, at a valve would
be of great interest. The Standard AO block does not establish any particular
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
method of measuring this parameter but it does provide three alternate methods of
describing a parameter that might be provided by a Field device. They are:
1) Calculation - the manufacturer would probably require that the
user enter data for the fluid and possibly other
data needed to calculate the cavitation condition.
Then, appropriate actual data measured at the valve
would be used to dynamically calculate a measure of
cavitation. It is assumed that this measurement can
be expressed in terms of a Cavitation Index where
cavitation would be expected to be absent while the
index is less than unity, to be incipient at unity,
and to increase in severity as the index increased
above unity.
--```,``-`-`,,`,,`,`,,`---
that the manufacturer would mount a microphone-like
device in the valve. It is assumed that this device
would be isolated from the valve such that the
majority of the sound conducted to it would be that
carried by the free air. The units of measure for
this value will be sound pressure level, in units of
dBA.
OTHER PARAMETERS:
A number of other parameters have been identified as being needed by the AO
block to better perform some of its functions or as being measurements or derived
calculations that would be of use to the user. Unfortunately, these data have
not, or can not, be completely defined. Therefore, there is a high probability
that manufactures may wish to add parameters to those defined in this Standard.
In addition, the data could be entered as the Auto-Format variables that are
provided for each physical I/O TYPE. Again, they would naturally be considered
as part of the data base of the hardware, not of the AO block. They also would
have all of the benefits of the Auto-Format structure. In a physical device that
only had one SO hardware point, there would be no conflict with these parameters.
--```,``-`-`,,`,,`,`,,`---
However, if the physical device served more than one SO point, there would be a
conflict.
GENERAL DESCRIPTION:
An Analog Output (AO) block is used to manipulate one physical variable that
is a scalar value. It is associated, via. its hardware pointer, with a set of
physical node hardware of the scalar output (SO) type. There is hardware and
software in the signal flow of a controlling device, as shown in Figure 1. The
physical variable manipulates a machine, typically a valve.
The output signal of the AO block is passed to the Scalar Output hardware: to
the SO connection. This connection may be "exposed", as in a simple digital-to-
pneumatic transducer, or it may be "hidden" within a single total device. If it
is exposed, the labeling rules given in the paper "Data Owner Structure -
Hardware" must be followed.
In Figure 1, the AO system is divided into "AO block", MSP, and "Hardware".
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The MSP and the Hardware are both part of the "SO Hardware". It is the hardware
that controls the power to the control device, typically a valve.
The MSP lies between the fully Standardized AO block and the completely
undefined hardware. The MSP handles the unique characteristics of the hardware,
which is typically vendor specific. Consequently, the design of the AO block
assumes signal processing to also be vendor-specific but with its interface to
the AO block totally defined.
The only processing that the AO block does on the Setpoint is the optional
reversing. If triggered calibration is supported, the bias term calculated from
the linear calibration correction will be added to the appropriate value by the
MSP.
The AO block exchanges signals with the MSP through the OUTPUT0 connection, a
hardware pointer. It accesses the value used for INPUT1 through the same
hardware pointer. If the device supports auxiliary variables, they are included
as part of the OUTPUT0 connection. Physical devices that can support multiple
The Standard AO block has been designed on the basis of a model of the MSP.
The model allows several levels of complexity for the MSP. Bit AH of TIME_CRIT0
specifically allows implementations with a minimal MSP section. When that is the
case, a number of defined parameters are not supported. However, there are a few
functions in the model that have to be performed by the minimal MSP when bit AH
is reset. First, there has to be a value available for INPUT1, the response
measurement. If there is no real response measurement, a version of the MSP
setpoint that includes the effect of any rate limiting, cutoff, and gap control
will be generated by the MSP - call it CR. The AO section will move CR into both
INPUT1 and SERVO_SP. (Note that, at equilibrium and under normal operation, this
value must be exactly the same as OUTPUT0.) In that case, the status of INPUT1
will be:
- bit 1 (Bad) will be RESET if the block's Output is not failed AND
there is no indication of failure.
- bit 2 (Not-from-Process) will be set if bit 1 is set or if the block
is in a mode of higher priority than Auto.
- bit 5 (No-path-to-Process) will always be set.
- bits 6 & 7 will be used to indicate that the value is limited by the
devices travel range.
- all other bits will be reset.
The manufacturer may choose to add sensing switches to the SO hardware that
can detect a command to "override" the servo. In that case, the manufacturer
will determine the exact action but, in any event, the AO block will be forced to
IMan mode.
The manufacturer may also choose to add sensing switches to the SO hardware
that can detect the "open" and "closed" positions of the driven machine. This
data could be used in the operation of the servo and in setting the wound-up
status bits in the status byte of OUTPUT0.
The manufacturer may choose to design the Field device in such a way that the
hardware and the communication logic can continue to operate despite the fact
that the logic engine that executes the function blocks has failed. Given such a
--```,``-`-`,,`,,`,`,,`---
design, the manufacturer may set bit 3 in the TIME_CRIT0 options bit string to
indicate to a higher level device that it may be able to write the value of the
output directly to the hardware in an emergency. When that functionality is
provided, the location in which to store the desired output value will be in the
physical node parameter "I/O_VALUE". The parameter will be a 16 bit unsigned
integer; the value will be taken as a fraction of the instrument's full range
(i.e., a fraction of the -5% to 105% range).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
569
Outputs 1-3 have status bytes. Bit 1 (Bad) and bit 2 (Not-from- Process)
will be set if the hardware indicates that the value is not good or, at the
user's option, at the range limit. Bit 4 will indicate a hardware failure. Any
time the block is not in O/S mode, bit 5 (No-path-to-Process) will be set. Bits
6 & 7 will be used to indicate that the value is at the limit of its travel (or
is limited by the user-set limits). All other status bits will be reset. When
the block transitions to O/S mode, bits 1,2, and 5 will be set and all other bits
reset immediately after the transition. In subsequent cycles of O/S operation,
all values and status bytes will be left unaltered by the algorithm.
Note that the definitions of Outputs 1-3 assign the first (and second)
priority assignments of variables to specific Outputs. There is no requirement
that Output 1 be supported when Output2 is supported.
CHARACTERIZATION DESCRIPTION:
Most analog controller algorithms work best in a loop of linear elements.
The measurement side of the loop can be linearized over wide ranges. The output
side cannot.
A typical example of this situation can be found in the ubiquitous flow loop
with a spring return pneumatic valve. The closure member position will follow
the output of the controller in a linear fashion if friction is negligible and
the pressure forces are balanced. The valve discharge coefficient, Cv, can be
made linear with closure member position, but the valve will not have a linear
effect on the process unless the pressure drop is constant, which is seldom true.
The pressure drop across the value almost always decreases as the valve opens.
Even so, there are a lot of useful flow control loops using these elements.
DEFINITIONS:
- From ISA S75.05:
Valve: A valve is a device used for the control of fluid flow. It
consists of a fluid retaining assembly, one or more ports
between end openings and a movable closure member which opens,
restricts or closes the port(s).
Closure Member: A movable part of the valve which is positioned in
the flow path to modify the rate of flow through
the valve.
Inherent Flow Characteristic: The relationship between the flow
rate through a valve and the travel of the closure member as
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
flow rate through the valve at the rated travel of the closure member
and with the same pressure drop.
- According to ISA S75.11, the permissible deviations between actual and
manufacturer-stated inherent flow characteristics varies from 15.8% at
10% of flow to 10% of flow at rated travel. The limits quoted in the
following definitions are intended to be absolute limits. Therefore,
a manufacturer should allow the variation in the measurement within
the following limits.
- Restrictions on the following characterizations do not apply to the
first nor last 5% of travel.
Code 2 = Linear
--```,``-`-`,,`,,`,`,,`---
- Greater than 35% of maximum flow at 50% of travel.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
573
Code 6 = Hyperbolic
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
574
This table includes three columns under the title "Extent"; the columns are B
(Basic), E (Extended), and F (Full). These descriptions are consistent with the
definition of the bits in 8-BH in MSP_READ_ONLY. If an individual parameter has
an "x" under a particular "Extent" class, then that parameter will be included in
the Auto-Format variable if that Extent class is covered - i.e., its bit is set
in MSP_READ_ONLY, bits AH and BH.
Undefined.
+ Total Bytes 60
I/O_AF, Index 1:
+ (Measurement static data)
Response correction time, s x Float. Pt. 4
(See note 2)
+ Total Bytes 88
I/O_AF, Index 2:
+ (Measurement dynamic data)
Raw response, % (RR in Appendix) x x x Float. Pt. 4
(See note 10)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
576
+ Total Bytes 64
I/O_AF, Index 3:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Seal pressure (secondary seal), Pag x x Float. Pt. 4
Seal temperature, K x x Float. Pt. 4
Leak sensor, % x Float. Pt. 4
Cavitation internal sound, dB x x x Float. Pt. 4
Process fluid temperature, K x x x Float. Pt. 4
Process fluid inlet pressure, Pag x x x Float. Pt. 4
Process fluid output pressure, Pag x x x Float. Pt. 4
Minimum process fluid pressure, Pag x x Float. Pt. 4
Cavitation free air sound, dB x Float. Pt. 4
Cavitation calculation, % x Float. Pt. 4
Process fluid density, x Float. Pt. 4
+ Total Bytes 84
Notes:
The ESI units are indicated as:
c - dimensionless counts
CV - valve opening
dB - sound pressure level in decibels
K - degrees Kelvin
m3 - volume
N - Newtons of force
Pag - gauge pressure, Pascals
Paa - absolute pressure, Pascals
s - seconds
% - percent
(1) The Servo saturation alert time delay is used to delay an alert
that the servo has been saturated in the same direction but it is
not at its position extreme.
(2) Response correction time is the first order filter time to use to
filter the measured response before setting the value in INPUT1.
(3) Zero state rate limit is the rate at which OUTPUT0 can move as it
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
transitions to Zero due to a signal to go to the Zero state.
(4) The "Seal Pressure" is intended to be measured at a location such
that the pressure will be close to atmospheric when the seal system
is functioning correctly and will approach the process pressure when
there is a failure of the seal system.
(5) The leak sensor is intended to be a measurement such as a gas
detector that would detect the presence of process fluid outside
of the confines of the valve.
(6) The odometer measures the algebraic sum of the travel in percent.
Naturally, the sum of the "percents" will be a large number.
(7) The reversal counter is intended to count the total number of
changes in direction of movement of the power output of the
hardware. It is assumed that the manufacturer included a deadband
in the measurement of this value that will be approximately equal to
the hysteresis in the mechanical linkage of the valve.
(8) The "ball opening" timer is to measure the total time that a ball
valve in open/closed service is in transit between the two extremes
of closed and open.
(9) The "temperature stress" timer is the total time that the valve
spends above the temperature limit.
(10) Raw response is the measurement of the effect of the power output
before it is converted to the value shown in INPUT1. They differ by
the calibration correction and direct/reverse.
(11) A servo is assumed to have two outputs - called 0 and 1. If a
servo only has one output, it will be "0" by definition.
(12) The "Setpoint after conversion" is defined to be the value that the
MSP will pass to the servo but before limiting, cutoff, and gap
adjustments.
(13) The "Hold State" timer is to determine the maximum continuous amount
of time allowed in the state.
(14) The "Manufacturer's switch register" gives the states of a large
number of separate open/close switches that can sense the position
of the machine being driven by the output.
Figure 1
RCAS_TL
MFG's H
CAS_TL Mode Select SIGNAL A
PROCESSING
(Software) R
INPUT0
Pointer D
Analog Select W
STANDARD AO Set Point
A
R
Analog
Algo.
OUTPUT0 E
INPUT1 (P) Processing (Z)
Input
F
Word 2 (X)
E
PV MSP
Bits Function Data
1 1,4,6,&7 Valve
0
Analog Analog Analog
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
Figure 2
100
90 Quick
Opening
80
Percent Inherent Flow
70
60
Modified Modified
Linear Parabolic
50 Quick
40
30
--```,``-`-`,,`,,`,`,,`---
Equal
20 Modified
Percentage
Linear
10 Hyperbolic
0
0 10 20 30 40 50 60 70 80 90 100
Percent Open
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
The Analog Output block has several optional functions. The following
pseudocode includes all of the options. If the options bit string indicates that
one or more of the options are not supported, then the associated sections of the
following pseudocode can be ignored if there is no affect on the remaining
supported functions.
The pseudocode presented below provides the total definition of the status
byte manipulation for all of the OUTPUT words and for INPUT1. The manipulation
of the mode and the status bytes of the transfer locations and the SETPOINT are
defined in "Status Logic", Attachment 1 to the paper "Function Block Structure",
and are not reproduced here.
The manipulation of the two bit strings that report alarms and the 2 bit
strings that show unacknowledged alarms are not detailed in the pseudocode.
However, the bit strings are shown being written to the public data base at the
end of the procedure. All Standard implementations of the AO block will
ensure that these bit strings are updated coherently. Note that all alerts are
released to the User Layer Support Services immediately prior to the updating of
the bit strings.
This pseudocode assumes that all agents are processed according to the
description in the paper "Agents". It assumes that input values are present when
needed.
command.
The pseudocode presented here uses the variable names defined in the
algorithm description paper. In addition, it uses the following notation:
MSP = the Manufacturer's Signal Processing section of the hardware.
T_VALUE = a temporary value without a status byte
ALGORITHM PSEUDOCODE:
START
' Internal parameters available to this code:
' FORCE_INIT; refer to the paper "Function Block Structure", page 24.
' OLD_CLAMPx
' (only exists if bit 9 in TIME_CRIT_0 is set - output
' limiting/clamping is supported)
' x = 1-3 for OUTPUT1-3
' 0 = no old clamp
' 1 = old low clamp
' 2 = old hi clamp
' TRANSFER_VOID; refer to page 17 of the paper "Function Block
' Structure".
' SUPPRESS = control integer used to implement alert suppression
' as defined in the paper "Function Block Structure",
' page 23.
' 0 = no suppression
' 1 = suppress "Bad"
' 2 = suppress "Fail" and "Bad"
'
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
At the start of the normal block algorithm time:
BAD_CONFIG = reset ' a logic flag, set if bad block config.
FORCE_OS = reset ' a logic flag, set if must force O/S mode.
MM_SUPT = reset ' a logic flag, set if Man Mode is supported.
IF [(bit BH of TIME_CRIT0 = set) OR (bit DH of TIME_CRIT0 = set), then
. MM_SUPT = set
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
583
' I/O words has already been converted according to the agents
' logic. They are thus available as LV_x and will be calculated as
' LV_x.
Request User Layer Support Services to permit public access to memory.
'
' The I/O words are assumed to have been processed by the logic
' defined for agents. Therefore, each of the non-hardware
' I/O words has already been converted according to the agents
' logic. They are thus available as LV_x and will be calculated as
' LV_x.
'
' Certain main memory values are read-only to Field Bus (at least
' if the mode <> O/S) and did not have to be read in while
' memory access was blocked. They are:
' Manufacturer's Variables:
' TIME_CRIT0
' N_TIME_CRIT0
' N_TIME_CRIT1
' Variables associated with the PV function:
' * PV
' Variables associated with triggered calibration:
' * LO_CAL = the current low calibration point
' * HI_CAL = the current high calibration point
' Block data:
' * ACTUAL_MODE
' * SERVO_SP
' * OUTx_LO and OUTx_HI where x = 1-3
' MSP_READ_ONLY
' * MSP_DEVICE_STAT
' * MSP_SERVO_STAT
' * MSP_ALERT
' * MSP_DIAG_ALERT
' * AUX_ALERT
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
' * AUX_BAD
' * I/O_AF, indices 2 & 3
'
' The values with a "*" at the front will have new calculated
' values each cycle; their new values must be written during
' the mass write to maintain coherency. Note that there are 3
' mass writes - one during the initial read if the block
' changes to O/S mode (see page 3), one if there is a data
' problem (see next), and the other at the conclusion of the
' normal block calculations. They are mutually exclusive.
'
' There is one variable that is not related to any of the
' other variables in a time-coherency sense and can be read
' (by the MSP) as needed
' VAPOR_PRESS (an Auto-Format variable).
'
'
' *************************************************************
' *************************************************************
' ** **
' ** CLEANUP AFTER READING **
' ** **
' *************************************************************
' *************************************************************
'
IF T_REQ_MODE = O/S, then
. BREAK
IF FORCE_INIT = 3, then
. IF the agent type for INPUT0 is not supported, then
. BAD_CONFIG = set
. Unconditionally force the agent for INPUT1 to Null.
. IF [(TIME_CRIT0, bit 0 is set), then
. IF INPUT2 agent type not supported, then
. BAD_CONFIG = set
. IF the agent type for any supported OUTPUTx is not supported, then
. BAD_CONFIG = set
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
' The status bytes are all set to "Bad", "Not-from-Process",
' "No-path-to-Process" and "Wound up".
. IF TIME_CRIT0, bit AH = set, then
. Set all bits in AUX_BAD.
. ACTUAL_MODE byte = O/S.
. Request User Layer Support Services to permit public access to memory.
. TRANSFER_VOID for the CAS_TL = 2
. TRANSFER_VOID for the RCAS_TL = 2
. FORCE_INIT = 3
. BREAK
'
Execute the mode logic to set T_ACTUAL_MODE from T_REQ_MODE, the T_CAS_TL
. counter, the T_RCAS_TL counter, and LV_INPUT0's agent's counter. Refer
. to page 14 of the paper "Modes".
IF FORCE_INIT > 0, then
' See page 24 of the paper "Function Block Structure" for a
' description of the required processing of the block when
' FORCE_INIT >0.
'
' *************************************************************
' *************************************************************
' ** **
' ** CALCULATE NEW VALUES OF SETPOINT AND OUTPUT0 **
' ** **
' *************************************************************
' *************************************************************
'
Execute the Standard logic for calculating the new SETPOINT using the
' current, temporary values of REQ_Mode, SETPOINT, the RCas and Cas
' transfer locations, and INPUT0. This may not be the final version of
' T_SETPOINT if the block is being forced to initialize or is replaced.
IF the highest priority mode bit in T_ACTUAL_MODE = Auto, then
. IF the RCas OR Cas mode bit is also set in T_ACTUAL_MODE, then
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
MSP put into bypass operation if T_FLAG = set
IF [(block is in IMan mode) OR (FORCE_INIT = 3)], then
Hold MSP and force SETPOINT = INPUT1
Pass initialization up to the cascade transfer locations.
MSP_Setpoint = OUTPUT0
T_FLAG_FAIL = reset ' logic flag set if INPUT2 indicates a failure
T_FLAG_LO = reset ' logic flag set if INPUT2 indicates wound-up-low
T_FLAG_HI = reset ' logic flag set if INPUT2 indicates wound-up-high
IF TIME_CRIT0, bit 0 is set, then
. IF the agent for INPUT2 <> Null, then
. IF INPUT2, bit 1 = reset, then
. IF bit 4 of INPUT2 = set, then
. IF status of INPUT2, bit 4 = good, then
. IF OPTIONS1, bit 5 = set, then
. T_FLAG_LO = set
. T_FLAG_HI = set
. IF OPTIONS1, bit 4 = set, then
. T_FLAG_FAIL = set
. IF bit 6 of INPUT2 = set, then
. IF status of INPUT2, bit 6 = good, then
. T_FLAG_LO = set
. IF bit 7 of INPUT2 = set, then
. IF status of INPUT2, bit 7 = good, then
. T_FLAG_HI = set
WRITE_TRIG = reset ' logic flag to control writing of the TC trigger
WRITE_TC = reset ' logic flag to control writing of the TC data
' *************************************************************
' *************************************************************
' ** **
' ** PROCESS THE VALUES RETURNED BY THE MSP **
' ** **
' *************************************************************
' *************************************************************
'
Apply the direct/reverse logic as needed if OPTIONS0, bit 0 is set.
T_STAT = 00100000B
T_VALUE = the value of LV_INPUT1
' Note: If triggered calibration is supported, this value includes the
' calibration correction.
IF hardware does not supply the major value in 4 byte floating point and
. % range form, then
. Convert the response measurement to the correct basis.
IF OPTIONS0, bit 0 is set, then
. The response measurement = 100 - the response measurement
IF [(the MSP indicates that the output hardware has failed) OR (T_FLAG_FAIL
. = set)], then
. T_FLAG_FAIL = reset
. Set bits 4 (Fail), 5 (Not-from-the-process), and 6&7 (wound up) in the
. status of LV_OUTPUT0
. IF bit 8 in FAIL_OPT0 = set, then
. IF OPTIONS1, bits 1 & 0 <> 00B, then
. Set OUTPUT0 failure alarm
. IF this logical node supports alert reporting, then
. Prepare the failure alert.
. SUPPRESS = 2
. IF bit 9 in FAIL_OPT0 = reset, then
. Set bit 4 in the status byte of SETPOINT
. Execute the failure handshake procedure for the Cas and RCas
. transfer locations (see Attachment 1 to the paper "Status
. Bytes").
ELSE
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
590
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. T_FLAG_HI = set
. value of T_SETPOINT = value of LV_INPUT1
. LV_OUTPUT0 = direct/reverse action applied to T_SETPOINT
. Set bit 3 in the status byte of LV_OUTPUT0
. Set bit 3 in the status byte of T_SETPOINT
. Set bits 6&7 in the status of T_OUTPUT0 and pass the LO mode and the
. doubly wound up status to the RCas and Cas transfer locations.
IF the MSP section reports that FAILSAFE was invoked, then
. T_FLAG_FAIL = set
. T_FLAG_LO = set
. T_FLAG_HI = set
. value of T_SETPOINT = value of LV_INPUT1
. LV_OUTPUT0 = direct/reverse action applied to T_SETPOINT
. Set bits 6&7 in the status of T_OUTPUT0 and pass the doubly wound up
. status to RCas and Cas transfer locations.
'
IF alerts are supported by this logical node, then
. FOR bits AH - FH of MSP_ALERT
. IF bit indicates an alert condition, then
. set alarm bit
. IF SUPPRESS < 1, then
. issue failure alert
. SUPPRESS = 1
' These alerts match dedicated alerts - they can be
' turned off using the normal alert priorities.
. ELSE
. IF alarm existing, then
. clear alarm and issue "return" alert.
. NEXT bit
. FOR bits 2-7 of MSP_ALERT
. IF bit indicates an alert condition, then
' Note: some field devices may choose to set one or both
' of the wound-up bits in OUTPUT0 and/or in INPUT1
' when one or more of these alerts occur. These
' bits should them be promulgated through the
' AO block. The originating alert condition is
' the one that should have the highest priority
' relative to SUPPRESS.
. set alarm bit
. IF SUPPRESS < 1, then
. issue failure alert
. SUPPRESS = 1
' These alerts are reported if the bit pairs in
' OPTIONS1 are <> 00B.
. ELSE
. IF alarm existing, then
. clear alarm and issue "return" alert.
. NEXT bit
Set T_FLAG_LO AND T_FLAG_HI for alerts set in bits 2-7 of MSP_ALERT for
. which the bit pairs in OPTIONS1 are 10B.
Set T_FLAG_FAIL, T_FLAG_LO, and T_FLAG_HI for alerts set in bits 2-7 of
. MSP_ALERT for which the bit pairs in OPTIONS1 are 11B.
'
IF T_FLAG_FAIL = set, then
. IF OPTIONS0, bit DH = set, then
. IF any T_ACTUAL_MODE bits are set that are lower in priority then
. Auto, then
. IF Auto mode is permitted, then
. Set the Auto mode bit in T_ACTUAL_MODE
. Reset the Cas and RCas mode bits in T_ACTUAL_MODE
. ELSEIF Man mode is permitted, then
. Set the Man mode bit in T_ACTUAL_MODE
. Reset the Cas and RCas mode bits in T_ACTUAL_MODE
. ENDIF
. IF this node supports alerts, then
. IF SUPPRESS < 1, then
. IF the mode was actually changed, then
. issue the appropriate alert (notification).
. SUPPRESS = 1
. Set Bits 4 (Fail) and 5 (No-path-to-Process) in the status of LV_OUTPUT0
. IF bit 4 in the status of LV_SETPOINT = reset, then
. set bit 4 in the status of LV_SETPOINT
. Execute the failure handshake procedure for the Cas and RCas
. transfer locations (see Attachment 1 to the paper "Status
. Bytes").
. IF this logical node supports alerts, then
. Generate a "Return" for any other alerts that have cleared.
ELSE
. IF this logical node supports alerts, then
. Clear any alarms that have returned to the normal state.
. IF [(T_SETPOINT, bit 4 = set) AND (T_SETPOINT, bit 5 = set), then
. Reset bits 4 (Fail) and 5 (No-path-to-Process) in the status of
. T_SETPOINT
' Note: the handshake arrived back from the block
' responsible for acknowledging it.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ENDIF
IF there are any alerts in the following registers passed from the MSP
. section, the logic will generate the appropriate alert messages at this
. point (IF SUPPRESS < 1) but not pass them to the User Layer Support
. Services until so instructed:
. MSP_DIAG_ALERT
--```,``-`-`,,`,,`,`,,`---
. AUX_ALERT
. AUX_BAD
. In addition, it will "return" previously existing alerts if they have
. cleared.
ELSE
. Move value pointed to by TARGET_PARAM into TARGET.
. IF the value has a status byte, then
. Use it.
. ELSE use a default status byte of 00100100B
. IF TARGET value = NaN,, then
. TARGET status = Bad.
. T_STAT = status of LV_INPUT1
. T_STAT = T_STAT AND 00000111B
'Reset all PV status bits except No-Com, Bad, and Not-from-Process
. Set bits 3 and 6 in T_STAT
'Set HiHi and LoLo alarm bits simultaneously as a flag.
. T_PV = value of LV_INPUT1 + T_STAT
'
' *************************************************************
' *************************************************************
' ** **
' ** CALCULATE OUTPUTs 1-3 **
' ** **
' *************************************************************
' *************************************************************
'
Access hardware to get new values.
'
' The following procedure is detailed for OUTPUT1. The totally
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
' so that alert suppression will be in the rank order specified in the
' algorithm definition.
'
IF TIME_CRIT0, bit 5 = set, then
' bit 5 = set means OUTPUT1 is supported
' if the process fluid temperature is an auxiliary value, then it
' must be here.
. T_STAT = 00100000B.
' Always set "No-path-to-process" in aux. Outputs
. T_VALUE = value of auxiliary value 1 from the hardware.
. IF the hardware indicates that the measurement has "Failed", then
' The manufacturer may base "Fail" on indications from the
' hardware itself and/or on reasonableness checks of the
' measurement from the hardware.
'
' For a standard AO block, the hardware alert reporting will
' be consolidated with the function block alert reporting
' if the hardware failure is discovered as part of the
' operation triggered by the block schedule (possibly reported
' by the MSP one cycle later).
. T_VALUE = value part of LV_OUTPUT1
' Use the last good value if currently bad.
. Set bits 1, 2, 4, 6, and 7 in T_STAT
' set "Bad", "Not-from-Process", "Fail", and "Wound-up" bits
. ELSEIF the hardware indicates that the measurement is "Bad", then
' There may be reason to consider the measurement "Bad" BUT
' NOT "Failed".
. T_VALUE = value part of OUTPUT1
' Use the last good value if currently bad.
. Set bits 1, 2, 6, and 7 in T_STAT
. ELSEIF the mode just changed from O/S and early triggering was used,
. there may be no hardware value ready; then
. T_VALUE = value of OUTPUT1
. Set bits 2, 6, and 7 in T_STAT.
. ENDIF
. ELSE
. IF the hardware indicates that the value is at its extreme high
. limit, then
. set bit 6 in T_STAT
. IF the hardware indicates that the value is at its extreme low
. limit, then
. set bit 7 in T_STAT
. IF the hardware does not supply auxiliary value 1 in 4 byte
. floating point and ESI form, then
. Convert T_VALUE to the correct basis.
. IF T_VALUE = NaN, then
. Set bits 1, 2, 6, and 7 in T_STAT
. IF T_STAT, bit 4 = set, then
. IF FAIL_OPT0, bit AH = set, then '"Fail" alerts reported
. Set the alarm bits for a "OUTPUT1 Failure" alarm.
. IF SUPPRESS < 2, then 'No "Fail" alarms yet.
. IF alert reporting supported, then
. prepare the "Fail" alert.
. SUPPRESS = 1
. IF a failure in this auxiliary will inevitably lead
. to failures in the other auxiliary values, then
. SUPPRESS = 2
. IF TIME_CRIT0, bit 9 = set, then
' device supports Output clamping
. IF T_LIM1_LO = NaN, then
. IF OLD_CLAMP1 = 1, then
. OLD_CLAMP1 = 0
. ELSE
. IF T_VALUE <= T_LIM1_LO, then
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. T_VALUE = T_LIM1_LO
. Set bit 7 in T_STAT
. Set the alarm bits for an "OUTPUT1 Lo Limit" alarm.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
. Clear any "OUTPUT1 Bad" alarm in this function block.
. IF T_STAT, bit 4 = reset, then
. Clear any "OUTPUT1 Failed" alarm in this function block.
. IF T_STAT, bit 1 = set, then
. Set the alarm bits for a "OUTPUT1 Bad" alarm.
. IF SUPPRESS < 1, then
--```,``-`-`,,`,,`,`,,`---
. Any active output agents will delay scheduling the store of their
. output into the remote location.
. Decrement FORCE_INIT
. ELSEIF FORCE_INIT = 2, then
. IF there are NO No-Com counters that have counts but have not
. counted out, then
. FORCE_INIT = 1
. ELSE 'FORCE_INIT = 1
. IF NOT [(INPUT0 has an active agent) AND (OPTIONS0, bit 2 = set)
. AND (INPUT0 = "Bad")], then
. FORCE_INIT = 0
. ENDIF
'
' *************************************************************
' *************************************************************
' ** **
' ** WAIT FOR THE END OF BLOCK TIME **
' ** **
' *************************************************************
' *************************************************************
'
All spare block time must be placed here.
'
' *************************************************************
' *************************************************************
' ** **
' ** WRITE TO DATA BASE WHILE PROTECTED **
' ** **
' *************************************************************
' *************************************************************
'
Send any accumulated alerts to the User Layer Support Services
Request User Layer Support Services to block access to memory.
' write block variables
REQ_MODE = T_REQ_MODE
ACTUAL_MODE = T_ACTUAL_MODE
SETPOINT = T_SETPOINT
SERVO_SP = T_SERVO_SP
PV = T_PV
Update CAS_TL and RCAS_TL
' Note: if the effective mode = Cas, then the CAS_TL value and the
' first three bits of the status byte must not be overwritten.
' Likewise for the RCas location.
Update ALERT_SET0, ALERT_SET1, ALERT_UNACK0, and ALERT_UNACK1 as necessary.
Request Agent servicing of all supported agent values
MSP_DEVICE_STAT = T_MSP_DEVICE_STAT
MSP_SERVO_STAT = T_MSP_SERVO_STAT
MSP_ALERT = T_MSP_ALERT
IF TIME_CRIT0, bit 0 = set, then
. Set bit 5 (Not-from-Process) in LV_INPUT2's status
. Reset bits 3, 4, 6 & 7 in LV_INPUT2's status
IF TIME_CRIT0, bit 2 = set), then
. BYPASS_REQ = T_BYPASS_REQ
IF [(TIME_CRIT0, bit 5 = set), then
. OUT1_LO = T_OUT1_LO
. OUT1_HI = T_OUT1_HI
IF [(TIME_CRIT0, bit 6 = set), then
. OUT2_LO = T_OUT2_LO
. OUT2_HI = T_OUT2_HI
IF [(TIME_CRIT0, bit 7 = set), then
. OUT3_LO = T_OUT3_LO
. OUT4_HI = T_OUT3_HI
IF TIME_CRIT0, bit AH = set, then
. MSP_DIAG_ALERT = T_MSP_DIAG_ALERT
. AUX_ALERT = T_AUX_ALERT
. AUX_BAD = T_AUX_BAD
. I/O_AF, index 2 = T_I/O_AF, index 2
. I/O_AF, index 3 = T_I/O_AF, index 3
IF TIME_CRIT0, bit DH = set, then
. MSP_SERVO_SWITCH = T_MSP_SERVO_SWITCH AND MSP_SERVO_SWITCH_MASK
IF WRITE_ADJ = set, then
' just write the calculated calibration points - normal case
. ADJ_LO_TARG = T_ADJ_LO_TARG
. ADJ_HI_TARG = T_ADJ_HI_TARG
IF WRITE_TRIG = set, then
' just write the new trigger value
. TRIGGER = T_TRIGGER
IF WRITE_TC = set, then
' write the variables associated with a new triggered calibration
. LO_CAL = T_LO_CAL
. HI_CAL = T_HI_CAL
'
' write the variables associated with the PV function
PV = T_PV
TARGET = T_TARGET
Request User Layer Support Services to again allow public access to memory.
'
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
597
Counter
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
An addition to the algorithm definition came up after this paper was accepted -
we need to add two time accumulators: one to accumulate the time spent at the
maximum rate of the counter and one to accumulate the time spent at the minimum
rate of the counter.
BASIC ALGORITHM:
- This algorithm can accumulate the counts from counter hardware or it
can count the leading edge transitions in a discrete value. It
features a 32 bit integer accumulator for the counts. It includes a
trip and pre-trip capability where the source of the trip count can be
controlled by the mode of the block. It calculates the filtered
instantaneous rate of the counter and it separately accumulates the
"last good value" of all readings that were marked "bad".
- See the attached figure "Counter Block".
- Two modes of operation (see "Counter Data Flow" drawing):
+ Counter Hardware Input (Type CT)(must be on physical node):
@ Counts always positive.
@ If the count value = NOT "Bad", Counted in a 32 bit integer
counter (Total); the counter simply rolls over if not
reset.
@ If the count value = "Bad", marked good and Counted in a
separate 32 bit integer counter (BTotal); the counter
simply rolls over if not reset.
@ Rate = rate based on filtered, converted count, with status
of original input value.
+ Discrete transitions:
@ Leading edge triggered; counted the same as above.
- For count up, Target Value = SP (continuously variable).
--```,``-`-`,,`,,`,`,,`---
ALGORITHM OPTIONS:
- Accumulate = sense of accumulation into Total
= 0 if counts or positive analog value are to be
subtracted from Total (traditional counting "down")
= 1 if counts or positive analog value are to be added to
Total (traditional counting "up") (default = 1)
- Auto-Reset = set to automatically reset the counter when the target
--```,``-`-`,,`,,`,`,,`---
value (for counting up, 0 for counting down) is
reached.
MODES:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
calculation that bases the calculation on the actual elapsed time
from one counter sampling to the next. The presence of the actual
time feature is indicated in the physical node data base.
- Record of bad value for the configured counter input:
+ Last good value of count (the value that is marked "Bad") is
set good and added to BTotal.
+ A 16 bit counter is incremented every cycle that finds a bad
value for the active Input if the mode is lower priority
than Man. The counter is not writeable from Field Bus.
+ A single time stamp register is provided. If the register is
zero when a bad value is found, the current system time is saved
into the time stamp register. The field device provides no
mechanism to re-zero the register but it is writeable.
BIT POINTERS:
Bit pointers are used for configuring the inputs to the "Force Manual",
"Reset", and "Discrete-to-count" functions and the connections from the Output to
Output words 1 & 2 or to the special logical
node registers.
The Force Manual, Reset, and Discrete-to-count functions are configured using
three copies of the bit pointer word. They are combined under one parameter
name; the word for the Force Manual input is reported first, then Reset.
The Output word bits are configured using three more copies of the bit
pointer word. Their configurations are also combined under one parameter name:
the word for Bit 0 is reported first.
The other two parameters (STotal and SSP) are set equal to the current Total
and Setpoint (Total and SP) immediately prior to the reset. The exact
interpretation of these two values depends on whether the resetting is done
automatically or manually and whether the counter is counting up or down. The
following will consider these 4 cases.
The Counter block will reject reset requests for 8 cycles after a reset. One
reason for this is to guarantee that the snapshot values are exposed to the Field
Bus for at least 8 cycles before they can be overwritten. Since a reset is an
event that is reported in the alert buffer, a higher-level device can respond to
the event and capture the snapshot values.
DETAILS OF PARAMETERS:
- Node Parameters:
+ Block calculation cycle time (seconds) = F
- User Set Parameters (all under the tuning attribute):
+ Conversion factors:
TC = Time Conversion (for example, {1/60} if rate is
counts per minute instead of counts per second)
(default = 1).
UC = Units Conversion (for example, {1/1000} to convert to
thousands of counts (default = 1).
+ Pretrip_Value (delta below target for count up, absolute
--```,``-`-`,,`,,`,`,,`---
= INPUT0(n)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
+ Input 1 = Hardware Count value (incremental counts)
= INPUT1(n)
+ Input 2 = Discrete; addressed as IW2-0 through IW2-F
+ Output 0 = Rate = Filtered Raw Rate
= OUTPUT0(n)
Raw rate = Delta_Count * TC * UC / cycle time
Delta_Count = change in counts this cycle
+ Total = Accumulated total since last reset (if counting up;
{preset - accumulated total} if counting down) including
the carry from the last reset if the last reset was
automatic.
+ STotal = snapshot value of Total at the time of the last reset.
+ BTotal = Accumulation of the last good values during cycles in
which the count was marked bad.
+ SBTotal = snapshot value of BTotal at the time of the last reset
+ Bad_Input_Counter: counts cycles in which:
Input Value (i.e., Input 1 or the bit pointed to by the
"discrete to count" bit pointer) = Bad
AND
Mode lower priority than Man.
+ Reset_Counter = 16 bit counter
= incremented for every block reset
= can not be reset itself
+ Time_stamp = system time at first instance of an increment of
the Bad_Input_Counter after the Time_stamp location
was set to zero or the block reset.
- Internal Parameters (not accessible on Field Bus):
+ FRate = filtered Rate before RRate cut-off limit.
SBTotal = BTotal
@ Total = Total + SP
@ Increment Reset counter
@ Event put into node alert buffer.
- If Reset is "On" THEN
+ IF the count up option is selected, THEN
SSP = SP(n)
STotal = Total
SBTotal = BTotal
@ Total = 0
@ Increment Reset counter.
@ Event put into node alert buffer.
+ IF the count down option is selected, THEN
SSP = SP(n)
STotal = Total
SBTotal = BTotal
@ Total = SP
@ Increment Reset counter.
@ Event put into node alert buffer.
- The pre-trip discrete will be checked every cycle it is set and reset:
+ AFTER the Totalizer has been reset AND IF
+ If Total >= 0.5 * (SP - Pretrip_Value) for count up
If Total <= 0.5 * (STotal- Pretrip_Value) for count down
- The trip discrete will be reset:
+ AFTER the totalizer has been reset AND IF
+ If Total >= 0.5 * (SP - Dribble) for count up
If Total <= 0.5 * (STotal- Dribble) for count down
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
603
COUNTER BLOCK
Cas RCas
Mode
Output 0
Input 0
Output
Input Pointer Word 0
Word 0 Select
Analog
Analog Set Point (Rate)
(Set Point)
Hardware
Output
Counter
Input 1
Word 1
Output 1
Force Total E
(32 bit) F
--```,``-`-`,,`,,`,`,,`---
Manual
(Discrete) DW1-0
BTotal Thru
(32 bit) DW1-F
Input
Word 2 1
0
Input 2
F Algorithm Trip
Output 2
E (Discrete) E
IW2-0 Discrete F
Thru To Count DW2-0
IW2-f 0 Thru
Pretrip
1 Reset 1 DW2-F
(Discrete)
0 (Discrete) 1
2
0
Counting
(Discrete)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
604
Filter
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
OR Add Add
* Units
Conversion
Discrete Leading No
Edge
Bad Yes
Mark
* Time Value? Good
Conv.
* Cycle Yes
Time
LO Delta
Ct. No
Man. =
Up?
-Delta
Auto.
Cas. RCas
Dynamic Compensation
Editor's Note: his function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
- Dynamic compensation algorithm with two inputs, one Cascade output
+ One of two algorithms operates on Input #1: lead/lag or dead
time.
+ Compensated and limited Input #1 available as Output #1.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
ALGORITHM OPTIONS:
- Lead/Lag option:
Compensated Input #1 = Input #1 after first order lead, lag, gain,
and bias.
- Dead-time option:
Compensated Input #1 = Input #1 with pure dead time, gain, and
bias.
- Multiply or add Output #1 to Input 0 to form Output 0.
- Absorb Input #1 bump in gain, bias, dynamic time, or Cascade.
DETAILS OF PARAMETERS:
- Node Parameters:
+ F = Block calculation cycle time (seconds).
- User Set Parameters (all under the tuning attribute):
+ BIAS = Bias in both lead/lag and dead time algorithms.
+ GOOD = 1 bit discrete.
--```,``-`-`,,`,,`,`,,`---
@ BAL_G = temporary gain term - decayed to 1 at rate BAL_T
= NaN if BAL <> 6
@ OBL1(n-1) = "Output1-before-limits" at last execution
= compensated Input #1 before output limiting is
applied.
@ Y(n-1) = compensated In(n) before gain and bias
adjustment at last execution.
+ Not externally readable:
@ 21 item stack for dead time
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
@ BADSTACK = discrete
= set if a "NaN" value is in the stack.
@ In(n-1)
@ N = cycle skip counter (counts down from "S" to 0)
@ OBL0(n-1) = "Output0-before-limits" at last execution
= output of the algorithm before output limiting
is applied.
@ S = cycle skip for dead time algorithm
= number of cycles between entries in the history stack
= 3 * T(2) / F
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
608
--```,``-`-`,,`,,`,`,,`---
Y(n) will be "NaN"; The last good value of
Out1(n-1) will be used; the status of Out1(n-1)
will show "Good". The mode of the block will not be
changed.
@ Upon recovery from "NaN" or "Bad" (regardless of the state
of GOOD), the stack will be completely initialized; the
method of initialization will depend on BAL.
Math
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
An addition to the algorithm definition came up after this paper was accepted:
1) another form of the equation
2) an option on equations 4 and 5 - allow the user to ask for a special
initialization method - set INPUT0 to 50% and initialize the constant a.
3) two trios of user option bits -
a) one trio is OR'ed with the NFP status bits in INPUT0-2
b) one trio is OR'ed with the Bad status bits in INPUT0-2
c) the OUTPUT is the AND of the results of steps (a) and (b), not the raw
values of the status.
BASIC ALGORITHM:
- General mathematics operator with up to three analog inputs.
- Supports initialization and antiwindup for some algorithm forms
ALGORITHM OPTIONS:
- Six separate forms of the algorithm:
+ Flow Compensation with square root:
Output = a + f * Input 0
where f = b * [(c + Input #1) / (d + Input #2)] ** 1/2
+ Flow Compensation - linear:
Output = a + f * Input 0
where f = b * [(c + Input #1) / (d + Input #2)]
+ Dual Range:
Output = a + b * f * Input 0 + b * (1-f) * Input #1
1) If Input 0 = Bad, f = 0
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
2) If Input #1 = Bad, f = 1
3) If Input 0 < c, f = 1
4) If Input 0 > d, f = 0
Between conditions 3 and 4, f = interpolated
+ Averaging:
Output = a + b * (Input 0 + c * Input #1 + d * Input #2) / f
where f = the number of good inputs
+ Addition:
Output = a + [b * Input 0] + f
where f = [c * Input #1] + [d * Input #2]
+ Multiply:
Output = a + f * Input 0
where f = b * Input #1 + c / (d + Input #2)
--```,``-`-`,,`,,`,`,,`---
DETAILS OF PARAMETERS:
- Node Parameters:
+ Block calculation cycle time (seconds) = F
- User Set Parameters;
+ Algo = integer value indicating algorithm number
= 0 to 5, default = 0
+ a = intercept in all equations (under the tuning attribute)
+ b, c, d = equation constants (all under the tuning attribute)
+ Init_Code = code number for initializable factor:
= 0 is no initialization
= 1 if Input 0 or "all" Inputs
= 4 if coefficient a
= 5 if coefficient b
+ T(1) = decay rate for initializable factor
= units of repeats/minute (under the tuning attribute)
{see the defining equation above}
+ Two limits that are algorithm dependent (both under the tuning --```,``-`-`,,`,,`,`,,`---
attribute):
@ For Algos 0 and 1:
Coef_Lim_1 = High limit on coefficient f
Coef_Lim_2 = Low limit on coefficient f //^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
@ For Algo 3:
Coef_Lim_1 = Low limit on average of inputs for
initializing b
@ For Algo 4:
Coef_Lim_1 = Low limit on Input 0 for initializing b
@ For Algo 5:
Coef_Lim_1 = Low limit on the absolute value of:
(d + Input #2)
Coef_Lim_2 = Low limit on total denominators in
initializing Input 0 or b
--```,``-`-`,,`,,`,`,,`---
DETAILS OF UNIQUE BLOCK FEATURES:
- The Antiwindup bits in the Cas or RCas transfer locations are reset
when:
+ The appropriate mode is set AND
+ The Output can be moved in response to the indicated direction.
+ Input 0 has a non-zero coefficient in the algorithm.
@ In Algorithm 2, Input 0 is being used even if f = 0
@ Coefficient "f" in Algorithms 0, 1, and 5, and coefficient
"b" in algos. 2, 3, and 4.
- The user sets the value PAUSE. The algorithm maintains the counter
CPAUSE.
+ At initialization, CPAUSE = 0
+ If the read back value of Output = Output(n-1), THEN
CPAUSE = CPAUSE + 1 ELSE CPAUSE = 0.
+ If CPAUSE > PAUSE, CPAUSE = PAUSE
+ If the current mode is IMan, IMan can not be reset if
CPAUSE < PAUSE.
- A special status byte, IACSTATUS, will be generated. It will:
+ Have all bits except Bit #2 (from Process) set if this block is
in O/S mode.
+ ELSE, it will be set equal to the status byte of the Output,
THEN
@ The ATW bits will both be set if IMan mode is set in
this block, AND
@ The ATW effect of the Output limits of this block will be
added.
- Input #3 will be expected to be Null or in the form of a status byte.
Typically, it will be IACSTATUS from a companion block. It will be
combined with the feedback and mode information within this block to
set the status byte in the Cas and RCas transfer locations and the
operation of this block. Its use will be controlled by the option
integer IACOPTION. The option number will be set in binary to
correspond to the following seven questions, where a positive answer
to one of the questions indicates that that bit is set in the binary
value of IACOPTION. The term "Other block" refers to the block from
which Input #3 was fetched. The term "operate" refers to the absence
of the "doubly wound up" state.
0) If the other block has a bad Output value, does this block
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
612
operate?
1) If the other block has a failed path below it, does this block
operate?
2) If the other block has no path to the process below it, does
this block operate?
3) If the other block's output can not go up, can this block's
Output go up?
4) If the other block's output can not go up, can this block's
Output go down?
5) If the other block's output can not go down, can this block's
Output go down?
6) If the other block's output can not go down, can this block's
Output go up?
- If the initializable parameter configured in algorithms 3, 4, or 5
is an equation coefficient, it will decay to zero (for a) or to unity
(for b) at rate T(1) where:
a(n+1) (n+1) = a(n) - a(n) * T(1) * F / 60
OR
b(n+1) = b(n) - (b(n) - 1) * T(1) * F / 60
where F = block cycle time (seconds)
T(1) <= 60 / F
ALGORITHM OPERATION:
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
613
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
If T(1) < T(2) THEN T(2) = T(1)
- If Bypass is set, THEN:
OBL(n-1) = Input 0 and f = 0
IF bit 2 in the status byte of Input 0 is reset, the reset bit 2
in the status byte of the Output.
- If Bypass is reset, THEN:
+ Execute the forward Calculation Procedure {see below}.
+ If Use_2 is set, THEN:
@ If bit 2 (not effected by the process) of the status word
of Input #1 is reset, THEN reset bit 2 in the status byte
of Output
@ If Input #1 has a writeable pointer, THEN reset bits 6
and 7 (ATW's) in the status byte of Input #1
+ If Use_3 is set, THEN:
@ If bit 2 (not effected by the process) of the status word
of Input #2 is reset, THEN reset bit 2 in the status byte
of Output
@ If Input #2 has a writeable pointer, THEN reset bits
6 and 7 (ATW's) in the status byte of Input #2
- Preliminary ATW operation:
Note: The wound-up-high ATW bit (ATW-h) is the converse of
the wound-up-low (ATW-l) bit, repeat the following
steps for ATW-l
+ Start by setting ATW-h equal to bit 6 (Wound up high) of the
status byte from the Output pointer
+ Set ATW-h if OBL(n-1) above or equal to high output limit
+ Change all following references from ATW-h to ATW-l if Bypass
is reset AND any of the following are true:
@ Algo = 0 and coefficient f is negative
@ Algo = 1 and (b * f) is negative
@ Algo = 2 and coefficient b is negative
@ Algo = 3 and coefficient b is negative
@ Algo = 4 and f is negative
+ Temporarily store ATW-h for use below
- Output:
IF Out(n-1) > high output limit, THEN:
Out(n-1) = lower of OBL(n) and Out(n-1)
IF OBL(n) > high output limit, then ATW-h = set
ELSE IF Out(n-1) < low output limit, THEN:
Out(n-1) = higher of OBL(n) and Out(n-1)
IF OBL(n) < low output limit, then ATW-l = set
ELSE:
Out(n-1) = OBL(n)
ATW-l = set
END IF
END IF
- Post processing ATW operation:
+ Set ATW-h if SP above or equal to high SP limit
+ Enter ATW-h bit into RCas and Cas transfer location status
bytes and in the SP status byte.
+ If RCas is not the highest priority mode bit set, set both ATW
bits in the RCas transfer location status byte.
+ If Cas is not the highest priority mode bit set, set both ATW
bits in the Cas transfer location status byte.
- END
BACK-CALCULATION PROCEDURE:
- The following are routines to outline the procedure to use to
initialize the initializable parameters given an Output. There
are three procedures, one for each of the three algorithms that
support initialization.
- If Algo = 2
IF Init_Code = 1 THEN:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SP(n) = 0
ELSE If b = 0 THEN:
SP(n) = (Out(n-1) - a) / b
END IF
IF Init_Code = 4, THEN:
IF f = 0 THEN a = SP(n)
ELSE Temp = 0
IF Input(1) = good, then Temp = Input(1)
IF Input(2) = good, then Temp = Temp + Input(2)
IF Input(3) = good, then Temp = Temp + Input(3)
a = Out(n-1) - b * Temp / f
END IF
IF Init_Code = 5, THEN:
If f = 0 then b = 1 ELSE:
Temp = 0
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
f = f + b * Input(2)
END IF
END IF
END IF
RETURN
END IF
IF f > 1 THEN f = 1
IF f < 0 THEN f = 0
Out(n2) = a + b * f * Input(1) + b * (1 - f) * Input(2)
If b <> 0 THEN:
Use_2 = 1
Use_3 = 1
ELSE If Algo = 2
Temp = 0
IF Input(1) = good, then Temp = Input(1)
IF Input(2) = good, then Temp = Temp + Input(2)
IF Input(3) = good, then Temp = Temp + Input(3)
Out(n-1) = a + Temp / f
IF Init_Code = 4 THEN decay a to 0 at first order rate T(1)
If b <> 0 THEN:
Use_2 = 1
Use_3 = 1
ELSE If Algo = 3
f= c * Input(2) + d * Input(3)
Out(n-1) = a + b * Input(1) + f
IF Init_Code = 4 THEN decay a to 0 at rate T(1)
IF Init_Code = 5 THEN decay b to 1 at rate T(1)
IF c <> 0 then Use_2 = 1
IF d <> 0 then Use_3 = 1
ELSE If Algo = 4
IF (d + Input(3) ) < Coef_Lim_1 THEN:
Temp = Coef_Lim_1
ELSE Temp = d + Input(3)
END IF
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
IF Init_Code = 4 THEN decay a to 0 at first order rate T(1)
IF Init_Code = 5 THEN decay b to 1 at first order rate T(1)
f = b * Input(2) + c / Temp
Output = a + f * Input(1)
IF (b * Input(1) ) <> 0 or NAN, Use_2 = 1
IF (c * Input(1) ) <> 0 or NAN, Use_3 = 1
END IF
RETURN
PID Control
This algorithm was one of the first ones done and has not been editorially
updated recently. This description needs many small corrections. The only large
change is the addition of a completely different PID equation form as an option -
an absolute PD form. This has been accepted by the committee but not edited into
this paper.
BASIC ALGORITHM:
- PID controller with:
+ No cross-product term (Classical or non-interactive algorithm;
in ISA SP51.1, PID equation on p11, a = infinity [required to
be >1] and b = 0 [required: 0 <= b << 1.])
+ Non-linear gain on all terms
+ If gain = 0, then ID equation operates with a gain of unity
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
+ Initialization
+ Anti-windup protection based on discrete indicators
+ Derivative based on [PV(n) -PV(n-1) ]
+ Integral and Derivative action "skips cycles" if the revision
number on Input #1 doesn't change. Skips are counted and
the time is adjusted.
+ Set to doubly wound up if Input #1 is not from the process.
+ Rate limiting (with alpha set to 16)
+ Tracking option where Output tracks feedback
+ Option to automatically recover from a "Bad" PV.
ALGORITHM OPTIONS:
--```,``-`-`,,`,,`,`,,`---
- ACT = Direct/Reverse action
= Set for Reverse (default)
- PROP = Proportional Term basis
= 0 if [PV(n) -PV(n-1) ] (default)
= 1 if [PV(n) -SP(n) ]
- SPTRK = Set point track (move Input #1 into SP)
= integer
= 0 if No
= 1 if Yes if not in RCas, Cas, or Auto mode. (default)
= 2 if Yes if not in ROut, RCas, Cas, or Auto mode.
- BADIN = Option for action on "Bad" Input #1
= 0 if set doubly wound up
= 1 if set block to Man mode
DETAILS OF PARAMETERS:
- Node Parameters:
+ Block calculation cycle time (seconds) = F
- User Set Parameters (all under the tuning attribute):
+ Gain constant (in units of % Change in Output per % error) = K
+ Non-linear gain constant (in units of 1 / % error) = KNL
+ Integral time (in units of repeats/minute) = T1
+ Derivative time constant (in units of minutes) = T2
- External Parameters:
+ Input 0 = used as "Set Point" in algorithm = SP(n)
+ Input #1 = used as the "Process Variable" in algorithm = PV(n)
+ Input #2 = configured feedback value = FB
+ Input #3 = force tracking (set = force)
+ Output = Output of the block (after output limits) = Out(n-1)
- Stored Internal Parameters:
+ Externally readable:
@ Error(n-1) = PV(n-1) - SP(n-1)
+ Not externally readable:
@ PV(n-1) = PV at last execution
@ PV(n-2) = PV at second last execution
@ Derivative Term(n-1) {defining equation below}
@ OBL(n-1) = "Output-before-limits" at last execution
= output of the algorithm before output limiting
is applied.
@ SK = Count of the number of cycle skips caused by revision
number not changing.
@ INIT = Logical - set indicates that the algorithm is in the
first execution after O/S mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
619
ALGORITHM OPERATION:
- Before algorithm execution starts, all off-node fetches will have
been done and the values placed in the pointer data bases if the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
block is not O/S.
- Set bits 3 and 5-7 (special cascade, no path, and ATW's) in the
status bytes of all of the block's values except Output.
- Set bit 2 (no process information) and bit 3 (special cascade)
in the status byte of the Output.
- If the pointer for Input #1 is one of the following, set the O/S
bit in the mode byte of this block:
+ Null
+ Immediate
- If the pointer for the Output is any of the following, set the O/S
bit in the mode byte of this block:
+ Null + Momentary Writeable
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
+ Immediate + Required Writeable
+ Writeable + Block Point (Counted)
- If O/S mode bit set, clear other mode bits and END
- Bring in the on-node reads with their status bytes
- Set bits 3 and 5-7 (special cascade, no path, and ATW's) in the
status bytes of all of the block's values except Output.
- The CASCADE procedure will determine the value of SP(n) and its
status byte.
- If bits 0 and/or 1 of the status byte of Input 0 are set (SP =
can't communicate or "bad"), THEN:
If Input 0 <> NAN and the only mode bit set is Auto THEN:
Input 0 = its last good value
ELSE Input 0 = NAN
- If bits 0 or 1 of the Input #1 status byte are set (PV = can't
communicate or is "bad") THEN Input #1 = NAN
- If any of the 3 Inputs have a value of "NAN", THEN set the Man mode
bit and clear all lower priority bits in the mode byte. When doing
Input #2, ignore it if its pointer is Null.
- If bits 0 or 1 of the status byte of Input #2 are set (Feedback =
can't communicate or "bad") and the pointer for Input #2 <> Null, set
the value of Input #2 to its last good value.
- If the LO mode bit is reset and the Force Manual bit is not both good
and set, THEN:
+ If the ROut mode bit is set, reset bit 3 (special cascade bit)
in the ROut transfer value status byte.
+ If the RCas mode bit is set, reset bit 3 in the RCas transfer
value status byte.
- Set bit 2 (no process information) and bit 3 (special cascade)
in the status byte of the Output.
- If bit 4 of the Output status byte (no path to process, failure)
is reset and if bit 5 of the Output status byte (no path to process)
is reset, then reset bit 5 in all CASCADE transfer value status bytes
and in the SP status byte.
- If bit 4 of the Output status byte (no path to process, failure) is
set, set Man mode bit in the mode word of this block.
- Execute the Force Manual logic {see definition below}
- Unconditionally reset the IMan bit
- If no mode bits are set, then set the Man mode bit
- Execute the IMan mode operation {see below}
- If mode bits are set for LO or Man modes, jump to that operation {see
below}
- If the only mode bit that is set is ROut, jump to that operation {see
below}
- Reset bit 2 (not effected by the process) in the Output status byte
- Reset bits 6 and 7 (ATW's) in the status byte of Input #1 if the
pointer for Input #1 is a writeable pointer.
- Preliminary ATW operation:
Note: The wound-up-high ATW bit (ATW-h) is the converse of
the wound-up-low (ATW-l) bit, repeat the following
steps for ATW-l
+ Start by setting ATW-h equal to bit 6 (Wound up high) of the
status byte from the Output pointer
+ Set ATW-h if OBL(n-1) above or equal to high output limit
+ Change all following references from ATW-h to ATW-l if block
has reverse action
+ Temporarily store ATW-h for use below
- If direct action: OBL(n) = OBL(n-1) + Delta Output
- If reverse action: OBL(n) = OBL(n-1) - Delta Output
- Delta Output = Gain * [Proportional Term + Integral Term +
Derivative Term(n) ]
- Gain = K * [1 + KNL * |Error(n) |]
- If Gain = 0, then:
Delta Output = Integral Term + Derivative Term(n)
- Error(n) = PV(n) - SP(n)
- Proportional Term = [PV(n) - PV(n-1) ]
or, optionally = [Error(n) - Error(n-1) ]
- Integral Term = [F * T1 / 60 ] * [Error(n) ]
--```,``-`-`,,`,,`,`,,`---
bits in the RCas transfer location status byte.
+ If Cas is not the highest priority mode bit set, set both ATW
bits in the Cas transfer location status byte.
- END
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
622
- IF (6) AND the force tracking bit is "bad" THEN reset the force
tracking bit.
- IF (5) and not (1), (2), (3), or (4), THEN:
@ Set Out(n-1) = FB
@ If the pointer for Input #2 is a writeable pointer, then reset
bits 6 and 7 (ATW's) of the status byte of Input #2.
- IF (1), (2), (3), (4), or (5), THEN set IMan mode bit but do not
reset any other mode bits
- Set ROut transfer location = Out(n-1)
- IF not (1) THEN: OBL(n-1) = Out(n-1)
- Set Derivative Term(n-1) = 0
- Set PV(n-2) = PV(n-1) = PV(n)
- IF SP tracking option is set, THEN SP(n) = PV(n)
- RCas and Cas transfer value locations = SP(n)
- Set Error(n-1) = PV(n) - SP(n)
- IF only (6) and/or (7), THEN RETURN to the Algorithm operation above,
ELSE END.
FORCE TRACKING:
- If the Force Tracking pointer is not Null and the Feedback pointer
is not Null, THEN:
IF the Force Tracking bit is good and set
OR IF the Force Tracking bit is bad but the last good value was
set
THEN
Force IMan to be executed this cycle.
Set initialization condition (5) {see above}
END IF
RETURN
FORCE MANUAL:
- If the Force Manual pointer is not Null, THEN:
IF the Force Manual bit is good and set
THEN Man mode bit = set (leave all other bits alone)
Man mode operation will be executed this cycle if IMan not
set
END IF
RETURN
Note: When the Force Manual bit is reset, the manual mode bit
will be reset if and only if a lower priority bit is set in
the mode byte. The resetting will be done by the data base
write service. If the force manual bit goes bad, Man mode
will stay. It can be changed by the operator in that case.
If later the force manual bit becomes set and good again, it
will again force manual mode.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
624
Property Conversion
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
BASIC ALGORITHM:
- This algorithm is defined as an "Alternate block" - the algorithm
rules are not defined. The data structure is designed to support an
algorithm that calculates a physical property of a material or fluid
(Output 0) and the ratio of that property to the same property at a
standard condition (Output 1). One input to the algorithm is
intended to be introduced through the Setpoint (it could, for
example, be the fluid gravity at base conditions; the conversion for
o API is supported). Inputs 1 and 2 would introduce the actual
temperature and pressure if needed.
- Refer to the attached drawing "Property Block".
- An option identifies the SP as either the property at a defined base
temperature/pressure or at the actual temperature and pressure. Two
coefficients in one of two equation forms are available to convert
the property to the units required by the algorithm. The result is
shown in the drawing as Qin .
- The base conditions are identified by two data base entries.
- The actual temperature is introduced as Input 1. Two coefficients in
a fixed conversion equation are available to convert the temperature
to the units of degrees Kelvin (shown as "T" in the drawing).
- The actual pressure is introduced as Input 2. Two coefficients in a
fixed conversion equation are available to convert the pressure to
the units of Pascals (shown as "P" in the drawing).
- The block contains an algorithm for converting Qin to/from the base
conditions and the actual conditions. The conversion method is not
defined by the Field Bus standard but a partial list of code numbers
is defined with many code numbers left available for "free" use. The
resulting value for the physical property is shown in the drawing as
Qout .
- Qout can be converted to different units using two coefficients and
one of two equation forms. The resulting value is Output 0. This is
the value that can be changed by the operator in Man mode.
- The ratio of Qin /Qout or, optionally, Qout /Qin , is identified
in the drawing as "f" and is moved into Output 1.
- A data structure is included to support a discrete that indicates
incipient phase change.
the densities is used by the Totalizer block to convert the indicated volume to
volume at base conditions.
The design of the block was made more generic with the intention of
converting a wide range of physical properties from one state condition to
another. It is probable that the resulting general form will have many diverse
uses. The following description will be in terms of the general property
conversion application
ALGORITHM OPTIONS:
- SP_Base = discrete.
= Reset if SP is at the measured conditions.
= Set if SP is at "base" conditions.
= may be a read-only value.
- SP_EQ = discrete
= Reset if Qin equation 0 is to be used:
Qin = ai0 * (SP + bi0 )
= Set if Qin equation 1 is to be used:
Qin = ai0 / (SP + bi0 )
- Qout_EQ = discrete
= Reset if Qin equation 0 is to be used:
Output0 = (Qout / ao0 ) - bo0 )
= Set if Qin equation 1 is to be used:
Output0 = (ao0 / Qout ) - bo0
- F_Base = discrete
= Reset if f = Qin /Qout .
= Set if f = Qout /Qin .
- ROut_Val = discrete
= Reset if ROut transfer value = Qout
= Set if ROut transfer value = Output 1
- Bias_Type = discrete
= Reset if ROut bias is additive.
= Set if ROut bias is multiplicative.
- Incip = enumeration
= 0 if 2Phase is not supported (Tol_T and Tol_P not needed)
= 1 if 2Phase is to be set for incipient vapor phase
= 2 if 2Phase is to be set for incipient liquid phase
= 3 if 2Phase is to be set for incipient solid phase
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~"
MODES:
- In Manual, SP and Output 0 can be adjusted by Field Bus writes. The
block will calculate Output 1 from SP and Output 0 (SP will be
converted to Qin and Output 0 will be back-converted to Qout ,
then f will be calculated based on the F_BASE option and moved into
Output 1).
- In Auto, Outputs set by algorithm. The SP will be adjustable by
Field Bus writes unless SP_Need is reset. In that case, the SP is
set by the algorithm.
- In Cas, Input 0 pointer or Cas transfer location used for SP.
- In RCas, transfer location used for SP.
- In ROut:
+ The value in the ROut transfer location is optionally set to
match either Qout or Output 1. The algorithm calculates the
other Output from Input 0 (convert Input 0 to Qin using the
SP_EQ equation) and the ROut transfer location value.
+ a calibration factor will be generated:
@ Calculate the difference between Qout and the value that
would have been calculated by the block algorithm.
@ Optionally defined as additive or multiplicative to the
block's result.
@ Filter the bias value using a first order filter to
minimize the effect of poor data time coherency and the
operation of the block for a few cycles after the higher
level device fails. Note: no filter is to be used on the
first execution after transfer to ROut mode.
@ Apply the calibration factor to the block algorithm result
when the block mode is changed from ROut to Auto, Cas, or
RCas.
@ After leaving ROut mode, the term will be decayed to 0 (if
additive, 1 if multiplicative) at a first order decay rate
specified by a data base time constant.
@ The term will be reset (to 0 or 1) if the block mode is
changed to Manual or O/S.
There are only a few methods of correcting volume to standard conditions that
are formalized in International Standards. The following Standards appear to
have agreed on the correction factors for liquid petroleum fractions:
API Standard 2540, First Edition, Aug, 1980
IP 200
ASTM D1250
ANSI/ASTM D1250
ISO TC/28 SC3
The petroleum fractions they have defined are:
Generalized Crude Oils
Gasoline (50 <= o API <= 85)
Jet Fuels (37 <= o API <= 50)
Fuel Oils (0 <= o API <= 37)
Lubricating Oils
Individual and Special Applications
The volume corrections of the first 5 fractions requires the density of the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
fraction at the base temperature. The last requires "alpha", the thermal
expansion coefficient at the base temperature where:
alpha = 1 dV
--```,``-`-`,,`,,`,`,,`---
V dT
The engineering units of alpha will be 1/Kelvin degrees in the Property
block.
The following Standards define the correction factors for certain gases and
super-critical fluids:
TBD
One option that may be appropriate for this function is the selection of
whether 2Phase is to indicate incipient vapor, liquid, or solid. This selection
is done with the parameter Incip.
Given the direction option Incip, the fluid definition (ACN), a primary
property (Setpoint), and the actual temperature and pressure (Inputs 1 and 2),
the algorithm is to calculate 2Phase. In its calculations, it is to bias the
pressure and temperature measurements with Tol_P and Tol_T so that 2Phase will be
set "early" as the 2 phase region is approached from the current single phase
region. Again consider a steam example: while the operating conditions indicate
superheated steam is present, the Tol_P would be added to the actual pressure and
the Tol_T would be subtracted from the actual temperature to cause 2Phase to be
set "early" as the temperature dropped or the pressure increased.
The parameter "Vector" is a set of 32 bit floating point numbers. The number
--```,``-`-`,,`,,`,`,,`---
A "Bad" but not NaN value in any of the Property block's inputs will flow
through the block. If it is used to calculate an output, that Output will be
marked "Bad". This is the standard procedure for most Field Bus blocks. The
Property block will count the number of cycles during which a "Bad" value was
used by the block's algorithm.
The Totalizer block will ignore a "Bad" indicator on the volume correction
factor; it will use the value (which will be based on the last good value) if it
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
629
--```,``-`-`,,`,,`,`,,`---
is not NaN. If it is NaN, the Totalizer block will change the value to 1.0 and
"Bad" and use that.
A second design basis for the Property block was the use of Output 0 by the
Math block for flow compensation. In that configuration, the Math block will
also ignore a "Bad" indicator on the Output 0 value it gets from the Property
block; it will use the value (which will be based on the last good value) if it
is not NaN. If it is NaN, its action will be different from the Totalizer block:
it will allow the NaN to flow through to the Output. This difference is due to
the fact that there is no "safe" default for the physical property used by the
Math block similar to the "safe" default of 1.0 for the ratio used by the
Totalizer.
DETAILS OF PARAMETERS:
- User Set Parameters (all under the tuning attribute):
+ ACN = Algorithm Code Number = Integer value 0-255:
See Table 1 for the defined, reserved, and free code
numbers.
+ AName = 20 character visible ASCII string.
= algorithm description. For example: API 2540 (1980)
may be read-only.
+ ANumber = 20 character visible ASCII string.
= supported values of ACN. For example: 2-7
may be read-only.
+ Coef = Coefficient = real value:
= alpha if ACN = 7.
= manufacturer defined for ACN <> 7.
+ BaseT = the base temperature in degrees Kelvin.
Note: This variable can be read-only.
+ Tol_T = the uncerrtainty in the measured temperature
= units of Input 1 (i.e., will be multiplied by ai1 ).
+ BaseP = the base pressure in Pascals absolute.
Note: This variable can be read-only.
+ Tol_P = the uncertainty in the measured pressure
= units of Input 2 (i.e., will be multiplied by ai2 ).
+ OPTION = Bit string of length 16
Bit 0 = SP_BASE (see "Algorithm Options" above).
Bit 1 = SP_EQ (see "Algorithm Options" above).
Bit 2 = Qout_EQ (see "Algorithm Options" above).
Bit 3 = F_BASE (see "Algorithm Options" above).
Bit 4 = ROut_Val (see "Algorithm Options" above).
Bit 5 = BIAS_Type (see "Algorithm Options" above).
Bits 6&7 = Incip
Bits 8&9 = free
Bits A-F are read-only:
Bit A = free
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
630
Bit B = Reserved
Bit C = Pressure not needed (and hence Tol_P not
needed).
Bit D = Coef not needed
Bit E = ROut Bias not supported (and hence Tol_T and
Tol_P not needed).
Bit F = Vector not supported (and hence N_Vector not
present).
+ No_OPTION = Bit string of length 16
@ A set bit in No_OPTION, bits 0 thru 9, indicates that the
corresponding bit in OPTION is read-only.
@ Bit A = free
@ Bit B = Reserved
@ Bit C set = Setpoint is read-only
@ Bit D set = BaseT is read-only
@ Bit E set = BaseP is read-only
@ Bit F set = ACN is read-only
+ The conversion constants shown in the drawing:
ai0 bi0
ai1 bi1
ai2 bi2
ao0 bo0
+ The filter time constants for calculating the bias term for
ROut (Tc ) and for decaying the term after leaving ROut mode
(Td ). Both time constants are expressed in minutes.
+ Vector = The "blind" set of algorithm variables defined by the
manufacturer and optionally provided to the user.
- External Parameters:
+ N_Vector = non-negative integer
= number of 32 bit floating point values in Vector
= <= 32
= 0 if Vector is not supported
+ Input 0 = Input to Cascade structure for SP
= property value at the conditions defined by the
options and base conditions or Inputs 1 and 2.
+ Input 1 = Fluid temperature in working units.
+ Input 2 = Fluid pressure in working units.
+ Output 0 = Property value at the conditions defined by the
options and base condition or Inputs 1 and 2.
+ Output 1 = the ratio of the properties as defined by the
F_Base option.
--```,``-`-`,,`,,`,`,,`---
+ 2Phase = discrete
= set if second phase is incipient
+ Bias = real variable
= the calculated, filtered value representing the
difference between the ROut value and the equivalent
product for the block algorithm.
= ROut value - Algorithm value
+ Bad_Input_Counter: counts cycles in which:
Input Value (i.e., SP and/or Input 1 or 2) = "Bad"
AND
Mode = lower priority than Man
+ Time_stamp = system time at first instance of an increment of
the Bad_Input_Counter after the time_stamp location
was set to zero or the block transitioned from O/S
mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
631
PROPERTY BLOCK
Cas RCas
Mode
Input 0
Pointer ROut
Input Select Set Point
Word 0
Property
(Set Point) 0) Q in =ai0 (SP+bi0)
Or
1) Q in = ai0 /(SP+bi0)
--```,``-`-`,,`,,`,`,,`---
Input 2
Input
Output 0
Word 1
2Phase Output
Algorithm (Discrete) Word 0
Actual
Temperature T = ai1 *
(Input 1+ bi1)
Output 0 =
0) (Q out/ao0) -bo0
P= ai2 * Or
Input 1
Output 1
Input (Input 2 + bi2) 1) (ao0/Q out) - bo0
Word 2 Output
Word 1
f = Output 1=
Actual Qin/Qout or Qout/Qin
Pressure
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
633
Signal Capture
Editor's Note: This function block description has been accepted by the User
Layer Subcommittee as a technical report paper but it has not yet been edited.
All of the functionality of the block has been defined but the details of the
parameter definitions and the pseudocode are yet to be done.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
BASIC ALGORITHM:
- A string of analog samples of Input #1 are captured into a table that
can be read over the Field Bus.
- The total table length will be equal to the maximum single Field Bus
--```,``-`-`,,`,,`,`,,`---
message length.
- The Set Point is a discrete to start the capture. The block is
sensitive to the rise, not the state, of this value.
- The first entry in the table will be a time stamp for the first table
sample.
- The second entry will be the number of samples after the time stamp.
- The third entry will be a logical that, when set, indicates that the
table was not cleared at the time of the time stamp.
- The rest of the table will be sample values. The values will be
inserted from the time stamp end toward the far end.
- The values will be 32 bit floating point numbers and set to NAN if
Input #1 is NAN or Bad.
- When the table fills, the Output will be set. The Output could be
used to trigger another Capture block.
ALGORITHM OPTIONS:
- CIRC = Discrete: set if data capture can be triggered without the
previous data being cleared.
- DS = Discrete: set indicates that the start of the capture should be
delayed after the SP rises (see below).
USAGE NOTES:
- One of these blocks can be used alone as a triggered capture and
hold.
- One of these blocks can be used alone as essentially a circular list.
Input Word 0 would point to its own Output and CIRC would be set.
When the table filled, the Output would be set. That would start a
new cycle resulting in a new time stamp and the restart of the sample
counter. Since the restart was immediate, the table would not be
cleared; the logical would be set so users would know that the values
ahead of the counter were left from the previous cycle.
- One of these blocks can be used as an event monitor. The block would
be running as a circular list; it will freeze a configured amount of
time after the event is detected by Input #2.
- Two or more of these blocks could to used as a set - each triggering
the next when they fill. The filling of the table is recorded in the
event buffer. A master device would monitor the events and, when one
is reported, read the table's contents and set CLEAR.
DETAILS OF PARAMETERS:
- Node Parameters:
+ F = seconds = Block calculation cycle time
- User Set Parameters (all under the tuning attribute):
+ CS = Integer
= Skip cycles between samples (must be in Man to change)
+ FMTD = seconds = Force Manual Time Delay
= delay time between the setting of Input #2 and the
transition to Man.
- External Parameters:
+ Input 0 = SP
= discrete to signal start of capture (rise driven).
+ Input #1 = SAMPLE(n) = sample source
+ Input #2 = FORCE
= discrete to signal "force manual" (rise driven).
+ Output = OUTPUT(n-1) = set when the last value is captured
- Stored Internal Parameters:
+ CLEAR = Bit = Set when table to be/has been cleared
+ CAP = Bit = Set when SP has been triggered
+ FORCE = Bit = Set when force manual has been triggered
+ CNT = Skip counter
+ FMCNT = Force manual counter
+ INDEX = Index into table
Modes:
- LO State fed back by Bit 3 of the status of the Output when the block
is not in LO mode will cause an alarm but not LO Mode. If the block
is not in LO mode, the algorithm will not write the state of the
Output until Bit 3 is reset.
- The block can be set to LO mode. In that mode, the block will act as
if it is in Man but the Output can not be manipulated.
- In Manual, the contents of the table are held. The Output can be
manipulated.
- Transition from O/S, LO, or Man to Auto, Cas, or RCas sets CLEAR
- Auto mode immediately sets the SP and triggers the data capture
- In Cas or RCas mode, the rising edge of the SP triggers the data
capture.
Table Clearing:
- The table is cleared to NAN's, the time, count, and logical are all
set to zero's, and the Output is reset when the algorithm finds
CLEAR set.
Set Point:
- The Set Point will include several unique provisions:
+ The algorithm will only be sensitive to the rising edge of the
SP, not the state or the falling edge. If the block is
capturing, capture will not stop if the SP value becomes reset.
+ The block is designed to be able to work in a set. To do that,
the block must provide for two special factors. Given two
blocks in the same node, one of them is located at a lower block
location. When that one triggers its mate, the trigger is
received in the same node cycle. That trigger should be delayed
one cycle but the trigger from the block at the higher location
should not be delayed. Secondly, if the skip cycle is being
used, there would be no skip between the last sample of one
block and the first sample of the next block.
The block will include one option to correct for both of these
factors. If the "Delay Start" option is set, the following
corrections will be applied to the SP value by the algorithm.
The corrections will be inserted in the fetched Input Word 0
value. First, a one-cycle delay will be inserted in the Input
Word 0 value if it is fetched from bit 0 of the Output Word 0 of
a block in the same node AND at a lower block location. Second,
and independent of the location of the other block, the value
will be further delayed by the number of skip cycles (CS)
defined in the data base. Neither of these delays will be
provided to a SP written into the block's data base from the
Field Bus nor when written into a transfer location.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
637
Signal Characterizer
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Editor's Note: This function block description has been accepted by the User
Layer Subcommittee as a technical report paper but it has not yet been edited.
All of the functionality of the block has been defined but the details of the
parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
- Output is a non-linear function of the Input as determined by a
table lookup and linear interpolation. The table can include up to
10 breakpoints (i.e., 11 sets of x/y values).
- Will add the low set point limit and the corresponding output limit
to the set of 11 points if possible
- Will add the high set point limit and the corresponding output limit
to the set of 11 (or 12) points if possible (hence, a 13-point curve
is possible)
- Passes anti-windup information and initialization if possible.
DETAILS OF PARAMETERS:
- User Set Parameters (all under the tuning attribute):
+ 11 pairs of Input and Output values.
Point # In Out
x In(x) Out(x) | o o
------- ------ ------- | o
0 In(0) Out(0) Out | o
1 In(1) Out(1) | o
. . . | o o o
. . . | o o
10 In(10) Out(10) o---------------------------------
In
- External Parameters:
the mode of the block and the Set Point limits are reflected in the
ATW's set for the Input.
--```,``-`-`,,`,,`,`,,`---
ALGORITHM OPERATION:
Note: any of the 22 data items can be changed at any time.
- Before algorithm execution starts, all off-node fetches will have
been done and the values placed in the pointer data bases if the
block is not O/S.
- Set bits 3 and 5-7 (special cascade, no path, and ATW's) in the
status bytes of all of the block's values except Output.
- Set bit 2 (no process information) and bit 3 (special cascade)
in the status byte of the Output.
- If the pointer for the Output is any of the following, set the O/S
bit in the mode byte of this block:
+ Null + Momentary Writeable
+ Immediate + Required Writeable
+ Writeable + Block Point (Counted)
- If O/S mode bit set, clear other mode bits and END
- Bring in the pre-fetched and on-node reads with their status bytes
- Set bits 3 and 5-7 (special cascade, no path, and ATW's) in the
status bytes of all of the block's values except Output.
- The CASCADE procedure will have determined the value of SP(n) and
its status byte.
- If bits 0 and/or 1 of the Input #1 status byte are set (SP = can't
communicate or is "bad"), and/or if the value of Input #1 = NaN,
THEN set the Man mode bit in the mode word of this block and clear
all lower priority bits in the mode byte.
- If the LO mode bit is reset, THEN:
+ If the ROut mode bit is set, reset bit 3 (special cascade bit)
in the ROut transfer value status byte.
+ If the RCas mode bit is set, reset bit 3 in the RCas transfer
value status byte.
- Set bit 2 (no process information) and bit 3 (special cascade)
in the status byte of the Output.
- If bit 4 of the Output status byte (no path to process, failure) is
set, set Man mode bit in the mode word of this block.
- Unconditionally reset the IMan bit
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
- If no mode bits are set, then set the Man mode bit
- Execute the Data Base Validity Check - see below
- If all of the following conditions are true, then reset bit 5 in all
CASCADE transfer value status bytes and in the SP status byte:
+ Bit 4 of the Output status byte (no path to process, failure)
is reset
+ Bit 5 of the Output status byte (no path to process) is reset
+ Cant_Init = 0
- Execute the IMan mode operation {see below}
- If mode bits are set for LO or Man modes, jump to that operation {see
below}
- If the only mode bit that is set is ROut, jump to that operation {see
below}
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
641
--```,``-`-`,,`,,`,`,,`---
BACK-CALCULATION PROCEDURE:
- The following is a simple routine, using variables calculated in the
Data Base Validity Check procedure, to outline the procedure to use
to initialize the SP given an Output.
IF Cant_Init is reset THEN:
IF Out(n-1) <= Min_Out then SP(n) = In(In_Min_Out)
IF Out(n-1) >= Max_Out then SP(n) = In(In_Max_Out)
ELSE do simple linear interpolation to find SP(n) for
the current value of OBL(n-1)
END IF
END IF
RETURN
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
to calculate the Output given the current value of Input #1.
If Input #1 < In(0) THEN OBL(n-1) = Out(0)
If Input #1 > In(11) THEN OBL(n-1) = Out(11)
ELSE do linear interpolation between the bracketing points to find
OBL(n-1) from Input #1
END IF
- OBL(n-1) = Out(n-1)
- Call the Back Calculation Procedure
- RCas and Cas transfer locations = SP(n)
- END
Signal Selector
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
- Select high, low, middle, or first good of up to three inputs.
- Input #3 to force the selection to a particular one of the three
or to exclude any of the three.
- Pass initialization and ATW to any/all of first three inputs.
ALGORITHM OPTIONS:
- Select algorithm version
- Force the Output = last good value and "good" if no good inputs.
DETAILS OF PARAMETERS:
- User Set Parameters (all under the tuning attribute):
+ ALGO = algorithm code
0 = select low good input
1 = select high good input
2 = select first good input
4 = select middle of 3 good inputs or high of 2 good inputs
5 = select middle of 3 good inputs or low of 2 good inputs
6 = select middle of 3 good inputs or average of 2 good
inputs
7 = select middle of 3 good inputs or first good of 2
Note: in all cases, Output = good input if only one
input is good.
+ GOOD = discrete
= if set, leave the last good Output value (marked "good")
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
if all Inputs are "bad"
+ B(x) = Bias term for integral limiting for each input
where x = |1, 2, and 3|
- External Parameters:
+ Input 0 = Input(0) = SP(n)
+ Input #1 = Input(1)
+ Input #2 = Input(2)
+ Input #3 = FORCE
= 7-Bit string
= Force selection bit string
7 bits - bit 0 set if Input 0 forced to be selected
1 set if Input #1 forced to be selected
2 set if Input #2 forced to be selected
3 set = block in manual
Note: More than one Input forced to be selected implies that
the ALGO rules will be followed on the forced Inputs.
Bits 1, 2, and 3 all set simultaneously will result in
the same action as if bits 1, 2, and 3 were all reset.
4 set if Input 0 forced to not be selected
5 set if Input #1 forced to not be selected
6 set if Input #2 forced to not be selected
Note: Bits 4, 5, and 6 all set will force the Output to the
last good value and either "Bad" or NOT "Bad"
--```,``-`-`,,`,,`,`,,`---
depending on the GOOD option.
+ Output = Output of the block (after output limits) = Out(n-1)
- Stored Internal Parameters:
+ Externally readable:
@ Selection status nibble:
4 bits - all bits reset = the algorithm is running but
all inputs are "bad", "NaN",
or forced to be "not selected"
bit 0 set if Input 0 selected
1 set if Input #1 selected
2 set if Input #2 selected
3 set if Mode = ROut, Man, IMan, or O/S
+ Not externally readable:
@ OBL(n-1) = "Output-before-limits" at last execution
= output of the block before output limiting
is applied.
@ B(n-1) = Bias term for the selected value at last
execution
corrected for Output limits and the mode of the block, then passed to
the Set Point and all three of the Inputs. All unselected Inputs
that are more than their bias term away from the selected Input or
the Inputs being averaged will also have one of their two bits
automatically set: the ATW that can prevent the unselected Input
from going further away from the selected value(s) is the one that is
set. Inputs not selected because they are "Bad" or "NaN" will have
both of their ATW bits set.
ALGORITHM OPERATION:
- Before algorithm execution starts, all off-node fetches will have
been done and the values placed in the pointer data bases if the
block is not O/S.
- Set bits 3 and 5-7 (special cascade, no path, and ATW's) in the
status bytes of all of the block's values except Output.
- Set bit 2 (no process information) and bit 3 (special cascade)
in the status byte of the Output.
- Set Selector Status nibble = 1
- If all three of the pointers for the Inputs are Null, set the O/S
bit in the mode byte of this block.
- If the pointer for the Output is any of the following, set the O/S
bit in the mode byte of this block:
+ Null + Momentary Writeable
+ Immediate + Required Writeable
+ Writeable + Block Point (Counted)
- If O/S mode bit set, clear other mode bits and END
- Bring in the prefetched and on-node reads with their status bytes
- Set bits 3 and 5-7 (special cascade, no path, and ATW's) in the
status bytes of all of the block's values except Output.
- The CASCADE procedure will determine the value of SP(n) and its
status byte.
- For each of the three Inputs, set NaN in their value if bit 0 (can't
communicate) and/or bit 1 (bad value) is set and/or their pointer
is Null.
--```,``-`-`,,`,,`,`,,`---
- If the LO mode bit is reset and bit 0 in the Force Selector is reset,
THEN:
+ If the ROut mode bit is set, reset bit 3 (special cascade bit)
in the ROut transfer value status byte.
+ If the RCas mode bit is set, reset bit 3 in the RCas transfer
value status byte.
- Set bit 2 (no process information) and bit 3 (special cascade)
in the status byte of the Output.
- If bit 4 of the Output status byte (no path to process, failure)
is reset and if bit 5 of the Output status byte (no path to process)
is reset, then reset bit 5 in all CASCADE transfer value status bytes
and in the SP status byte.
- If bit 4 of the Output status byte (no path to process, failure) is
set, set Man mode bit in the mode word of this block.
- If bit 0 in the Force Selector nibble is set, set the Man mode bit
- Unconditionally reset the IMan bit
- If no mode bits are set, then set the Man mode bit
- Execute the IMan mode operation {see below}
- If mode bits are set for LO or Man modes, jump to that operation {see
below}
- If the only mode bit that is set is ROut, jump to that operation {see
below}
- Select Input:
Ignore any inputs with a "NULL" pointer
OBL(n) = the value of the selected input = OBL(n-1)
Note: Bit 2 of the selected input status byte (not effected
by the process) must be carried with the OBL(n) value
and set in bit 2 of the output. Bit 2 should be set
in the initialization of OBL(n) here so it will be
set if the initial value carries through to the output.
B(n) = the bias term for the input = B(n-1)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
646
Then:
IF Bypass is turned on, THEN:
OBL(n) = Input #1
B(n) = B(1)
ELSE IF Force selection is indicated for only one input AND
that input is good, THEN:
OBL(n) = it
B(n) = its bias
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
647
--```,``-`-`,,`,,`,`,,`---
Note: The following four statements imply that Input
#1's ATW-h is to be placed in all of RCas, Cas,
and SP status bytes.
@ Set ATW-h if OBL(n) above or equal to high output limit
@ Put ATW-h in the ATW bit of the selected input's status
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
byte.
@ For each non-selected good input (x):
limit = OBL(n) + B(n) + B(x)
IF ATW-h = set OR IF Input(x) > limit, THEN set high
ATW of the status byte of Input(x)
@ For any "bad" inputs, set both ATW bits of their status
byte.
- If RCas is not the highest priority mode bit set, set both ATW bits
in the RCas transfer location status byte.
- If Cas is not the highest priority mode bit set, set both ATW bits
in the Cas transfer location status byte.
- END
--```,``-`-`,,`,,`,`,,`---
- END
- Move both ATW's from the output status byte to the ROut transfer
location status byte
- RCas and Cas transfer value locations = OBL(n-1) = Out(n-1)
- If Input #2 has a Writeable or a Required Writeable pointer, then
Input #2 = Out(n-1)
- If Input #3 has a Writeable or a Required Writeable pointer, then
Input #3 = Out(n-1)
- B(n) = 0
- Set bit 0 of the Selection Status nibble
- END
Splitter
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
BASIC ALGORITHM:
- Signal splitter algorithm with one input, two output cascade
structure. Input 0 provided with:
+ anti-windup protection
+ initialization if possible
+ initialization value from Input #1 if present, else from Outputs
ALGORITHM OPTIONS:
- Output 0 = a * Input 0 + b
Output #1 = c * Input 0 + d
+ where:
@ x decays to Vx at a rate set by tx
where x = |a, b, c, and d|
+ and:
@ a, b, c, and d are read-only values
@ Vx are user set where x = |a, b, c, and d|
@ a zero value for tx indicates that Vx is to be used as
the fixed value of x where x = |a, b, c, and d|.
@ if Output 0 pointer not active, then ta = tb = 0
@ if both ta and tb > 0 then tb = 0
@ if Output #1 pointer not active, then tc = td = 0
@ if both tc and td > 0 then td = 0
@ a negative value for tx is changed to zero where x = |a,
b, c, and d|.
- Usage Notes:
Two examples of the use of this algorithm:
+ To split the signal from one control block for two valves to
achieve split-range control of the valves. For example, if
valve "A" is to go from full open to full closed as the control
signal goes from 0 to 50%, then valve "B" goes from full closed
to full open as the control signal goes from 50% to 100% (valve
A staying closed), the splitter algorithm values would be:
@ Given that Valve "A" is on Output 0 and Valve "B" is on
Output #1 and that the engineering units are percent of
scale, then:
Va = -2.
Vb = +100.
Vc = 2.
Vd = -100.
Both sets of Output limits might be -5 and +105%
ta = tc = at least four times the reset time of the
controller.
t b = td = 0
Note: the coefficients a and c are chosen for adjustment during
--```,``-`-`,,`,,`,`,,`---
DETAILS OF PARAMETERS:
- Node Parameters:
+ Block calculation cycle time (seconds) = F
- User Set Parameters (all under the tuning attribute):
+ Va and Vc - in units of (EU of output / EU of input)
+ Vb and Vd - in units of EU of output
+ ta, tb, tc, and td - in units of minutes
+ TOL = minimum value of a, c, or Input #1 to use in
initialization calculation (alarm if hit).
- External Parameters:
+ Input 0 = used as "Set Point" in algorithm
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
= SPn
+ Input #1 = used as initialization value if the block is in
initialization and if Input #1 pointer not null.
= In1n
+ Input #2 = 1 Bit discrete to force initialization
= In2n
+ Output 0 = Output 0 of the block (after output limits)
= Out0(n-1)
+ Output #1 = Output #1 of the block (after output limits)
= Out1(n-1)
- Stored Internal Parameters:
+ Externally readable:
@ a, b, c, and d
+ Not externally readable:
@ OBL0(n-1) = "Output0-before-limits" at last execution
= output 0 of the algorithm before output limiting
was applied.
@ OBL1(n-1) = "Output1-before-limits" at last execution
= output #1 of the algorithm before output
limiting was applied.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Set x to Vx where x = |a, b, c, and d|
IF Input #1 pointer not Null, then SP = Input #1 AND
IF ta > 0 then calculate a (using SP = TOL if SP < TOL)
IF tb > 0 then calculate b
ELSE SP = (Output 0 - b)/a (using a = TOL if a < TOL)
ENDIF
Output #1 = c * SP + d
ENDIF
Output 0 = a * Input 0 + b
- CASE 3: Output 0 pointer not active.
Output #1 pointer active.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
653
--```,``-`-`,,`,,`,`,,`---
Output #1 = c * SP + d
ENDIF
- CASE 3: Output 0 pointer not active.
Output #1 pointer active.
+ Same as CASE 2 except exchange (Output #1, c, and d) for
(Output 0, a, and b) in the description.
- CASE 4: Output 0 pointer active.
Output #1 pointer active.
+ Decay Vx depending on tx > 0 where x = |a, b, c, and d|
+ Set Bits 4 and 5 (path to process failed and no path to process)
of Input 0's status byte based on:
@ XOR corresponding bits in Output 0's status byte with 11B
@ XOR corresponding bits in Output #1's status byte with 11B
@ OR the two results from above, then XOR with 11B.
@ Set bit 5 if |a| < TOL AND |b| < TOL.
+ IF (Output 0 AND Output #1 not both forcing initialization) AND
the algorithm not initializing, THEN
Forward calculate either Output that is not forcing
initialization
Calculate one of the equation coefficients for either Output
that is forcing initialization if that Output has a
tx > 0
Determine Input 0 ATW bits:
@ adjust ATW bits of Output 0 for its Output limits
and the sign of a.
@ adjust ATW bits of Output #1 for its Output limits
and the sign of c.
@ AND the two pairs of adjusted ATW's together.
@ adjust result for the mode of the block, and the
set point limits.
ELSE
x = Vx where x = |a, b, c, and d|
IF Input #1 pointer not Null, then SP = Input #1 AND
IF ta > 0 THEN
a = (Output 0 - b)/SP (IF SP < TOL, SP = TOL)
IF tb > 0 THEN b = Output 0 - a * SP
IF tc > 0 THEN
c = (Output #1 - d)/SP (IF SP < TOL, SP = TOL)
IF td > 0 THEN d = Output #1 - c * SP
ELSE
SP0 = (Output 0 - b)/a (IF a < TOL, a = TOL)
SP1 = (Output #1 - d)/c (IF c < TOL, c = TOL)
SP = (SP0 + SP1 ) / 2
The rest is the same as immediately above.
ENDIF
ENDIF
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
654
Timer
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
--```,``-`-`,,`,,`,`,,`---
- This algorithm provides four timers, two discrete inputs, two
discrete outputs, and a cascaded analog input that can be used to
calculate the timer setpoints. The timers operate independently;
their setpoints can be independent or based on the one block
setpoint. Bit pointers and Boolean operators are provided to allow
simple discrete manipulations. The timers are triggered by the rise
in the state of any of a configured subset of their inputs.
- See attached figure "Timer Algorithm".
- Two 16 bit Input Words and two 16 bit Output Words are provided.
- Analog Input 0 (in a cascade structure) is the base timer set point.
- Eight Boolean Operators are available.
- Four generic timers, each driving defined logic (see "Timer 0
Logic").
- The data flow is configured using "Bit pointers" that can connect
to bits in Input Words, Boolean Operators, Output, Output Words,
and Logical Node Words.
- Each Timer is triggered by a rising edge of any discrete in a
configured subset of the 16 inputs to all four timers. A timer
resets if all of the triggering inputs fall before the time expires.
- Timer Logic sets Output (16 bits).
- Supports all status byte information and will pass discrete cascade
information upward through input bits under certain conditions.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
655
ALGORITHM OPTIONS:
none.
BOOLEAN OPERATOR:
The Timer Block will include eight Boolean operators that can be used to
operate on discretes before they are fetched by the Timer Input bit pointers.
For example, two input discretes may have to be "OR"ed together before the timer.
Note that the Boolean inputs can come from the bits of Input Words 1 or 2 or from
the outputs of previous Boolean operators and reflect fresh values. In addition,
they can come from any bits of Output or either Output Word but, if they do, the
value may reflect the value as of the previous cycle or a value written by
another block.
The 24 configuration words are reported under one parameter; the three words
defining operator 0 are reported first and the operator definition word is
reported first in each set of three.
All eight Boolean Operators will be executed, in order starting with Operator
0, before any of the timers or their input bit pointers are executed.
BIT POINTERS:
Bit pointers are used for configuring:
1) the 16 connections to the 4 timers (In0 - In3 in the "Timer 0
Logic" drawing).
2) the connections from Output (16 bits) to Output words or to the
Logical Node Words.
The bit pointer configuration words are grouped in the two sets described
above (16 in each of set). Each set is identified by 1 parameter name. The bit
pointer configuration word for bit 0 will be reported first.
--```,``-`-`,,`,,`,`,,`---
EXPLANATION OF THE TIMER CONFIGURATION:
The data base values for each timer (in addition to the bit pointer
configuration) are:
1) The values a and b where the timer initial value = a * SP + b
2) The remaining time on the timer (Remainder)
Note that the value of the block Setpoint that is used in (1) above is the value
during the cycle in which the timer starts.
The block will monitor the states of the timer inputs whose trigger bits are
set. If, in any cycle, one or more of the bits is found NEWLY set, the timer
will start. (A bit will never be considered to be newly set on the first cycle
after a transition from O/S, LO, LO(x), or Man mode). When the timer starts, the
Timer Monitor word will be generated by setting only those bits that correspond
to the timer inputs that:
1) correspond to set bits in the Timer Trigger word
AND
2) are NEWLY set this cycle
In the cycles that follow the starting of the timer, the Timer Input discretes
that correspond to set bits in the Timer Monitor word will be monitored and the
trigger word will be ignored. If any of them reset, their corresponding bit in
the Monitor word will be reset. If all of the bits in the Monitor word become
reset, or if the timer times out, the timer will reset.
The order of the execution of the timers is particularly important. The four
input bit pointers for timer 0 will be executed, then timer 0 will execute using
the then-current states of all 16 timer inputs. The four Output pointers for
timer 0 WILL NOT be executed at this point. Next, the four input bit pointers
for timer 1 will be executed, then timer 1 will execute using the then-current
states of all 16 timer inputs. This is followed by timer 2, then 3. When timer
3 is done, the 16 Output bit pointers will be executed, all at the same time.
When a timer resets, the monitor word will be reset and the triggering inputs
will again be monitored.
The ladder diagram shown in the sub-drawing "Timer Logic" of the drawing
"Timer 0 Logic" is typical for all four timers. This logic allows the previous
output (labeled "Old Out x") to be held while the timer is running. When the
timer resets, the "new" input passes through the timer contacts.
DETAILS OF PARAMETERS:
- User Set Parameters;
+ Configuration of 8 Boolean Operators.
+ Configuration of 16 timer logic input bit pointers.
+ Configuration of 16 Output bit pointers.
+ a_0 - a_3 = coefficients of the block Setpoint in the equations
to calculate timer Setpoints.
+ b_0 - b_3 = biases in the equations to calculate the timer
Setpoints.
- External Parameters:
+ Input 0 = Input0(n) = Analog input basic timer setpoint.
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
657
DISCRETE CASCADE:
The Timer block will pass status bytes "down" the discrete data flow path,
i.e., from I/O bits through the Boolean Operators, through the Timers, to Output
and on to the Output words no matter how convoluted the path. However, the Timer
block is limited in its ability to pass information "up" a discrete cascade. The
block will consider each of the 16 data paths through the timers, one at a time.
If the Output bit pointer points to an Output Word bit and the input bit pointer
points to an I/O Word bit, then the information will be passed upward directly
and unaltered. The timer contacts will not be considered as an impediment to the
information flow for any of the bits (i.e., when the "Old Out x" value is going
to the timer Output because the timer is running, the wind-up bits WILL NOT be
set).
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
658
mode and setpoint limits will then be added and the result passed up
the cascade.
- The Boolean operators are executed in order, Boolean operator #0
first, and the results of Operator 0 are available to the inputs of
Operator #1, etc..
- The Timers are executed in order, Timer #0 first, and the results in
the Output of timer x are available to the inputs of timer x+1. None
of the bit pointers for storing the values from Output to Output
Words will be executed until all timers are done.
- The bit pointers for Output are executed.
- Block alarms generated.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
- The PV Pointer function is executed if present.
- Output Words stored after execution with algorithm-set masks.
Mask bits set only for bits targeted by pointers.
TIMER ALGORITHM
Cas
RCas
Mode
Input 0
Pointer Output
Input
Select Word 0
Word 0
Output 0
Set Point OW0-0 E
Thru F
Input OW0-F
Word 1 Analog
(Set Point Timer 0 0
Input 2
F Logic 1 X
E 2 1
X Boolean 3 0
Op'trs. X Timer 1 4
IW1-0 X Logic 5
Thru 0
1 6
Output 1
0 IW1-F #1 7 E
Timer 2 8 F
Input * Logic 9 OW1-0
Word 2 * A Thru
X
B OW1-F
Input 2
F
Timer 3 C
E #7 1
Logic D 0
IW2-0 E X
Thru F
IW2-F X
1
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
660
TIMER 0 LOGIC
0
1
In 0 Timer 0 2 In0 Timer0
In 1 Logic 3 Output
In 2 0
In 3 Old
Out0 Timer0
In1 Timer0
Output
Old 1
Timer Configuration Out1 Timer0
Timer Initial Value where:
Value = a x SP +b
In2 Timer0
a and b = reals
Output
Remaining Time (real)
2
Four Input Bit Pointers Old
Out2 Timer0
Four Output Bit Pointers
In3
Output
3
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Totalizer
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
An addition to the algorithm definition came up after this paper was accepted -
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
we need to add two time accumulators: one to accumulate the time spent at the
maximum rate of the hardware counter and one to accumulate the time spent at the
minimum rate.
BASIC ALGORITHM:
- This algorithm can accumulate the counts from counter hardware or it
can accumulate a total from a (flow) rate. It features a 64 bit
floating point accumulator for the total. It includes a trip and
pre-trip capability where the source of the trip count can be
controlled by the mode of the block. It calculates the filtered
instantaneous rate of the counter and it separately accumulates, in a
32 bit floating point value, the "last good value" of all readings
that were marked "bad".
- See the attached figure "Totalizer Block"
- Two modes of operation (see "Totalizer Data Flow" drawing):
+ Counter Hardware Input (Type CT)(must be on physical node):
@ The "planned" flow direction is indicated by a data base
option.
@ Count handled as a negative number if the flow direction
can be sensed and is opposite to plan.
@ Count converted to a 64 bit floating point analog value
using four correction factors:
- Rate factor
- Proving factor
- Units Conversion
--```,``-`-`,,`,,`,`,,`---
@ If the input rate was "Bad", the incremental value is
changed to "Good" and integrated in a 32 bit floating
point register (BTotal).
@ Rate = Input Value scaled, corrected, and filtered, with
the status of the original input value.
- For Totalizing up, Target Value = SP (continuously variable). The
value is in engineering units (the units of Total).
- For Totalizing down, Preset = SP (only used at instant of reset).
The value is in engineering units (the units of Total).
- BTotal is always accumulated up.
- Pre-trip Output set if Total >= (SP - Pretrip_Value) for Totalizing up
(<= Pretrip_Value for Totalizing down).
- Trip Output set if Total >= (SP - Dribble) for Totalizing up (<=
Dribble for Totalizing down).
- Discrete data flow configured using "Bit pointers" that can connect
to bits in 2 Output words or 5 logical node registers: 16 bits each.
- Reset resets Total register to zero for count up (to SP if count
down) and it resets BTotal to zero.
- No mode change causes reset.
- O/S, LO, and Man modes hold Total and BTotal despite continuing
inputs. Raw count register (in the hardware) continues to be reset
every block cycle so counts are totally lost.
- The rate will be calculated and stored in Output 0 whenever the mode
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
is not O/S.
- The number of cycles with a bad count input and a mode of priority
lower than Man are counted and the time of the first event is stored.
- Input 3 can point to the "Total" register in a counter, tank gauge,
or second totalizer block. If the two registers differ by more than
a user-set deviation limit, an alarm will be generated. Two alarms
will be provided so that the alarm can show direction.
- Any time mode changes from one of Auto, Cas, or RCas to a mode of
higher priority than Auto AND Rate is > MRate (the rate below which
increments are not added to Total), an event notification will be
generated.
ALGORITHM OPTIONS:
- Accumulate = sense of accumulation into Total
= 0 if counts in planned direction or positive analog
value are to be subtracted from Total (traditional
counting "down")
= 1 if counts in planned direction or positive analog
value are to be added to Total (traditional counting
"up")
(default = 1)
- Auto-Reset = set to automatically reset the Total when the target
value (for accumulating up, 0 for accumulating down) is
reached.
MODES:
- In Manual, accumulating of input stops but the hardware counter is
reset each block cycle. Outputs can be set. If the only mode bit
set is manual, then the Force Manual input value is reset and marked
"good".
- In LO mode, the block will act as if it is in Man but the Output can
not be manipulated and LO will be set in targeted bits.
- LO state fed back by Bit 3 of the status bytes of any Output
discretes pointed to will cause an alarm but not IMan(LO(x)) mode.
The algorithm will not write the state of any Output discrete whose
status Bit 3 is set.
- A leading edge on the Force Manual input causes Man(x) compound mode.
When the Force Manual input has a falling edge, the Manual mode bit
will be reset only if another, lower priority, mode bit is set. A
continuous set or reset condition of the Force Manual input has no
effect on mode. On transition out of O/S mode, if the Force Manual
input is found set on the first execution, it will be considered to
be a leading edge.
- In Auto, outputs set by algorithm; target (preset) set by operator.
- In CAS, Input 0 pointer or Cas transfer location used for target
(preset).
- In RCAS, transfer location used for target (preset).
--```,``-`-`,,`,,`,`,,`---
proving factors will be stored in the block's data base. However, if
the block points to a counter that is physically associated with a
particular meter, then that counter input may have three data values
associated with it in the Physical node's data base:
HRF - Hardware Rate Factor
HFPF - Hardware Forward Proving Factor
HRPF - Hardware Reverse Proving Factor
The three values will be in non-volatile memory. The value of HRF
will be changeable only with the manufacturer's special commands on
Field Bus while HFPF and HRPF are intended to be changed by the user.
- The calculation of the rate includes the cycle time of the logical
node. A manufacturer may offer a more accurate method of
calculation that bases the calculation on the actual elapsed time
from one counter sampling to the next. The presence of the actual
time feature is indicated in the physical node data base.
- Record of bad value for the configured totalizer Input:
+ Last good value of count (the value that is marked "Bad") is
set good and converted to Total's basis but added to BTotal.
+ A 16 bit counter is incremented every cycle that finds a bad
value for the active Input if the mode is lower priority
than Man. The counter is not writeable from Field Bus.
+ A single time stamp register is provided. If the register is
zero when a bad Input value is found, the current system time is
saved into the time stamp register. The field device provides
--```,``-`-`,,`,,`,`,,`---
no mechanism to rezero the register O/S mode but it is writeable
BIT POINTERS:
Bit pointers are used for configuring the inputs to the "Force Manual" and
"Reset" functions and the connections from the Output to Output words 1 & 2 or to
the special logical node registers.
The Force Manual function and the Reset function are configured using two
copies of the bit pointer word. They are combined under one parameter name; the
word for Force Manual is reported first.
The Output word is configured using three more copies of the bit pointer
word. Their configurations are also combined under one parameter name: the word
for Bit 0 is reported first.
The other two parameters (STotal and SSP) are set equal to the current Total
and Setpoint (Total and SP) immediately prior to the reset. The exact
interpretation of these two values depends on whether the resetting is done
automatically or manually and whether the Totalizer is accumulating up or down.
The following will consider these 4 cases.
--```,``-`-`,,`,,`,`,,`---
is no "carry". Therefore, the value of Total before the reset must be
captured for the higher-level device but there has been no effect of a
"target value". The value of Total is moved into STotal. The STotal
register will retain the value until at least the next resetting of the
block.
The Totalizer block will reject reset requests for 8 cycles after a reset.
One reason for this is to guarantee that the snapshot values are exposed to the
Field Bus for at least 8 cycles before they can be overwritten. Since a reset is
an event that is reported in the alert buffer, a higher-level device can respond
to the event and capture the snapshot values.
DETAILS OF PARAMETERS:
- Node Parameters:
+ Block calculation cycle time (seconds) = F
- User Set Parameters (all under the tuning attribute):
+ Plan_Dir = Discrete
= planned direction of flow through the meter
= 0 if plan = forward
= 1 if plan = reversed
Note: the forward and reverse directions relate to the
flow direction indicated on the meter body itself.
+ Conversion factors:
RF = Rate factor (for example, x gallons per count).
(default = 1)
Note: may be overwritten by HRF (from counter
hardware/physical node) every cycle
FPF = Forward Proving Factor (for example, 1.015).
(default = 1)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
666
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
xPF = FPF or RPF as appropriate for actual
direction at this instant.
For analog operation:
Raw rate = Input 1 * UC * INPUT4(n)
+ Total = Accumulated total since last reset (if accumulating up;
{preset - accumulated total} if accumulating down)
including the carry value if the last reset was done
automatically.
+ STotal = snapshot value of Total at time of reset
+ BTotal = Accumulation of the "last good values" during cycles
in which the count or rate was marked bad.
--```,``-`-`,,`,,`,`,,`---
+ IF the Totalizing down option is set AND IF Total <= 0 THEN
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
SSP = SP(n)
STotal = Total
SBTotal = BTotal
@ Total = Total + SP
@ Increment Reset counter
@ Event put into node alert buffer.
- If Reset is "On" THEN
+ IF the Totalizing up option is selected, THEN
SSP = SP(n)
STotal = Total
SBTotal = BTotal
@ Total = 0
@ Increment Reset counter.
@ Event put into node alert buffer.
+ IF the Totalizing down option is selected, THEN
SSP = SP(n)
STotal = Total
SBTotal = BTotal
@ Total = SP
@ Increment Reset counter.
@ Event put into node alert buffer.
- The pre-trip discrete will be checked every cycle it is set and reset:
+ AFTER the totalizer has been reset AND IF
+ If Total >= 0.5 * (SP - Pretrip_Value) for count up
If Total <= 0.5 * (STotal- Pretrip_Value) for count down
- The trip discrete will be reset:
+ AFTER the totalizer has been reset AND IF
+ If Total >= 0.5 * (SP - Dribble) for count up
If Total <= 0.5 * (STotal- Dribble) for count down
TOTALIZER BLOCK
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Cas RCas
Mode
Output 0
Input 0
Output
Input
Input 0
Pointer Word 0
Word 0
Select
Analog
Analog Set Point (Rate)
(Set Point)
Hardware
Counter
Input 1
Output
Word 1
Force Manual Total
Output 1
(Discrete) (32 bit) E
F
BTotal
Input 2
Input DW1-0
(32 bit)
Word 2 Thru
DW1-F
1
Analog Algorithm Trip 0
To Totalizer (Discrete)
Input Output
Output 2
Word 3 0 E
Input 3
Pretrip F
1
(Discrete) DW2-0
Check Total 2 Thru
Input Counting DW2-F
Word 4 (Discrete) 1
Reset 0
Input 4
(Discrete)
Factor
Filter Conv.
Add &
Rate
Factor Add
No
Volume
Factor Mark Yes Bad
Proving
Good Value
Factor
?
Units
OR Conversion Yes
--```,``-`-`,,`,,`,`,,`---
Ct. Delta
Up =
Time Conv. - Delta
Factor ? No
Analog
Volume
Cycle Factor
Time
Units
Conversion
LO
Man. Time Conv.
Factor
Cycle
Time
Auto. Cas. RCas
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
671
Discrete
Device Control
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
SUMMARY:
The fundamental control block for discrete applications; is primarily
intended to control motors, valves, conveyors, elevators, etc. The block accepts
a discrete SETPOINT, it acquires up to three feedback signals from the equipment,
and manipulates up to three OUTPUT bits that are assumed to be connected to the
equipment. It provides the logic, mode control, and timers required to control
the equipment.
BASIC ALGORITHM:
- Control block for on/off/reverse type devices. Up to three discrete
outputs, each with a corresponding feedback input. Target state set
by a three-bit setpoint.
- See the attached figure "Device Block".
- Refer to Appendix paper: "Explanation of Device Control".
- Two 16 bit input words and three 16 bit output words.
- Control and feedback alarm function for operation of discrete devices.
+ Basic 3-state operation (on/off/reverse, open/close/stop).
+ Subsets to all control/feedback combinations less than 3x3.
+ Support for a "Human Interface" block.
+ Algorithm inputs a set point, an input from a human interface, and
up to three device feedback signals then outputs to the human
interface and to a three-bit Output Word.
+ Data flow configured using "bit pointers" that can connect to bits
in:
@ 2 Input words - 16 bits each.
@ 3 Output words - 16 bits each.
@ 5 Local logical node registers - 16 bits each.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
672
ALGORITHM OPTIONS:
+ HIF = logical: set = Human Interface Block in use.
+ LIMIT = logical: set = "limit" type feedback in use for feedback
bits 0 and 2. An example of limit type
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
feedback is the limit switches on a motor
operated valve.
reset = "state" type feedback in use for all 3
feedback bits. An example of state type
feedback is a motor contactor feedback for
"On".
+ OUTTRK = logical: set = Setpoint tracks Output in IMan mode.
reset = Setpoint left unchanged in IMan mode.
FUNDAMENTAL NOTATION:
In this block, the logical meaning of the discrete bit states is defined. In
the Feedback, bit 0 will always refer to "Open" or "On". The condition will be
true when the bit is set. Bit 1 will always refer to "Off" or "Stopped" and the
feedback will be taken to indicate that state when the bit is set. Bit 2 will
always refer to "Reverse" or "Closed".
The bits will have the same meaning in the Set Point and Output words except
that they represent the command to go to that state.
- Delay Reversing:
Some motors that can be electrically reversed require that the
motor have coasted to a low speed before power can be applied in
the reverse direction. If the motor were to be restarted in the
same direction, there would be no limit or a much smaller limit.
The delay reversing timer only applies when the control is
three-state (On/Off/Reversed) and the device block set point
requests a reversal of direction.
- Travel timer:
Many devices take a significant amount of time to respond to a
command to change state. It is necessary that the human operator
be able to command a state change and then be able to rely on the
control system to generate an alarm if the device does not arrive
at the other state in a reasonable amount of time. The clearest
example of this need is a motor operated valve.
- Crack timer:
The crack timer is closely related to the travel timer. The
travel timer suppresses the alarm until the device has had time to
arrive at the commanded state. It does not consider the fact that
the device may have a feedback that indicates that the device has
never left its original state. For example, a large motor
operated valve may have a feedback signal that shows if the valve
is open and another that shows that it is closed. When the
command is given to open, it can be obvious in 15 or 20 seconds
that there is a problem when the feedback that shows that the
valve is closed does not go away. One does not have to wait the
full travel time (perhaps 6 minutes) to recognize a problem.
BIT POINTERS:
Three input bit pointers are provided for the Cas set point definition. If
the first pointer points to the Cas transfer location, then the Cas transfer
location will be used as the source of the Set Point in Cas mode.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
674
The configuration words for the three pointers consist of three copies of the
detail word (pointer). The three words are combined under one parameter for
addressing purposes. The word for bit 0 of the set point is reported first.
Three words are reported even if only the first is used so that the length of the
parameter will be constant.
The Feedback word is configured using three more copies of the detail word
(pointer). They are combined under one parameter name: the word for Bit 0 is
reported first.
The Output word is configured using three more copies of the detail word
(pointer). These bit pointers can only point to the on-block Output words or to
the 5 special node registers. Their configurations are also combined under one
parameter name: the word for Bit 0 is reported first.
BOOLEAN OPERATOR:
The device block will include three Boolean operators that can be used to
operate on input discretes before they are fetched by the algorithm bit pointers.
For example, two discretes may have to be "OR"ed together before use as the
feedback signal of "ON". Note that the Boolean inputs can come from the
Setpoint, Feedback, and Output parameters but, if they do, the values will
reflect the value as of the previous cycle.
The nine configuration words are reported under one parameter; the three
words defining operator 0 are reported first and the operator definition word is
reported first in each set of three.
DETAILS OF PARAMETERS:
- Node Parameters:
+ Block calculation cycle time (seconds) = F
- User Set Parameters (all under the tuning attribute):
+ Restart Time Delay:
@ K1 = Contribution per start-up event
@ K2 = Contribution per second of running
@ T1 = Decay time constant (seconds)
+ Delay Reversing:
@ T2 = time between stop and "On" in the reverse direction
(seconds) (can go from "On" to "Rev.-On" or "Rev.-On"
to "On" only if T2 = 0).
+ Crack timer:
@ T3 = time limit for device to leave its prior state
+ Travel timer:
@ T4 = time limit for device to travel to its new state.
Note: T3 is used in the travel timer when LIMIT = set AND the
new command sets Bit 1 (Off/Stop) (i.e., when using limit
type feedback and the new command was the no-power
command).
- External Parameters:
+ Input 0 = Input0(n) = up to 16 bit word
+ Input #1 = Input1(n) = up to 16 bit word
+ Feedback = FB = 5 bit enumeration of device state. Bits 3 and
4 are used to expand the functionality of the
Feedback enumerations.
+ Output = Out(n-1) = 3 bit string command to the device
+ Output 0 = Out0(n-1) = 16 bit string (automatic write mask)
Note: bypass automatically goes to bits 0-2 of Out0(n-1) .
+ Output #1 = Out1(n-1) = 16 bit string (automatic write mask)
+ Output #2 = Out2(n-1) = 16 bit string (automatic write mask)
Note: if a Human Interface block is used, it must be
connected to Output #2.
- Stored Internal Parameters:
+ OLD_OUT = 3 bit string
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
675
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
676
DEVICE BLOCK
Cas RCas
2 1 0 7 6 5 2 1 0
3 Set
Input Point
Word 0 Pointers
Boolean
Op'trs. Output
Mode Select
Word 0
0
Output 0
E
F
#1 X
DW0-0
X 2 1 0 X Thru
#2 DWo-F
X 1
0
Input 4 Output
Word 0 Feedback Output
Output 1
3 0 Word 1
Input 0
F Algorithm
--```,``-`-`,,`,,`,`,,`---
2 1 E
E X F
IW0-0 1 2 DW1-0
Thru
0 Thru
IW0-F
DW1-F
1 1
0 0
Bits Bits Output
Output 2
Word 2
Input 1
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
677
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Editor's Note: This function block description has been accepted by the User
Layer Subcommittee as a technical report paper but it has not yet been edited.
All of the functionality of the block has been defined but the details of the
parameter definitions are yet to be done.
BASIC ALGORITHM:
- Interfaces a string of discrete input I/O points from field input
hardware to the Field Bus.
- Provides tag names for fields of contiguous bits and allows the option
of tags for individual bits.
- Up to n + 1 tag names per block with n = to the number of bits in the
input field.
- The hardware pointer points to a specific input register. Parameters
select the starting bit location within the register and the number of
bits in the field.
- Number of manufacturer's options which are assumed to be implemented
for the functional description. Options supported are indicated in
parameter Time_Crit0.
- All input data is read in parallel assuring no time skew across bits.
The physical hardware may sample multiple parallel input registers at
one time to offer no skew across multiple groups of bits and registers
which are accessed by multiple function blocks but this is not
required or guaranteed.
- Parameters such as debounce and latch duration apply to all bits in
the defined field.
- The status of the tag value is the same for all bits ( i..e. the same
status word will be reported for the tag name representing the entire
input field as for the tag names representing individual bits in the
field.
- An inversion mask is provided to enable inversion of specific bits in
the field.
- The Raw Input value is readable for the whole field.
FUNDAMENTAL NOTATION:
Discrete points will be structured in registers with up to sixteen(16) bits
within a register. The hardware pointer points to a specific register in the
physical device. Parameters identify the starting bit in the register and the
width of the field (number of bits). Fields may not cross register boundaries.
The starting bit pointer will be an integer index starting with zero. All
parameters which mimic the width of the input field will be bitstrings of length
n, where n is the field width and the data will be right justified. Parameters
such as debounce, latch duration, raw value, inversion mask and failout value
apply to the structure of the HW input register, not to the final right justified
output value.
NOTE : The term 'register' is used in the PLC context as a 16 bit data
storage location. The actual 'register' may be a physical device
input,a memory location, a communications buffer location or any
other accessible location which can be uniquely identified by the
'HW' pointer.
as long as no input bits are multiply defined and no fields overlap at the
register level.
A common status byte is returned for normal tag access or single bit
'alias' access. This multiple address scheme is to facilitate the use
of single bit data by other function blocks and users which do not have
masking and single bit extraction and manipulation functions.
Debounce:
The Discrete Input function block provides for the parallel input
of one (1) to sixteen (16) bits of binary data from the physical
hardware. Each bit of data is 'debounced'. The manufacturer may
provide hardware debounce by external RC network external to the block,
or provide debounce by digital processing. The manufacturer may make
the debounce period fixed or variable by the user. The debounce
parameter in the data base is represented as an unsigned sixteen bit
integer word with the value in milliseconds. The actual hardware may
not support millisecond resolution. If the debounce parameter is user
adjustable bit0 of Time_Crit0 will be set. If the debounce is not user
adjustable, a read of the debounce parameter will show the fixed
debounce time.
Latching:
Since the data access rates on the Fieldbus may be slower than the
occurrence rates of some discrete events, an optional latching service
may be provided. If bit 1 of Time_crit0 is set, the latching function is
provided. Any change of state of the inputs is retained in the output
word for the specified time period. Otherwise the processed value is
allowed to transition freely to follow the changes in the raw input
value at the block execution rate.
After this processing the input value may be inverted according to the
invert parameter . The invert parameter is a bitstring of length n with the
corresponding bit set if the bit in the raw value is to be inverted in
Output0.
OPERATING MODES:
The normal operating mode of the discrete input function block is the AUTo
mode. The processed value is available in Output0.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
In the O/S ( out of service) mode the block does not perform any input
processing. The Output0 status is set to BAD and the value is set to zero.
In the MANual mode, the block performs no input processing. The operator may
manually insert a value into Output0 value. The Output0 status has the following
status bits set:
- Not from process
- No path to process
INTERNAL PARAMETERS:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
Discrete Output
Editor's Note: This function block description has been accepted by the User
Layer Subcommittee as a technical report paper but it has not yet been edited.
All of the functionality of the block has been defined but the details of the
parameter definitions are yet to be done.
BASIC ALGORITHM:
- Interfaces a discrete setpoint value to a physical discrete output
device in the field.
- Discrete field width may be single bits or multiple bits up to 16
bits.
- Provides one tag name for the entire output field and the
manufacturer's and user's options for up to 16 individual bit tag
names.
- Provides for a number of manufacturer's options which are assumed to
be implemented for the functional description.
- The hardware pointer points to a specific output register in the
physical device, the starting bit location and the number of bits in
the field.
- Parameters such as output type ( maintained, pulsed, pulse duration )
are applicable to all bits of the field.
- All outputs in a field occur in parallel to create no time skew in the
output between bits.
- Status and mode are common to the block and the same values are used
whether the block is accessed by individual bit tag name or by the
block tag name.
- The output may be set for direct or reverse action using the
Direct/Reverse parameter bitstring.
- The output checkback function provides a positive check that the
requested output actually occurred and will present an alarm if the
output did not occur. The scope of this checkback, it's
implementation and the extent of alarms and diagnostic messages are a
manufacturer's option.
- The detection of a failure or malfunction in the output or physical
device will cause the device to transition to a user definable
physical state to the best of its ability. This Failure output state
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
may be user defined as all outputs off or to output and hold the value
defined in the Failout parameter.
FUNDAMENTAL NOTATION:
Discrete points are structured in parallel registers of up to sixteen bit
width. The function block may be defined with any field width from one to
sixteen bits. To allow the use of these output functions with other field bus
equipment which does not have bit extraction and manipulation facilities, the
manufacturer may optionally allow the assignment of tag names to individual bits
in the overall field . The block may be addressed by the overall block tag name
in which case setpoint inputs must be of a field width to match the overall
field. Fields may be defined with any width and any starting bit location within
the register and will represent contiguous bits, but fields may not cross
register boundaries unless specifically and optionally allowed by the hardware
manufacturer and the structure of the physical device. The manufacturer may
--```,``-`-`,,`,,`,`,,`---
produce devices with field widths and structures assigned at the factory or may
allow the user to configure the hardware pointer and field widths , etc in the
field. The width of the field is defined by the Field Width parameter. All
other related parameters and data locations such as setpoint, CAS input, D/R
action, Failsafe output, etc. are automatically of the same width and structure.
Parameters such as mode, status, output duration are single values which apply to
the entire block as well as single bits. (I.E. all outputs use a common output
duration parameter.)
Output type 0 (the default type) is a simple maintained output whose value
follows the setpoint. The output action may be inverted using the D/R parameter.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
683
OPERATING MODES:
The normal operating mode of the discrete output function block is the
CAScade mode. Setpoints are written into the CAS transfer location from other
controllers on the Fieldbus. The local input location may be used by a local HIF
block in the AUTO mode. ROUT is not supported. Block modes supported are:
O/S - Out of Service - all outputs are de-energize - No control
functions occur
The FailSafe_Output action may also be triggered by the logical node failsafe
function which will override all other commands. If the function block supports
the failsafe functionality, the failsafe trigger is a function of the logical or
physical node hardware and triggers all function blocks on the node.
INTERNAL PARAMETERS:
Hardware pointer......Unsigned_Integer
Field width (n).......Unsigned Octet(1-16) - defines the number of
bits in the output field.
Start_bit.............Unsigned Octet (1-16) - defines the starting
bit in the output register.
Dir/Rev action........Bitstring (n) - controls inversion of input for
direct or reverse action. Set (1) = reverse
action.
FailSafe Output.......Bitstring (n) - controls the failure mode output
actions of the corresponding bit outputs.
Output type...........Unsigned Octet (0-2) - controls the output
actions of all points in the block.
Output duration.......Unsigned_Integer( 0-65768) - duration of pulsed
outputs in milliseconds. The device may or may
not support millisecond resolution, but the
duration is expressed in this manner.
Time_crit0 ...........Bitstring (16)
Bit0 - If set (1), the block follows the FailSafe action
specified in the FailSafe output parameter.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Bit1 - If set, the device supports pulsed outputs.
Bit2 - If set, the device supports "alias" tags.
Bit3 - If this flag is set(1), the device will perform output
checking. If reset(0) the checkback function is
disabled.
--```,``-`-`,,`,,`,`,,`---
MANUFACTURER OPTIONS:
The manufacturer is given a number of options in implementing the
functionality described. The minimum set of required functions involves basic
field bus operation, mode, status and alert functions for a function block
providing one tag name and one physical output which is a type 0 output. The
hardware pointer and parameters are fixed and the only user adjustable parameters
are tag name and direct or reverse action.
The manufacturer may produce units with fixed numbers of outputs, typically
2,4,8 or 16 or allow the user to configure the output field width. Additional
options the manufacturer may offer are type 2 and/or type 3 pulsed outputs,
output checkback function, and the Failsafe output option.
Discrete Register
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
BIT POINTERS
BOOLEAN OPERATOR
EXPLANATION OF NORMAL BLOCK OPERATION
EXPLANATION OF TIMER FUNCTIONS
- Pulse Timer
- Debounce Timer
EXPLANATION OF DATA FLOW
EXPLANATION OF FAILSAFE OPERATION
EXPLANATION OF LOCKED OUTPUT
EXPLANATION OF LATCHED INPUT
DETAILS OF PARAMETERS
BAD VALUE HANDLING IN ADDITION TO ALARM
SUMMARY OF ALGORITHM OPERATION
COMPOSITE PARAMETERS
Figure 1 - Discrete Register Block
Figure 2 - Discrete Point
Figure 3 - Discrete Value Flow
BASIC ALGORITHM:
- Discrete hardware driver block to handle up to 16 mixed I/O points.
Provides individual tag names and alarm function for each point
along with simple Boolean operators.
- See attached figure "Discrete Register Block".
- One Input hardware pointer and three 16 bit Output Words.
- Input hardware pointer identifies one 16 bit discrete I/O hardware
register. Mask to ignore selected bits in the hardware.
- Input and Output discretes mixed in the one register.
- Input bits brought to Output Word 0.
- Output bits taken from Output Word 0.
- 17 tag names in one block - one for the whole block and 1 for
each of the 16 bits in Output Word 0.
- Writes to Output 0 can immediately go directly lthrough to the
hardware or can be written to hardware during this block's execution
time (as chosen by the manufacturer).
- 8 Boolean operators in the block.
- Two extra output words in the block (Output Words #1 and 2).
- Bit pointers provided for each bit in the Output Words.
- Functions provided (by input bit) in hardware-to-Output 0:
+ Optional self-power for inputs.
+ Debounce of input (on/off, one adjustable time per register).
+ Optional latching
+ Raw Input value (after debounce and latch) readable.
+ Input direct/reverse.
+ Input override.
+ Bit pointer (overrides value from hardware)
+ Alarm on either Output state and/or transition.
+ Delay off on alarm (time set by bit).
- Functions provided (by output bit) in Output 0-to-hardware:
+ Bit pointer (overrides value in Output Word 0).
+ Alarm on either input state and/or transition.
+ Delay off on alarm (time set by bit).
+ Output direct/reverse.
+ Optionally reset ouytput if "bad", else hold last value.
+ Locked Output by bit.
+ Output pulse timer (on/off, one pulse time per register).
+ Optionally respond to failsafe command.
+ Selection of failure state (hold or no-power).
+ Raw Output value readable.
+ Optional feedback check of Output circuit.
- Functions provided (by bit) in Output Words #1 and #2:
+ Bit pointers.
FUNDAMENTAL NOTATION:
Discrete points will be structured in registers with up to 16 individual
points in one register. The "subidentifier" designator will identify the
discrete point within the register; it will be an index number starting with zero
(see p3 of "Data Owner Structure - Hardware".
BIT POINTERS:
Sixteen bit pointers are provided for each Output Word. The configuration
for the 16 pointers for one word consists of 16 copies of the bit pointer
definition word. The 16 configuration words are combined under one parameter for
addressing purposes. The pointer configuration word for bit 0 is reported first.
All 16 words are reported even if some are not used so that the length of the
parameter will be constant.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
687
These procedures are ordered so that the Output bit pointers can point to the
results of the Boolean operators defined below and receive fresh values. Also,
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
the Boolean operators can be defined to operate on input bits in Output word 0,
then a pointer for a bit in Output Word 0 can pick up the result from the Boolean
operator and get the bit into the Output word before the alarm operation.
BOOLEAN OPERATOR:
The Discrete Register Block will include eight Boolean operators that can be
used to operate on discretes before they are fetched by the Output Word bit
pointers. For example, two input discretes may have to be "OR"ed together before
the alarm function. Note that the Boolean inputs can come from the input bits of
Output Word 0 and reflect fresh values. In addition, they can come from any bits
of any Output Word but, if they do, the value may reflect the value as of the
previous cycle or a value written by another block.
The 24 configuration words are reported under one parameter; the three words
defining operator 0 are reported first and the operator definition word is
reported first in each set of three.
The simplest function of the block is to transfer the discrete I/O values
to/from the physical hardware. It is anticipated that the 16 discrete points
will be a mix of inputs and outputs. Some of the points will be used by device
and logic blocks and will not need individual tag names nor alarm functions.
Some of the inputs will probably be process alarms that need a tag name per
point and the alarm function. Each of the points in Output Word 0 can have its
own tag name. Since the input discretes are placed in order in Output Word 0,
the points that need alarms are found there by default, ready for alarming.
There may well be simple Boolean operations that need to be performed on the
discrete inputs ahead of the alarm function. For example, a user may want an
alarm on the Boolean "OR" of two discrete inputs. This is accomplished by using
a Boolean operator and placing the result into one bit of Output Word 0,
overwriting one of the original bits. Note that the original bits can still be
accessed in "Output".
There may also be a need for simple combinational logic for control. For
example, one may want an input to immediately set an output IF a control flag is
set. This can be done with one Boolean operator right in the Discrete Register
Block.
Pulse Timer:
Each of the Outputs is supplied with an optional pulse timer but
the time is set once for all points in the block. This function is
intended for control circuits that latch once driven. For example, the
standard three-wire motor control circuit only needs a pulse signal to
turn off. The pulse must be sustained only long enough for the motor
control relay to drop out. Note that some self-latching circuits are
implemented with an intermittent duty relay that will over-heat if left
on for an extended time.
Debounce Timer:
The field device that is supplying the input signal may not open
and close "cleanly". It may bounce several times, particularly on
closing. The debounce timer, usually an analog filter with a time
constant of perhaps 10 to 50 milliseconds or a delay-on discrete timer,
is intended to indicate a change in state only after the bouncing is
settled. If the change of state of the input is to be accurately time
stamped, it may be necessary to reduce the debounce time to achieve the
necessary time resolution, even if that results in a bounce (and hence
more complexity in any logic block using the input).
Field Bus will assume that there is some debounce built into the
input circuit. Then, an additional debounce time for each point will
be optional but the time of the additional debounce will be set for the
whole register (block).
The figure uses a heavy dash-dot line to show the boundary between the block
and the hardware. The information that must be transferred across that boundary
is shown using the notation given below for each variable.
--```,``-`-`,,`,,`,`,,`---
The values of the "Raw Output" and the "Raw Input" are provided primarily for
maintenance considerations and for the situation where the raw input is being
checked before releasing an input override.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
689
The figure also shows the physical connections and their labels. It is the
intent of the Field Bus Standard that the physical labels on the connections will
be consistent with the "Power" and "Return" designations as shown. It is
intended that "Form 'C'" Outputs would be beyond the physical connections shown
or would add a third connection to the two shown.
The attached figure, "Discrete Value Flow", shows the data flow out of the
"Logical Value" of a discrete input, through the register I/O words of a control
block, through the bit pointer, into the control block's algorithm, out through
another bit pointer and Output register to the "Logical Value" of a discrete
output point.
The logical "FAILOBEY" indicates, when set, that the output for that bit will
obey the failsafe command. A second logical, "FAILOUT" indicates, when set, that
the output for that bit will be depowered when failsafe is set, else the output
value will be forced to hold.
The drawing "Discrete Point" indicates the location of the failsafe logic in
the output path. It is on the physical side of the direct/reverse logic;
therefore, the no-power state is literal rather than logical. Second, it is after
the Locked Output logic. The reason for that will be explained below. Finally,
it precedes the Pulse Timer logic. In a situation involving a pulsed output, if
the failsafe state is no-power, the output will be turned off immediately upon
the failsafe command because the pulse timer drops the output when the input
drops. If the failsafe state is hold and the output has just turned on, the
pulse timer may be timing and the output may be on. When the pulse time is up,
the timer will turn off the power even though the failsafe option was to "hold".
If FAILOBEY is set, the output logical value has no effect on the physical
output.
discretes or to all of them as a set. The block will show LO mode only if the LO
state is set for the block (i.e., LO is turned on for the full set). The LO state
shown in bit 3 of the status byte of the Output bits will be the "OR" of the LO
mode of the block and the LO state of that bit. Consider the following scenario:
1) bit n is marked LO, then 2) the block is marked LO, then 3) the block is taken
out of LO. Following those three steps, bit n will still have bit 3 of its
status byte set.
If any point is in "Locked Output", the value can not be commanded to change.
Note that the pulse timer is positioned after the Locked Output. Thus, if the
Output is locked while a pulse is on, it will time out and change the Output.
However, the Output will then be off and locked. The "failure" power option is
also after the locked output. However, the failure option is considered to be a
"higher level of override" then LO. Note that, since the options for failure are
1) hold or 2) no power, a circuit can still not be unexpectedly powered.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
690
The optional input latch is provided to guarantee that a signal that was
allowed through the debounce timer will be observed by the block logic.
Specifically, the latch logic will operate if "LATCH" is set. It will latch the
first change of state that occurs after the latch is read by the block each
cycle. Once that changed state is seen by the discrete register block, the then-
current output of the debounce circuit will be accepted. If it, in turn,
represents yet another state change, then the latch will hold that change for the
next block cycle. Note that multiple changes of state may be missed by this
design. However, a single but short duration change that is allowed through the
debounce circuit will be guaranteed to be seen by the Discrete Point block.
DETAILS OF PARAMETERS:
- Note: the parameters in the following table are given names for the
purpose of this definition. This block has a large number of
static, single bit configuration parameters. For efficiency,
these parameters will be composited into words for access over
Field Bus. A later section, "Composite Parameters", defines
how many of the named parameters will be combined into three
composite parameters addressed on Field Bus.
- User Set Parameters (all under the tuning attribute):
+ Data for the whole block:
@ Tag Name
@ Tag Descriptor
@ ASK = Alarm Sort Key
@ MASK = 16 bit string: set bits correspond to bits in the
hardware register that are connected to this block.
@ ACDC = Enumeration: AC/DC/etc. supported by all points in
the block
@ CURRENT = Integer: Current capacity of all output
points in register, in milliamps
(0 = varies by point)
@ DB = Integer: "extra" debounce time over the basic time,
in milliseconds
@ FB = Discrete: Set if points support feedback checking,
optional by bit, when in Output mode
@ FBANY = Discrete: Set if output points support feedback
checking by register.
@ FBALL = Discrete: Feedback checking by register: set = on
@ GRD = Discrete: Set if points can be optionally by
point tested for shorts to ground.
@ GRDANY = Discrete: Set if points can be optionally tested
for a short to ground (all points in the
register).
@ GRDALL = Discrete: Ground test by register: set = on
@ IO = Discrete: Set if points can be mixed Input and Output
@ PULSE = Integer: Pulse time for all points in the register,
in milliseconds
@ VOLTS = Enumeration: Voltage level of I/O supported by all
points in the block.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
691
@ Tag Descriptor
@ ASK = Alarm Sort Key
@ OUT = Integer: Set if point is an Output point (reset if
outputs not supported)
@ Output Data (static):
* PTR = bit pointer (mapped to the same memory location
as is used for the composite
parameter)
* OUTDR = Bit: Set if logical value to be reversed
* REBAD = Bit: Set if block is to reset and output
a "Bad" output bit. The "reset" state
is after OUTDR.
* OUTLO = Bit: Set if locked output
* PULSE = Bit: Set if pulsed output
* CHECK = Bit: Set if feedback check
* FAILOBEY = Bit: Obey logical node failsafe command
if set.
* FAILOUT = Bit: Failure state option, reset if hold,
set if no-power upon failsafe.
@ Output Data (dynamic):
* OUTLV = Bit: Logical value
* OUTLVS = Byte: Logical value status
* OUTRV = Bit: Raw output value
@ Input Data (static):
* SELFP = Bit: Set if Field Bus device is to provide
the sense power to the circuit.
* DEB = Bit: Set if additional debounce time needed
* LATCH = Bit: Set if hardware input to be latched
for the block.
* INDR = Bit: Set if raw input value to be reversed
* INOVR = Bit: Set if input value in override
* INOVRV = Bit: State of override
* PTR = bit pointer (mapped to the same memory location
as is used for the composite
parameter)
@ Input Data (dynamic):
* INRV = Bit: Raw value
* INLV = Bit: Logical value
* INLVS = Byte: Logical value status
* LVHW = Bit: Logical value from hardware (part of
"Output"
@ Alarm Data (static):
* ALMDELAY = Integer: delay off timer on alarm state,
in seconds.
* As for all blocks, there will be a defined set of
alarm conditions. The static data base will include a
priority and an option bit for each alarm. The option
bit is set if the unacknowledge bit for the alarm is
to be cleared when the alarm condition clears. The
alarm conditions will include:
1) Fail feedback check
2) Short to ground
3) Short circuit
4) Open circuit
5) Dirty contact
6) State transition
7) State = set
8) State = reset
@ Alarm Data (dynamic):
* The dynamic data base will include two bits for each
alarm. They are the "alarm set" bit and the
"unacknowledged" bit.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
692
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
still be shown in the logical value). If "REBAD" is reset, the previous output
will not be changed.
TBD
--```,``-`-`,,`,,`,`,,`---
the processing provides for the time delay necessary for the
feedback to correctly represent any recent outputs.
- If the logical node does not process writes to the Output logical
values directly through to the physical outputs, then they will be
processed during the block time of the discrete register block.
- The value of the status byte for each Output bit will be set
according to the following rules:
TBD
- The pulse timer will only operate during the "On" portion of the
Output. When the "Raw" Value is "Set", the physical output will be
turned "On" (powered) and the timer will be started. When the timer
expires, the physical output will turn off but the logical value
will remain "On" (i.e., set if OUTDR = reset).
- The logical value of each bit will be compared to the alarm states
and the appropriate alarms generated. Once an alarm state exists,
the delay off timer will prevent resetting of the alarm state for
the desired amount of time.
COMPOSITE PARAMETERS:
- Composite Block Configuration (CBC) (1 byte - static data):
Bit 0 = FB = Discrete: Set if points support feedback checking,
optional by bit, when in Output mode
Bit 1 = FBANY = Discrete: Set if output points support feedback
checking by register.
Bit 2 = FBALL = Discrete: Feedback checking by register: set = on
Bit 3 = GRD = Discrete: Set if points can be optionally by
point tested for shorts to ground.
Bit 4 = GRDANY = Discrete: Set if points can be optionally tested
for a short to ground (all points in
the register).
Bit 5 = GRDALL = Discrete: Ground test by register: set = on
Bit 6 = IO = Discrete: Set if points can be mixed Input and Output
Bit 7 = free
- Composite Block Enumeration (CBE) (1 word - static data):
Bits 0 - 5 = ACDC = Enumeration: AC/DC/etc. supported by all
Bits 6 - B = VOLTS = Enumeration: Voltage level of I/O
supported by all points in
the block.
Bits C - F = free
- Composite Point Configuration (CPC) (1 byte - static data):
Bit 0 = OUT = Integer: Set if point is an Output point (reset if
outputs not supported)
Then, if OUT = Set (an output point):
Bit 1 = OUTDR = Bit: Set if logical value to be reversed
Bit 2 = REBAD = Bit: Set if output reset on "Bad"
Bit 3 = OUTLO = Bit: Set if locked output
Bit 4 = PULSE = Bit: Set if pulsed output
Bit 5 = CHECK = Bit: Inhibit feedback check
Bit 6 = FAILOBEY = Bit: Obey Failsafe if set.
Bit 7 = FAILOUT = Bit: Failure state option, set if hold,
reset if no-power
If OUT = Reset (an Input point):
Bit 1 = SELFP = Bit: Set if provide sense power.
Bit 2 = DEB = Bit: Set if additional debounce time needed
Bit 3 = LATCH = Bit: Set if input to be latched.
Bit 4 = INDR = Bit: Set if raw input value to be
reversed
Bit 5 = INOVR = Bit: Set if input value in override
Bit 6 = INOVRV = Bit: State of override
Bit 7 = free
--```,``-`-`,,`,,`,`,,`---
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
694
Output 0
E E
Discrete F F
Points
Algorithm
DW0-0
1 Thru 1
0 DWo-F 0
Output
Output 1
Word 1 E
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Boolean
F
Op'trs.
DW1-0
0 Thru
DW1-F
#1 X 1
0
#2 X
Output
Output 2
X Word 2 E
DW2-0 F
Thru
DW2-F
--```,``-`-`,,`,,`,`,,`---
1
0
DISCRETE POINT
Block Hardware
FAILOUT S Failure Raw Self
OUTDR FAILOBEY S Power Output Power
PULSE S Control Value
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Supply
Physical Connection
--```,``-`-`,,`,,`,`,,`---
OUTLO
If Out Self
"Power"
REBAD OUTRV V Power
& In
Bit SELFP S vs. Out
In x
OUT S Control
Output
Bit
Pointer DEB S x
"Return"
Logical
Value Check Check
(Output On/Off
System Compare
Word 0)
Alarm
INBOVRV If In LATCH S
* Input Raw
Latch Debounce Input
D/R Input
Circuit
Override Value
INOVR INDR INRV
Delay Alarm Alarm
Off Check State
V
Key Human Access
ALMDELAY S = Option State
Alarm Condition
V=Value
Logical OUTPUT
Logical
Value
Value
VS VS
INPUT
V V@
User Point
User point - Input Bit Pointer
Transfer
Register
* Row * Input
16 Bit 16 Bit Bit D/ Pointer
Pointe Transfe Point' R Pointer Value
Value Override
r
V l
C C Z Z
C V0 C Z V
V0 Z *V
User Point - Algorithm
User Point
User Point -Output Bit Pointer Transfer
Register
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
S C C
V@
Key (Bus Access):
C= Configuration VS = Value n / Status Byte
S = Option state * = PID Track and Device Feedback Only
V= Value n /no status byte @ = conditional
Human Interface
Editor's Note: This function block description has been accepted by the User
Layer Subcommittee as a technical report paper but it has not yet been edited.
All of the functionality of the block has been defined but the details of the
parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
- This block defines a data base structure to support a simple human
interface (HI/F) that might be permanently mounted in a field
location. Specific instances of the HI/F might display a PV, serve
as a pump On/Off/Auto switch, or display the SP, PV, Output, and Mode
of a PID controller.
- See the attached figure "Local HI/F Block".
- The HI/F block could allow the human to set all or part of a "Status"
variable that describes the status of the display and the operation
that the human needs to perform.
- The block data base will support up to 5 data values. These values
may be fetched from Field Bus or written to the block from Field Bus.
The values are displayed on the hardware of the "Local Human
Interface" device. A value may be changed by the human and used by
the associated control block. The data base includes support for
the direct interpretation of the mode required to allow such changes.
If the operator changes any values, then an entry is generated in the
event buffer so that a higher level device can maintain a complete
operator change journal.
- The block data base includes support for an implementation in which
the local human indicates which set of values he wishes to view out
of a number of sets.
- The block data base is designed to operate with the "force tracking"
and the "feedback" options of the standard PID algorithm.
- The HI/F block will also allow the human to set a discrete command
that is specially structured to interact with the Device Block but
can also be used by other discrete blocks.
BLOCK PARAMETERS:
- Block Capability (1 byte: required)
- Hardware Pointer (1 byte: required)
- Hardware Status (1 value byte and a status byte for bit 4: required)
- Values + status bytes (optional, up to 5)
- Value Description Words (2 words required for each value supported)
- Display Set (1 word: optional)
- Feedback + status byte (optional, used with "Output")
- Discrete Command + status byte (1 byte: optional)
- Definition of Enumeration Sets (6 words: required)
- 5 Enumeration Strings (all optional)
DETAILS OF PARAMETERS:
Block Capability:
Since this block has so many optional features, this byte allows
a higher level device to determine its capabilities easily.
Bits 0-2: integer indicating the number of "Values" supported
Bit 3: set if any "Values" can have active pointers
Bit 4: set if any "Values" can be allowed to be changed
Bit 5: set if "Display Sets" are supported
Bit 6: set if "Feedback" is supported
Bit 7: set if "Discrete Command" is supported
Hardware Pointer:
--```,``-`-`,,`,,`,`,,`---
The block will have one hardware pointer. If the node only
supports one set of HI/F hardware, the value of the hardware
pointer may be fixed at 0.
Hardware Status:
The HI/F hardware may allow the human to manipulate the current
value of the "Hardware Status". For a simple display device,
this value may be fixed. The bit meanings are:
Bit 0: Pointers active? (0 = no, 1 = yes)
This status applies to field devices that allow their
display and active Field Bus pointers to be turned off,
either locally or remotely. If the display has no
active pointers, then this bit is reset. If the device
allows remote control of the display, then this bit
could be set as well as read on Field Bus. Remote
control of this bit would allow a high level device to
turn off local displays to speed up Field Bus
communications.
Bit 1: Display Update Rate = fast? (0 = no, 1 = yes)
Note: by definition, a display that has only one
display rate is "slow".
If the device allows remote control of the display, then
this bit could be manipulated as well as read on Field
Bus. Remote control of this bit would allow a high
level device to slow down local displays to speed up
Field Bus communications.
Bit 2: Force "Good" status for discrete command? (0 = no,
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
1 = yes)
This bit is a command to the HI/F block to allow a
"good" status byte on the discrete command byte: it
normally is forced to a "No-Com" status. The discrete
control block that is fetching the command byte and
configured to use it as the HI/F input can be configured
to ignore it when it has a No-Com status. Therefore,
Five key parameters will have first priority for the 5 value
locations. Those parameters and their primary locations are:
Value 0 -- Input 0
1 -- Input #1
2 -- Output 0
3 -- Mode
4 -- Eng. Units
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
700
--```,``-`-`,,`,,`,`,,`---
event buffer in the node and insert an event every
time a Value is changed.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
701
The block may support one 8-bit value called the "Discrete
Command". This value is specifically designed to support the
Device Block. The interpretations of the low-order nibble in this
value are:
- 3-Position Format:
This format is intended for the simplest of all HI/F
devices, a simple 3-position switch (On/Off/Auto). This
format is invoked by the reset state of Bit 3. Bit 3 is,
in turn, copied from Bit 3 in the hardware state word.
--```,``-`-`,,`,,`,`,,`---
in before the HI/F took control: Auto or any mode
with a lower priority.
+ Off/Closed (Bit 1 and 2 set, bits 0 and 3 reset)
The Device block is set to LO(x) mode and the block
output is set to turn the device Off or Close it.
+ Auto (all of bits 0-3 reset):
On transition to Auto at the HI/F block, the mode
of the Discrete block is no longer forced to LO(x).
Usually, the block mode will change to mode (x).
The Setpoint will be at its last state. Since
there will be no transition in the Setpoint, the
Output of the Device block will not change when
the HI/F block is switched to mode (x). However,
if (x) <> Auto, then the Cas or RCas primary may
change the Setpoint.
- 4-Position Format:
This format is intended for a simple 4-position switch
(On/Off/Reverse?Auto). It is invoked by the set state of
Bit 3. Note that the Device Block, with which the HI/F
block will usually be linked, has a special provision to
interpret this format as a 3-position format if
appropriate.
+ On (Bits 0 and 3 set, bits 1 and 2 reset):
The Device block is set to LO(x) mode and the block
output is set to turn the device On.
+ Off (Bits 1 and 3 set, bits 2 and 3 reset):
The Device block is set to LO(x) mode and the block
output is set to turn the device Off.
+ Reverse (Bits 2 and 3 set, bits 0 and 1 reset):
The Device block is set to LO(x) mode and the block
output is set to turn the device On in the reverse
direction.
+ Auto (Bit 3 set, bits 0, 1, and 2 reset):
Same as the 3-Position Format.
- Write-Back Data:
The associated discrete block may write back to the
discrete command of the HI/F block to indicate its current
status. This information is placed in the high nibble of
the discrete command. Its representation is:
+ Bit 4 Set = Can't command On/Open.
+ Bit 5 Set = Can't command Off/Stop.
+ Bit 6 Set = For 3-Position Format: Can't command the
signal that is represented by the middle
position on the 3-position switch.
For 4-Position Format: Can't command
Reverse/Close.
+ Bit 7 Set = Device block in IMan, LO, or LO(Man) mode.
Definition of Enumeration Sets (7 - 16 bit integers)
The block will optionally support up to 5 sets of enumerations for
use in displaying the values. These seven integers will be fixed
by the manufacturer of the device to indicate the maximum number
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
702
Value 0 Output 0
Display Value
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Select Value Change Value 1 Output 1
Jog Value
Jog Mode
Value 2 Output 2
Discrete command:
Set Command Value 3 Output 3
Display feedback
Feedback X Output 5
(no pointer)
Discrete X Output 6
C d (no pointer)
Hardware X Output 7
St t (no pointer
--```,``-`-`,,`,,`,`,,`---
Logic
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
- This algorithm provides step logic evaluation which may be
represented in either Boolean logic or ladder logic format.
- See attached figure "Logic Algorithm".
- Two 16 bit Input Words and three 16 bit Output Words.
- Standard cascade structure for handling a Setpoint whose bits can
then be accessed by the program.
- A set of logic steps that defines how to set 8 bits in the "Output"
word and define the movement of the 8 bits in Output to Output Words.
- The logic evaluation can use one of two built-in logic procedures to
manipulate the Setpoint bits while moving them to the Output: one is
oriented toward simple bit by bit override while the other is
oriented toward the requirements of the 3-bit discrete Setpoint.
These two procedures provide full support for discrete cascades and
all status byte information.
- Data flow configured using "Bit pointers" that can connect to bits in
+ 2 Input words - 16 bits each
+ 3 Output words - 16 bits each
+ 5 local logical node registers - 16 bits each
ALGORITHM OPTIONS:
- OUTTRK = logical: set = Setpoint tracks Output in IMan/LO mode.
- RIMAN = logical: set = program runs when the block is in IMan mode.
- RLO = logical: set = program runs when the block is in any LO mode.
but the Output Word Bits in LO can not change.
BIT POINTERS:
Bit pointers are used for configuring:
1) the inputs to form the Cas setpoint.
2) the connections to the logic instructions.
3) the connections from the 8 bits of the Output word to their
destinations.
Three input bit pointers are provided for the Cas setpoint definition. If the
first pointer points to the Cas transfer location, then the Cas transfer location
--```,``-`-`,,`,,`,`,,`---
will be used in Cas mode. The configuration for the three pointers consists of
three copies of the bit pointer configuration word. The three words are combined
under one parameter, using the auto-formatting procedure, for addressing
purposes. The word for bit 0 of the setpoint is reported first.
The configuration of the logic instructions, which defines all of the rest of
the bit pointers in this algorithm, is given in detail below.
Since this algorithm is designed to support both the Boolean and Ladder
presentation, it is necessary to clarify the notation that will be used in this
paper. The word "instruction" will be used to refer to each of the logic steps
used to calculate the final result of the algorithm. In the ladder diagram, each
of the individual operators on each rung is an instruction. A vertical line in
the ladder diagram (other than the power and ground rails) is an instruction. In
addition, there will be three types of instructions that will be represented by
"boxes" in the ladder representation. In a Boolean representation, each
individual "box" or drawing icon can be one or more instructions. The word
"string" will be used to refer to all of the logic that lies between fetched
values and a particular intermediate value. In a ladder diagram, one string lies
to the left of a single coil and 2 or more strings connect to the left side of a
vertical line.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
706
with a fetched value, and pushes the result onto the stack. A
compound AND with more than 2 inputs is supported.
3) a Boolean "OR". This removes two values from the stack, OR's them,
and pushes the result onto the stack. A compound OR with more than
2 inputs is supported.
4) a Boolean "XOR". The 2-input XOR removes two values from the
stack, XOR's them, and pushes the result onto the stack.
5) a "VOTE" instruction. This compound instruction removes three or
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
more values from the stack and compares the number of inputs that
are set with configured high and low limits. If the number of set
inputs is within the limits, it sets the result and pushes it onto
the stack. Outside of the limits, it resets the result and pushes
it onto the stack.
6) two versions of "SPx" logic - the logic for each is defined below.
Each version removes a configured number of values from the stack
and executes its logic. It places three values back on the stack.
No instructions other than terminators can follow the SPx step.
7) a "TERM" or terminator. This corresponds to the end of a Boolean
logic string or to the coil in a ladder diagram. In this function
block, the terminator will always reference and define the next
available bit in the 8 bit string called "Output" unless it follows
a SPx operation. In that case, the first TERM after the SPx will
define bit 5 in Output.
The two SPx instructions are designed to facilitate the use of this block in
discrete cascades. The two versions are called SPx-0 and SPx-1. The first is
intended to provide simple control over the Setpoint bits while providing the
ability to pass cascade information from the Output back to the Setpoint. The
other is specifically intended for use in passing the 3-bit Setpoint or Output of
a device block. Note that the 3-bit value has the requirement that one, and only
one, of the three bits be set at any time. The SPx-1 logic enforces that rule.
The SPx-0 logic is defined in the ladder diagram shown in the drawing "SPx
LOGIC - Version 0 - Independent". This logic allows the program logic to
override the state of any or all of the Setpoint bits and force either a Set or
Reset condition. The following provides additional explanation to accompany the
drawing:
1) SP0, SP1, and SP2 are the three bits in the Setpoint
2) S, s-1, and s-2 are the three bits pushed to the stack by the SPx
logic. The value s is the top-most value in the stack. The 1 to
3 TERM instructions that follow the SPx instruction move the values
to bits 5, 6, and 7 in Output and define the bit pointers for those
bits. The "s" output will always correspond to Bit 5 in Output.
3) The lower 6 coils represent six status bits in the three Setpoint
status bytes: the wound up high and the wound up low bits in each of
the bytes.
4) The SPx-0 function uses 6 input values.
SPx0: if set, then override SP0 to Reset.
SPx1: if set, and SPx0 is Reset, then override SP0 to Set.
SPx2: if set, then override SP1 to Reset.
SPx3: if set, and SPx2 is Reset, then override SP1 to Set.
SPx4: if set, then override SP2 to Reset.
SPx5: if set, and SPx4 is Reset, then override SP2 to Set.
5) Out Bit Status: a shorthand reference. Consider the first such
rung: <> WUH, Bit 0.
The coil determines the WUH status in the status byte of bit
0 in the Setpoint. The Out Bit Status on that same rung is
the WUH status in the bit pointed to by the first pointer for
Output, bit 5. Each of the other rungs has a corresponding
definition.
The SPx-1 logic is shown in the ladder diagram in the drawing "SPx LOGIC -
Version 1 - On/Off/Rev.". This logic ensures that the Output always has one and
only one bit set. It allows the SPx bit pointers to force a device to retain its
present state or to turn off but it does not allow the logic to turn a device
"On" in either direction. That must be done from the associated Device Block.
The logic instructions shown in the drawing are the following:
1) SP0, SP1, SP2, and all but the top 2 coils are as defined above.
2) Temp1 and Temp2 are temporary variables to facilitate the
expression of the ladder. They need not be stored (or even exist)
and can not be referenced by any other block instructions.
3) Old Bit 0: Bit 0 of the Setpoint corresponds to Bit 5 of Output.
That bit has a pointer. (If it has 2 pointers, this reference is to
the first of the 2.) It points to a particular bit in an Output
Word. Old Bit 0 is the value of that bit (it is automatically the
value that was obtained on the prefetch of the Output Word because
it has not yet been updated for this cycle).
4) Old Bit 2: similar to Old Bit 0.
5) SPx0: if set, then prevent transition to "On"
--```,``-`-`,,`,,`,`,,`---
The rules of the block result in the SPx logic automatically operating only
on bits 5, 6, and 7 of Output. In addition, there can only be zero or one
instance of SPx in a program. Only TERM instructions can follow the SPx logic
and no more than 3 of them. If fewer than 3 TERM instructions follow the SPx
logic, the s-2 (and possibly s-1) values are left on the stack. If s-2 is left
on the stack, "Old Bit 2" is considered reset. Since no pointers will be formed
for their "Out Bit Status" calculation, they will be considered to be not failed,
not in LO, but with the No-path status set. If there is no pointer for what
would have been Output bit 6, it will be considered to be not wound up. For what
would have been bit 7, it will be considered to be doubly wound up.
DETAILS OF PARAMETERS:
External Parameters:
+ Input 0 = Input0(n) = up to 16 bit word
+ Input #1 = Input1(n) = up to 16 bit word
+ Output = Out(n-1) = 8 bit string of logic output
Note: bypass automatically goes to bits 5-7 of Out(n-1) .
+ Output 0 = Out0(n-1) = 16 bit string (automatic write mask)
+ Output #1 = Out1(n-1) = 16 bit string (automatic write mask)
+ Output #2 = Out2(n-1) = 16 bit string (automatic write mask)
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
--```,``-`-`,,`,,`,`,,`---
+ Bad Output:
Bad value on prefetch handled the same as Inputs. Bad values
after solution are stored as Bad unless configured to a
location that does not have a status byte, then not stored.
This rule also can be overridden - see "Detail Word
(Pointer)".
Otherwise, the ATW bits are reset in the Setpoint and inputs.
In the special case of the unlatching TERM, its bit pointers can only
point to latching TERMs and can not invert the state.
- Three input bit pointers are provided for the Cas setpoint
definition. If the first pointer points to any of the 3 value bits
in the Cas transfer location, then the Cas transfer location will be
used as the source of the setpoint in Cas mode. Otherwise, the three
pointers can be pointed to any on-block named parameters including,
of course, the Input and Output words. Note that the first bit can
not be obtained from the Cas Transfer Location and the second and/or
third bits obtained from a different variable. The pointers include
the ability to select one bit from the low 16 bits in the named
parameter.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
711
- Each instruction in the program starts with a 16 bit word called the
Instruction Definition word. It is diagrammed in the drawing labeled
"Logic Block - Instruction Definition Word". The three high order
bits provide for a simple parsing of the program. They identify "not
configured" instructions (one word) or the number of words comprising
the total instruction (a value between 1 and 6). The structure of
the low-order 12 bits of the definition word is in one of two forms
as shown and as differentiated by the state of bit CH.
--```,``-`-`,,`,,`,`,,`---
normal bit pointers, are selected using bits in the definition word.
These additional options provided by the Instruction Definition word
for input pointers are:
@ Recognize the No-Com status as bad (meaningless if the next
option clears bad)
@ Clear a Bad status of the bit.
@ Clear an Override (i.e., not-from-process) status for the
bit.
@ Set an Override status for the bit.
These optionns operate oon the fetched bit, not on the source bit.
The VOTE instruction uses the detail word to allow the user to
configure extra information for the instruction's operation. The
operation of this detail word will be explained below.
--```,``-`-`,,`,,`,`,,`---
- The instructions for the logic are all stored in a single parameter
that can be up to 128 bytes long. The parameter will have the
auto-formatting structure. Thus, the first 4 bytes will be a header.
The fifth byte will be the Instruction Definition Word of the first
instruction.
All of the icons for both Boolean and ladder drawings contain arrows
with the letter "s". In all cases in which the arrow flows into the
icon, s is the value found on the top of the stack. In all cases in
which the arrow flows out of the icon, s is to be placed on the
stack. Six icons show an input arrow labeled "s-1": this
represents the second value on the stack being used as an input. In
a similar fashion, "s-1" and "s-2" on output arrows represent the
second and third value on the stack (s-2 is the "deepest" of the
three values in the stack, i.e., s-1 is pushed to the stack before
s). It is assumed that all of the s's and their arrows would be
removed from the final diagrams.
Three of the Boolean icons and one of the ladder icons have jagged
lines in their drawings. These lines indicate that that drawing may
be a portion of an icon: it may be joined with another portion
depending on the previous or next instruction in the program.
The basic diagram of the Boolean icon for the PUSH emphasizes
the idea that the PUSH is normally followed by another
instruction whose icon merges with that of the PUSH. If the
previous instruction was a PUSH, the symbol is located under
the previous one.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
713
The "B" flows into the left side of the next instruction's
icon, replacing the "s" shown. The SPx icon already shows
the "B".
+ AND
The AND instruction uses a single bit pointer to fetch a bit
(with its status byte), "AND" it with the value on the top of
the stack, and place the result onto the stack. More details
on the exact calculation of the status byte will be given
below.
The basic diagram of the Boolean icon for the AND is shown.
If the previous instruction was an AND, the top of the block
is opened and joined with the bottom of the previous icon
portion. If the next instruction is not an AND, the bottom
of the block is closed, the exit arrow moved up to the right
side, and the block labeled as an "AND".
--```,``-`-`,,`,,`,`,,`---
The Ladder icon for the AND is always as shown. Notice that
this icon and the icon for the PUSH differ only in that the
PUSH originates at the power rail.
The AND instruction must always have one, and only one,
detail word (pointer). Hence, bits C-FH in the Instruction
Definition word must = 0100B.
+ OR
The OR instruction does not have a bit pointer; it simply
OR's together the top two value on the stack and puts the
result back onto the stack. More details on the exact
calculation of the status byte will be given below.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
714
--```,``-`-`,,`,,`,`,,`---
instruction. The added complexity was not considered
worthwhile.
+ XOR
The XOR instruction always has two, and only two, inputs. It
is represented in both the Boolean and the ladder drawings by
a two-input box as is shown. The output of the XOR will be
set if one, and only one, of the inputs is set.
+ VOTE
The VOTE instruction is drawn essentially identical to the OR
except that it is represented on the Ladder diagram by a
block or box, instead of a single vertical line. The ladder
representation of "n" VOTE instructions in series would be a
single vertical box with a vertical length slightly greater
than "n" times the vertical spacing between strings. The
value of "n" can not be less than 3.
+ SPx
The SPx functions use 4 or 6 inputs. The inputs can be on
the stack when the instruction is encountered and/or they can
be specified by pointers attached to the SPx instruction. It
is not necessary that all of the inputs of the SPx function
be supplied: they will be considered "reset" if not
supplied.
Note: The inputs for the SPx functions might have been
designed to have the inputs all placed on the stack
with PUSH instructions. Then a SPx instruction that
had no pointers of its own could use the stack values.
However, each PUSH instruction would have used two
instruction words while a pointer attached to the SPx
instruction itself only uses one word. Since many
inputs are not calculated values, it is much more
efficient to use the SPx pointers.
Which inputs are obtained from the stack versus which inputs
--```,``-`-`,,`,,`,`,,`---
are obtained from the pointers and in what order will be
determined by convention, not by configuration. The
following discussion will define the convention. The
discussion will use the following three variables:
Let Num_Pointers = number of configured pointers
= (number of instruction words shown
in bits DH-FH of the Instruction
Definition Word) - 1.
Let Num_Inputs = number of SPx inputs
= 6 if SPx-0
= 4 if SPx-1
Let Stack_Count = number of entries on the stack
SPx1 = s
SPx2 = Pointer value
SPx3 = reset
The diagram of the Boolean icon for the SPx function is also
shown as if Num_Pointers = Num_Inputs. If Num_Pointers <
Num_Inputs, then:
1) if some of the inputs are to be obtained from the
stack, the algorithm will use the above relationship
to identify the input values obtained from the stack.
2) if some of the inputs are not specified, the
algorithm will consider them reset - their
representation on the diagram is not specified.
The only instructions that can follow the SPx function are
TERM instructions and they must have a type value of 0 to 2
(TERM, Delay On TERM, Delay Off TERM). If there are three
TERM instructions following the SPx, then all three of the
--```,``-`-`,,`,,`,`,,`---
logic strings from the SPx function box can be completed. If
there are less than three, then the lower rows from the SPx
box (i.e., bit 7 or bits 6 and 7 of OUTPUT) are deleted.
+ TERM
The TERM instruction has bit CH in its Instruction Definition
word set. It can include zero, one or two detail words. It
represents the moving of the top value (with its status byte)
from the stack into the next available bit in Output and the
writing of the value to the appropriate bits in the Output
Words.
The basic diagrams of the icons for TERM are shown. In the
Boolean drawing, it is simply the last block in the logic
string. In the ladder, it is the "coil". In general,
there can be zero, one, or two pointers that leave the
Boolean or ladder diagram to place the results into the
bits of Output Words 0-2.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
717
Delay-On-TERM
Has a detail word that defines the time (in
milliseconds) for which the change to "On" in the
value of the bit is to be delayed. If the input
changes to "Off" before the time expires, the
counter will reset and the output will never turn
"On". The timer is reset if Init._Status is set.
Delay-Off-TERM
Has one detail word that defines the time (in
milliseconds) for which the change to "Off" in
the value of the bit is to be delayed. If the
input changes to "On" before the time expires,
the output value will never change to Off and the
timer will be reset. The timer is reset if
Init._Status is set.
--```,``-`-`,,`,,`,`,,`---
Latching TERM
When the value is set, it will remain set until
reset by an unlatch command from another
termination. Both the latching and the
unlatching will be rising edge triggered. Both
the latch and unlatching signals are initialized
to the reset state if "Init._Status" is set.
Then the new states are calculated. If the input
value is still on when an unlatch signal is
received, the output will go to reset and will
remain reset until the input value changes to
reset, then changes to set again. If the unlatch
signal is on when the input signal transitions to
set, the output will transition to set. It will
stay set, independent of its input, until the
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Unlatching TERM
When the value is set, it will cause a Latch type
termination to unlatch. The particular latch
type termination(s) is defined by the pointer(s).
The pointer(s) for this type of TERM can only
point to an on-block Latching type TERM
(identified as bits in OUTPUT). In addition, the
value of the unlatching TERM can not be inverted;
There are eight other separate integers that are not addressable on
the Field Bus. They are defined only for purposes of defining the
calculation method:
1) Stack_Count = 0 to LENGTH = number of entries in the stack.
= initialized = 0
2) Stack_Counter_Limit = 0 to LENGTH = maximum limit on
Stack_Counter.
= initialized = LENGTH
3) Num_Inputs = integer = total number of inputs.
= initialized = 0
4) Num_Set = integer = number of inputs that are set.
= initialized = 0
5) Num_Set&Bad = integer = number of inputs that are both set and
--```,``-`-`,,`,,`,`,,`---
marked "Bad".
= initialized = 0
6) Num_Reset&Bad = integer = number of inputs that are both reset
and marked "Bad".
= initialized = 0
7) Num_Set&Process = integer = number of inputs that are both set
and from the process.
= initialized = 0
8) Num_Reset&Process = integer = number of inputs that are both
reset and from the process.
= initialized = 0
The XOR instruction does not need to use variables 3 to 8 above. The
XOR instruction pops the stack by a net of 1. It removes the top two
values from the stack. Its result is set if, and only if, one of the
two values is set. The instruction places the result on the stack.
The Instruction_Count for the entry that is made onto the stack will
be based on the larger of the two Instruction_Counts that accompanied
the input values. That value will be incremented by 1 and placed on
the stack as the Instruction_Count for the new stack entry. The
instruction will decrement the Stack_Count by one and decrement the
Stack_Counter_Limit by one.
--```,``-`-`,,`,,`,`,,`---
Set Bit 2 of the Status byte.
ELSE
IF Num_Set > Vote_Max THEN
IF (Num_Set - Num_Set&Bad) < Vote_Max THEN
Set Bit 1 of the Status byte.
IF Num_Set&Process < Vote_Max THEN
Set Bit 2 of the Status byte.
ELSE
IF (Num_Set + Num_Reset&Bad) > Vote_Min THEN
Set Bit 1 of the Status byte.
IF Num_Reset&Process = 0 THEN
Set Bit 2 of the Status byte.
ENDIF
ENDIF
The Instruction_Count will be based on the larger of the two
Instruction_Counts that accompanied the last 2 input values.
That value will be incremented by 1 and placed on the stack
as the Instruction_Count for the new stack entry.
The icon for the SPx instruction is complex and would consume a full
6 rows if shown in standard ladder notation. Therefore, it will be
assumed that the ladder display uses a condensed icon that only
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
consumes the three rows needed for the outputs. To allow display
room for this type of compression, the SPx block is assumed to be 3
times as wide as other icons.
The SPx instruction will remove Stack_Count values from the stack
and push 3 values to the stack. Then:
1) Inspect the Instruction_Count values of the Stack_Count values
on the stack to find the maximum Instruction_Count. The value
must be 5 or less. If not, set a configuration error
notification and set the mode to O/S.
2) IF Stack_Count_Limit < (3 - Stack_Count) THEN
set a configuration error notification
set the block to O/S mode.
ELSE
Set Stack_Count_Limit = Stack_Count_Limit - (3
- Stack_Count).
Set Stack_Count = 3
Set the Instruction_Count = 8 for each of the entries
onto the stack.
The TERM instruction will check SPx_Done and it will check the number
of instructions left on the stack. The handling is dependent on the
type of TERM instruction as follows:
IF SPx_Done is reset THEN
IF Stack_Count <> 1 THEN
Set the configuration error notification.
Set the block to O/S mode.
ELSE
Set Stack_Count = 0.
Decrement Stack_Count_Limit by 1.
ELSE IF Latching or Unlatching TERM THEN
Set the configuration error notification.
Set the block to O/S mode.
ELSE IF (Stack_Count is < 1 OR Stack_Count > 3) THEN
Set the configuration error notification.
Set the block to O/S mode.
ELSE
Decrement the Stack_Count by 1.
Every value pushed onto the stack by each step or the value set in
a bit of Output by a TERM instruction is packed into
consecutive bits of 3 consecutive words. The bit for each step is
reset if the corresponding item is in its normal (Off or False)
state. The state bit for the first instruction will be in bit 0 of
the first word, then in order through bit FH of the first word, then
bit 0 of the second word, etc,
There is a status byte for each step. The format of the individual
status bytes are Field Bus standard. The status bytes that accompany
each of the above bits are packed into the succeeding bytes of the
same parameter. This is the parameter that a Human Interface will
access to obtain the information necessary to draw the power flow in
the ladder diagram.
The status byte of the first instruction is reported first, (in the
11th byte of the parameter) followed by the second status byte, etc.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^
LOGIC ALGORITHM
RCas
7 6 5 2 1 0
Cas 3 Set
Point
2 1 0 Pointer Output
Mode Select Word 0
Output 0
E
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
F Thru
SP2 SP1 SP0
E OW0-F
IW1-0 1
X X X
Thru 0
IW1-F 0
1 Step Instructions Output E
1 Word 1 F
0
0 2
1 3
2 OW1-0
4
--```,``-`-`,,`,,`,`,,`---
Input 3
Output 1
5 Thru 1
Word 1 . OW1-F 0
. 6
Input 1
F
E . 7 X
. Output
IW2-0
Output 1
.1E E
Thru Word 2
X1F F
IW2-F X
OW1-0
1
0 Thru
OW1-F
1
0
SPx LOGIC
Version 0 - Independent
SP0 SPx0
S
SPx1
SP1 SPx2
SPx2 S-1
SP2 SPx4
S-2
SPx5
Out bit
Status
SPx0
WUH
Out bit Bit 0
SPx1 SPx0 Status WUL
Out bit Bit 0
SPx2
Status WUH
SPx2 Out bit Bit 1
SPx3 Status WUL
Out bit Bit 1
SPx4
Status WUH
SPx5 SPx4 Bit 2
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
WUL
Bit 2
Out bit
Status
Figure 57: Logic, Figure 2, SPx Logic, Version 0 - Independent
--```,``-`-`,,`,,`,`,,`---
SPx LOGIC
Version 1 - On/Off/Rev.
SP0 SP1 SP2 SPx0 SPx1
Temp
1
SPx2 Old Bit 0 Old Bit 0
Temp 1 Temp 2
S
Temp 2 Temp 2
S-2
S S-2
S-1
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Operation
F E D C B A 9 8 7 6 5 4 3 2 1 0
Description
Value =0 PUSH
1 AND
Value Description
2 DR
000 Not Configured
3 OR
001
4 VOTE
to Number of
5 SPx-0
110 Instruction Words.
6 SPx-1
7-F Reserved
Element 10-1F Free
0 B A 9 8 7 6 5 4 3 2 1 0
Input State
Pointer Input Operation Description
Option State Value =0 Input State
1 Rising State
Termination 2 Falling State
3 Transition
1 B A 9 8 7 6 5 4 3 2 1 0 4&5 Reserved
6&7 Free
7-F Reserved
Pointer Pointer Termin.
0 #1 Type Termin. Type
Options Option
Description
Free
Description Value =0 TERM
1 Delay On TERM.
Bit States Inputs Outputs 2 Delay Off TERM.
Low bit set Set Bad If No-com Suppress LO 3 Latching TERM.
--```,``-`-`,,`,,`,`,,`---
Next bit set Clear Bad state Sep. Fail/No-Path 4 Unlatching TERM.
Next bit set Clear Override Write Only On Change 5 END
High bit set Set Override Increment Target 6&7 Reserved
A-F Free
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
726
F E D C B A 9 8 7 6 5 4 3 2 1 0
A B D C B A 9 8 7 6 5 4 3 2 1 0
2 Bits Force-
00 = Null
01 = Force to 0 2 Bits: If Bad- 7 Bits: Parameter
10 = Force to 1 00 =Null 4 Bits: Bit Number
11 =Keep Old 01 = Use 0 1 Bit:
--```,``-`-`,,`,,`,`,,`---
10 = Use 1 0 = use Direct Value
11= Keep Old 1= Invert Value
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
727
PUSH B S
S B
S S
AND
B
S
OR S-1 S S
S-1
S S
S-1 S
S-1 S
VOTE S
S
B0
B0 S
SPx-x S-1 SPx-x S
S-2 Bn S-1
SPx-0, Bn S-2
SPx-1
S
TERM S On On
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Figure 61: Logic, Figure 6, Logic Icons - Basic Shape
Program Control
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Editor's Note: This function block description has been accepted by the
User Layer Subcommittee as a technical report paper but it has not yet been
edited. All of the functionality of the block has been defined but the details
of the parameter definitions and the pseudocode are yet to be done.
BASIC ALGORITHM:
- This algorithm provides a structure in which a 32 line program can
implement a simple procedure that can not (efficiently) be done in
the standard blocks. The block will provide a standard cascade
structure for handling a Setpoint whose bits can then be accessed by
the program logic. The block can also be configured to use one of
two logic procedures to manipulate the Setpoint bits while moving
them to the Output: one is oriented toward the requirements of the
3-bit discrete Setpoint and the other is oriented toward simple bit by
bit override.
- See attached figure "Program Algorithm".
- Two 16 bit Input Words and three 16 bit Output Words.
- Internal Registers A-D (16 bits wide) and Reg. Output (3 bits wide)
- 32 instruction "program"
- 6 bit pointer fetches plus the 3 Setpoint bits are used for "SPx
Logic" to drive the Output word.
- The 3 bits in the Output are stored in Output Words based on bit
pointers.
- Supports discrete cascades and all status byte information.
ALGORITHM OPTIONS:
- OUTTRK = logical: set = Setpoint tracks Output in IMan mode.
- RIMAN = logical: set = Program runs when the block is in IMan mode.
- RLO = logical: set = Program runs when the block is in any LO mode.
- SPx_OPT = logical: set = On/Off/Reverse logic in the "SPx Logic".
reset = Independent logic in the "SPx Logic".
BIT POINTERS:
Bit pointers are used for configuring:
1) the inputs to form the Cas set point.
2) the inputs to the "SPx Logic".
3) the connections from the coils to their destinations.
Three input bit pointers are provided for the Cas set point definition. If
the first pointer points to the Cas transfer location, then the Cas transfer
location will be used in Cas mode. The configuration for the three pointers
consists of three copies of the bit pointer configuration word. The three words
are combined under one parameter for addressing purposes. The word for bit 0 of
the set point is reported first. Three words are reported even if only the first
is used so that the length of the parameter will be constant.
Six bit pointers are provided to define the source of the information for the
automatic sub-logic used to determine the three bits in Output. The configuration
for the pointers consists of six copies of the bit pointer configuration word.
The six words are combined under one parameter for addressing purposes. The word
for F1 is reported first, then F2, G1, G2, H1, and then H2. Six words are
reported even if only four are used so that the length of the parameter will be
constant.
Three more bit pointers are provided to define the destinations of the three
Output bits. The destinations can only be specific bits in Output Words 0-2 or
in the Logical Node Output Words 0-4. The configuration for the three pointers
consists of three copies of the bit pointer configuration word. The three words
are combined under one parameter for addressing purposes. The word for bit 0 of
the Output is reported first. Three words are always reported so that the length
of the parameter will be constant.
PROGRAM DEFINITION:
The program can consist of up to 3210 lines of object code. Each line is
automatically identified with its index number from line 0. Each line has the
general form:
{Command} {Target Operand} {Source Operand}
--```,``-`-`,,`,,`,`,,`---
The system that executes the object code will maintain 12 flags. The flags are
manipulated by certain of the commands and can be interrogated by other commands.
The attached Table 1 defines the 12 Flags that will be maintained by the
program system.
The attached Table 2 defines the target operands and groups them into 6 sets
for use in Table 4.
The attached Table 3 defines the source operands and groups them into 7 sets
for use in Table 4.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
730
The SPx Logic is defined as part of the Ladder Block. The Program block will
use exactly the same logic with the same bit pointers defined to fetch the inputs
for the SPx Logic. The output of the SPx logic will define the parameter Output
that is part of this block.
DETAILS OF PARAMETERS:
- User Set Parameters (all under the tuning attribute):
+ Configuration of 2 Input word and 3 Output word pointers.
+ Configuration of the source of the Cas Set Point.
+ "Program object code".
+ Configuration of the SPx elements (6 logic elements).
+ Configuration of Output pointers (3).
- External Parameters:
+ Input 0 = Input0(n) = up to 16 bit word.
+ Input #1 = Input1(n) = up to 16 bit word.
+ Registers A - D = REGA - REGD = 16 bit registers.
+ Register Output = OUTPUT = 3 bit Register.
+ Output 0 = Out0(n-1) = 16 bit string (automatic write mask).
+ Output #1 = Out1(n-1) = 16 bit string (automatic write mask).
+ Output #2 = Out2(n-1) = 16 bit string (automatic write mask).
- Stored Internal Parameters:
+ ISTAT = Initialization Status = 1 bit = set if block in
initialization pass.
--```,``-`-`,,`,,`,`,,`---
SUMMARY OF ALGORITHM OPERATION:
- Two Input words and three Output words fetched if necessary.
- Determine the new Set Point:
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
+ In RCas mode, the Set Point is obtained from the RCas transfer
location.
+ In Cascade mode, the Set Point can be configured as any three
on-block bits or it can be configured to get its value from the
Cascade transfer location.
+ In Auto mode, the Operator or higher level device sets the Set
Point.
- Block alarms generated.
- IF bypass, then Setpoint passed to Output; skip the program and
SPx logic.
- Program Executed.
- Setpoint and the values fetched with the 4 (or 6) SPx bit pointers
(F1, F2, G1, G2, H1, and H2) are passed to the SPx logic chosen by
SPx_OPT. The result back is "OUT"
- The values in OUT are passed to the block and logical node Output
Words.
- Output Words automatically form write masks and mask write their
new values if any bit in the mask allows writing. However, if the
program writes a Mask to an Output Word, it will be used unchanged.
THEN, if SPx_Opt is set AND two or three of the Setpoint bits are
marked failed, all three will be marked failed.
bit 5: (No-path)
If an Output Word bit that is pointed to by an Output bit pointer
has its No-Path status set, then the Setpoint bit in the position
corresponding to the Output bit pointer will be marked No-Path.
If an Output bit pointer is null, its corresponding Setpoint bit
will not be marked No-Path.
THEN, if SPx_Opt is set AND two or three of the Setpoint bits are
marked No-Path, all three will be marked No-Path.
bits 6 and 7: (ATW bits)
The logic for back-calculating the ATW bits is defined in the SPx
definitions.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Flags:
0F = bit 0 flag
This flag is set if the last operation on Register A resulted in
the corresponding bit in Register A being set.
Note: 0F detects a No-Com in a status byte or an ROut mode.
1F = bit 1 flag
This flag is set if the last operation on Register A resulted in
the corresponding bit in Register A being set.
Note: 1F detects a Bad Value in a status byte or an RCas mode.
2F = bit 2 flag
This flag is set if the last operation on Register A resulted in
the corresponding bit in Register A being set.
Note: 2F detects a Not-from-Process in a status byte or a Cas mode
3F = bit 3 flag
This flag is set if the last operation on Register A resulted in
the corresponding bit in Register A being set.
Note: 3F detects a Special bit in a status byte or an Auto mode.
4F = bit 4+ flag
This flag is set if the last operation on Register A resulted in
--```,``-`-`,,`,,`,`,,`---
all of bits 4 through F reset.
Note: 4F detects a situation in which the mode is Auto or lower
in priority or Cascade path fully open.
5F = bit 5+ flag
This flag is set if the last operation on Register A resulted in
all of bits 5 through F reset.
Note: 5F detects a situation in which the mode is Man or lower
in priority
6F = bit 6 flag
This flag is set if the last operation on Register A resulted in
the corresponding bit in Register A being set.
Note: 6F detects an IMan mode or a set ATW-l status.
7F = bit 7 flag
This flag is set if the last operation on Register A resulted in
the corresponding bit in Register A being set.
Note: 7F detects an O/S mode or a set ATW-h status.
GF = greater than flag
The last test command occurred while the target was greater than
the Source.
LF = less than flag
The last test command occurred while the target was less than the
Source.
SF = single flag
The last operation resulted in one bit set in the target operand.
Note: this can be used to detect pure modes.
ZF = zero flag
1) The last operation resulted in a completely reset target
operand.
2) The last test command resulted in an equality compare.
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
TARGET OPERANDS
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Bit y Status byte y = |0 - F|
08 + Logical Node Word x, Lxy x = |0, 1|
Bit y Status byte y = |0 - F|
Immediate:
Immediate Value xyH x = |0 - F|
y = |0 - F|
Alert Code:
An Alert Code Axy x = 2
y = |0 - F|
top
SOURCE OPERANDS
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Source
Set Name Operand Description Code Definition of x
Full Source Set:
Register x RGx x = |A, B, C, D|
Input Word x IWx x = |0, 1|
Output Word x OWx x = |0 - 2|
Logical Node Word x LNx x = |0 - 4|
Output Mask x OMx x = |0 - 2|
Defined Value Dxy x = |0 - 1|
y = |0 - F|
08 + Immediate Value xyH x = |0 - F|
y = |0 - F|
08 + Mode MOD
013 + Setpoint STP
013 + Output OUT
015 + Initialization Status IST
08 + Register x, Rxy x = |A, B, C, D|
Bit y Status byte y = |0 - F|
08 + Input Word x, Ixy x = |0, 1|
Bit y Status byte y = |0 - F|
08 + Output Word x, Oxy x = |0, 1|
Bit y Status byte y = |0 - F|
08 + Logical Node Word x, Lxy x = |1 - 4|
Bit y Status byte y = |0 - F|
--```,``-`-`,,`,,`,`,,`---
08 + Setpoint Bit y SPy y = |0 - 2|
Status byte
08 + Output bit y Status byte OTy y = |0 - 2|
Short Target Set:
Register x RGx x = |A, B, C, D|
Output Word x OWx x = |0 - 2|
Define Value:
Defined Value Dxy x = |0, 1|
y = |0 - F|
Flags:
Flags FLx x = |0-7, G,
L, S, or Z|
Immediate:
08 + Immediate Value xyH x = |0 - F|
y = |0 - F|
Select Mask:
Mask Value xyH x = |0 - F|
y = |0 - F|
Switch Value:
Original Position Number xyH x = |0 - 2|
y = |0 - 2|
xy <> 21
Example position number: 01H
The value in Bit 2 was in Bit 0, the value in Bit 1 was
in Bit 1 (hence, by default, the value in Bit 0 was in Bit 2)
top
COMMANDS
Command
Mnemonic Command Description Target Set Source Set
DEF Define a value - define 8 bit Target Immed. Immed.
--```,``-`-`,,`,,`,`,,`---
Value concatenated with the 8 bit
Source Value as a 16 bit value. Label
it with this program line number.
No flags changed.
MOV Move the Source Value to the Target. Full Full
Flags SF and ZF updated.*
AND Boolean AND the Source Value into the Short Full
//^:^^#^~^^"~~:~"~$$"~$^"#:*~^~~^*@:"#~~^:^~~":^*#^^@\\
Target Value
Flags SF and ZF updated.*
BOR Boolean OR the Source Value into the Short Full
Target Value
Flags SF and ZF updated.*
XOR Boolean XOR the Source Value into the Short Full
Target Value
Flags SF and ZF updated.*
TST Nondestructive compare the Source and Full Full
the Target Values and set the aF flags. *
LPU Loop unconditionally to the given Line any
backward line number, suspend the program Back
for this cycle, and start there next cycle.
No flags changed.
LPS Loop if Flag set to the given backward Line Flag
line number, suspend the program for Back
this cycle, and start there next cycle.
No flags changed.
LPR Loop if Flag reset to the given backward Line Flag
line number, suspend the program for Back
this cycle, and start there next cycle.
No flags changed.
JPU Jump unconditionally to the given Line any
forward line number. Forw.
No flags changed.
JPS Jump if Flag set to the given Line Flag
forward line number. Forw.
No flags changed.
JPR Jump if Flag reset to the given Line Flag
forward line number. Forw.
No flags changed.
SHL Shift Target Left, padding with reset Short Immed.
bits, dropping off of the left end. (Max = E)
Flags SF and ZF updated.*
SHR Shift Target Right, padding with reset Short Immed.
bits, dropping off of the right end. (Max = E)
Flags SF and ZF updated.*
S0L Scan Source for the first reset bit Short Full
starting on the left; put the count
in Target.
Flags SF and ZF updated.*
S0R Scan Source for the first reset bit Short Full
starting on the right; put the count
in Target.