Author: cdutz Date: Fri May 15 16:48:36 2020 New Revision: 39617 Log: Staging of rc1 of PLC4X 0.7.0
Added: dev/plc4x/0.7.0/rc1/README.md dev/plc4x/0.7.0/rc1/RELEASE_NOTES dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip (with props) dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.asc dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.sha512 Added: dev/plc4x/0.7.0/rc1/README.md ============================================================================== --- dev/plc4x/0.7.0/rc1/README.md (added) +++ dev/plc4x/0.7.0/rc1/README.md Fri May 15 16:48:36 2020 @@ -0,0 +1,280 @@ +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--> +[![Maven central](https://img.shields.io/maven-central/v/org.apache.plc4x/plc4j-api.svg)](https://img.shields.io/maven-central/v/org.apache.plc4x/plc4j-api.svg) +[![License](https://img.shields.io/github/license/apache/plc4x.svg)](http://www.apache.org/licenses/LICENSE-2.0) +[![Last commit](https://img.shields.io/github/last-commit/apache/plc4x.svg)]() +[![Twitter](https://img.shields.io/twitter/follow/ApachePLC4X.svg?label=Follow&style=social)](https://twitter.com/ApachePLC4X) + + +<h1 align="center"> + <br> + <img src="https://plc4x.apache.org/images/apache_plc4x_logo.png" + alt="Apache PLC4X Logo" title="Apache PLC4X Logo"/> + <br> +</h1> +<h3 align="center">The Industrial IoT adapter</h3> +<h4 align="center">The ultimate goal of PLC4X is to create a set of libraries, that allow unified access to any type of + PLC</h4> + +*** + +# Table of contents + + * [About PLC4X](#about-apache-plc4x) + * [Getting Started](#getting-started) + * [Developers](#developers) + * [Community](#community) + * [Contributing](#contributing) + * [Licensing](#licensing) + +*** + +## About Apache PLC4X + +Apache PLC4X is an effort to create a set of libraries for communicating with industrial grade programmable logic controllers (PLCs) in a uniform way. +We are planning on shipping libraries for usage in: + +1. Java +2. C/C++ (not ready for usage) +3. C# (.Net) (not ready for usage) +4. Python (not ready for usage) + +PLC4X also integrates with other Apache projects, such as: + +* [Apache Calcite](https://calcite.apache.org/) +* [Apache Camel](https://camel.apache.org/) +* [Apache Edgent](https://edgent.apache.org/) +* [Apache Kafka-Connect](https://kafka.apache.org) +* [Apache Karaf](https://karaf.apache.org/) +* [Apache NiFi](https://nifi.apache.org/) + +## Getting started + +Depending on the programming language, the usage will differ, therefore please go to the +[Getting Started](https://plc4x.apache.org/users/gettingstarted.html) on the PLC4X website to look up +the language of choice. + +### Java + +See the PLC4J user guide on the website to start using PLC4X in your Java application: +[https://plc4x.apache.org/users/plc4j/gettingstarted.html](https://plc4x.apache.org/users/plc4j/gettingstarted.html) + +## Developers + +### Environment + +Currently the project is configured to require the following software: + +1. Java 8 JDK: For running Maven in general as well as compiling the Java and Scala modules `JAVA_HOME` configured to + point to that. +2. libpcap/WinPcap for raw socket tests in Java or use of `passive-mode` drivers +3. (Optional) Graphwiz: For generating the graphs in the documentation (http://www.graphviz.org/) +4. Git (even when working on the source distribution) + +With this setup you will be able to build the Java part of PLC4X excluding the "proxy" drivers and servers. +For a full build of PLC4X with all options the following has to be provided: + +#### Linux + +On a clean Ubuntu 18.04 the following software needs to be installed: + +``` + sudo apt install python-setuptools gcc g++ make libpcap-dev +``` + +If you're building a source-distribution and haven't installed git yet, be sure to do so: + +``` + sudo apt install git +``` + +In order to build the .Net version, please install the .Net package according to this guide: + +https://dev.to/carlos487/installing-dotnet-core-in-ubuntu-1804-7lp + +#### Mac + +Make sure `Homebrew` ist installed in order to update `Bison` to a newer version (the version 2.3 installed per default is too old) + +``` + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +``` + +Then update `Bison`: + +``` + brew install bison + brew link bison --force + echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile +``` + +Install `Python 2.7`: + +``` + brew install python@2 +``` + +Be sure to re-open the command window or the changes will not apply. + +If you're going to build the `with-dotnet` profile you also need to install DotNet. +Please download it from: https://dotnet.microsoft.com/download and run the installer. + +LibPCAP is also installed via Homebrew: + +``` + brew install libpcap +``` + +#### Windows + +Some tools need to be installed before being able to build on Windows: + +* WinBuilds (for `with-cpp`, `with-proxies` profiles) +* Bison (for `with-cpp` profiles) +* Flex (for `with-cpp` profiles) +* Python 2.7 (for `with-python`, `with-proxies` profiles) +* Dotnet (for `with-dotnet` profiles) +* WinPCAP +* OpenSSL + +We have tested `WinBuilds` with the bundle of: http://win-builds.org/doku.php/download_and_installation_from_windows +Run the installer as "Administrator" or you won't be able to install it to "C:\Program Files" or the 32 Bit counterpart. +When running the installer, make sure to select the options: +* Native Windows +* x86_64 +Not quite sure which elements are really needed, better just install all of them. +If the installer fails to do something complaining about having to use a different mirror, enter "http://win-builds.org/1.5.0" as mirror address. + +WARNING: If you don't use the installer version of the distribution. The build will probably fail and it will be pretty +impossible to see the problem. When manually executing the command, a popup will appear complaining about not being able +to find some DLL. So if you are having these problems, please try using the installer instead of manually unpacking +the archive. + +For `Bison`, please download the Setup installer version from here: http://gnuwin32.sourceforge.net/packages/bison.htm (When using the zip version the bison.exe couldn't find some DLL files) +It seems the official 2.4.1 version has issues when installed in a directory which's path contains spaces. Please make sure you replace the exe with a patched version form here: http://marin.jb.free.fr/bison/bison-2.4.1-modified.zip +(More infos on this issue here: https://sourceforge.net/p/gnuwin32/bugs/473/) + +Please download the `Flex` compiler from here: http://gnuwin32.sourceforge.net/packages/flex.htm (Ideally download the binary zip distribution) + +You can get `Python` from here: https://www.python.org/downloads/release/python-2716/ + +For `.Net`, you need the `Developer Pack` in order to build .Net applications. So be sure to get a reasonably fresh installation from https://dotnet.microsoft.com + +If you're building a source-distribution and haven't installed git yet, be sure to do so. + +The windows version of the PCAP library can be found here: https://sourceforge.net/projects/winpcap413-176/ +(In order to read PCAPNG files we require a libpcap version 1.1.0 or greater. The default +Windows version is 1.0. At this location there is a patched version based on libpcap 1.7.4) + +Last not least we need to install OpenSSL, which is available from here: https://indy.fulgan.com/SSL/ +The letter at the end of the version is sort of a "sub-minor" version, so I usually just take the version with the highest letter. + +Make sure the `bin` directories of containing the executables `mingw32-make.exe`, `bison.exe` and `flex.exe` are all on your systems `PATH` as well as the directory containing the `openssl.exe`. + +### Building with Docker + +If you don't want to bother setting up the environment on your normal system and you have Docker installed, you can also build everything in a Docker container: + +``` + docker build -t plc4x . + + docker run -p 9200:9200 -p 9300:9300 --name plc4x plc4x +``` + +### Getting Started + +You must have Java 8 installed on your system and connectivity to Maven Central +(for downloading external third party dependencies). Maven will be automatically +downloaded and installed by the maven wrapper `mvnw`. + +Build PLC4X Java jars and install them in your local maven repository + +``` +./mvnw install # add -DskipTests to omit running the tests +``` + +You can now construct Java applications that use PLC4X. The PLC4X examples +are a good place to start and are available inside the `plc4j/examples` +directory. + +The `C++` drivers are still under development and still not really usable. +Therefore they are located in the so-called `sandbox`. +If you want to build them, this has to be enabled by activating the `with-sandbox` and `with-cpp` maven profiles: + +``` +./mvnw -P with-sandbox,with-cpp install # add -DskipTests to omit running the tests +``` + +Same applies for the `C# / .Net` implementation with `with-dotnet` profiles. + +``` +./mvnw -P with-sandbox,with-dotnet install # add -DskipTests to omit running the tests +``` + +The Python implementation is currently in a somewhat unclean state and still needs refactoring. +In order to be able to build the Python module, you currently need to activate the: +`with-sandbox`, `with-python` and `with-proxies` profiles. + +``` +./mvnw -P with-sandbox,with-python,with-proxies install # add -DskipTests to omit running the tests +``` + +In order to build everything the following command should work: + +``` +./mvnw -P with-boost,with-cpp,with-dotnet,with-logstash,with-proxies,with-python,with-sandbox install +``` + +## Community + +Join the PLC4X community by using one of the following channels. We'll be glad to help! + +### Mailing Lists + +Subscribe to the following mailing lists: +* Apache PLC4X Developer List: [dev-subscr...@plc4x.apache.org](mailto:dev-subscr...@plc4x.apache.org) +* Apache PLC4X Commits List: [commit-subscr...@plc4x.apache.org](mailto:commit-subscr...@plc4x.apache.org) +* Apache PLC4X Jira Notification List: [issues-subscr...@plc4x.apache.org](mailto:issues-subscr...@plc4x.apache.org) + +See also: [https://plc4x.apache.org/mailing-lists.html](https://plc4x.apache.org/mailing-lists.html) + +### Twitter + +Get the latest PLC4X news on Twitter: [https://twitter.com/ApachePlc4x](https://twitter.com/ApachePlc4x) + +## Contributing + +There are multiple forms in which you can become involved with the PLC4X project. + +These usually are, but are not limited to: + +* Submitting Pull Requests +* Filing Bug-Reports +* Active communication on our mailing lists +* Promoting the project (articles, blog posts, talks at conferences) +* Documentation + +We are a very friendly bunch and donât be afraid to step forward. +If you'd like to contribute to PLC4X, have a look at our +[contribution guide](https://plc4x.apache.org/developers/contributing.html)! + + +## Licensing + +Apache PLC4X is released under the Apache License Version 2.0. Added: dev/plc4x/0.7.0/rc1/RELEASE_NOTES ============================================================================== --- dev/plc4x/0.7.0/rc1/RELEASE_NOTES (added) +++ dev/plc4x/0.7.0/rc1/RELEASE_NOTES Fri May 15 16:48:36 2020 @@ -0,0 +1,298 @@ +============================================================== +Apache PLC4X 0.7.0-SNAPSHOT +============================================================== + +This version is the first after a major refactoring of the driver +core. All previous driver versions are now considered deprecated +and have been replaced by versions using the new driver structure +and generated driver codebase. + +New Features +------------ + +- Drivers now support structured types using PlcValues +- The EIP (EtherNet/IP) driver no longer requires an external + library and is implemented fully in the PLC4X project +- The Modbus driver no longer requires an external library + and is implemented fully in the PLC4X project +- The new S7 Driver supports writing multiple entries in one + request (The API allowed this from the beginning now not + every item is wrapped in a single request. It should bring + significant performance gains when writing multiple vlaues) +- S7 Driver now supports String datatypes. +- OSGi : Implementation of Drivers/Transports as OSGi services + to be able to use them in an OSGi container. +- New Firmata protocol driver + +Incompatible changes +-------------------- + +- Due to the refactoring of the driver core there might be issues + running drivers built against older core versions. +- This version doesn't provide a Beckhoff AMS/ADS driver as this + driver is still being ported to the new mspec format. +- All drivers connection strings now follow the same pattern: + {protocol-code:(transport-code:)?//{transport-config}(?{params})? + Please check the drivers documentation on our website: + https://plc4x.apache.org/users/protocols/s7.html +- The karaf-feature modules are removed as the drivers now all + provide both a feature.xml as well as a `kar` bundled archive + +Bug Fixes +--------- + +PLC4X-174 UDP Transport does not accept ports containing 0 +PLC4X-134 S7 is terminating the connection during handshake +PLC4X-192 Support for conversion of complex connection string + parameters + +============================================================== +(Unreleased) Apache PLC4X 0.6.0-SNAPSHOT +============================================================== + +This is the last release of PLC4X with the "handwritten" drivers. +This Minor release will thus receive updates and fixes until +most users have switched to 0.7 and above (with generated drivers). + +If you are using the S7 Driver you should update to this Version +as the critical (memory leak) bug PLC4X-163 is fixed. + +New Features +------------ +- PLC4X-168 A shorter S7 Field Syntax is Introduced. +This release contains no further features and mostly stabilization. + +Incompatible changes +-------------------- +- Moved the C++, C# and Python drivers into the `sandbox` + +Bug Fixes +--------- +- Fixed Promise Chain for InternalPlcWriteRequest +- PLC4X-45 Add float support to Modbus Protocol +- PLC4X-164 Fix wrong NOT FOUND exception in OPC UA Driver +- PLC4X-166 Fixed Download Page +- PLC4X-163 Fixed Netty ByteBuf Leaks for S7 Driver +- PLC4X-158 Added Warning if no Pooled Driver is used for Scraper + +============================================================== +Apache PLC4X 0.5.0 +============================================================== + +This is the first release containing our new generated drivers (AB-ETH) + +New Features +------------ + +- Implemented a new Apache Kafka Connect integration module +- Implemented a new Apache NiFi integration module +- Implemented a new Logstash integration module +- Implemented a driver for the AB-ETH protocol +- Implemented Apache Karaf features for S7 OSGI drivers +- PLC4X-121 Develop Code Generation to allow Generated Drivers in multiple Languages + +Sandbox (Beta-Features) +- Implemented a new BACnet/IP passive mode driver +- Implemented a new Serial DF1 driver + +Incompatible changes +-------------------- + +Bug Fixes +--------- + +- PLC4X-104 S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException +- PLC4X-134 S7 is terminating the connection during handshake +- PLC4X-139 PLC4X leaks sockets in case of connection problems +- PLC4X-141 String with real length of greater 127 throw an exception +- PLC4X-144 When requesting invalid addresses, the DefaultS7MessageProcessor produces errors + +============================================================== +Apache PLC4X 0.4.0 +============================================================== + +This is the first release of Apache PLC4X as top-level project. + +New Features +------------ + +- The PlcConnection now supports a `ping` method to allow checking if an existing connection is still alive. +- Support of the OPC-UA protocol with the `opc-ua-driver`. +- Other Languages Support: +-- Added first versions of a C# .Net PLC4X API (`plc4net`) +-- Added first versions of a Python PLC4X API (`plc4py`) +- Added an Interop server which allows to relay requests from other languages to a Java Server + +Incompatible changes +-------------------- + +- ElasticSearch example was updated to use ElasticSearch 7.0.1, this might cause problems with older Kibana versions. + +Bug Fixes +--------- + + +============================================================== +Apache PLC4X (incubating) 0.3.1 +============================================================== + +This is a bugfix-release, that fixes some problems with S7 driver. + +Bug Fixes +--------- + +- The S7 driver didn't correctly handle "fill-bytes" in multi-item read-responses and multi-item write-requests +- PLC4X-83: fixed NPE when reading odd-length array of one-byte base types +- PLC4X-82: renamed flags "F" to Siemens Standard "M" (Marker) +- PLC4X-84: Fixed a bug in the DefaultS7MessageProcessor which didn't correctly merge together split up items + + +============================================================== +Apache PLC4X (incubating) 0.3.0 +============================================================== + +This is the third official release of Apache PLC4X. + +Some new features have been added (e.g. plc-scraper) multiple +new integrations are included (apache-karaf, apache-calcite) +and a lot of (technical) refactoring has been done to prepare +future work on adapters in different languages. + +New Features +------------ + +- Object PLC Mapping (OPM) now has a Alias Registry to allow + variable substitution at runtime and write support +- New module `plc-scraper` for applications that have to + scrape a lot of sps fields with high frequency +- New integration `apache-karaf` to enable plc4j in a karaf + runtime environment + +Incompatible changes +-------------------- +- The 'plc4j-core' module has been merged into 'plc4j-api'. + So there is no 'plc4j-core' module anymore. Just remove that + dependency. +- The driver artifact names have changed so if you were using + a `plc4j-protocol-{name}` you now need to change this to + `plc4j-driver-{name}` + +Bug Fixes +--------- + +PLC4X-75 Fixing dependency to the wrap url-handler +PLC4X-76 When receiving responses with more than 512 byte, + the IsoOnTcp protocol doesn't work +PLC4X-77 When the last item in a request is a DINT, the + DefaultS7MessageProcessor dies +PLC4X-78 Write operations seem to fail +- Fixed a Bug where S7 was not able to read arrays. + + +============================================================== +Apache PLC4X (incubating) 0.2.0 +============================================================== + +This is the second official release of Apache PLC4X. + +Especially have we addressed all issues reported during +our first release, that were of non-technical nature. +These were tracked in: + +PLC4X-60 Fix findings by the last release + +New Features +------------ +A new connection-pool was added, which allows automatic +pooling and reuse of PLC connections. + +A new OPM module was added, which allows JPA like read- +communication using POJOs, very similar to JPA. + +A stub of a new driver for the Emerson DeltaV protocol +has been added, but is not yet a fully functional PLC4X +driver. This is also a first test of our new `passive- +mode-driver` concept. + +Incompatible changes +-------------------- + +We have refactored the API in order to eliminate the +need of passing `x-requests` to `x-methods` and added +an `execute` method to each request type. This greatly +simplifies the client code. However this requires +refactoring of applications using the direct PLC4X API. + +Miscellaneous changes +--------------------- + +We have increased the test coverage greatly and fixed +a lot of little errors we found on the way. + +Known Issues +------------ + +Bug Fixes +--------- + +PLC4X-56 [S7] S7Field does not recognize addresses + with numElements present +PLC4X-57 [S7] Response for address with numElements + contains only first item +PLC4X-61 Installation fails plc4j-protocoll-ethernetip + needs license +PLC4X-62 Modbus results deliver null-Value due to missing + implementation of getShort, getLong ... + + + +============================================================== +Apache PLC4X (incubating) 0.1.0 +============================================================== + +This is the first official release of Apache PLC4X. +It contains drivers for the following protocols: +- Siemens S7comm (0x32) +- Beckhoff ADS +- Modbus +- EtherNet/IP + +However the Siemens driver definitely is the most +mature driver, the rest should be treated experimental. + +New Features +------------ + +PLC4X-29 [S7] Implement PDU Fragmentation +PLC4X-39 Extend the Edgent integration with the new Subscription features of PLC4X + +Incompatible changes +-------------------- + +- NONE - + +Miscellaneous changes +--------------------- + +- NONE - + +Known Issues +------------ + +- NONE - + +Most drivers should be treated experimental and are not near production ready. +The S7 driver is probably the furthest implemented and tested driver and hereby can be +considered to be the most mature. + +Bug Fixes +--------- + +PLC4X-20 Jacoco doesn't seem to be working at all +PLC4X-21 Code coverage doesn't seem to work +PLC4X-47 S7 driver silently ignores surplus ReadRequestItems +PLC4X-48 S7 driver failes to parse response with multiple items + + + + Added: dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip ============================================================================== Binary file - no diff available. Propchange: dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.asc ============================================================================== --- dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.asc (added) +++ dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.asc Fri May 15 16:48:36 2020 @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE8VaBP/MVAH42umwTCJEnwVxg1rkFAl6+wjsACgkQCJEnwVxg +1rn+ZhAAgKAuGnPvoWpcsw/mGTj+qLKmyPnGjcpghI1onmz5lsvOUR/YBt8s1289 +b7waEDyE7GgYfavHQ3azR/a4XavfTcQFQUPtrFXH5zKzB0etsSLBGcPiOToIzN3F +YrNChipmClBrzXuTvSqL00mY8RywJPpg34ekLXTQ28UY8sfWIrS/xdB9ba51v8+5 +RxjnHoY04sWnylKjiGTru0QVbzRWZRU9iabPBxNlThwjHSdu3xLovkDYPikU5gNi +kTlYtXTOAVFCfNJUzzpUHHPPmoRNZqP8VTc+/wNEPv6U6B2umbWDKCIzyHYJ94FM +8XW3UW2JVmFcWQRCMU9XRUHLzrA2IRkCtBWXUnoArcs4aTOY4IT13NRAtEaB27+a +iRhE+qqkoop1/uzYPFQxss54hMc6ak58e3wYmQFTVpZKMdEIMx5aGWNr+08FSqir +/Usz1IbazYhYE25xRZrCNqoENovNEZgBBQEQjGeo69exvMgUkjioCip2ifTXSxag +Z7etqQm+oi2mgfUn8Jw+u/GWTVRo0fO0a84W2pkxFIBOirQ1TgRgiUbdceSrEhjI +IXdY+8SppM357KtZuWJSmGhGveZksJhFdXtDYw9+dreWe9v+styFz3tcC9X0kZeb +rOPJVrHpkrd0hXun3Q7LrBTtC9HESmhEi648IKNXHb+GOrYHD3o= +=lrWk +-----END PGP SIGNATURE----- Added: dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.sha512 ============================================================================== --- dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.sha512 (added) +++ dev/plc4x/0.7.0/rc1/apache-plc4x-0.7.0-source-release.zip.sha512 Fri May 15 16:48:36 2020 @@ -0,0 +1 @@ +89d8679128558be9764c79982a85d1c7f050478277d95da583eb555d4c24aa1bded1f9817a7662e83fbb43b3ea7135a642d683c136309d264a5c69de0bc101dd \ No newline at end of file