index.rst 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. Introduction
  2. ============
  3. open62541 (http://open62541.org) is an open source implementation of OPC UA (short for OPC Unified Architecture). open62541 is a C-based library (linking with C++ projects is possible) with all necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. open62541 is licensed under the LGPL with a static linking exception. So the *open62541 library can be used in projects that are not open source*. However, changes to the open62541 library itself need to published under the same license. The plugins, as well as the provided example servers and clients are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
  4. OPC Unified Architecture
  5. ------------------------
  6. `OPC UA <http://en.wikipedia.org/wiki/OPC_Unified_Architecture>`_ is a protocol for industrial communication and has been standardized in the IEC 62541 series. At its core, OPC UA defines a set of services to interact with a server-side object-oriented information model. Besides the service-calls initiated by the client, push-notification (discrete events and data changes with a sampling interval) can be negotiated with the server. The client/server interaction is mapped either to a binary encoding and TCP-based transmission or to SOAP-based webservices. As of late, OPC UA is marketed as the one standard for non-realtime industrial communication.
  7. In OPC UA, all communication is based on a set of predefined :ref:`services`, each consisting of a request and a response message. The services are designed for remote interaction with an object-oriented :ref:`information model <information-modelling>`. Note that services responses are asynchronous. So a server can decide to answer requests in a different order. Servers may also respond to requests after considerable delay. But this is commonly used only for subscriptions, i.e. push-notification of data changes and events.
  8. The standard itself can be purchased from IEC or downloaded for free from the website of the OPC Foundation at https://opcfoundation.org/ (you only need to register with a valid email).
  9. open62541 Features
  10. ------------------
  11. open62541 implements the OPC UA binary protocol stack as well as a client and server SDK. It currently supports the Micro Embedded Device Server Profile plus some additional features. The final server binaries can be well under 100kb, depending on the size of the information model.
  12. open62541 adheres to the OPC UA specification as closely as possible and the released features pass the official Conformance Testing Tools (CTT). However, the library comes without any warranty. If you intend to use OPC UA in a mission-critical product, please consider talking to a commercial vendor of OPC UA SDKs and services.
  13. - Communication Stack
  14. - OPC UA binary protocol
  15. - Chunking (splitting of large messages)
  16. - Exchangeable network layer (plugin) for using custom networking APIs (e.g. on embedded targets)
  17. - Information model
  18. - Support for all OPC UA node types (including method nodes)
  19. - Support for adding and removing nodes and references also at runtime.
  20. - Support for inheritance and instantiation of object- and variable-types (custom constructor/destructor, instantiation of child nodes)
  21. - Subscriptions
  22. - Support for subscriptions/monitoreditems for data change notifications
  23. - Very low resource consumption for each monitored value (event-based server architecture)
  24. - Code-Generation
  25. - Support for generating data types from standard XML definitions
  26. - Support for generating server-side information models (nodesets) from standard XML definitions
  27. Features still missing in the 0.2 release are:
  28. - Encryption
  29. - Access control for individual nodes
  30. - Events (notifications emitted by objects, data change notifications are implemented)
  31. - Event-loop (background tasks) and asynchronous service requests in the client
  32. Getting Help
  33. ------------
  34. For discussion and help besides this documentation, you can reach the open62541 community via
  35. - the `mailing list <https://groups.google.com/d/forum/open62541>`_
  36. - our `IRC channel <http://webchat.freenode.net/?channels=%23open62541>`_
  37. - the `bugtracker <https://github.com/open62541/open62541/issues>`_
  38. Contributing
  39. ------------
  40. As an open source project, we invite new contributors to help improve open62541. Issue reports, bugfixes and new features are very welcome. Note that there are ways to begin contributing without deep knowledge of the OPC UA standard:
  41. - `Report bugs <https://github.com/open62541/open62541/issues>`_
  42. - Improve the `documentation <http://open62541.org/doc/current>`_
  43. - Work on issues marked as `easy hacks <https://github.com/open62541/open62541/labels/easy%20hack>`_