[Project] Added a simple plc runtime for tests

This commit is contained in:
Robert von Burg 2022-05-10 07:30:56 +02:00
parent 124e93e828
commit 4e4ed5aa0f
Signed by: eitch
GPG Key ID: 75DB9C85C74331F7
19 changed files with 1829 additions and 405 deletions

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<Privilege>
<Container>
<Parameters>
<Parameter name="secretKey" value="CHANGE-ME"/>
<Parameter name="secretSalt" value="CHANGE-ME"/>
<Parameter name="persistSessions" value="true"/>
<Parameter name="autoPersistOnUserChangesData" value="true"/>
<Parameter name="privilegeConflictResolution" value="MERGE"/>
<Parameter name="allowSessionRefresh" value="true"/>
</Parameters>
<EncryptionHandler class="li.strolch.privilege.handler.DefaultEncryptionHandler">
<Parameters>
<Parameter name="hashAlgorithm" value="PBKDF2WithHmacSHA512"/>
<Parameter name="hashIterations" value="10000"/>
<Parameter name="hashKeyLength" value="256"/>
</Parameters>
</EncryptionHandler>
<PersistenceHandler class="li.strolch.privilege.handler.XmlPersistenceHandler">
<Parameters>
<Parameter name="usersXmlFile" value="PrivilegeUsers.xml"/>
<Parameter name="rolesXmlFile" value="PrivilegeRoles.xml"/>
</Parameters>
</PersistenceHandler>
<UserChallengeHandler class="li.strolch.privilege.handler.MailUserChallengeHandler" />
</Container>
<Policies>
<Policy name="DefaultPrivilege" class="li.strolch.privilege.policy.DefaultPrivilege"/>
<Policy name="ModelPrivilege" class="li.strolch.runtime.privilege.ModelPrivilege"/>
<Policy name="RoleAccessPrivilege" class="li.strolch.privilege.policy.RoleAccessPrivilege"/>
<Policy name="UserAccessPrivilege" class="li.strolch.privilege.policy.UserAccessPrivilege"/>
<Policy name="UserSessionAccessPrivilege" class="li.strolch.privilege.policy.UsernameFromCertificatePrivilege"/>
</Policies>
</Privilege>

View File

@ -0,0 +1,196 @@
<?xml version="1.0" encoding="UTF-8"?>
<Roles>
<!--
Internal
-->
<Role name="ModelAccessor">
<Privilege name="GetOrder" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="AddOrder" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="AddActivity" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="UpdateResource" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="UpdateActivity" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="GetActivity" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="RemoveActivity" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="GetResource" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="RemoveResource" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="AddResource" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="UpdateOrder" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="RemoveOrder" policy="ModelPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
</Role>
<Role name="StrolchAdmin">
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="RequirePasswordChange" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.handler.operationslog.OperationsLog" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.search.StrolchSearch" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.report.ReportSearch" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.model.query.StrolchQuery" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.job.StrolchJob" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.job.StrolchJobsHandler" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
</Role>
<Role name="UserPrivileges">
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
<Allow>li.strolch.service.privilege.users.PrivilegeSetUserPasswordService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeSetUserLocaleService</Allow>
</Privilege>
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege"/>
<Privilege name="PrivilegeSetUserLocale" policy="UserAccessPrivilege"/>
</Role>
<Role name="PrivilegeAdmin">
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
<Allow>li.strolch.service.privilege.users.PrivilegeUpdateUserService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeUpdateUserRolesService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeSetUserPasswordService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeSetUserLocaleService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeRemoveUserService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeRemoveRoleFromUserService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeAddUserService</Allow>
<Allow>li.strolch.service.privilege.users.PrivilegeAddRoleToUserService</Allow>
<Allow>li.strolch.service.privilege.roles.PrivilegeUpdateRoleService</Allow>
<Allow>li.strolch.service.privilege.roles.PrivilegeRemoveRoleService</Allow>
<Allow>li.strolch.service.privilege.roles.PrivilegeRemovePrivilegeFromRoleService</Allow>
<Allow>li.strolch.service.privilege.roles.PrivilegeAddRoleService</Allow>
<Allow>li.strolch.service.privilege.roles.PrivilegeAddOrReplacePrivilegeOnRoleService</Allow>
</Privilege>
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeRemoveUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="InvalidateSession" policy="UserSessionAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="RequirePasswordChange" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeSetUserLocale" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeAction" policy="DefaultPrivilege">
<Allow>Reload</Allow>
<Allow>GetPolicies</Allow>
<Allow>Persist</Allow>
<Allow>GetCertificates</Allow>
<Allow>PersistSessions</Allow>
</Privilege>
<Privilege name="PrivilegeGetUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeSetUserState" policy="UserAccessPrivilege">
<Deny>SYSTEM</Deny>
<Allow>DISABLED</Allow>
<Allow>ENABLED</Allow>
</Privilege>
<Privilege name="PrivilegeAddRoleToUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeGetRole" policy="RoleAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="GetSession" policy="UserSessionAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeModifyUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeRemoveRole" policy="RoleAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeRemoveRoleFromUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeModifyRole" policy="RoleAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeAddRole" policy="RoleAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
</Role>
<Role name="agent">
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeRemoveUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.search.StrolchSearch" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.privilege.handler.SystemAction" policy="DefaultPrivilege">
<Allow>li.strolch.runtime.privilege.StrolchSystemAction</Allow>
<Allow>li.strolch.runtime.privilege.StrolchSystemActionWithResult</Allow>
<Allow>li.strolch.persistence.postgresql.PostgreSqlSchemaInitializer</Allow>
</Privilege>
<Privilege name="PrivilegeAction" policy="DefaultPrivilege">
<Allow>Persist</Allow>
<Allow>GetCertificates</Allow>
<Allow>PersistSessions</Allow>
</Privilege>
<Privilege name="PrivilegeGetUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.model.query.StrolchQuery" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
<Privilege name="PrivilegeModifyUser" policy="UserAccessPrivilege">
<AllAllowed>true</AllAllowed>
</Privilege>
</Role>
</Roles>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Users>
<!-- password: admin -->
<User password="$PBKDF2WithHmacSHA512,10000,256$83c5d3697a69497ed4d999cde98a6a2c586114435cab5a80327734b3a032766b$c9185893044f5421f28c2a6def129e072186c7d73b78ec4ec60c1044c97546fe" userId="U10" username="admin">
<Firstname>Admin</Firstname>
<Lastname>Admin</Lastname>
<State>ENABLED</State>
<Locale>en-GB</Locale>
<Roles>
<Role>ModelAccessor</Role>
<Role>PrivilegeAdmin</Role>
<Role>StrolchAdmin</Role>
<Role>UserPrivileges</Role>
</Roles>
</User>
<User userId="S01" username="agent">
<State>SYSTEM</State>
<Locale>en</Locale>
<Roles>
<Role>ModelAccessor</Role>
<Role>PrivilegeAdmin</Role>
<Role>agent</Role>
</Roles>
</User>
</Users>

