Commit 7760f1f9 authored by Ralph Lange's avatar Ralph Lange
Browse files

Fix README markdown links, lists, indents, tables (codacy)

parent e48a987e
......@@ -9,10 +9,10 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Setup server as '...'
2. Create IOC database that '....'
3. Start IOC, do '....'
4. See error
1. Setup server as '...'
2. Create IOC database that '....'
3. Start IOC, do '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
......@@ -21,11 +21,11 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Setup (please complete the following information if applicable):**
- OPCUA Support: \[e.g. v0.1\]
- Platform: \[e.g. RHEL7.5\]
- EPICS Base: \[e.g. 3.15.6\]
- Client library: \[e.g. UA SDK 1.5.5\]
- Server: \[e.g. S7-1500\]
- OPCUA Support: \[e.g. v0.1\]
- Platform: \[e.g. RHEL7.5\]
- EPICS Base: \[e.g. 3.15.6\]
- Client library: \[e.g. UA SDK 1.5.5\]
- Server: \[e.g. S7-1500\]
**Additional context**
Add any other context about the problem here.
......@@ -12,7 +12,7 @@ implementations of the low level client library.
:warning:
This module is under development.
Please contact the author <ralph.lange@gmx.de> for details.
Please contact the author [Ralph Lange](mailto:ralph.lange@gmx.de) for details.
:warning:
The first (and - at this time - only) supported OPC UA client library is the
......@@ -20,24 +20,22 @@ commercially available Unified Automation C++ Based OPC UA Client SDK.
## Prerequisites
* A C++ compiler that supports the C++11 standard.
* A C++ compiler that supports the C++11 standard.
* [EPICS Base](https://epics-controls.org/resources-and-support/base/)
3.15.5 (and up; EPICS 7 is supported).
* [EPICS Base](https://epics-controls.org/resources-and-support/base/)
3.15.5 (and up; EPICS 7 is supported).
### Using the Unified Automation Client SDK
* Unified Automation C++ Based
[OPC UA Client SDK](https://www.unified-automation.com/products/client-sdk/c-ua-client-sdk.html)
1.5 (and up; 1.6 is supported).
* Unified Automation C++ Based [OPC UA Client SDK][unified.sdk] 1.5
(and up; 1.6 is supported).
* For OPC UA security support (authentication/encryption), you need
libcrypto on your system - both when compiling the SDK and when generating
any binaries (IOCs).
* For OPC UA security support (authentication/encryption), you need
libcrypto on your system - both when compiling the SDK and when generating
any binaries (IOCs).
* For more details, refer to the `README.md` in the
[`devOpcuaSup/UaSdk`](https://github.com/ralphlange/opcua/tree/master/devOpcuaSup/UaSdk)
directory.
* For more details, refer to the `README.md` in the
[`devOpcuaSup/UaSdk`][uasdk.dir] directory.
## Building the module
......@@ -55,21 +53,21 @@ is documented in the `README.md` file inside the respective subdirectory of
IOC applications that use the module need to
* add an entry to the Device Support module in their `RELEASE.local` file
* include `opcua.dbd` when building the IOC's DBD file
* include `opcua` in the support libraries for the IOC binary.
* add an entry to the Device Support module in their `RELEASE.local` file
* include `opcua.dbd` when building the IOC's DBD file
* include `opcua` in the support libraries for the IOC binary.
## Documentation
Sparse.
The documentation folder contains the
[Requirements Specification (SRS)](https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20SRS.pdf)
giving an introduction and the list of requirements that should convey a good
idea of the planned features.
The documentation folder of the Device Support module contains the
[Requirements Specification (SRS)][requirements.pdf] giving an introduction
and the list of requirements that should convey a good idea of the planned
features.
The [Cheat Sheet](https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20Cheat%20Sheet.pdf)
explains the configuration in the startup script and the database links.
The [Cheat Sheet][cheatsheet.pdf] explains the configuration in the startup
script and the database links.
## Feedback / Reporting issues
......@@ -92,3 +90,9 @@ in file LICENSE that is included with this distribution.
[badge.version]: https://badge.fury.io/gh/ralphlange%2Fopcua.svg
[badge.travis]: https://travis-ci.org/ralphlange/opcua.svg?branch=master
[badge.codacy]: https://api.codacy.com/project/badge/Grade/65b1d28ca5e34a7d853d168f50beaafc
[unified.sdk]: https://www.unified-automation.com/products/client-sdk/c-ua-client-sdk.html
[uasdk.dir]: https://github.com/ralphlange/opcua/tree/master/devOpcuaSup/UaSdk
[requirements.pdf]: https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20SRS.pdf
[cheatsheet.pdf]: https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20Cheat%20Sheet.pdf
......@@ -4,44 +4,43 @@
:warning:
This module is under development.
Please contact the author <ralph.lange@gmx.de> for details.
Please contact the author [Ralph Lange](mailto:ralph.lange@gmx.de) for details.
:warning:
## Prerequisites
* Unified Automation C++ Based
[OPC UA Client SDK](https://www.unified-automation.com/products/client-sdk/c-ua-client-sdk.html)
1.5 (and up; 1.6 is supported).
* For OPC UA security support (authentication/encryption), you need
libcrypto on your system - both when compiling the SDK and when generating
any binaries (IOCs).
The name of the package you have to install depends on the Linux distribution:
`openssl-devel` on RedHat/CentOS/Fedora, `libssl-dev` on Debian/Ubuntu.
Use the `CONFIG_SITE.local` file in the module where the binary is created
to set this option.
* The OPC UA Client SDK sets `BUILD_SHARED_LIBS=OFF` as default.
To create shared SDK libraries, build the SDK using
```
./buildSdk.sh -s ON
```
In version 1.5.5 of the SDK, the `buildSdk.sh` build script does not apply
the `-s ON` setting the the stack component. To fix this and create a complete
shared library set of the SDK, apply the following patch:
```
--- buildSdk.sh
+++ buildSdk.sh
@@ -95,7 +95,7 @@
cd $UASDKDIR/build$config || { echo "cd $UASDKDIR/build$config failed."; exit 1; }
# create the Makefile using CMake
# Just create only the SDK Makefiles
- cmake "$TOOLCHAIN" "$OPTION" -DBUILD_EXAMPLES=off -DBUILD_UACLIENTCPP_APP=off -DBUILD_UASERVERCPP_APP=off -DENABLE_GCC_FORTIFY_SOURCE=off -DCMAKE_BUILD_TYPE=$config -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX $UASDKDIR
+ cmake "$TOOLCHAIN" "$OPTION" -DBUILD_EXAMPLES=off -DBUILD_UACLIENTCPP_APP=off -DBUILD_UASERVERCPP_APP=off -DENABLE_GCC_FORTIFY_SOURCE=off -DCMAKE_BUILD_TYPE=$config -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DBUILD_SHARED_STACK=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX $UASDKDIR
# build
make "$JOBS" || { echo "make failed."; exit 1; }
# install
```
* Unified Automation C++ Based [OPC UA Client SDK][unified.sdk] 1.5
(and up; 1.6 is supported).
* For OPC UA security support (authentication/encryption), you need
libcrypto on your system - both when compiling the SDK and when generating
any binaries (IOCs).
The name of the package you have to install depends on the Linux distribution:
`openssl-devel` on RedHat/CentOS/Fedora, `libssl-dev` on Debian/Ubuntu.
Use the `CONFIG_SITE.local` file in the module where the binary is created
to set this option.
* The OPC UA Client SDK sets `BUILD_SHARED_LIBS=OFF` as default.
To create shared SDK libraries, build the SDK using
```Shell
./buildSdk.sh -s ON
```
In version 1.5.5 of the SDK, the `buildSdk.sh` build script does not apply
the `-s ON` setting the the stack component. To fix this and create a complete
shared library set of the SDK, apply the following patch:
```Diff
--- buildSdk.sh
+++ buildSdk.sh
@@ -95,7 +95,7 @@
cd $UASDKDIR/build$config || { echo "cd $UASDKDIR/build$config failed."; exit 1; }
# create the Makefile using CMake
# Just create only the SDK Makefiles
- cmake "$TOOLCHAIN" "$OPTION" -DBUILD_EXAMPLES=off -DBUILD_UACLIENTCPP_APP=off -DBUILD_UASERVERCPP_APP=off -DENABLE_GCC_FORTIFY_SOURCE=off -DCMAKE_BUILD_TYPE=$config -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX $UASDKDIR
+ cmake "$TOOLCHAIN" "$OPTION" -DBUILD_EXAMPLES=off -DBUILD_UACLIENTCPP_APP=off -DBUILD_UASERVERCPP_APP=off -DENABLE_GCC_FORTIFY_SOURCE=off -DCMAKE_BUILD_TYPE=$config -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DBUILD_SHARED_STACK=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX $UASDKDIR
# build
make "$JOBS" || { echo "make failed."; exit 1; }
# install
```
## Building the device support module
......@@ -52,7 +51,7 @@ of your EPICS installation.
Inside the `configure` subdirectory or one level above the TOP location,
create a file `CONFIG_SITE.local` that sets the absolute path of your SDK
installation as well as the SDK build and deploy features if necessary.
```
```Makefile
# Path to the Unified Automation OPC UA C++ SDK
UASDK = /usr/local/opcua/uasdkcppclient-v1.5.3-346/sdk
......@@ -68,7 +67,7 @@ UASDK_USE_XMLPARSER = YES
```
Note: On Windows, paths must include "short names" where needed, e.g.
```
```Makefile
UASDK = C:/PROGRA~2/UnifiedAutomation/UaSdkCppBundleEval
```
......@@ -88,3 +87,6 @@ Michael Davidsaver (Osprey DCS).
This module is distributed subject to a Software License Agreement found
in file LICENSE that is included with this distribution.
<!-- Links -->
[unified.sdk]: https://www.unified-automation.com/products/client-sdk/c-ua-client-sdk.html
......@@ -28,13 +28,13 @@ The S7-1500 provides all PLC data items in OPC UA namespace 3.
The example databases use a few static items created in DB1
(aka `Data_block_1`).
Name | Data Type | OPC UA Node Name
-------- | --------- | -------------------------
myInt | Int | "Data_block_1"."myInt"
myWord | Word | "Data_block_1"."myWord"
myString | String | "Data_block_1"."myString"
myBool | Bool | "Data_block_1"."myBool"
myDouble | Double | "Data_block_1"."myDouble"
| Name | Data Type | OPC UA Node Name |
| -------- | --------- | --------------------------- |
| myInt | Int | `"Data_block_1"."myInt"` |
| myWord | Word | `"Data_block_1"."myWord"` |
| myString | String | `"Data_block_1"."myString"` |
| myBool | Bool | `"Data_block_1"."myBool"` |
| myDouble | Double | `"Data_block_1"."myDouble"` |
The double quotes are part of the OPC UA node name and have to be escaped
inside EPICS database field values.
......@@ -48,12 +48,12 @@ The free UaExpert tool from Unified Automation is a good choice.
## OPC UA Device Support Documentation
The documentation folder of the Device Support module contains the
[Requirements Specification (SRS)](https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20SRS.pdf)
giving an introduction and the list of requirements that should convey a good
idea of the planned features.
[Requirements Specification (SRS)][requirements.pdf] giving an introduction
and the list of requirements that should convey a good idea of the planned
features.
The [Cheat Sheet](https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20Cheat%20Sheet.pdf)
explains the configuration in the startup script and the database links.
The [Cheat Sheet][cheatsheet.pdf] explains the configuration in the startup
script and the database links.
## Feedback / Reporting issues
......@@ -65,3 +65,7 @@ Please use the OPC UA Device Support Module's GitHub
This example application is part of the OPC UA Device Support module
that is distributed subject to a Software License Agreement found
in file LICENSE that is included with its distribution.
<!-- Links -->
[requirements.pdf]: https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20SRS.pdf
[cheatsheet.pdf]: https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20Cheat%20Sheet.pdf
......@@ -12,22 +12,24 @@ and only way to do things.
There are two ways to build the example application:
1. __As an embedded module inside the OPC UA Support.__
This is the original setup. This module (named `exampleTop`) is built
inside the Device Support module. All configuration is set up to use the
configuration of the parent module.
The example is being built as part of the hierarchical parent module build.
Obviously, you can also just `cd` into the example and rebuild it
without touching the parent module.
2. __As a standalone module.__
After copying the `exampleTop` module into your workspace (feel free to
rename it), you will have to adapt its configuration.
* At the bottom of `configure/CONFIG_SITE` and `configure/RELEASE`,
adjust the commented-out sections to match your case.
* Create a file `RELEASE.local` inside `configure` (or at one of the
other usual places) that sets `OPCUA` and `EPICS_BASE` to the absolute
path of the OPC UA Device Support and EPICS Base modules.
1. __As an embedded module inside the OPC UA Support.__
This is the original setup. This module (named `exampleTop`) is built
inside the Device Support module. All configuration is set up to use the
configuration of the parent module.
The example is being built as part of the hierarchical parent module build.
Obviously, you can also just `cd` into the example and rebuild it
without touching the parent module.
2. __As a standalone module.__
After copying the `exampleTop` module into your workspace (feel free to
rename it), you will have to adapt its configuration.
* At the bottom of `configure/CONFIG_SITE` and `configure/RELEASE`,
adjust the commented-out sections to match your case.
* Create a file `RELEASE.local` inside `configure` (or at one of the
other usual places) that sets `OPCUA` and `EPICS_BASE` to the absolute
path of the OPC UA Device Support and EPICS Base modules.
## Building the Module
......@@ -36,9 +38,11 @@ Run `make` at the top level of the module.
## Preparing the IOC
Edit the example IOC startup script (`iocBoot/iocopcuaEx/st.cmd`):
* Change the call to `opcuaCreateSession` to match your OPC UA server URL.
* Uncomment the `dbLoadRecords` commands loading the example databases
for your server, adapting their macro settings if necessary.
* Change the call to `opcuaCreateSession` to match your OPC UA server URL.
* Uncomment the `dbLoadRecords` commands loading the example databases
for your server, adapting their macro settings if necessary.
## Running the IOC
......@@ -67,12 +71,12 @@ when creating example databases for a new OPC UA device.
## OPC UA Device Support Documentation
The documentation folder of the Device Support module contains the
[Requirements Specification (SRS)](https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20SRS.pdf)
giving an introduction and the list of requirements that should convey a good
idea of the planned features.
[Requirements Specification (SRS)][requirements.pdf] giving an introduction
and the list of requirements that should convey a good idea of the planned
features.
The [Cheat Sheet](https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20Cheat%20Sheet.pdf)
explains the configuration in the startup script and the database links.
The [Cheat Sheet][cheatsheet.pdf] explains the configuration in the startup
script and the database links.
## Feedback / Reporting issues
......@@ -84,13 +88,20 @@ Please use the OPC UA Device Support Module's GitHub
Contributions are welcome, preferably in the form of GitHub pull requests.
An example for a new OPC UA device should contain:
* a `DeviceDbApp` sub-directory that creates all necessary EPICS databases
* a `README.md` file describing how to prepare the device to work
with the example application
* a snippet for the startup script that loads the example databases.
* a `DeviceDbApp` sub-directory that creates all necessary EPICS databases
* a `README.md` file describing how to prepare the device to work
with the example application
* a snippet for the startup script that loads the example databases.
## License
This example application is part of the OPC UA Device Support module
that is distributed subject to a Software License Agreement found
in file LICENSE that is included with its distribution.
<!-- Links -->
[requirements.pdf]: https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20SRS.pdf
[cheatsheet.pdf]: https://docs.google.com/viewer?url=https://raw.githubusercontent.com/ralphlange/opcua/master/documentation/EPICS%20Support%20for%20OPC%20UA%20-%20Cheat%20Sheet.pdf
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment