From 049d68fd376c8e9af7f6312ff6694c08471d241a Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 30 Mar 2020 18:15:35 +0200 Subject: [PATCH] [Project] Added initial PLC documentation --- .../www.strolch.li/css/custom.css | 3 +- .../www.strolch.li/development.html | 28 +- .../Strolch-PLC-Architecture-Overview.png | Bin 0 -> 34401 bytes .../images/Strolch-PLC-Architecture.png | Bin 34401 -> 39995 bytes li.strolch.website/www.strolch.li/plc.html | 466 +++++++++++++++++- 5 files changed, 481 insertions(+), 16 deletions(-) create mode 100644 li.strolch.website/www.strolch.li/images/Strolch-PLC-Architecture-Overview.png diff --git a/li.strolch.website/www.strolch.li/css/custom.css b/li.strolch.website/www.strolch.li/css/custom.css index 6af83821c..728267f79 100644 --- a/li.strolch.website/www.strolch.li/css/custom.css +++ b/li.strolch.website/www.strolch.li/css/custom.css @@ -44,5 +44,6 @@ blockquote { .image { display: block; margin-left: auto; - margin-right: auto + margin-right: auto; + margin-bottom: 10px; } \ No newline at end of file diff --git a/li.strolch.website/www.strolch.li/development.html b/li.strolch.website/www.strolch.li/development.html index 130823289..2efe67013 100644 --- a/li.strolch.website/www.strolch.li/development.html +++ b/li.strolch.website/www.strolch.li/development.html @@ -83,13 +83,13 @@ mvn clean install -DskipTests

The following shows the maven command to create the new maven project. Note that you should replace the placeholders in the brackets:

-mvn archetype:generate
-  -DarchetypeGroupId=li.strolch
-  -DarchetypeArtifactId=li.strolch.mvn.archetype.main
-  -DarchetypeVersion=1.6.0-SNAPSHOT
-  -DgroupId=<my.groupid>
-  -DartifactId=<my-artifactId>
-  -Dversion=<my.version>
+mvn archetype:generate \
+  -DarchetypeGroupId=li.strolch \
+  -DarchetypeArtifactId=li.strolch.mvn.archetype.main \
+  -DarchetypeVersion=1.6.0-SNAPSHOT \
+  -DgroupId=<my.groupid> \
+  -DartifactId=<my-artifactId> \
+  -Dversion=<my.version> \
   -DappName="<my app name>"

You change into the directory of the new project and then build the project by calling:

@@ -107,13 +107,13 @@ mvn exec:java

The following shows the maven command to create the new maven project. Note that you should replace the placeholders in the brackets:

-mvn archetype:generate
-  -DarchetypeGroupId=li.strolch
-  -DarchetypeArtifactId=li.strolch.mvn.archetype.webapp
-  -DarchetypeVersion=1.6.0-SNAPSHOT
-  -DgroupId=<my.groupid>
-  -DartifactId=<my-artifactId>
-  -Dversion=<my.version>
+mvn archetype:generate \
+  -DarchetypeGroupId=li.strolch \
+  -DarchetypeArtifactId=li.strolch.mvn.archetype.webapp \
+  -DarchetypeVersion=1.6.0-SNAPSHOT \
+  -DgroupId=<my.groupid> \
+  -DartifactId=<my-artifactId> \
+  -Dversion=<my.version> \
   -DappName="<my app name>"

Install the web dependencies

diff --git a/li.strolch.website/www.strolch.li/images/Strolch-PLC-Architecture-Overview.png b/li.strolch.website/www.strolch.li/images/Strolch-PLC-Architecture-Overview.png new file mode 100644 index 0000000000000000000000000000000000000000..67592f64a30164dfbeaff3c705c85784a6195a18 GIT binary patch literal 34401 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 DygzHQ literal 0 HcmV?d00001 diff --git a/li.strolch.website/www.strolch.li/images/Strolch-PLC-Architecture.png b/li.strolch.website/www.strolch.li/images/Strolch-PLC-Architecture.png index 67592f64a30164dfbeaff3c705c85784a6195a18..8913eddb9768717fa1ab2c46fc5fcc343fdfa311 100644 GIT binary patch literal 39995 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 DygzHQ diff --git a/li.strolch.website/www.strolch.li/plc.html b/li.strolch.website/www.strolch.li/plc.html index e35d1717b..d89bd782b 100644 --- a/li.strolch.website/www.strolch.li/plc.html +++ b/li.strolch.website/www.strolch.li/plc.html @@ -68,9 +68,26 @@ are satisfied with the result. What follows is a description in how to set up your own Strolch based PLC.

Architecture

+

Overview

+ Strolch PLC Architecture Overview

The Strolch PLC architecture sees the Strolch Agent as the server, managing logical devices, i.e. multiple - sensors and actors together and thus deciding

+ sensors and actors together and thus deciding on further steps. With this architecture multiple PLCs can be + combined together in one agent for flow control.

+ +

PLC Architecture

Strolch PLC Architecture +

On the agent side the two main classes are the PlcGwServerHandler and the + PlcGwService

+

The PlcGwServerHandler handles connections from remote PLCs over WebSockets and sends the + requests to these PLCs. A PlcGwService instance will be notified and can then decide on an + action. In an execution model with Activities, the PlcNotificationListener + interface can be implemented, or the PlcExecutionPolicy can be directly extended.

+ +

On the PLC side, the PlcGwClientHandler is optional if no agent is required. The PlcHandler + initializes the model and connections. The Plc class is Strolch agnostic and manages the + connections and notifies PlcListener instances on changes coming from the underlying + connections. The PlcService implementations implement business logic, and can also be notified + on updates from connections.

Example set up

This example setup describes the movement of containers over conveyors. The conveyors have motors which can @@ -82,6 +99,453 @@ Strolch PLC Conveyor Example +

New Project

+
    +
  1. First create a new Strolch Web project using the Strolch Maven archetype +
  2. +
  3. Now add the following Maven dependencies: +
    +<properties>
    +  <strolch.version>1.6.0-SNAPSHOT</strolch.version>
    +  <strolch.plc.version>0.1.0-SNAPSHOT</strolch.plc.version>
    +</properties>
    +
    +<dependencyManagement>
    +  <dependency>
    +    <groupId>li.strolch</groupId>
    +    <artifactId>li.strolch.bom</artifactId>
    +    <type>pom</type>
    +    <version>${strolch.version}</version>
    +    <scope>import</scope>
    +  </dependency>
    +  <dependency>
    +    <groupId>li.strolch</groupId>
    +    <artifactId>strolch-plc-bom</artifactId>
    +    <type>pom</type>
    +    <version>${strolch.plc.version}</version>
    +    <scope>import</scope>
    +  </dependency>
    +</dependencyManagement>
    +
    +<dependencies>
    +  <!-- PLC -->
    +  <dependency>
    +    <groupId>li.strolch</groupId>
    +    <artifactId>strolch-plc-core</artifactId>
    +  </dependency>
    +  <dependency>
    +    <groupId>li.strolch</groupId>
    +    <artifactId>strolch-plc-rest</artifactId>
    +  </dependency>
    +  <dependency>
    +    <groupId>li.strolch</groupId>
    +    <artifactId>strolch-plc-gw-client</artifactId>
    +  </dependency>
    +</dependencies>
    +
  4. + +
  5. +

    Add a bower dependency: "strolch-wc-plc": "4treesCH/strolch-wc-plc#^0.3.4" to src/main/webapp/bower.json +

    +

    After adding the dependeny, run gulp in the webapp directory. Gulp should have been + installed through the instructions from the development page.

    +
  6. + +
  7. +

    Now we need to add the PLC web views to our new project. This is added in the src/main/webapp/app/src/c-app.html + file. Add the following:

    + +
    +<!-- HTML Imports -->
    +<link rel="import" href="../bower_components/strolch-wc-plc/strolch-wc-plc-connections.html">
    +<link rel="import" href="../bower_components/strolch-wc-plc/strolch-wc-plc-logical-devices.html">
    +
    +<!-- Change default-page to plcLogicalDevices -->
    +<c-app-routing id="appRouting"
    +         login-page="login"
    +         default-page="plcLogicalDevices"
    +         auth-valid="[[authTokenValid]]"
    +         page="{{page}}"
    +         route-tail="{{routeTail}}"
    +         use-hash-as-path></c-app-routing>
    +
    +<!-- Add the new pages in the iron-pages element: -->
    +<template is="dom-if" if="[[equal(page, 'plcConnections')]]" restamp>
    +    <strolch-wc-plc-connections id="plcConnections"
    +            base-path="../"
    +            base-rest-path="[[baseRestPath]]"
    +            route="{{subroute}}"></strolch-wc-plc-connections>
    +</template>
    +<template is="dom-if" if="[[equal(page, 'plcLogicalDevices')]]" restamp>
    +    <strolch-wc-plc-logical-devices id="plcLogicalDevices"
    +            base-path="../"
    +            base-rest-path="[[baseRestPath]]"
    +            base-ws-path="[[baseWsPath]]"
    +            route="{{subroute}}"></strolch-wc-plc-logical-devices>
    +</template>
    +
    +// add a new property to the WebSocket path for observing changes on the PLC
    +wsObserverPath: {
    +    type: String,
    +    value: function () {
    +        return CustomWeb.baseWsPath + "/plc/observer";
    +    }
    +}
    +
  8. + +
  9. +

    Now we need to configure the PLC's runtime by modifying runtime/StrolchConfiguration.xml + and adding the following:

    +
    +<!--
    +    This component configures the PlcHandler by
    +    loading the PlcConnections, PlcAddresses and PlcTelegrams
    +-->
    +<Component>
    +  <name>PlcHandler</name>
    +  <api>li.strolch.plc.core.PlcHandler</api>
    +  <impl>li.strolch.plc.core.DefaultPlcHandler</impl>
    +  <depends>RealmHandler</depends>
    +  <Properties>
    +    <!-- The component handling the low level connections -->
    +    <plcClass>li.strolch.plc.core.hw.DefaultPlc</plcClass>
    +  </Properties>
    +</Component>
    +
    +<!--
    +    This component handles registrations of the PlcServices, i.e. your PLC business logic
    +-->
    +<Component>
    +  <name>PlcServiceInitializer</name>
    +  <api>li.strolch.plc.core.PlcServiceInitializer</api>
    +  <impl>li.strolch.plc.example.CustomPlcServiceInitializer</impl>
    +  <depends>PlcHandler</depends>
    +  <Properties>
    +  </Properties>
    +</Component>
    +
    +<!--
    +    This component notifies a Strolch agent of changes on the PLC
    +    only if you have a Strolch server with a configured
    +    li.strolch.plc.gw.server.PlcServerWebSocketEndpoint ready to accept connections
    +-->
    +<Component>
    +  <name>PlcGwClientHandler</name>
    +  <api>li.strolch.plc.gw.client.PlcGwClientHandler</api>
    +  <impl>li.strolch.plc.gw.client.PlcGwClientHandler</impl>
    +  <depends>PlcHandler</depends>
    +  <depends>PlcServiceInitializer</depends>
    +  <Properties>
    +    <plcId>plc-01</plcId>
    +    <gwUsername>plc-01</gwUsername>
    +    <gwPassword>plc-01</gwPassword>
    +    <gwServerUrl>ws://localhost:8080/agent/websocket/strolch/plc</gwServerUrl>
    +  </Properties>
    +</Component>
    +
  10. + +
  11. +

    Now we add the custom classes we just declared.

    + +

    PlcServiceInitializer

    +
    +import java.util.ArrayList;
    +import java.util.List;
    +
    +import li.strolch.plc.example.services.*;
    +import li.strolch.agent.api.ComponentContainer;
    +import li.strolch.plc.core.PlcHandler;
    +import li.strolch.plc.core.PlcService;
    +import li.strolch.plc.core.PlcServiceInitializer;
    +
    +public class CustomPlcServiceInitializer extends PlcServiceInitializer {
    +
    +  public CustomPlcServiceInitializer(ComponentContainer container, String componentName) {
    +    super(container, componentName);
    +  }
    +
    +  @Override
    +  protected List<PlcService> getPlcServices(PlcHandler plcHandler) {
    +    ArrayList<PlcService> plcServices = new ArrayList<>();
    +
    +    StartupPlcService startupPlcService = new StartupPlcService(plcHandler);
    +    ConveyorPlcService conveyorPlcService = new ConveyorPlcService(plcHandler);
    +
    +    plcServices.add(conveyorPlcService);
    +    plcServices.add(startupPlcService);
    +
    +    return plcServices;
    +  }
    +}
    + +

    PlcPostInitializer

    +
    +import li.strolch.agent.api.ComponentContainer;
    +import li.strolch.plc.core.PlcPostInitializer;
    +
    +public class CustomPostInitializer extends PlcPostInitializer {
    +  public CustomPostInitializer(ComponentContainer container, String componentName) {
    +    super(container, componentName);
    +  }
    +
    +  // override the initialize(), start(), stop() and destroy() methods as needed
    +}
    +
  12. + +
  13. +

    In the CustomPlcServiceInitializer we added two PlcServices, for which the code is + missing. The following are simple examples:

    + +

    StartupPlcService

    +
    +import li.strolch.persistence.api.StrolchTransaction;
    +import li.strolch.plc.core.PlcHandler;
    +import li.strolch.plc.core.PlcService;
    +
    +public class StartupPlcService extends PlcService {
    +
    +  public static final String PLC = "PLC";
    +  public static final String STARTED = "Started";
    +  public static final String STOPPED = "Stopped";
    +
    +  public StartupPlcService(PlcHandler plcHandler) {
    +    super(plcHandler);
    +  }
    +
    +  @Override
    +  public void start(StrolchTransaction tx) {
    +    send(PLC, STARTED);
    +    super.start(tx);
    +  }
    +
    +  @Override
    +  public void stop() {
    +    send(PLC, STOPPED);
    +    super.stop();
    +  }
    +}
    + +

    ConveyorPlcService

    +
    +import java.util.concurrent.ScheduledFuture;
    +import java.util.concurrent.TimeUnit;
    +
    +import li.strolch.plc.core.PlcHandler;
    +import li.strolch.plc.core.PlcService;
    +import li.strolch.plc.model.PlcAddress;
    +
    +public class ConveyorPlcService extends PlcService {
    +
    +  public static final int BOX_TRANSFER_DURATION = 30;
    +
    +  private static final String R_CONVEYOR_01 = "Conveyor01";
    +  private static final String A_START_BUTTON = "StartButton";
    +  private static final String T_MOTOR_ON = "MotorOn";
    +  private static final String T_MOTOR_OFF = "MotorOff";
    +  private static final String A_BOX_DETECTED = "BoxDetected";
    +
    +  private boolean motorOn;
    +  private ScheduledFuture<?> motorStopTask;
    +
    +  public ConveyorPlcService(PlcHandler plcHandler) {
    +    super(plcHandler);
    +  }
    +
    +  @Override
    +  public void handleNotification(PlcAddress address, Object value) {
    +    String resource = address.resource;
    +    String action = address.action;
    +
    +    if (!resource.equals("Conveyor01"))
    +      throw new IllegalStateException("Unexpected resource " + resource);
    +
    +    boolean active = (boolean) value;
    +
    +    if (action.equals(A_START_BUTTON)) {
    +
    +      if (active) {
    +        logger.info("Start button pressed. Starting motors...");
    +        send(R_CONVEYOR_01, T_MOTOR_ON);
    +        this.motorOn = true;
    +        scheduleStopTask();
    +      }
    +
    +    } else if (action.equals(A_BOX_DETECTED)) {
    +
    +      if (active && this.motorOn) {
    +        logger.info("Container detected, refreshing stop task...");
    +        scheduleStopTask();
    +      }
    +
    +    } else {
    +      logger.info("Unhandled notification " + address.toKeyAddress());
    +    }
    +  }
    +
    +  private void scheduleStopTask() {
    +    if (this.motorStopTask != null)
    +      this.motorStopTask.cancel(false);
    +    this.motorStopTask = schedule(this::stopMotor, BOX_TRANSFER_DURATION, TimeUnit.SECONDS);
    +  }
    +
    +  private void stopMotor() {
    +    send(R_CONVEYOR_01, T_MOTOR_OFF);
    +  }
    +
    +  @Override
    +  public void register() {
    +    this.plcHandler.register(R_CONVEYOR_01, A_START_BUTTON, this);
    +    this.plcHandler.register(R_CONVEYOR_01, A_BOX_DETECTED, this);
    +    super.register();
    +  }
    +
    +  @Override
    +  public void unregister() {
    +    this.plcHandler.unregister(R_CONVEYOR_01, A_START_BUTTON, this);
    +    this.plcHandler.unregister(R_CONVEYOR_01, A_BOX_DETECTED, this);
    +    super.unregister();
    +  }
    +}
    +
  14. + +
  15. +

    Now the last part is to add the model, i.e. PlcConnections, PlcAddresses and PlcTelegrams. To have + less configuration files and make it easier to reconfigure at runtime, this data is stored in normal + Strolch Resources

    +

    In this example we will use simple Raspberry Pi GPIOs. For convenience, and also when sharing I/O + definitions with external partners, it is easier to use a CSV file to define the I/Os and then use + the PlcAddressGenerator to generate and validate the model.

    +

    For this purpose in this example, we will use one conveyor with 2 inputs and 1 output. The CSV file + should have the following content:

    +
    +Description,Type,SubType,Device,Pin,Resource,Action1,Action2,Connection,DeviceId
    +Material Flow,Group,,,,,,,,MaterialFlow
    +Conveyor 1,Input,GPIO,,4,Conveyor,Occupied,,raspiBcmGpioInput
    +Conveyor 1,Input,GPIO,,17,Conveyor,BoxDetected,,raspiBcmGpioInput
    +Conveyor 1,Output,GPIO,,18,Conveyor,MotorOn,MotorOff,raspiBcmGpioOutput
    + +

    The CSV headers are as follows:

    +
      +
    • Description → a simple description for this PlcAddress
    • +
    • Type → +
        +
      • Group → Must be the first line and generates a PlcLogicalDevice, all succeeding + lines are grouped to this device. Add additional to group further devices +
      • +
      • Input → defines a boolean input
      • +
      • Output → defines a boolean output
      • +
      • Virtual → defines a virtual address which has no corresponding hardware connection. + Used for internal communication. +
      • +
      • DataLogicScanner → defines an address to read barcodes from a DataLogic Scanner. + The actions must be left empty as the keys Barcode (address), On and Off (telegrams) + will be generated. +
      • +
      +
    • +
    • SubType → +
        +
      • For Input and Output types → +
          +
        • PCF8574 → For PCF8574 the Device and Pin values must be defined and will be + appended to the Connection. Define the device and pin values starting with 1, + the values will be decremented, to fit the hardware index +
        • +
        • GPIO → For GPIO the Pin will be appended to the Connection
        • +
        +
      • +
      • For Virtual types → +
          +
        • Boolean
        • +
        • String
        • +
        +
      • +
      +
    • +
    • Device → Device number
    • +
    • Pin → The pin number on the device
    • +
    • Resource → The resource ID with which to notify the agent
    • +
    • Action1 → The action ID
    • +
    • Action2 → The second action ID if required
    • +
    • Connection → The ID of the PlcConnection with which this I/O is attached
    • +
    • DeviceId → For type Group: Set the ID of this PlcLogicalDevice being generated
    • +
    + +

    When you use this file as input for the PlcAddressGenerator, then it will generate + PlcLogicalDevice, PlcAddress and PlcTelegram elements:

    +
    +<Resource Id="D_MaterialFlow" Name="MaterialFlow" Type="PlcLogicalDevice">
    +  <ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
    +    <Parameter Id="description" Name="Description" Type="String" Value="Material Flow"/>
    +    <Parameter Id="group" Name="Group" Type="String" Value="01 Material Flow"/>
    +    <Parameter Id="index" Name="Index" Type="Integer" Value="10"/>
    +  </ParameterBag>
    +  <ParameterBag Id="relations" Name="Relations" Type="Relations">
    +    <Parameter Id="addresses" Name="Addresses" Type="StringList" Interpretation="Resource-Ref" Uom="PlcAddress" Value="A_Conveyor-Occupied, A_Conveyor-BoxDetected, A_Conveyor-MotorOn"/>
    +    <Parameter Id="telegrams" Name="Telegrams" Type="StringList" Interpretation="Resource-Ref" Uom="PlcTelegram" Value="T_Conveyor-MotorOn, T_Conveyor-MotorOff"/>
    +  </ParameterBag>
    +</Resource>
    +
    +<Resource Id="A_Conveyor-Occupied" Name="Conveyor - Occupied" Type="PlcAddress">
    +  <ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
    +    <Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 1"/>
    +    <Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="raspiBcmGpioInput.4"/>
    +    <Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor"/>
    +    <Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="Occupied"/>
    +    <Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="10"/>
    +    <Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
    +  </ParameterBag>
    +</Resource>
    +
    +<Resource Id="T_Conveyor-MotorOn" Name="Conveyor - MotorOn" Type="PlcTelegram">
    +  <ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
    +    <Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 1"/>
    +    <Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="raspiBcmGpioOutput.18"/>
    +    <Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor"/>
    +    <Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
    +    <Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="10"/>
    +    <Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="true"/>
    +  </ParameterBag>
    +</Resource>
    + +

    The PlcLogicalDevice references the PlcAddress and PlcTelegram objects, and is then used in the UI + for grouping.

    +

    The PlcAddress is used to store the current value and defines the keys with which the agent will be + notified

    +

    The PlcTelegram is used to store default values to send, for specific keys. E.g. The action + On would send true, and Off would send false. This is semantics, and is + defined in each project depending on the hardware.

    +
  16. + +
  17. Now that we have a model, the PlcConnections are to be defined. In the previous example we used a + Raspberry Pi's GPIOs. This needs to be defined as a PlcConnection: +
    +<Resource Id="raspiBcmGpioOutput" Name="Raspi BCM GPIO Output" Type="PlcConnection">
    +  <ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
    +    <Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.gpio.RaspiBcmGpioOutputConnection"/>
    +    <Parameter Id="state" Name="Connection State" Type="String" Interpretation="Enumeration" Uom="ConnectionState" Value="Disconnected"/>
    +    <Parameter Id="stateMsg" Name="Connection State Msg" Type="String" Interpretation="Enumeration" Uom="ConnectionState"
    +           Value=""/>
    +    <Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
    +    <Parameter Id="bcmOutputPins" Name="BCM Output Pins" Type="IntegerList" Value="27"/>
    +  </ParameterBag>
    +</Resource>
    +<Resource Id="raspiBcmGpioInput" Name="Raspi BCM GPIO Input" Type="PlcConnection">
    +  <ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
    +    <Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.gpio.RaspiBcmGpioInputConnection"/>
    +    <Parameter Id="state" Name="Connection State" Type="String" Interpretation="Enumeration" Uom="ConnectionState" Value="Disconnected"/>
    +    <Parameter Id="stateMsg" Name="Connection State Msg" Type="String" Interpretation="Enumeration" Uom="ConnectionState"
    +           Value=""/>
    +    <Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="true"/>
    +    <Parameter Id="bcmInputPins" Name="BCM Input Pins" Type="IntegerList" Value="4"/>
    +  </ParameterBag>
    +</Resource>
    +

    See + strolch-plc-example-connections.xml + for further examples.

    +
  18. +
+