View File

@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8"?>
<StrolchConfiguration>
<env id="global">
<Runtime>
<applicationName>Strolch PLC</applicationName>
<Properties>
<locale>en</locale>
<verbose>true</verbose>
<timezone>Europe/Zurich</timezone>
</Properties>
</Runtime>
<Component>
<name>PrivilegeHandler</name>
<api>li.strolch.runtime.privilege.PrivilegeHandler</api>
<impl>li.strolch.runtime.privilege.DefaultStrolchPrivilegeHandler</impl>
<Properties>
<privilegeConfigFile>PrivilegeConfig.xml</privilegeConfigFile>
</Properties>
</Component>
<Component>
<name>PersistenceHandler</name>
<api>li.strolch.persistence.api.PersistenceHandler</api>
<impl>li.strolch.persistence.xml.XmlPersistenceHandler</impl>
<Properties>
<dbStorePath>dbStore</dbStorePath>
<allowDataInitOnEmptyDb>true</allowDataInitOnEmptyDb>
</Properties>
</Component>
<Component>
<name>RealmHandler</name>
<api>li.strolch.agent.api.RealmHandler</api>
<impl>li.strolch.agent.impl.DefaultRealmHandler</impl>
<depends>PrivilegeHandler</depends>
<depends>PersistenceHandler</depends>
<Properties>
<realms>defaultRealm</realms>
<dataStoreMode>CACHED</dataStoreMode>
<dataStoreFile>defaultModel.xml</dataStoreFile>
<enableObserverUpdates>true</enableObserverUpdates>
</Properties>
</Component>
<Component>
<name>EnumHandler</name>
<api>li.strolch.runtime.query.enums.EnumHandler</api>
<impl>li.strolch.runtime.query.enums.DefaultEnumHandler</impl>
<depends>RealmHandler</depends>
</Component>
<Component>
<name>ServiceHandler</name>
<api>li.strolch.service.api.ServiceHandler</api>
<impl>li.strolch.service.api.DefaultServiceHandler</impl>
<depends>RealmHandler</depends>
<depends>PrivilegeHandler</depends>
<Properties>
<verbose>true</verbose>
</Properties>
</Component>
<Component>
<name>PolicyHandler</name>
<api>li.strolch.policy.PolicyHandler</api>
<impl>li.strolch.policy.DefaultPolicyHandler</impl>
<Properties>
<readPolicyFile>true</readPolicyFile>
</Properties>
</Component>
<Component>
<name>MigrationsHandler</name>
<api>li.strolch.migrations.MigrationsHandler</api>
<impl>li.strolch.migrations.MigrationsHandler</impl>
<depends>RealmHandler</depends>
</Component>
<Component>
<name>OperationsLog</name>
<api>li.strolch.handler.operationslog.OperationsLog</api>
<impl>li.strolch.handler.operationslog.OperationsLog</impl>
<depends>RealmHandler</depends>
<Properties>
<maxMessages>200</maxMessages>
</Properties>
</Component>
<Component>
<name>StrolchJobsHandler</name>
<api>li.strolch.job.StrolchJobsHandler</api>
<impl>li.strolch.job.StrolchJobsHandler</impl>
<depends>RealmHandler</depends>
</Component>
<Component>
<name>SessionHandler</name>
<api>li.strolch.rest.StrolchSessionHandler</api>
<impl>li.strolch.rest.DefaultStrolchSessionHandler</impl>
<depends>PrivilegeHandler</depends>
<Properties>
<session.ttl.minutes>30</session.ttl.minutes>
<session.maxKeepAlive.minutes>10080</session.maxKeepAlive.minutes>
<session.reload>true</session.reload>
</Properties>
</Component>
<Component>
<name>RestfulHandler</name>
<api>li.strolch.rest.RestfulStrolchComponent</api>
<impl>li.strolch.rest.RestfulStrolchComponent</impl>
<depends>SessionHandler</depends>
<Properties>
<secureCookie>false</secureCookie>
</Properties>
</Component>
<Component>
<name>PlcHandler</name>
<api>li.strolch.plc.core.PlcHandler</api>
<impl>li.strolch.plc.core.DefaultPlcHandler</impl>
<depends>RealmHandler</depends>
<Properties>
<plcClass>li.strolch.plc.core.hw.DefaultPlc</plcClass>
<plcId>strolch-plc-01</plcId>
</Properties>
</Component>
<Component>
<name>PlcServiceInitializer</name>
<api>li.strolch.plc.core.PlcServiceInitializer</api>
<impl>li.strolch.plc.core.NoPlcServiceInitializer</impl>
<depends>PlcHandler</depends>
<Properties>
</Properties>
</Component>
<Component>
<name>PostInitializer</name>
<api>li.strolch.agent.api.PostInitializer</api>
<impl>li.strolch.plc.core.PlcPostInitializer</impl>
<depends>StrolchJobsHandler</depends>
<depends>PlcServiceInitializer</depends>
<Properties>
</Properties>
</Component>
<Component>
<name>ExecutionHandler</name>
<api>li.strolch.execution.ExecutionHandler</api>
<impl>li.strolch.execution.EventBasedExecutionHandler</impl>
<depends>PostInitializer</depends>
<Properties>
<restartExecution>true</restartExecution>
</Properties>
</Component>
<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>strolch-plc-01</plcId>
<gwUsername>strolch-plc-01</gwUsername>
<gwPassword>CHANGE-ME</gwPassword>
<gwConnectToServer>false</gwConnectToServer>
<gwServerUrl>ws://192.168.1.40/websocket/strolch/plc</gwServerUrl>
</Properties>
</Component>
</env>
<env id="test">
</env>
<env id="prod">
</env>
</StrolchConfiguration>

