Next: Parsing OPC XML-DA Compliant
Up: Implementation of an OPC
Previous: Implementation of an OPC
Contents
As denoted above, various SOAP frameworks for various programming
languages are available. Moreover, a framework/library should be used
that eases the development of a server that can handle concurrent requests.
It is obvious that the SOAP framework and the server library have to be
available for the same programming language, hence the decision is more
focused on programming languages than on SOAP frameworks.
The programming language should provide the following key features:
- Easy and rapid development:
- The programming language and
their libraries/frameworks should enable a rapid development.
- SOAP framework:
- [OPCXMLDA] is heavily based on SOAP,
therefore an appropriate SOAP framework should be available.
- Server framework:
- The OPC XML-DA server should be able to
handle concurrent requests, therefore the programming language should
provide libraries that enable and ease the implementation of this
issue.
- TCP/IP and HTTP libraries:
- The language should also provide
libraries that implement these common Internet protocols to establish
communication with the ESD server and to transport SOAP messages via
HTTP.
- Compatibility:
- The XML-DA server should be implemented on
the Linux operating system, hence the language/framework has to be
available for Linux. Moreover, the memory footprint and CPU load
should be low due to limitations of the IGUANA gateway hardware.
- Free availability:
- The language/framework should be available
at no cost. Open source solution should be favored.
Common programming languages would be C/C++, Java, .Net, Python and
Perl. Each of them has several advantages/disadvantages as regards to
the requirements above:
- C/C++:
- C/C++ is most often used for implementing OPC compliant
servers, as the compiled code has low memory requirements and is very
efficient. A very mature SOAP framework called ``gSOAP'' is freely
available, moreover, there are various libraries for multi-threading,
therefore development of a server that handles concurrent requests
will be possible. C/C++ and all libraries are all available for Linux.
The disadvantage of C/C++ is the complicated and error-prone code,
which leads to long development times, hence much effort would have to
be put into programming aspects instead of analyzing the efficiency
and suitability of SOAP.
- Java:
- Although Java provides mature SOAP frameworks and has
a relatively short development time, Java-based applications tend
to have high hardware requirements, especially a huge memory
footprint which may exceed the capabilities of the IGUANA gateway
hardware.
- .Net:
- This framework is basically available for Microsoft-based
systems. As OPC-based software is most often targeted to the Microsoft
Windows platform, many newer OPC frameworks are based on .Net. The
IGUANA gateway is Linux-based, therefore Microsoft .Net cannot be
used128.
- Python:
- Python is a scripting language, is freely available
and has a huge collection of libraries. A SOAP framework for Python
called ``Zolera Soap Infrastructure'' (ZSI) is also available. For
server development, a library called ``Twisted'' is available which
supports the easy and rapid development of servers. Twisted offers
various protocols, such as HTTP and raw TCP/IP and solves concurrency
issues with an event-driven design.
Python code is interpreted and hence has a higher memory footprint
than C/C++. Therefore it is uncertain whether a Python-based OPC server
would fit on the IGUANA gateway hardware. Another disadvantage is that
Python's SOAP framework is quite new and does not seem to be very mature.
Java and .Net do not seem to fit the requirements very well, therefore
a decision between C/C++ and Python has to be made. In case of a
commercial development, C/C++ would be the optimal choice due to its
efficient and small code. However, for this thesis, which favours
research and proof of concept over efficiency, Python may be the better
option. It will also be interesting to examine whether and how Python will
fit on embedded hardware, such as the IGUANA gateway.
At first, the specification [OPCXMLDA] was examined once again,
and one simple request was tested with the Python SOAP framework
(ZSI). After some considerations, it was obvious that a modular
design, as depicted in figure 59 would be most
appropriate.
Figure 59:
Modular design of ESD OPC Server
![\begin{figure}\centering
\includegraphics[scale=0.7]{graphics/devel-modular.eps}\end{figure}](img99.png) |
Next: Parsing OPC XML-DA Compliant
Up: Implementation of an OPC
Previous: Implementation of an OPC
Contents
Hermann Himmelbauer
2006-09-27