index.rst 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. Introduction
  2. ============
  3. open62541 (http://open62541.org) is an open source implementation of OPC UA
  4. (short for OPC Unified Architecture). open62541 is a C-based library (linking
  5. with C++ projects is possible) with all necessary tools to implement dedicated
  6. OPC UA clients and servers, or to integrate OPC UA-based communication into
  7. existing applications. open62541 is licensed under the LGPL with a static
  8. linking exception. So the *open62541 library can be used in projects that are
  9. not open source*. However, changes to the open62541 library itself need to
  10. published under the same license. The plugins, as well as the provided example
  11. servers and clients are in the public domain (CC0 license). They can be reused
  12. under any license and changes do not have to be published.
  13. OPC Unified Architecture
  14. ------------------------
  15. `OPC UA <http://en.wikipedia.org/wiki/OPC_Unified_Architecture>`_ is a protocol
  16. for industrial communication and has been standardized in the IEC 62541 series.
  17. At its core, OPC UA defines
  18. - an asynchronous :ref:`protocol<protocol>` (built upon TCP, HTTP or SOAP) that
  19. defines the exchange of messages via sessions, (on top of) secure
  20. communication channels, (on top of) raw connections,
  21. - a :ref:`type system<types>` for protocol messages with a binary and XML-based
  22. encoding scheme,
  23. - a meta-model for :ref:`information modeling<information-modelling>`, that
  24. combines object-orientation with semantic triple-relations, and
  25. - a set of 37 standard :ref:`services<services>` to interact with server-side
  26. information models. The signature of each service is defined as a request and
  27. response message in the protocol type system.
  28. The standard itself can be purchased from IEC or downloaded for free on the
  29. website of the OPC Foundation at https://opcfoundation.org/ (you only need to
  30. register with a valid email).
  31. The OPC Foundation drives the continuous improvement of the standard and the
  32. development of companion specifications. Companion specifications translate
  33. established concepts and reusable components from an application domain into OPC
  34. UA. They are created jointly with an established industry council or
  35. standardization body from the application domain. Furthermore, the OPC
  36. Foundation organizes events for the dissemination of the standard and provides
  37. the infrastructure and tools for compliance certification.
  38. open62541 Features
  39. ------------------
  40. open62541 implements the OPC UA binary protocol stack as well as a client and
  41. server SDK. It currently supports the Micro Embedded Device Server Profile plus
  42. some additional features. Server binaries can be well under 100kb in size,
  43. depending on the contained information model.
  44. open62541 adheres to the OPC UA specification as closely as possible and the
  45. released features pass the official Conformance Testing Tools (CTT). However,
  46. the library comes without any warranty. If you intend to use OPC UA in a
  47. mission-critical product, please consider talking to a commercial vendor of OPC
  48. UA SDKs and services.
  49. - Communication Stack
  50. - OPC UA binary protocol
  51. - Chunking (splitting of large messages)
  52. - Exchangeable network layer (plugin) for using custom networking APIs (e.g. on embedded targets)
  53. - Information model
  54. - Support for all OPC UA node types (including method nodes)
  55. - Support for adding and removing nodes and references also at runtime.
  56. - Support for inheritance and instantiation of object- and variable-types (custom constructor/destructor, instantiation of child nodes)
  57. - Subscriptions
  58. - Support for subscriptions/monitoreditems for data change notifications
  59. - Very low resource consumption for each monitored value (event-based server architecture)
  60. - Code-Generation
  61. - Support for generating data types from standard XML definitions
  62. - Support for generating server-side information models (nodesets) from standard XML definitions
  63. Features still missing in the 0.2 release are:
  64. - Encryption
  65. - Access control for individual nodes
  66. - Events (notifications emitted by objects, data change notifications are implemented)
  67. - Event-loop (background tasks) and asynchronous service requests in the client
  68. Getting Help
  69. ------------
  70. For discussion and help besides this documentation, you can reach the open62541 community via
  71. - the `mailing list <https://groups.google.com/d/forum/open62541>`_
  72. - our `IRC channel <http://webchat.freenode.net/?channels=%23open62541>`_
  73. - the `bugtracker <https://github.com/open62541/open62541/issues>`_
  74. Contributing
  75. ------------
  76. As an open source project, we invite new contributors to help improve open62541.
  77. Issue reports, bugfixes and new features are very welcome. Note that there are
  78. ways to begin contributing without deep knowledge of the OPC UA standard:
  79. - `Report bugs <https://github.com/open62541/open62541/issues>`_
  80. - Improve the `documentation <http://open62541.org/doc/current>`_
  81. - Work on issues marked as `easy hacks <https://github.com/open62541/open62541/labels/easy%20hack>`_