View File

@ -0,0 +1,3 @@
<StrolchPolicies>
</StrolchPolicies>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/opt/strolch/plc/temp/plc.log</file>
<append>true</append>
<immediateFlush>true</immediateFlush>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/opt/strolch/plc/temp/plc-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d [%thread] %-5level %class{36}:%line %method - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE" />
</root>
</configuration>

8
example/data/README Normal file
View File

@ -0,0 +1,8 @@
# README for Address mappings
Use the following Google Sheet to easily define the address mappings:
https://docs.google.com/spreadsheets/d/10fgTfR3FZCVbQ5bbh0xB1u8rLIaw2KEyO45VMv7y5ho/edit?usp=sharing
Download the sheet `strolch-plc-example`
And then run `li.strolch.plc.core.util.PlcAddressGeneratorTest` to generate the Plc address mappings.

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<StrolchModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://strolch.li/xsd/StrolchModel-1.6.xsd"
xsi:schemaLocation="https://strolch.li/xsd/StrolchModel-1.6.xsd StrolchModel-1.6.xsd">
<IncludeFile file="plc-templates.xml"/>
<IncludeFile file="plc-state.xml"/>
<IncludeFile file="strolch-plc-example.xml"/>
<IncludeFile file="strolch-plc-example-connections.xml"/>
<!--
PLC to store connection state to server
-->
<Resource Id="strolch-plc-01" Name="PLC" Type="Plc">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="connectionState" Name="Connection State" Type="String" Interpretation="Enumeration" Uom="ConnectionState" Value="Disconnected"/>
<Parameter Id="connectionStateMsg" Name="Connection State Msg" Type="String" Interpretation="Enumeration" Uom="ConnectionState"
Value=""/>
</ParameterBag>
</Resource>
</StrolchModel>

View File

@ -1,21 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<StrolchModel xmlns="https://strolch.li/xsd/StrolchModel-1.6.xsd">
<?xml version="1.0" encoding="UTF-8"?>
<StrolchModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://strolch.li/xsd/StrolchModel-1.6.xsd"
xsi:schemaLocation="https://strolch.li/xsd/StrolchModel-1.6.xsd StrolchModel-1.6.xsd">
<!--
PLC to store connection state to server
-->
<Resource Id="plc-01" Name="PLC" Type="Plc">
<Resource Id="configuration" Name="Configuration" Type="Configuration">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="connectionState" Name="Connection State" Type="String" Interpretation="Enumeration" Uom="ConnectionState" Value="Disconnected"/>
<Parameter Id="connectionStateMsg" Name="Connection State Msg" Type="String" Interpretation="Enumeration" Uom="ConnectionState"
Value=""/>
<Parameter Id="verbose" Name="Verbose Override" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<!--
PLC State
-->
<Resource Id="plcLogicalDevice" Name="PLC" Type="PlcLogicalDevice">
<Resource Id="plc" Name="PLC" Type="PlcLogicalDevice">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="group" Name="Group" Type="String" Value="99 Startup"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="999999"/>
@ -39,30 +35,33 @@
</Resource>
<Resource Id="addrPlcStarted" Name="PLC - Started" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="VirtualBoolean.plcStarted"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="raspiBcmGpioOutput.4"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="Started"/>
<Parameter Id="value" Name="Value" Type="Boolean" Value="false"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="10"/>
<Parameter Id="remote" Name="remote" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="telPlcStarted" Name="PLC - Started" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="VirtualBoolean.plcStarted"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="raspiBcmGpioOutput.4"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="Started"/>
<Parameter Id="value" Name="Value" Type="Boolean" Value="true"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="10"/>
<Parameter Id="remote" Name="remote" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="telPlcStopped" Name="PLC - Stopped" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="VirtualBoolean.plcStarted"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="raspiBcmGpioOutput.4"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="Stopped"/>
<Parameter Id="value" Name="Value" Type="Boolean" Value="false"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="20"/>
<Parameter Id="remote" Name="remote" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<StrolchModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://strolch.li/xsd/StrolchModel-1.6.xsd"
xsi:schemaLocation="https://strolch.li/xsd/StrolchModel-1.6.xsd StrolchModel-1.6.xsd">
<!--
Barcode reader connection, currently place holder with RandomString
-->
<Resource Id="dataLogicScanner" Name="DataLogic Scanner Connection" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.connections.DataLogicScannerConnection"/>
<Parameter Id="address" Name="Scanner IP Address" Type="String" Value="192.168.1.249:51236"/>
<Parameter Id="readTimeout" Name="Read Timeout (s)" Type="Integer" Value="60"/>
<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=""/>
</ParameterBag>
</Resource>
<!--
Raspberry GPIO BCM Address connection
-->
<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="true"/>
<Parameter Id="bcmOutputPins" Name="BCM Output Pins" Type="IntegerList" Value="4"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</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="17"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<!--
I2C input connections
-->
<Resource Id="i2cInput.dev01" Name="PCF8574 Input 0x38" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574InputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x38"/>
<Parameter Id="verbose" Name="Verbose" Type="Boolean" Value="false"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="interruptPinPullResistance" Name="Raspi Interrupt PinPullResistance" Type="String" Value="PULL_UP"/>
<Parameter Id="interruptChangeState" Name="Raspi Interrupt Change State" Type="String" Value="LOW"/>
<Parameter Id="interruptBcmPinAddress" Name="Raspi BCM Interrupt Pin" Type="Integer" Value="9"/>
<Parameter Id="enableInterruptFix" Name="Enable Interrupt Fix" Type="Boolean" Value="true"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="i2cInput.dev02" Name="PCF8574 Input 0x39" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574InputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x39"/>
<Parameter Id="verbose" Name="Verbose" Type="Boolean" Value="false"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="interruptPinPullResistance" Name="Raspi Interrupt PinPullResistance" Type="String" Value="PULL_UP"/>
<Parameter Id="interruptChangeState" Name="Raspi Interrupt Change State" Type="String" Value="LOW"/>
<Parameter Id="interruptBcmPinAddress" Name="Raspi BCM Interrupt Pin" Type="Integer" Value="10"/>
<Parameter Id="enableInterruptFix" Name="Enable Interrupt Fix" Type="Boolean" Value="true"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="i2cInput.dev03" Name="PCF8574 Input 0x3a" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574InputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x3a"/>
<Parameter Id="verbose" Name="Verbose" Type="Boolean" Value="false"/>
<!-- we don't invert dev03 -->
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="interruptPinPullResistance" Name="Raspi Interrupt PinPullResistance" Type="String" Value="PULL_UP"/>
<Parameter Id="interruptChangeState" Name="Raspi Interrupt Change State" Type="String" Value="LOW"/>
<Parameter Id="interruptBcmPinAddress" Name="Raspi BCM Interrupt Pin" Type="Integer" Value="24"/>
<Parameter Id="enableInterruptFix" Name="Enable Interrupt Fix" Type="Boolean" Value="true"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<!--
I2C output connections
-->
<Resource Id="i2cOutput.dev01" Name="PCF8574 Output 0x20" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574OutputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x20"/>
<Parameter Id="verbose" Name="Verbose" Type="Boolean" Value="false"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="i2cOutput.dev02" Name="PCF8574 Output 0x21" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574OutputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x21"/>
<Parameter Id="verbose" Name="Verbose" Type="Boolean" Value="false"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="simulated" Name="Simulated" Type="Boolean" Value="true"/>
</ParameterBag>
</Resource>
</StrolchModel>

