index.rst 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. Introduction
  2. ============
  3. open62541 (http://open62541.org) is an open source and free implementation of
  4. OPC UA (OPC Unified Architecture) written in the common subset of the C99 and
  5. C++98 languages. The library is usable with all major compilers and provides the
  6. necessary tools to implement dedicated OPC UA clients and servers, or to
  7. integrate OPC UA-based communication into existing applications. open62541
  8. library is platform independent. All platform-specific functionality is
  9. implemented via exchangeable plugins. Plugin implementations are provided for
  10. the major operating systems.
  11. open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows
  12. the open62541 library to be combined and distributed with any proprietary
  13. software. Only changes to the open62541 library itself need to be licensed under
  14. the MPLv2 when copied and distributed. The plugins, as well as the server and
  15. client examples are in the public domain (CC0 license). They can be reused under
  16. any license and changes do not have to be published.
  17. The sample server (server_ctt) built using open62541 v1.0 is in conformance with
  18. the 'Micro Embedded Device Server' Profile of OPC Foundation supporting OPC UA
  19. client/server communication, subscriptions, method calls and security
  20. (encryption) with the security policies 'Basic128Rsa15', 'Basic256' and
  21. 'Basic256Sha256' and the facets 'method server' and 'node management'. See
  22. https://open62541.org/certified-sdk for more details.
  23. OPC Unified Architecture
  24. ------------------------
  25. `OPC UA <http://en.wikipedia.org/wiki/OPC_Unified_Architecture>`_ is a protocol
  26. for industrial communication and has been standardized in the IEC 62541 series.
  27. At its core, OPC UA defines
  28. - an asynchronous :ref:`protocol<protocol>` (built upon TCP, HTTP or SOAP) that
  29. defines the exchange of messages via sessions, (on top of) secure
  30. communication channels, (on top of) raw connections,
  31. - a :ref:`type system<types>` for protocol messages with a binary and XML-based
  32. encoding scheme,
  33. - a meta-model for :ref:`information modeling<information-modelling>`, that
  34. combines object-orientation with semantic triple-relations, and
  35. - a set of 37 standard :ref:`services<services>` to interact with server-side
  36. information models. The signature of each service is defined as a request and
  37. response message in the protocol type system.
  38. The standard itself can be purchased from IEC or downloaded for free on the
  39. website of the OPC Foundation at https://opcfoundation.org/ (you need to
  40. register with a valid email).
  41. The OPC Foundation drives the continuous improvement of the standard and the
  42. development of companion specifications. Companion specifications translate
  43. established concepts and reusable components from an application domain into OPC
  44. UA. They are created jointly with an established industry council or
  45. standardization body from the application domain. Furthermore, the OPC
  46. Foundation organizes events for the dissemination of the standard and provides
  47. the infrastructure and tools for compliance certification.
  48. open62541 Features
  49. ------------------
  50. open62541 implements the OPC UA binary protocol stack as well as a client and
  51. server SDK. It currently supports the Micro Embedded Device Server Profile plus
  52. some additional features. Server binaries can be well under 100kb in size,
  53. depending on the contained information model.
  54. - Communication Stack
  55. - OPC UA binary protocol
  56. - Chunking (splitting of large messages)
  57. - Exchangeable network layer (plugin) for using custom networking APIs (e.g. on embedded targets)
  58. - Encrypted communication
  59. - Asynchronous service requests in the client
  60. - Information model
  61. - Support for all OPC UA node types (including method nodes)
  62. - Support for adding and removing nodes and references also at runtime.
  63. - Support for inheritance and instantiation of object- and variable-types (custom constructor/destructor, instantiation of child nodes)
  64. - Access control for individual nodes
  65. - Subscriptions
  66. - Support for subscriptions/monitoreditems for data change notifications
  67. - Very low resource consumption for each monitored value (event-based server architecture)
  68. - Code-Generation
  69. - Support for generating data types from standard XML definitions
  70. - Support for generating server-side information models (nodesets) from standard XML definitions
  71. Features on the roadmap for the 0.3 release series but missing in the initial v0.3 release are:
  72. - Encrypted communication in the client
  73. - Events (notifications emitted by objects, data change notifications are implemented)
  74. - Event-loop (background tasks) in the client
  75. Getting Help
  76. ------------
  77. For discussion and help besides this documentation, you can reach the open62541 community via
  78. - the `mailing list <https://groups.google.com/d/forum/open62541>`_
  79. - our `IRC channel <http://webchat.freenode.net/?channels=%23open62541>`_
  80. - the `bugtracker <https://github.com/open62541/open62541/issues>`_
  81. Contributing
  82. ------------
  83. As an open source project, we invite new contributors to help improve open62541.
  84. Issue reports, bugfixes and new features are very welcome. The following are
  85. good starting points for new contributors:
  86. - `Report bugs <https://github.com/open62541/open62541/issues>`_
  87. - Improve the `documentation <http://open62541.org/doc/current>`_
  88. - Work on issues marked as `good first issue <https://github.com/open62541/open62541/labels/good%20first%20issue>`_