Hi Patrick,

it makes me happy that you are willing to give PLC4X a try and I’ll do my best 
to help you that this evaluation has a positive outcome.
I’m currently working hard on finishing the ADS driver for the 0.8.0-SNAPSHOT 
branch. I am hopeful that I’ll be able to have something usable this week.

Perhaps a little explanation on why we “removed” the support in 0.7.0:
PLC4X was never intended on being a pure Java solution (I’m currently also 
working on porting all drivers to C and on Wednesday we’ll probably have a 
kick-off to start the Python development). But we knew that manually writing 
drivers for every platform and target language is a maintenance-nightmare. 
Therefore in 2019 I invested most of my time in creating a new way of 
generating drivers from a machine-readable specification format we invented 
(Yes we did evaluate a lot of other solutions and they all had major 
disadvantages). So 0.7.0 was where we deleted all of our existing drivers and 
replaced them with generated drivers using our greatly improved driver core. 
Unfortunately the work on porting the ADS was stalled till I took over 
finishing it a few weeks ago. Luckily Beckhoff is being extremely helpful in 
helping me advance.

So perhaps Julain could help you, as he’s sort of the unofficial maintainer of 
the 0.6-branch (We are considering this a LTS branch as the new drivers 
probably still need a little hardening and proving themselves in battle).

Chris



Von: Patrick Boisclair <pboiscl...@noovelia.com>
Antworten an: "dev@plc4x.apache.org" <dev@plc4x.apache.org>
Datum: Dienstag, 11. August 2020 um 15:02
An: "dev@plc4x.apache.org" <dev@plc4x.apache.org>
Betreff: RE: plc4j-protocol-ads not registering


Hi Chris,



Thank you very much for your help, really really appreciated.



In fact, we are evaluating PLC4X for one of our next big project.

I'm currently, just trying to make a "proof of concept".



Unfortunatly, I'm not a Java expert [☹] . Sorry, for my lack of knowledge...

We usually use C# (.net Core) as our main language, some Go (MicroServices),  
Flutter for our Mobile apps and TypeScript (Angular) for Web)







The project consist of this (1 java file):


package PLC4XTest;

import org.apache.plc4x.java.PlcDriverManager;
import org.apache.plc4x.java.api.PlcConnection;
import org.apache.plc4x.java.api.exceptions.PlcConnectionException;

public class App {
    public static void main(String[] args) throws PlcConnectionException {
        PlcDriverManager driver = new PlcDriverManager();

        try {
            PlcConnection connection = driver.getConnection("ads:tcp://...");  
//address hidden on purpose
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

And the entire pom.xml file: (

NOTE: I changed the version as suggested)


<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.noovelia.plc4xtest</groupId>
  <artifactId>plc4xtest</artifactId>
  <version>1</version>

  <name>plc4xtest</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-api</artifactId>
      <version>0.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-protocol-ads</artifactId>
      <version>0.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-driver-s7</artifactId>
      <version>0.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-driver-opcua</artifactId>
      <version>0.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.30</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <!-- lock down plugins versions to avoid using Maven defaults (may be 
moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see 
https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle 
-->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see 
https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging
 -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see 
https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle 
-->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>



Hope it gives you more info, and leas take my sincere thank you for you help.


Patrick Boisclair
Analyste - Programmeur senior / Senior Analyst Programmer

[cid:imageb437c6.PNG@ba18e707.4cabefa1]<https://www.noovelia.com/>


462, rue des Forges, Trois-Rivières (Québec) G9A 2H5 CANADA
noovelia.com<https://www.noovelia.com>

"Veuillez noter ma nouvelle adresse courriel. / Please note my new email 
address."
________________________________
De : Christofer Dutz <christofer.d...@c-ware.de>
Envoyé : 11 août 2020 02:59
À : dev@plc4x.apache.org
Objet : Re: plc4j-protocol-ads not registering

Hi Patrick,

first of all welcome here on our list. We will do our best to assist you.

I did notice a few things:

  *   You are using the API in version 0.6.0 but the drivers in 0.5.0 … I would 
strongly suggest not to mix versions
  *   The drivers you are using are in version 0.5.0 … I would suggest to 
update to version 0.6.0 as the 0.7.0 or 0.8.0-SNAPSHOT version don’t have ADS 
support yet

Are you using any form of “Fat-Jar” or shaded archive approach? Cause we have 
seen this behavior in these cases. The problem is that every driver has a 
property file in “META-INF/services” … each lists only the driver the module 
provides. So in case of the default settings the plugins for creating the fat 
jars just take one of these property files and skips the rest. You can however 
configure it to merge the content. For an example on this please see the 
examples pom.xml

<!-- Build a fat jar containing all dependencies -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <executions>
    <execution>
      <id>generate-uber-jar</id>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers combine.children="append">
          <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>${app.main.class}</mainClass>
          </transformer>
        </transformers>
      </configuration>
    </execution>
  </executions>
</plugin>

Hope that helps, if not … just come back and we’ll try to help you.


Chris









Von: Patrick Boisclair <pboiscl...@noovelia.com>
Antworten an: "dev@plc4x.apache.org" <dev@plc4x.apache.org>
Datum: Montag, 10. August 2020 um 20:15
An: "dev@plc4x.apache.org" <dev@plc4x.apache.org>
Betreff: plc4j-protocol-ads not registering


Hi,



I do have a question about "Ads (Beckhoff) protocol".



Im using S7 and OPCUA, and both are registering in the available drivers.

However, the ads one is not.



Here is my dependecies:


    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-api</artifactId>
      <version>0.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-protocol-ads</artifactId>
      <version>0.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-driver-s7</artifactId>
      <version>0.5.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.plc4x</groupId>
      <artifactId>plc4j-driver-opcua</artifactId>
      <version>0.5.0</version>
    </dependency>


Here is the error:


main] INFO org.apache.plc4x.java.PlcDriverManager - Instantiating new PLC 
Driver Manager with class loader 
jdk.internal.loader.ClassLoaders$AppClassLoader@30946e09
[main] INFO org.apache.plc4x.java.PlcDriverManager - Registering available 
drivers...
[main] INFO org.apache.plc4x.java.PlcDriverManager - Registering driver for 
Protocol s7 (Siemens S7 (Basic))
[main] INFO org.apache.plc4x.java.PlcDriverManager - Registering driver for 
Protocol opcua (OPC UA (TCP))
org.apache.plc4x.java.api.exceptions.PlcConnectionException: Unable to find 
driver for protocol 'ads'
        at 
org.apache.plc4x.java.PlcDriverManager.getDriver(PlcDriverManager.java:98)
        at 
org.apache.plc4x.java.PlcDriverManager.getConnection(PlcDriverManager.java:71)
        at PLC4XTest.App.main(App.java:12)


I don't know what I'm doing wrong for the ADS protocols, the other register 
just fine.



Can anyone help me pls ?



Thank you very much and best regards

Patrick Boisclair
Analyste - Programmeur senior / Senior Analyst Programmer

[cid:imagedccd7c.PNG@445fc9be.47b6fee8]<https://www.noovelia.com/>


462, rue des Forges, Trois-Rivières (Québec) G9A 2H5 CANADA
noovelia.com<https://www.noovelia.com>
[Das Bild wurde vom Absender entfernt.]<https://www.noovelia.com/>
Noovelia - Business management software and process 
automation<https://www.noovelia.com/>
www.noovelia.com
Digitize, automate and connect your systems and equipment to increase business 
efficiency: optimal logistics, production and inventory management.



"Veuillez noter ma nouvelle adresse courriel. / Please note my new email 
address."

Reply via email to