View File

@ -0,0 +1,59 @@
Description,Type,SubType,Device,Pin,Resource,Action1,Action2,Connection,DeviceId,Inverted,Value,Remote
Mode,Group,,,,,,,,Mode,,,
Automatic Mode,Virtual,Boolean,,,AutomaticMode,On,Off,VirtualBoolean.AutomaticMode,,,,TRUE
Stop All Actors,Virtual,Boolean,,,StopAllActors,Now,,VirtualBoolean.StopAllActors,,,,TRUE
Sector 1,Group,,,,,,,,Conveyor01,,,
Motor Conveyor B1.1,Output,DevPin0,1,1,Sector01,Motor1On,Motor1Off,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B1.1 ,Input,DevPin0,1,1,Sector01,Motor1Fault,,i2cInput.dev01,,,,
Motor Conveyor B1.2,Output,DevPin0,1,2,Sector01,Motor2On,Motor2Off,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B1.2,Input,DevPin0,1,2,Sector01,Motor2Fault,,i2cInput.dev01,,,,
Start Button Conveyor 1,Input,DevPin0,1,8,Sector01,StartButton,,i2cInput.dev01,,TRUE,,
Light Barrier Conveyor 1,Input,DevPin0,2,1,Sector01,BoxDetected,,i2cInput.dev02,,,,
Emergency Stop Sector 1,Input,DevPin0,3,2,Sector01,EmergencyStop,,i2cInput.dev03,,,,TRUE
Sector 2,,,,,,,,,Conveyor03,,,
Motor Conveyor B2.1,Output,DevPin0,1,3,Sector02,Motor1On,Motor1Off,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B2.1 ,Input,DevPin0,1,3,Sector02,Motor1Fault,,i2cInput.dev01,,,,
Motor Conveyor B2.2,Output,DevPin0,1,4,Sector02,Motor2On,Motor2Off,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B2.2,Input,DevPin0,1,4,Sector02,Motor2Fault,,i2cInput.dev01,,,,
Light Barrier Conveyor 2,Input,DevPin0,2,2,Sector02,BoxDetectedStart,,i2cInput.dev02,,,,
Light Barrier Conveyor End 2,Input,DevPin0,2,3,Sector02,BoxDetectedEnd,,i2cInput.dev02,,,,
Sector 3 Fill Station,Group,,,,,,,,BoxFillStation,,,
Request Next Container,Virtual,Boolean,-,,FillStation,NextContainer,NextContainerDone,VirtualBoolean.NextContainer,,,,TRUE
Release Current Container,Virtual,Boolean,-,,FillStation,ReleaseContainer,ReleaseContainerDone,VirtualBoolean.ReleaseContainer,,,,TRUE
Current Container,Virtual,String,-,,FillStation,CurrentContainer,,VirtualString.CurrentContainer,,,,TRUE
Motor Conveyor B3,Output,DevPin0,1,5,FillStation,MotorOn,MotorOff,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B3,Input,DevPin0,1,5,FillStation,MotorFault,,i2cInput.dev01,,,,
Entry Stopper Open Valve,Output,DevPin0,2,1,FillStation,EntryOpen,EntryClose,i2cOutput.dev02,,,,
Entry Stopper Opened,Input,DevPin0,3,4,FillStation,EntryClosed,,i2cInput.dev03,,TRUE,,TRUE
Entry Stopper Closed,Input,DevPin0,3,5,FillStation,EntryOpened,,i2cInput.dev03,,TRUE,,TRUE
Light Barrier Fill Station Occupied,Input,DevPin0,2,4,FillStation,Occupied,,i2cInput.dev02,,,,TRUE
Fill Station Barcode Reader,DataLogicScanner,,-,,DataLogicScanner,,,dataLogicScanner,,,,
Exit Stopper Open Valve,Output,DevPin0,2,2,FillStation,ExitOpen,ExitClose,i2cOutput.dev02,,,,
Exit Stopper Opened,Input,DevPin0,3,6,FillStation,ExitClosed,,i2cInput.dev03,,TRUE,,TRUE
Exit Stopper Closed,Input,DevPin0,3,7,FillStation,ExitOpened,,i2cInput.dev03,,TRUE,,TRUE
Emergency Stop Sector 3,Input,DevPin0,3,3,FillStation,EmergencyStop,,i2cInput.dev03,,,,TRUE
Signallampe,Group,,,,,,,,Alarm,,,
Signal Horn,Output,DevPin0,2,3,Alarm,Horn,,i2cOutput.dev02,,,,
Signal Warning,Output,DevPin0,2,4,Alarm,Warning,,i2cOutput.dev02,,,,
Signal Operation,Output,DevPin0,2,5,Alarm,Operational,,i2cOutput.dev02,,,,
Sector 4,Group,,,,,,,,Conveyor05,,,
Motor Conveyor B4.1,Output,DevPin0,1,6,Sector04,Motor1On,Motor1Off,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B4.1 ,Input,DevPin0,1,6,Sector04,Motor1Fault,,i2cInput.dev01,,,,
Motor Conveyor B4.2,Output,DevPin0,1,7,Sector04,Motor2On,Motor2Off,i2cOutput.dev01,,,,
Signal Motor Fault Conveyor B4.2,Input,DevPin0,1,7,Sector04,Motor2Fault,,i2cInput.dev01,,,,
Light Barrier Conveyor 4,Input,DevPin0,2,5,Sector04,BoxDetected,,i2cInput.dev02,,,,
Control Cabinet,Group,,,,,,,,Cabinet,,,
Power Supply Control 5V,Input,DevPin0,2,6,Cabinet,Power5V,,i2cInput.dev02,,TRUE,,
Power Supply Drives 24V,Input,DevPin0,2,7,Cabinet,Power24VMotors,,i2cInput.dev02,,TRUE,,
Power Supply Sensor / Actors 24V,Input,DevPin0,2,8,Cabinet,Power24VSensors,,i2cInput.dev02,,TRUE,,
Security Relay Operational,Input,DevPin0,3,1,SecurityRelay,Operational,,i2cInput.dev03,,TRUE,,TRUE
Security Relay Acknowledge,Output,DevPin0,1,8,SecurityRelay,Reset,,i2cOutput.dev01,,,,
Configuration,Group,,,,,,,,Configuration,,,
Transfer time Sector 1.1,Virtual,Integer,-,,Sector01,TransferDuration1,,VirtualInteger.Sector01TransferDuration1,,,30,
Transfer time Sector 1.2,Virtual,Integer,-,,Sector01,TransferDuration2,,VirtualInteger.Sector01TransferDuration2,,,30,
Transfer time Sector 2.1,Virtual,Integer,-,,Sector02,TransferDuration1,,VirtualInteger.Sector02TransferDuration1,,,30,
Transfer time Sector 2.2,Virtual,Integer,-,,Sector02,TransferDuration2,,VirtualInteger.Sector02TransferDuration2,,,30,
Transfer time Fill Station,Virtual,Integer,-,,FillStation,TransferDuration,,VirtualInteger.FillStationTransferDuration,,,10,
Barcode scan duration,Virtual,Integer,-,,DataLogicScanner,ScanDuration,,VirtualInteger.DataLogicScannerScanDuration,,,4,
Transfer time Sector 4.1,Virtual,Integer,-,,Sector04,TransferDuration1,,VirtualInteger.Sector04TransferDuration1,,,30,
Transfer time Sector 4.2,Virtual,Integer,-,,Sector04,TransferDuration2,,VirtualInteger.Sector04TransferDuration2,,,30,
1 Description Type SubType Device Pin Resource Action1 Action2 Connection DeviceId Inverted Value Remote
2 Mode Group Mode
3 Automatic Mode Virtual Boolean AutomaticMode On Off VirtualBoolean.AutomaticMode TRUE
4 Stop All Actors Virtual Boolean StopAllActors Now VirtualBoolean.StopAllActors TRUE
5 Sector 1 Group Conveyor01
6 Motor Conveyor B1.1 Output DevPin0 1 1 Sector01 Motor1On Motor1Off i2cOutput.dev01
7 Signal Motor Fault Conveyor B1.1 Input DevPin0 1 1 Sector01 Motor1Fault i2cInput.dev01
8 Motor Conveyor B1.2 Output DevPin0 1 2 Sector01 Motor2On Motor2Off i2cOutput.dev01
9 Signal Motor Fault Conveyor B1.2 Input DevPin0 1 2 Sector01 Motor2Fault i2cInput.dev01
10 Start Button Conveyor 1 Input DevPin0 1 8 Sector01 StartButton i2cInput.dev01 TRUE
11 Light Barrier Conveyor 1 Input DevPin0 2 1 Sector01 BoxDetected i2cInput.dev02
12 Emergency Stop Sector 1 Input DevPin0 3 2 Sector01 EmergencyStop i2cInput.dev03 TRUE
13 Sector 2 Conveyor03
14 Motor Conveyor B2.1 Output DevPin0 1 3 Sector02 Motor1On Motor1Off i2cOutput.dev01
15 Signal Motor Fault Conveyor B2.1 Input DevPin0 1 3 Sector02 Motor1Fault i2cInput.dev01
16 Motor Conveyor B2.2 Output DevPin0 1 4 Sector02 Motor2On Motor2Off i2cOutput.dev01
17 Signal Motor Fault Conveyor B2.2 Input DevPin0 1 4 Sector02 Motor2Fault i2cInput.dev01
18 Light Barrier Conveyor 2 Input DevPin0 2 2 Sector02 BoxDetectedStart i2cInput.dev02
19 Light Barrier Conveyor End 2 Input DevPin0 2 3 Sector02 BoxDetectedEnd i2cInput.dev02
20 Sector 3 Fill Station Group BoxFillStation
21 Request Next Container Virtual Boolean - FillStation NextContainer NextContainerDone VirtualBoolean.NextContainer TRUE
22 Release Current Container Virtual Boolean - FillStation ReleaseContainer ReleaseContainerDone VirtualBoolean.ReleaseContainer TRUE
23 Current Container Virtual String - FillStation CurrentContainer VirtualString.CurrentContainer TRUE
24 Motor Conveyor B3 Output DevPin0 1 5 FillStation MotorOn MotorOff i2cOutput.dev01
25 Signal Motor Fault Conveyor B3 Input DevPin0 1 5 FillStation MotorFault i2cInput.dev01
26 Entry Stopper Open Valve Output DevPin0 2 1 FillStation EntryOpen EntryClose i2cOutput.dev02
27 Entry Stopper Opened Input DevPin0 3 4 FillStation EntryClosed i2cInput.dev03 TRUE TRUE
28 Entry Stopper Closed Input DevPin0 3 5 FillStation EntryOpened i2cInput.dev03 TRUE TRUE
29 Light Barrier Fill Station Occupied Input DevPin0 2 4 FillStation Occupied i2cInput.dev02 TRUE
30 Fill Station Barcode Reader DataLogicScanner - DataLogicScanner dataLogicScanner
31 Exit Stopper Open Valve Output DevPin0 2 2 FillStation ExitOpen ExitClose i2cOutput.dev02
32 Exit Stopper Opened Input DevPin0 3 6 FillStation ExitClosed i2cInput.dev03 TRUE TRUE
33 Exit Stopper Closed Input DevPin0 3 7 FillStation ExitOpened i2cInput.dev03 TRUE TRUE
34 Emergency Stop Sector 3 Input DevPin0 3 3 FillStation EmergencyStop i2cInput.dev03 TRUE
35 Signallampe Group Alarm
36 Signal Horn Output DevPin0 2 3 Alarm Horn i2cOutput.dev02
37 Signal Warning Output DevPin0 2 4 Alarm Warning i2cOutput.dev02
38 Signal Operation Output DevPin0 2 5 Alarm Operational i2cOutput.dev02
39 Sector 4 Group Conveyor05
40 Motor Conveyor B4.1 Output DevPin0 1 6 Sector04 Motor1On Motor1Off i2cOutput.dev01
41 Signal Motor Fault Conveyor B4.1 Input DevPin0 1 6 Sector04 Motor1Fault i2cInput.dev01
42 Motor Conveyor B4.2 Output DevPin0 1 7 Sector04 Motor2On Motor2Off i2cOutput.dev01
43 Signal Motor Fault Conveyor B4.2 Input DevPin0 1 7 Sector04 Motor2Fault i2cInput.dev01
44 Light Barrier Conveyor 4 Input DevPin0 2 5 Sector04 BoxDetected i2cInput.dev02
45 Control Cabinet Group Cabinet
46 Power Supply Control 5V Input DevPin0 2 6 Cabinet Power5V i2cInput.dev02 TRUE
47 Power Supply Drives 24V Input DevPin0 2 7 Cabinet Power24VMotors i2cInput.dev02 TRUE
48 Power Supply Sensor / Actors 24V Input DevPin0 2 8 Cabinet Power24VSensors i2cInput.dev02 TRUE
49 Security Relay Operational Input DevPin0 3 1 SecurityRelay Operational i2cInput.dev03 TRUE TRUE
50 Security Relay Acknowledge Output DevPin0 1 8 SecurityRelay Reset i2cOutput.dev01
51 Configuration Group Configuration
52 Transfer time Sector 1.1 Virtual Integer - Sector01 TransferDuration1 VirtualInteger.Sector01TransferDuration1 30
53 Transfer time Sector 1.2 Virtual Integer - Sector01 TransferDuration2 VirtualInteger.Sector01TransferDuration2 30
54 Transfer time Sector 2.1 Virtual Integer - Sector02 TransferDuration1 VirtualInteger.Sector02TransferDuration1 30
55 Transfer time Sector 2.2 Virtual Integer - Sector02 TransferDuration2 VirtualInteger.Sector02TransferDuration2 30
56 Transfer time Fill Station Virtual Integer - FillStation TransferDuration VirtualInteger.FillStationTransferDuration 10
57 Barcode scan duration Virtual Integer - DataLogicScanner ScanDuration VirtualInteger.DataLogicScannerScanDuration 4
58 Transfer time Sector 4.1 Virtual Integer - Sector04 TransferDuration1 VirtualInteger.Sector04TransferDuration1 30
59 Transfer time Sector 4.2 Virtual Integer - Sector04 TransferDuration2 VirtualInteger.Sector04TransferDuration2 30

