PyOPC is a Python library implementing the OPC XML Data Access Protocol Version 1.01 (OPC XML-DA 1.01).
PyOPC supports the easy creation of XMLDA-compliant clients and servers without having to deal with the SOAP protocol and server issues.
The Open Linking and Embedding for Process Control (OPC) consortium released several open standards, which address interfaces for vertical integration in industrial automation.
Historically, OPC used the Distributed Component Object Model (DCOM) for the underlying communication technology. DCOM has the disadvantage of being platform specific: it is only available for Microsoft Windows based systems. Other platforms, such as Linux, can therefore not retrieve fieldbus data from DCOM based servers.
Another disadvantage of DCOM is that it can not easily bypass firewalls, hence access will often be limited to certain segments of a corporate network.
In the last years, a new technology, called SOAP Web services, emerged. [LIV02] defines a Web Service as: ``a method or function that is available for other applications to access over the Internet.''. Web services enable Remote Procedure Calls (RPC) and have the following key features:
High level of interoperability:
Web services technologies are all based on strictly defined open standards1.
High networking abilities:
As an underlying communication protocol, Web services utilize Internet protocols such as the Hyper Text Transfer Protocol (HTTP) or the Simple Mail Transfer Protocol (SMTP). These protocols have high networking abilities and may moreover penetrate firewalls.
Protocol legible by humans:
The Simple Object Access Protocol (SOAP)2 is based on the Extended Markup Language (XML), which is legible to humans. This way, testing and debugging of Web services is far easier than with binary protocols.
Another underlying technology of SOAP is the ``Web Service Definition Language'' (WSDL) which may be used to define the service, especially by constraining the format of the SOAP protocol. WSDL utilizes the XML Schema language for defining these SOAP messages3. These WSDL documents can be utilized by frameworks to generate stubs that provide a base for accessing a Web service.
WSDL in combination with a validating XML parser enable the validation of SOAP messages. This way, custom code will never receive syntactically or semantically erroneous data, which should improve the stability of the service.
SOAP Web services are seen as a successor to several alternative technologies such as DCOM and are already broadly accepted by the industry. More information about the SOAP protocol can be found in [SEE02] and [LIV02].
The OPC consortium reacted on this technological evolution by adopting SOAP Web services for their standards. One recent addition of OPC is the "XML Data Access Version 1.0" (XML-DA 1.0) standard. This standard deals with access of underlying fieldbus technologies and covers the following aspects:
The specification provides a simple information model, based on ``OPC Items'' which represent a piece of information, similar to fieldbus data points. These items can be arranged hierarchically.
OPC XML-DA adopts several XML-Schema based data types, such as integer, float, date/time specific types. Moreover it defines arrays which are based on these basic types.
The standard specifies 8 operations such as reading/writing and browsing which can be used to access the underlying fieldbus.
The specification further introduces a mechanism to retrieve only changed items, called ``Subscription''. Clients may thus subscribe to items and use a dedicated polling operation to retrieve changed data.