... networks1
It should be mentioned that Ethernet-based solutions, commonly known as Industrial Ethernet, are emerging, which can be seen as an alternative to fieldbus technologies. Although a direct connection between Industrial and legacy Ethernet is most often not possible, establishing vertical integration may proof to be easier with this technology.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... UDDI2
UDDI stands for ``Universal Description, Discovery and Integration'' and is a standard which deals with the discovery of Web Services. UDDI is further described in section 2.5.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``WSDL''3
WSLD stands for ``Web Services Definition Language'' and is a standardized language which can be used for describing technical issues of Web Services. WSDL is further described in section 2.4.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... RSS4
RSS stands for ``Really Simple Syndication'' and is used for distributing news and the content of news-like Web Sites.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... UDP5
The ``Transmission Control Protocol (TCP) and ``User Datagram Protocol'' (UDP) are commonly used transport protocols in combination with the network protocol ``Internet Protocol'' (IP). A good introduction to these protocols is given in [TAN02]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... W3C6
The World Wide Web Consortium was created in October 1994 to lead the World Wide Web to its full potential by developing common protocols that promote its evolution and ensure its interoperability. W3C has around 450 member organizations from all over the world and has earned international recognition for its contributions to the growth of the Web.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... XML7
XML is a markup language like HTML and is a subset of SGML. XML is further described in section 2.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... model8
The OSI reference model, developed by the International Standards Organization (ISO), is a standard reference model for networking protocols used in various layers. For further references see [TAN02].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SGML-based9
The ``Standard Generalized Markup Language'' (SGML) was developed in the 1970s and is a very mature and flexible but also quite complex markup language. Most of today's markup languages are based on SGML.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... structure10
1:n means in this context that each child has exactly one parent but a parent can have zero, one or multiple children.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... (DTD)11
DTD is also derived from SGML and is part of the XML standard. The syntax of DTD is similar to XML but is not XML compliant, moreover, it has various limitations, such as lack of extensibility and weak data typing. DTD is commonly used today but is expected to be replaced by XML Schema in the near future. Further information about DTD can be found in chapter 5 of [BIR01]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... strings12
It is also possible to define custom simple types, such as strings with a fixed length, or even use regular expressions for defining patterns which the elements must match.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... datatypes13
Serialization means that language specific data types are transformed into an independent format, e.g. into text format. As this independent format is strictly defined by SOAP it can easily be de-serialized into data types of another language. To fulfill this task, the SOAP standard defines various data types, like integers, strings or arrays that can be mapped to their corresponding counterparts in any high level programming language, like C/C++, Java or script languages like Perl or Python.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... header14
The SOAPAction header element can be used for indicating the purpose and/or destination of a SOAP message. It can only be applied to SOAP messages that are transported via the HTTP protocol.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... protocol15
For example, HTTP does not by itself support state-fulness, which is often required for transactions or authentication purposes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SOAPActor16
A SOAP node can contain any numbers of actors, in other words, a node can play the role of several different SOAP Actors. [LIV02] describes this in a more specific way: Actor role = SOAP node functionality.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... faults17
SOAP Faultcodes are meant to be extensible. That means specific error codes to these main four codes, such as ``Client.AuthenticationError'' or ``Server.PowerFail'' can be appended to these four generic Faultcodes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... defined18
It should be noticed that these two approaches to the encoding of SOAP messages has caused some confusion which has led to the development of SOAP frameworks that implement only one encoding standard. This has led to incompatibilities between different SOAP frameworks which greatly reduces interoperability between SOAP Web Services.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SSL19
The Secure Socket Layer (SSL) is commonly used together with HTTP and technically adds a security layer between HTTP and TCP. More information about SSL can be found in [THO00].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... type20
XSD simple or complex types are allowed
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``port''21
A WSDL port must not be confused with a TCP socket type port.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... standard22
The UDDI community contains over 220 companies. Therefore its support of the industry and its acceptance is guaranteed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... aggregated23
In fieldbus environments multiple nodes are often needed to fulfill certain tasks. In such cases it makes sense to present these nodes in groups where aggregated fieldbus nodes perform specific functions.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... capabilities24
Values from fieldbus nodes most often can be polled, which basically means that one device requests values of another device. Another way of transmitting data are notifications where certain events trigger devices to send data to one or more other devices.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... Foundation25
OPC stands for ``OLE for Process Control'' where OLE is an abbreviation of ``Object Linking and Embedding'', a standard created by Microsoft which enables simple data transfer between OLE aware applications. OLE is the predecessor of COM/DCOM.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... environments26
There are products available that provide DCOM also on non-Microsoft platforms. One example would be EntireX DCOM by Software AG that brings the DCOM programming model to UNIX. However, these alternatives often have limitations and are not very widespread.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... options27
Examples of common quality bits would be ``good'', ``bad'', ``badDeviceFailure'' or ``uncertain''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... data.28
The COM/DCOM-based standards of OPC enable read/write operations to OPC Items only through OPC Groups. This is different with XML-based standards of OPC, which enable direct read/write operations to OPC Items. OPC Groups do not play an important role in these standards.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... space29
Address space in this context refers to which OPC Groups and OPC Items are available on the server and how they are addressed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... environment.30
COM/DCOM incorporates a special data type called ``VARIANT'', which is used to represent several common data types like integers, strings and date/time types.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... server.31
Polling is perfectly supported by the HTTP protocol as it follows its simple request/response method.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... design.32
COM/DCOM has different connection and communication abilities that enable asynchronous data transfers.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... times.33
The hold time specifies a minimum delay which is based on the maximum update rate of the underlying device. The setting of the wait time has to be balanced so that possible server errors are detected in a reasonable time. Moreover, it is important keep in mind possible timeout values of underlying network protocols which must be greater than the sum of hold/wait time and the network latency.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... objects.34
This perfectly fits the XML data structure where elements can contain other elements and form a parent/children-like structure.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... precision35
Resolution describes the accuracy of a real value in comparison to precision, which defines the number of decimal places.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... units36
The International System (SI) provides the seven basic units kilogram(kg), meter(m), second(sec), Kelvin(K), ampere (A), mole (Mol) and candela (cd). Any other unit can be represented by these basic units.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``hour''37
The conversion equation is defined as $toNormal = scalar * scale + offset$ where ``scalar'' are hours in this example.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... quality38
The quality element describes the status of the value, such as ``ok'', ``disabled'' or ``fault''. An additional element ``display'' may be used to provide a detailed description for applications.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... periodically39
oBIX defines a so-called ``lease time'' which must not be exceeded.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... updates40
oBIX is currently a working draft, so future releases of oBIX could implement appropriate techniques.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... architecture41
REST is another approach to implement Web Services and differs by design much from SOAP Web Services. REST is a very abstract definition. Instead of defining a standard, it is an architectural guideline. REST calls resources ``nouns'' and access functions ``verbs''.The main idea is to provide resources, referenced by URIs and access/modify them by four basic HTTP functions GET, PUT, POST and DELETE. These resources are modeled by self-describing XML documents that may reference other resources. Serialization issues are not described by REST. More information can be found in [FIE00].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... BACNet/WS42
BACNet stands for ``Building Automation and Control Networks'' and is an American national standard, a European pre-standard and an ISO global standard.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``Aliases''43
The attribute ``Aliases'' contains all reference nodes while the attribute ``Reference'' contains the path to the referred node
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... form44
The canonical data format applies to the encoding rules used in the XML Schema standard.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... assigned45
An example of a polymorphic parameter would be a function that returns values of multiple data types.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``getArrayRange''46
This service can be used to retrieve parts of arrays.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``getArraySize''47
The getArraySize service returns the number of items in an array attribute.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ``interval''48
This parameter specifies the time interval between values. If the requested interval is shorter than the actual sample rate, the server returns interpolated values.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... defined49
It has to be noted that every node contains the attribute ``children'', which could be used for browsing the data structure. However, this attribute is optional and it is not described in the standard how to utilize it for browsing.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... LON50
The ``Local Operating Network'' (LON) was developed by the company Echelon around 1990 and is based on a decentralized architecture, containing of multiple nodes that contain logic.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... points''51
In LON fieldbuses, data points basically map directly to network variables.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... levels52
Priority level ``0'' is the highest priority while ``255'' is the lowest. The default priority, which is set during the boot process is ``255''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... messages53
Alternatively, the XML files can be modified by hand and uploaded to the gateway with the File Transfer Protocol (FTP). This method has the huge drawback that the i.LON 100 has to be restarted, in order for the configuration changes to take effect.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... XML54
Encoded XML files are created by escaping the characters ``$<$'', ``$>$'' and ``SPMamp;''. Encoded XML is treated like a character string by XML parsers and is therefore not verified.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... function55
Alternatively, the log files may be downloaded with FTP.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... mind56
Clients located on upper enterprise levels will use these Web services to access the underlying fieldbus. Such Web services should be designed in a compatible style, so that one client can easily retrieve fieldbus data from different services.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... solutions57
For instance, the standard will specify generic read/write operations which are available in all fieldbus systems. A vendor may now choose to implement his own enhanced read/write operation instead of using the generic one. This way, basic operations may become fieldbus specific.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... operations58
An example would be HTTP, which is only a request/response protocol and is therefore unsuitable for asynchronous services such as alarming notifications.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... complex59
Moreover, some of these tricks may not work in certain environments or may lead to undetermined states. An example would be the ``Advanced Subscription'' as described in [OPCXMLDA] where custom TCP/IP timeouts could possibly lead to unpredictable errors or problems.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... resource-centric60
Resources are represented by documents, which are commonly written in HTML or XML.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... structure61
If for example single elements of the underlying data structure are linked together, operations for browsing may become unnecessary.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... structures62
For example, Profibus has a very different underlying concept compared to LON which results in different data structures.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... holders63
This addressing scheme conforms to ``pointers'' in common programming languages
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... complicated64
In case of a high number of data points, an operation which lists available data points will return a huge data set. To circumvent this problem, browse results may be limited by filtering rules. Data points that do not match certain criteria will not be returned.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... delimiters65
This addressing scheme is similar to URLs and could look like /item1/item2/item3.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... viewpoints66
There may be a technical perspective of a system and also a logical or a geographical viewpoint, such as aggregating similar technical devices compared to arranging data after geographic locations.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... languages67
Localization not only deals with translating text. Other localization issues are country-specific date/time formats, currency and others.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... way68
If no Locale is specified or no appropriate localized fieldbus data is available, the default locale will be returned.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... implement69
Nevertheless certain conversion functions may have to be implemented by the gateway as the fieldbus itself may provide fieldbus data in units other than the SI system defines.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... sensor70
A short introduction to accessing Web Services through WSDL with python can be found in [PIL05].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... means71
For instance, if an application returns the average temperature of a building and one temperature sensor fails, the missing temperature may be approximated by the application.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... applications72
An example for such a design would be the IGUANA gateway, which is described in detail in chapter 5.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... message73
A better approach would be to name the attributes such as <value>12.2</value> and de-serialize them according to the element names. This way, additional attributes, which are inserted in the SOAP body due to extension purposes, could be ignored by clients.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... 8)74
Storing data in elements is called hierarchical model whereas storing data in attributes is called canonical model. However, often data will be stored in a mixture of these two models.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... parser75
This applies to both XML parser types, namely the ``Document Object Model'' (DOM) and the ``Simple API for XML'' (SAX).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... speed76
Fieldbus SOAP messages are small in size and simple, moreover, the bandwidth is not a limiting factor as Internet/fieldbus gateways may be connected to clients via fast LAN networks. Therefore the document size and the processing speed will not matter for most applications.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... types77
Datapoints may represent various sensors, which provide data of different types, such as a simple counter (integer type), a temperature (float type) or complex data (string type).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...bacnet78
[BACNET/WS] calls the data point value ``polymorphic'' and encodes the data as simple strings.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... timestamp79
This timestamp is generated by the fieldbus. Possible fieldbus latency and other timing issues will be compensated by the underlying fieldbus technology itself.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... vary80
When multiple SOAP requests have to be processed by the Internet/fieldbus gateway, or the gateway is busy with other tasks, the encoding/decoding process cannot be predicted and may vary.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... (WANs)81
The underlying technology may for instance be Ethernet, Frame Relay, ISDN.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... traffic82
The problem with this approach is that network devices, which are prone to congestion issues, have to implement QoS, which is not the case for commonly used network devices.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... timeouts83
Proxies in between or lower level protocols also have timeouts that could be lower than the HTTP timeout.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... message84
It would also be possible to implement an SMTP server into the client, so that SMTP messages can be received directly by the client. However, setting up appropriate SMTP routing may prove difficult and will possibly involve other servers due to security restrictions, which may be inappropriate.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... paths85
These modules may be seen as clients and servers, which is denoted with the arrows in the picture. For instance, the ``Extended Service Daemon'' (ESD) is a client of the FAN daemons and the Internet Notification Originator, while it is a server for the Internet front-ends. On the other hand, the Internet front-ends are clients of the ESD.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... UNIX86
Currently, the IGUANA gateway is implemented on a LINUX operating system
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... values87
Indexed datapoints are currently used for historical data.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... type88
This property must not be confused with the encoding type of the value, which may be different to the fieldbus specific data type.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... mode89
This property denotes the accessibility of the datapoint, such as read-only or read-write.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... 01.01.197090
This data type corresponds to the ``time_t'' data type of the POSIX.1 standard, also known as ``UNIX timestamp''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... C3''91
The IGUANA BINHEX data type must not be confused with the BinHex data type, which was introduced by Apple and is described by RFC 1741. Although the data types are similar, RFC 1741 introduces a simple mechanism to compress repetitive characters.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ESD92
Other protocols would be the FAND protocol, which is basically a subset of the ESD protocol and is used for the communication between the ESD and the FAN daemons and the ``Internet Notification Originator'' (INO) protocol, which is designed for the communication between an INO daemon and the ESD.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... entities93
For instance, characters like ``<,>,&,'' would be converted to ``&lt;,&gt;,&amp;''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...<[!CDATA[...]]>''94
Between the brackets all characters are allowed except two closing brackets.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... used95
ESD may also be transported via HTTP without the use of SOAP. This way, the good communication abilities of HTTP may be used without the need of an XML parser or SOAP framework.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... whitespace96
Whitespace are the characters ``ASCII space'', ``horizontal tab'' (HT), ``line-feed'' (LF) and ``carriage-return'' (CR).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... whitespace97
The XML specification states that whitespace in element contents must not be altered by the XML parser with the only exception that a CR or CR/LF has to be converted to a single line feed. This is different to HTML, where whitespace is removed by the parser.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... systems98
For instance, LON provides appropriate metadata, such as a location string, while other fieldbus systems do not.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... same99
The minor difference is that the IGUANA BINHEX encoding has whitespace between each octet, while the XML Schema hexBinary has none.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... computer100
Although it seems most appropriate to place the OPC server directly on the IGUANA gateway, hardware limitations or the lack of appropriate OPC toolkits may lead to implementations, where the OPC server is situated outside of the gateway. In such cases, it will often be placed on a personal computer, which may also be used for client applications.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...xmlda-encoding-items101
Another way would be to map IGUANA encodings to OPC data types, such as mapping SCALARBIN to a float data type or TIME to a time compliant data type in a 1:1 mapping style. However, the encoding of the IGUANA gateway may be extended; For instance a new encoding style may be introduced which would also map to a float data type but is different from the SCALARBIN encoding. This would lead to n:1 mappings in which case retrieving data in certain encoding styles would be impossible.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... encoding102
This encoding style was created for transferring binary content over text-based mail systems. More information can be found in [R2045].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... element.103
The ``ItemPath'' element is not necessary and can be omitted.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... escaped104
One possible way would be to use the exclamation mark (``!'') for this purpose, as this character must not be part of the address. This way, a string, such as ab/cd/e would be escaped as ab!/cd!/e.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... client105
Interestingly SOAP faults, as depicted in the XML-DA specification, do not conform to the SOAP standard. The SOAP 1.1 standard specifies in section 4.1.1 that the element $<faultcode>$ must contain one of four specific codes, which differs from the OPC XML-DA specification, where custom error codes are embedded in the $<faultcode>$ element.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... error106
Moreover, the OPC property ``quality'' has to be set to ``Bad''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... codes107
To be specific, the standard specifies 20 error codes and 3 so-called ``Success Codes'', which are more or less warning messages. Error codes always begin with the characters ``E_'' while success codes start with ``S_''. Custom result codes have to follow this convention.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... server108
A possible solution would be to set SOAP faults as the default error handling. This way, unknown ESD error codes will trigger SOAP faults.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... all109
A meaningful example would be an OPC Item that is the parent of another Item, which is commonly used in cases of hierarchical addressing. Such a ``parent Item'' would not need any properties because it serves as a logical container of other OPC Items.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... mandatory110
For instance, the property ``dataType'' is used to define the Item's canonical data type. This information is needed for read operations that do not specify the requested data type. Without the ``dataType'' property the client would not know to which data type the requested fieldbus data should be mapped.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... metadata111
The IGUANA gateway has a datapoint property called ``DataType'' which seems like a corresponding property. However, this property defines the FAN-specific data type which is in a fieldbus specific format and is implemented for fieldbus specific clients. Therefore it cannot be used for the OPC ``dataType'' Item property.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... error112
Setting the quality property to ``Good'' would be a bad solution, as there may be underlying fieldbus systems that implement data quality. In such a case the fieldbus data may be ``Bad'' or ``Uncertain'', which is not reported by the IGUANA gateway. This would be misleading which is the reason why the property should be omitted if no error occurs.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... valid113
There may be fieldbus devices which provide cached data. In such cases it is impossible to set an accurate time.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... translated114
The two available ESD Access strings ``RO'' and ``RW'' would be translated to ``readable'' and ``readWriteable''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... property115
The available encodings on the gateway may be extended without implementing these encoding styles in the OPC server. In this case OPC Items that represent these new encoding styles will not be available. Hence this information may be conveyed by the ``SetOfEncodings'' property.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... gateway116
This information is vital for interpreting timestamps that are returned by the OPC Read service.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... elements117
Elements cannot only be OPC items but may also be branches which are logical elements of the hierarchy tree and do not contain fieldbus data by themselves.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... level118
The service does not descend in the hierarchy and does therefore not recursively list items in lower levels.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... response119
OPC Servers may implement so-called ``Continuation Points'' that may be used to browse elements that exceed the maximum elements.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... fieldbus120
It should be denoted that cache updates are not done automatically but have to be issued by specific ESD commands, called ``REFRESHNODELIST'' and ``UPDATENODELIST''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... service121
The IGUANA Gateway offers asynchronous notifications which look like a promising counterpart to the OPC Subscription service. However, the IGUANA notification system has several limitations: Obtaining changes of fieldbus data is done by polling datapoints instead of asynchronous notifications from the fieldbus itself. Therefore polling may be directly implemented by simple ESD-read commands by the OPC server itself. Moreover, certain aspects of the OPC Subscription Service, such as deadband or buffering, are not supported by the IGUANA gateway.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... used122
The operating system of the IGUANA gateway is Linux, therefore the software developer is limited to Web Service frameworks that are available for this environment.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... CGI-style123
The Common Gateway Interface (CGI) is a popular technique for calling programs from a HTTP server.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... FTP124
The File Transfer Protocol (FTP) is a simple protocol for transferring data between Internet devices
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... rights125
The ESD implements a property called ``Access'', which denotes if a datapoint is read-writeable. However, these access rights are adopted from the fieldbus itself and cannot be configured in the ESD.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... system126
Examples would be the ``LiXMO Suite'' from Technosoftware AG or the ``Toolbox C++'' from Softing AG.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... operations127
This is needed for OPC subscriptions, where fieldbus data is periodically polled.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... used128
An alternative implementation of .Net is ``Mono'', which runs on a variety of platforms, including Linux. However, it is uncertain whether it would provide the necessary functionality, and its hardware requirements are also relatively high.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... typecode129
This simple OPC SOAP message is used to retrieve the status of an OPC XML-DA compliant server
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... dictionaries130
A Python dictionary is basically a hash table: Given keys are hashed and stored with associated data in a table.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...devel-uml1131
For simplicity reasons, not all methods/attributes have been depicted in this figure
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... implemented132
There is no support for ``duration'' and fractions of seconds (milliseconds) and time zones are ignored by the ZSI as the date is stored in a Python data type without support for this information.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... itself133
Unfortunately it is not possible to retrieve this needed information directly from the generated typecodes, as they are based on a concept called ``Metaclasses'', a technique were methods and attributes of an object are not defined in the class but in a Metaclass and are dynamically created at object creation time and are thus not found along with the generated typecodes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...JUNIT134
This book introduces tests with a Java library called ``JUnit''. The Python unit testing library is very closely related to JUnit.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... handler135
If for instance the URL ``http://some.url/myws'' is the base address for the Web Service, URLs such as ``http://some.url/myws/handler1'' and ``http://some.url/myws/handler2'' could be used.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... server136
This problem may be solved by limiting the number of concurrent client connections and ESD requests in the OPC server. This way, excessive connections would be declined with an error message by the OPC server.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... rates137
The OPC client may request a sampling rate, which defines how fast the server should poll the fieldbus for value changes. If the server cannot sample at the requested rate, it may revise the rate and notify the client about this change.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... degree138
For instance, the server should return immediately and ignore the hold time in case all requested items are erroneous, hence the items have to be checked immediately. On the other hand, value changes that occur within the hold time should be returned by the server. Therefore the items have to be checked when the hold time has expired.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... created139
Python offers an elegant way of creating functions during runtime with so-called ``closures'', which are basically functions within functions. More information about this technique can be found in [MAR03].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... changed140
``Changed'' means in this context that the new value exceeds the previously defined deadband.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... subscription141
Subscriptions are associated with one client only. However the OPC XML-DA specification is quite loose on this topic and does not explicitely prohibit multiple queries to one subscription but does not define how the server should react in such a situation: For instance, the server could return changed values to all concurrent clients but could also return it to only one. Due to these uncertainties, this server blocks all other requests to a subscription object in case a poll is taking place.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... commands142
For instance, the subscription architecture will periodically retrieve fieldbus data with the ESD READ command.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... delays143
Delays for ESD READ/WRITE commands can also be specified in the XML configuration file.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... commands144
As denoted above, one XML-DA request message may contain multiple items, which then results in multiple concurrent ESD commands.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... command145
For instance, the address ``/LON/GATE1/01:02/01/STRING'' is translated to the ESD command ``READ LON.GATE1!01@01:02 STRING''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... complicated146
Therefore SOAP was initially the acronym for ``Simple Object Access Protocol''. Later it was called ``Service Oriented Architecture Protocol''. The current SOAP 1.2 specification states that the word ``SOAP'' is no acronym anymore, as none of the names above are correct anymore. This fact alone is a hint to the increasing complexity of SOAP.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... follows147
Fortunately many of these questions were answered in the Internet forum on the OPC web site by a helpful OPC representative.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... SPR148
SPR is used as an acronym for the OPC XML-DA operation ``Subscription Polled Refresh''
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... immediately149
There were minor issues with qualified names (QNames) which were incorrectly implemented.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... client150
This test client was available from Advosol Inc., and was part of an evaluation version an OPC XML-DA software development kit. This SDK is compatible with the Microsoft Windows operating system and can be downloaded from their web page, namely http://www.advosol.com. The client has a graphical user interface, which supports all needed OPC functionality.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... hardware151
The PC hardware consists of a Athlon XP 1600+ with 768MB main memory. All tests were done with Python 2.4.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... test152
The parser is denoted by the numbers 1 to 3 in the test results. For instance GSR-1 refers to the GetStatus result message with parser 1, while GSR-2 refers to the GetStatus result message with parser 2.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... possible153
Parsing is implemented via a Python library that provides an interface to the extremely efficient ``Expat'' XML parser, which is written in C. On the other hand, serializing is done in Python, which is due to the interpreter being much slower than C. Nevertheless speed improvements should be possible by optimizing the Python code or coding certain parts of the serializer in C.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... tool154
The tool used for this test was ``Ethereal'', an open source network analyzer. This tool is available from http://www.ethereal.com.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... connections155
In these diagrams 5 network bursts, which are associated with the concurrent requests. Altogether, 500 requests are issued. As the client sends 100 simultaneous requests at once, it takes some time for the server to process these requests and to respond. During these processing times, the network is idle.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... second156
Due to the specific test setup, the throughput in this test is lower than it would be without the additional load from the test client and the ESD simulation server.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... requirements157
It was further observed that some of the memory was not freed after a request. Theoretically, the Python garbage collection should handle these issues but for an unknown reason, it does not. It was found that calling the garbage collector after each operation does reduce the memory usage, but it slows down the server considerably. It is expected that the newer version of Python (2.5) will resolve these problems.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... code158
Once again it must be noted that ESD has much less functionality and therefore fewer messages, however after subtracting functionality from the SOAP code which is missing in ESD, the code for reading OPC SOAP messages is still longer than the ESD protocol implementation.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... size159
The size of the SOAP message length may be reduced with an efficient text compressor by approximately a factor of three, however the compressing/decompressing would increase the server load, which would result in a decrease of the throughput.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... 300kB160
This number also includes the overhead of HTTP and TCP/IP.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ACID161
In this context, ACID is an acronym for Atomic, Consistent, Isolation, and Durable. To ensure predictable behavior, all transactions must possess these basic properties functionality.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... applications162
For instance, such additional information is transported in OPC SOAP messages via the ``ClientRequestHandle'' attribute.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... standard163
OPC-UA is designed for vertical integration, therefore horizontal integration issues, such as specified by OPC-DX are not part of this emerging standard.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.