File diff suppressed because it is too large Load Diff

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<StrolchModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://strolch.li/xsd/StrolchModel-1.6.xsd"
xsi:schemaLocation="https://strolch.li/xsd/StrolchModel-1.6.xsd StrolchModel-1.6.xsd">
<IncludeFile file="plc-templates.xml"/>
<IncludeFile file="strolch-plc-example.xml"/>
<IncludeFile file="strolch-plc-example-connections.xml"/>
<!--
PLC to store connection state to server
-->
<Resource Id="mfs-soh-plc01" Name="PLC" Type="Plc">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="connectionState" Name="Connection State" Type="String" Interpretation="Enumeration" Uom="ConnectionState" Value="Disconnected"/>
<Parameter Id="connectionStateMsg" Name="Connection State Msg" Type="String" Interpretation="Enumeration" Uom="ConnectionState"
Value=""/>
</ParameterBag>
</Resource>
<!--
PLC State
-->
<Resource Id="plc" Name="PLC" Type="PlcLogicalDevice">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="group" Name="Group" Type="String" Value="99 Startup"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="999999"/>
</ParameterBag>
<ParameterBag Id="relations" Name="Relations" Type="Relations">
<Parameter Id="addresses" Name="Addresses" Type="StringList" Interpretation="Resource-Ref" Uom="PlcAddress"
Value="addrPlcStarted, addrPlcConnected"/>
<Parameter Id="telegrams" Name="Telegrams" Type="StringList" Interpretation="Resource-Ref" Uom="PlcTelegram"
Value="telPlcStarted, telPlcStopped"/>
</ParameterBag>
</Resource>
<Resource Id="addrPlcConnected" Name="PLC - Connected" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="VirtualString.plcServerConnected"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="ServerConnected"/>
<Parameter Id="valueType" Name="Value Type" Type="String" Interpretation="Interpretation" Uom="PlcValueType" Value="String"/>
<Parameter Id="value" Name="Value" Type="String" Value="false"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="5"/>
</ParameterBag>
</Resource>
<Resource Id="addrPlcStarted" Name="PLC - Started" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="raspiBcmGpioOutput.27"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="Started"/>
<Parameter Id="value" Name="Value" Type="Boolean" Value="false"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="10"/>
</ParameterBag>
</Resource>
<Resource Id="telPlcStarted" Name="PLC - Started" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="raspiBcmGpioOutput.27"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="Started"/>
<Parameter Id="value" Name="Value" Type="Boolean" Value="true"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="10"/>
</ParameterBag>
</Resource>
<Resource Id="telPlcStopped" Name="PLC - Stopped" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Value="raspiBcmGpioOutput.27"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Value="PLC"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Value="Stopped"/>
<Parameter Id="value" Name="Value" Type="Boolean" Value="false"/>
<Parameter Id="index" Name="Index" Type="Integer" Value="20"/>
</ParameterBag>
</Resource>
</StrolchModel>

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<StrolchModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://strolch.li/xsd/StrolchModel-1.6.xsd"
xsi:schemaLocation="https://strolch.li/xsd/StrolchModel-1.6.xsd StrolchModel-1.6.xsd">
<!--
Barcode reader connection, currently place holder with RandomString
-->
<Resource Id="dataLogicScanner" Name="DataLogic Scanner Connection" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.connections.DataLogicScannerConnection"/>
<Parameter Id="address" Name="Scanner IP Address" Type="String" Value="192.168.1.249:51236"/>
<Parameter Id="readTimeout" Name="Read Timeout (s)" Type="Integer" Value="60"/>
<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=""/>
</ParameterBag>
</Resource>
<!--
Raspberry GPIO BCM Address connection
-->
<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>
<!--
I2C input connections
-->
<Resource Id="i2cInput.dev01" Name="PCF8574 Input 0x38" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574InputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x38"/>
<Parameter Id="verbose" Name="Verbose" Type="Boolean" Value="true"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="true"/>
<Parameter Id="interruptPinPullResistance" Name="Raspi Interrupt PinPullResistance" Type="String" Value="PULL_DOWN"/>
<Parameter Id="interruptChangeState" Name="Raspi Interrupt Change State" Type="String" Value="HIGH"/>
<Parameter Id="interruptBcmPinAddress" Name="Raspi BCM Interrupt Pin" Type="Integer" Value="17"/>
</ParameterBag>
</Resource>
<!--
I2C output connections
-->
<Resource Id="i2cOutput.dev01" Name="PCF8574 Output 0x21" Type="PlcConnection">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="className" Name="Connection Class" Type="String" Value="li.strolch.plc.core.hw.i2c.PCF8574OutputConnection"/>
<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="i2cBus" Name="I2C Bus" Type="Integer" Value="1"/>
<Parameter Id="addresses" Name="Addresses" Type="IntegerList" Value="0x21"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Value="false"/>
</ParameterBag>
</Resource>
</StrolchModel>

View File

@ -1,11 +0,0 @@
Description,Type,SubType,Device,Pin,Resource,Action1,Action2,Connection,DeviceId
Material Flow,Group,,,,,,,,MaterialFlow
Conveyor 1,Input,DevPin0,1,1,Conveyor01,Occupied,,i2cInput.dev01,
Conveyor 2,Input,DevPin0,1,2,Conveyor02,Occupied,,i2cInput.dev01,
Conveyor 3,Input,DevPin0,1,3,Conveyor03,Occupied,,i2cInput.dev01,
Conveyor 4,Input,DevPin0,1,4,Conveyor04,Occupied,,i2cInput.dev01,
Conveyor 1,Output,DevPin0,1,1,Conveyor01,MotorOn,MotorOff,i2cOutput.dev01,
Conveyor 2,Output,DevPin0,1,2,Conveyor02,MotorOn,MotorOff,i2cOutput.dev01,
Conveyor 3,Output,DevPin0,1,3,Conveyor03,MotorOn,MotorOff,i2cOutput.dev01,
Conveyor 4,Output,DevPin0,1,4,Conveyor04,MotorOn,MotorOff,i2cOutput.dev01,
DataLogicScanner,DataLogicScanner,,,,Conveyor03,,,dataLogicScanner,
1 Description Type SubType Device Pin Resource Action1 Action2 Connection DeviceId
2 Material Flow Group MaterialFlow
3 Conveyor 1 Input DevPin0 1 1 Conveyor01 Occupied i2cInput.dev01
4 Conveyor 2 Input DevPin0 1 2 Conveyor02 Occupied i2cInput.dev01
5 Conveyor 3 Input DevPin0 1 3 Conveyor03 Occupied i2cInput.dev01
6 Conveyor 4 Input DevPin0 1 4 Conveyor04 Occupied i2cInput.dev01
7 Conveyor 1 Output DevPin0 1 1 Conveyor01 MotorOn MotorOff i2cOutput.dev01
8 Conveyor 2 Output DevPin0 1 2 Conveyor02 MotorOn MotorOff i2cOutput.dev01
9 Conveyor 3 Output DevPin0 1 3 Conveyor03 MotorOn MotorOff i2cOutput.dev01
10 Conveyor 4 Output DevPin0 1 4 Conveyor04 MotorOn MotorOff i2cOutput.dev01
11 DataLogicScanner DataLogicScanner Conveyor03 dataLogicScanner

View File

@ -1,224 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<StrolchModel>
<Resource Id="D_MaterialFlow" Name="MaterialFlow" Type="PlcLogicalDevice">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Material Flow"/>
<Parameter Id="group" Name="Group" Type="String" Index="20" Value="01 Material Flow"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="30" Value="10"/>
</ParameterBag>
<ParameterBag Id="relations" Name="Relations" Type="Relations">
<Parameter Id="addresses" Name="Addresses" Type="StringList" Interpretation="Resource-Ref" Uom="PlcAddress" Index="10" Value="A_Conveyor01-Occupied, A_Conveyor02-Occupied, A_Conveyor03-Occupied, A_Conveyor04-Occupied, A_Conveyor01-MotorOn, A_Conveyor02-MotorOn, A_Conveyor03-MotorOn, A_Conveyor04-MotorOn, A_Conveyor03-Barcode, A_Conveyor03-On"/>
<Parameter Id="telegrams" Name="Telegrams" Type="StringList" Interpretation="Resource-Ref" Uom="PlcTelegram" Index="20" Value="T_Conveyor01-MotorOn, T_Conveyor01-MotorOff, T_Conveyor02-MotorOn, T_Conveyor02-MotorOff, T_Conveyor03-MotorOn, T_Conveyor03-MotorOff, T_Conveyor04-MotorOn, T_Conveyor04-MotorOff, T_Conveyor03-On, T_Conveyor03-Off"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor01-Occupied" Name="Conveyor01 - 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="i2cInput.dev01.0.0"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor01"/>
<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="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor02-Occupied" Name="Conveyor02 - Occupied" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 2"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cInput.dev01.0.1"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor02"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="Occupied"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="20"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor03-Occupied" Name="Conveyor03 - Occupied" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 3"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cInput.dev01.0.2"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="Occupied"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="30"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor04-Occupied" Name="Conveyor04 - Occupied" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 4"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cInput.dev01.0.3"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor04"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="Occupied"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="40"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor01-MotorOn" Name="Conveyor01 - 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="i2cOutput.dev01.0.0"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor01"/>
<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>
<Resource Id="T_Conveyor01-MotorOff" Name="Conveyor01 - MotorOff" 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="i2cOutput.dev01.0.0"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor01"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOff"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="20"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor01-MotorOn" Name="Conveyor01 - MotorOn" 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="i2cOutput.dev01.0.0"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor01"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="50"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor02-MotorOn" Name="Conveyor02 - MotorOn" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 2"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.1"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor02"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="30"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor02-MotorOff" Name="Conveyor02 - MotorOff" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 2"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.1"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor02"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOff"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="40"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor02-MotorOn" Name="Conveyor02 - MotorOn" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 2"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.1"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor02"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="60"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor03-MotorOn" Name="Conveyor03 - MotorOn" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 3"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.2"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="50"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor03-MotorOff" Name="Conveyor03 - MotorOff" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 3"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.2"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOff"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="60"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor03-MotorOn" Name="Conveyor03 - MotorOn" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 3"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.2"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="70"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor04-MotorOn" Name="Conveyor04 - MotorOn" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 4"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.3"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor04"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="70"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor04-MotorOff" Name="Conveyor04 - MotorOff" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 4"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.3"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor04"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOff"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="80"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor04-MotorOn" Name="Conveyor04 - MotorOn" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="Conveyor 4"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="i2cOutput.dev01.0.3"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor04"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="MotorOn"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="80"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor03-Barcode" Name="Conveyor03 - Barcode" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="DataLogicScanner"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="dataLogicScanner.barcode"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="Barcode"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="90"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="String" Index="100" Value=""/>
</ParameterBag>
</Resource>
<Resource Id="A_Conveyor03-On" Name="Conveyor03 - On" Type="PlcAddress">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="DataLogicScanner"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="dataLogicScanner.trigger"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="On"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="100"/>
<Parameter Id="inverted" Name="Inverted" Type="Boolean" Index="40" Value="false"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor03-On" Name="Conveyor03 - On" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="DataLogicScanner"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="dataLogicScanner.trigger"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="On"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="90"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="true"/>
</ParameterBag>
</Resource>
<Resource Id="T_Conveyor03-Off" Name="Conveyor03 - Off" Type="PlcTelegram">
<ParameterBag Id="parameters" Name="Parameters" Type="Parameters">
<Parameter Id="description" Name="Description" Type="String" Index="5" Value="DataLogicScanner"/>
<Parameter Id="address" Name="HW Address" Type="String" Interpretation="PlcConnection" Index="10" Value="dataLogicScanner.trigger"/>
<Parameter Id="resource" Name="Resource ID for PlcAddress" Type="String" Index="20" Value="Conveyor03"/>
<Parameter Id="action" Name="Action ID for PlcAddress" Type="String" Index="30" Value="Off"/>
<Parameter Id="index" Name="Index" Type="Integer" Index="40" Value="100"/>
<Parameter Id="value" Name="Value" Type="Boolean" Index="100" Value="false"/>
</ParameterBag>
</Resource>
</StrolchModel>

View File

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

2
example/temp/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.dat
*.tmp