Initial commit

This commit is contained in:
Matthias Heisig
2024-10-22 14:22:54 +02:00
commit 51d6e7e5c4
120 changed files with 24764 additions and 0 deletions

290
.gitignore vendored Normal file
View File

@@ -0,0 +1,290 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
project.fragment.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
#*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Exclude _boot folder
_Boot/*
# Exclude ~u
*.~u
# Exclude UaExpert project files
*.uap
# Exclude trial licences
*.tclrs
# Exclude compile info
PLC/_CompileInfo/*
PLC_Mockup/_CompileInfo/*
# Exclude *.dbg files
*.dbg
# Exclude .tnzip files
*.tnzip
*.tszip
# Exclude backup files
*.bak
# Exclude compile info
*.compileinfo

85
Adeco.sln Normal file
View File

@@ -0,0 +1,85 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# TcXaeShell Solution File, Format Version 11.00
VisualStudioVersion = 15.0.28010.2050
MinimumVisualStudioVersion = 10.0.40219.1
Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "Adeco", "Adeco.tsproj", "{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}"
EndProject
Project("{FD9F1D59-E000-42F3-8744-88DE1BE93C06}") = "Wickler", "..\Wickler\Wickler.tcmproj", "{63F40E2C-5D73-4391-B81B-34A93BB9522A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|TwinCAT CE7 (ARMV7) = Debug|TwinCAT CE7 (ARMV7)
Debug|TwinCAT OS (ARMT2) = Debug|TwinCAT OS (ARMT2)
Debug|TwinCAT RT (x64) = Debug|TwinCAT RT (x64)
Debug|TwinCAT RT (x86) = Debug|TwinCAT RT (x86)
Release|TwinCAT CE7 (ARMV7) = Release|TwinCAT CE7 (ARMV7)
Release|TwinCAT OS (ARMT2) = Release|TwinCAT OS (ARMT2)
Release|TwinCAT RT (x64) = Release|TwinCAT RT (x64)
Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{26B800A2-7F81-4BC4-9522-92EDFFBE9A9E}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{63F40E2C-5D73-4391-B81B-34A93BB9522A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{92165872-738F-41B6-82B5-C95468B41EA0}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{92165872-738F-41B6-82B5-C95468B41EA0}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{764047E3-9655-42E0-AF97-1C297933DAC5}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C9243CDD-91F3-4989-8A8D-14EF132F502C}
EndGlobalSection
EndGlobal

11566
Adeco.tsproj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,410 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="873897795" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>4</Type>
<SubType>1050494</SubType>
<VendorId>2</VendorId>
</AliasDeviceType>
<SDSID>30</SDSID>
<SafetyAliasDevice>
<ObjectId>50921475</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>30</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>FSoE</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>2</SafeAddress>
<Watchdog>100</Watchdog>
<ComErrAck Type="Unset" />
<Params>
<Param Index="4120" SubIndex="1">02000000</Param>
<Param Index="4320" SubIndex="1">0000</Param>
<Param Index="4320" SubIndex="2">0000</Param>
<Param Index="32768" SubIndex="1">00</Param>
<Param Index="32768" SubIndex="2">01</Param>
<Param Index="32768" SubIndex="4">01</Param>
<Param Index="32768" SubIndex="5">01</Param>
<Param Index="32769" SubIndex="1">0A00</Param>
<Param Index="32769" SubIndex="2">0200</Param>
<Param Index="32784" SubIndex="1">00</Param>
<Param Index="32784" SubIndex="2">01</Param>
<Param Index="32784" SubIndex="4">01</Param>
<Param Index="32784" SubIndex="5">01</Param>
<Param Index="32785" SubIndex="1">0A00</Param>
<Param Index="32785" SubIndex="2">0200</Param>
<Param Index="32800" SubIndex="1">00</Param>
<Param Index="32800" SubIndex="2">01</Param>
<Param Index="32800" SubIndex="4">01</Param>
<Param Index="32800" SubIndex="5">01</Param>
<Param Index="32801" SubIndex="1">0A00</Param>
<Param Index="32801" SubIndex="2">0200</Param>
<Param Index="32816" SubIndex="1">00</Param>
<Param Index="32816" SubIndex="2">01</Param>
<Param Index="32816" SubIndex="4">01</Param>
<Param Index="32816" SubIndex="5">01</Param>
<Param Index="32817" SubIndex="1">0A00</Param>
<Param Index="32817" SubIndex="2">0200</Param>
<Param Index="32832" SubIndex="1">00</Param>
<Param Index="32832" SubIndex="2">01</Param>
<Param Index="32832" SubIndex="4">01</Param>
<Param Index="32832" SubIndex="5">01</Param>
<Param Index="32833" SubIndex="1">0A00</Param>
<Param Index="32833" SubIndex="2">0200</Param>
<Param Index="32848" SubIndex="1">00</Param>
<Param Index="32848" SubIndex="2">01</Param>
<Param Index="32848" SubIndex="4">01</Param>
<Param Index="32848" SubIndex="5">01</Param>
<Param Index="32849" SubIndex="1">0A00</Param>
<Param Index="32849" SubIndex="2">0200</Param>
<Param Index="32864" SubIndex="1">00</Param>
<Param Index="32864" SubIndex="2">01</Param>
<Param Index="32864" SubIndex="4">01</Param>
<Param Index="32864" SubIndex="5">01</Param>
<Param Index="32865" SubIndex="1">0A00</Param>
<Param Index="32865" SubIndex="2">0200</Param>
<Param Index="32880" SubIndex="1">00</Param>
<Param Index="32880" SubIndex="2">01</Param>
<Param Index="32880" SubIndex="4">01</Param>
<Param Index="32880" SubIndex="5">01</Param>
<Param Index="32881" SubIndex="1">0A00</Param>
<Param Index="32881" SubIndex="2">0200</Param>
<Param Index="61520" SubIndex="1">7E071000</Param>
<Messages>
<IO>
<Name>FSoE Command</Name>
<Index>28800</Index>
<SubIndex>1</SubIndex>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 1.ErrAck</Name>
<Index>28674</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 2.ErrAck</Name>
<Index>28690</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 3.ErrAck</Name>
<Index>28706</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 4.ErrAck</Name>
<Index>28722</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 5.ErrAck</Name>
<Index>28738</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 6.ErrAck</Name>
<Index>28754</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 7.ErrAck</Name>
<Index>28770</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 8.ErrAck</Name>
<Index>28786</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>FSoE CRC 000</Name>
<Index>28800</Index>
<SubIndex>3</SubIndex>
<DataType>UINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>16</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>FSoE Connection ID</Name>
<Index>28800</Index>
<SubIndex>2</SubIndex>
<DataType>UINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>16</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>FSoE Command</Name>
<Index>24704</Index>
<SubIndex>1</SubIndex>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 1.Input</Name>
<Index>24577</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 1.Module Fault</Name>
<Index>24578</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 2.Input</Name>
<Index>24593</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 2.Module Fault</Name>
<Index>24594</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 3.Input</Name>
<Index>24609</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 3.Module Fault</Name>
<Index>24610</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 4.Input</Name>
<Index>24625</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 4.Module Fault</Name>
<Index>24626</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 5.Input</Name>
<Index>24641</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 5.Module Fault</Name>
<Index>24642</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>17</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 6.Input</Name>
<Index>24657</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>18</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 6.Module Fault</Name>
<Index>24658</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>19</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 7.Input</Name>
<Index>24673</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>20</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 7.Module Fault</Name>
<Index>24674</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>21</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 8.Input</Name>
<Index>24689</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>22</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>FSIN Module 8.Module Fault</Name>
<Index>24690</Index>
<SubIndex>1</SubIndex>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>23</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>FSoE CRC 000</Name>
<Index>24704</Index>
<SubIndex>3</SubIndex>
<DataType>UINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>16</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>FSoE Connection ID</Name>
<Index>24704</Index>
<SubIndex>2</SubIndex>
<DataType>UINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>16</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</Params>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1340888881" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>1</Type>
<SubType>2</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>31</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>Out</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="861785969" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>1</Type>
<SubType>1</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>28</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>In</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1634672156" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>1</Type>
<SubType>1</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>23</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>In</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1605770827" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>1</Type>
<SubType>2</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>44</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>Out</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="3226334892" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>1</Type>
<SubType>2</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>41</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>Out</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="533926698" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>36</SDSID>
<SafetyAliasDevice>
<ObjectId>52166678</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>36</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>4</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000400fa6ddc</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1144710613" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>38</SDSID>
<SafetyAliasDevice>
<ObjectId>52166669</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>38</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>9</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000900fa7813</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1318277205" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>39</SDSID>
<SafetyAliasDevice>
<ObjectId>52166668</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>39</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>10</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000a00fa16c0</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="837267364" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>42</SDSID>
<SafetyAliasDevice>
<ObjectId>52166667</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>42</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>11</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000b00faf6e8</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="4015856375" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>34</SDSID>
<SafetyAliasDevice>
<ObjectId>52166681</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>34</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>5</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000500fa8df4</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="2563098241" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>35</SDSID>
<SafetyAliasDevice>
<ObjectId>52166684</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>35</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>6</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000600fae327</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1667703345" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>32</SDSID>
<SafetyAliasDevice>
<ObjectId>52166687</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>32</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>7</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000700fa030f</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,389 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1196583942" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>32</Type>
<SubType>0</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>37</SDSID>
<SafetyAliasDevice>
<ObjectId>52166690</ObjectId>
<LinkingMode>Automatic</LinkingMode>
<ConnectionId>37</ConnectionId>
<ConnectionMode>master</ConnectionMode>
<ConnectionType>PROFIsafe</ConnectionType>
<MapDiag>false</MapDiag>
<MapInputs>false</MapInputs>
<MapOutputs>false</MapOutputs>
<MapState>false</MapState>
<ModuleFaultIsComErr>false</ModuleFaultIsComErr>
<SafeAddress>8</SafeAddress>
<Watchdog>250</Watchdog>
<ComErrAck Type="Unset" />
<ProfiSafe>
<FParameter>0000000004400001000800fa983b</FParameter>
<Messages InputMessageSize="6" OutputMessageSize="6">
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>In</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>In</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[0]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>0</BitOffsMessage>
<BitOffsData>0</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[1]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>1</BitOffsMessage>
<BitOffsData>1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[2]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>2</BitOffsMessage>
<BitOffsData>2</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[3]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>3</BitOffsMessage>
<BitOffsData>3</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[4]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>4</BitOffsMessage>
<BitOffsData>4</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[5]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>5</BitOffsMessage>
<BitOffsData>5</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[6]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>6</BitOffsMessage>
<BitOffsData>6</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[7]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>7</BitOffsMessage>
<BitOffsData>7</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[8]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>8</BitOffsMessage>
<BitOffsData>8</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[9]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>9</BitOffsMessage>
<BitOffsData>9</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[10]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>10</BitOffsMessage>
<BitOffsData>10</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[11]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>11</BitOffsMessage>
<BitOffsData>11</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[12]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>12</BitOffsMessage>
<BitOffsData>12</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[13]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>13</BitOffsMessage>
<BitOffsData>13</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[14]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>14</BitOffsMessage>
<BitOffsData>14</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe_2B[15]</Name>
<DataType>BIT</DataType>
<Direction>Out</Direction>
<SafetyType>SafetySil3</SafetyType>
<BitSize>1</BitSize>
<BitOffsMessage>15</BitOffsMessage>
<BitOffsData>15</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 0</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>16</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 1</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>24</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 2</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>32</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
<IO>
<Name>PROFIsafe Header Byte 3</Name>
<DataType>USINT</DataType>
<Direction>Out</Direction>
<SafetyType>ProtocolData</SafetyType>
<BitSize>8</BitSize>
<BitOffsMessage>40</BitOffsMessage>
<BitOffsData>-1</BitOffsData>
</IO>
</Messages>
</ProfiSafe>
</SafetyAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="429731596" FileFormatVersion="1.6">
<AliasDeviceType>
<Type>1</Type>
<SubType>1</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>33</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>In</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,674 @@
<?xml version="1.0" encoding="utf-8"?>
<safetyApplication Crc="1175454382" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.4.0.0" Id="dbeb74cb-3d2b-4d0b-ae23-f1a9c16695af" name="" mapState="false" mapDiag="false" groupOrderId="0" passificationAllowed="false" temporaryDeactivationAllowed="false" permamentDeactivationAllowed="false" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
<networks>
<safetyApplicationHasNetworks Id="19bfb8a9-179f-45cd-ac91-c4a81f6b8cff">
<Network Id="d1fc00f5-32e5-4467-9dfd-ca885de8b6d6" name="Network1" networkName="Network1" intId="1" networkOrderId="0">
<functionBlocks>
<networkHasFunctionBlocks Id="137f50a7-b5ea-4efb-99aa-d51d1c06de31">
<fBEstop Id="67c3c268-7b89-447b-b572-a20e287f2f72" name="FBEstop1" instanceName="FBEstop" orderOfExecution="1" mapState="false" mapDiag="false" functionName="safeEstop" safeInputsAfterDiscError="true">
<inPorts>
<functioBlockHasInPorts Id="6448f5b0-4308-4258-aff2-90b51598378e">
<inPort Id="8c32701b-b971-4f34-b6a0-3d90417d1c73" name="Restart" portName="Restart" portNum="2" objectIndex="0" varId="1" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="69ce4892-e83a-4f99-9ba4-e594c87eb728">
<inPort Id="ef300a8b-e9ec-48a8-928a-5256636fdf09" name="EStopIn1" portName="EStopIn1" portNum="4" objectIndex="8" varId="3" filter="2" portDataType="1" channelInterface="Two-Channel" discrepancyTime="100" deactivate1="Break Contact (NC)" deactivate2="Break Contact (NC)" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="60a89f3c-ab74-4197-9ec6-6bcb3b63de8a">
<inPort Id="c74d1aea-6bdb-4dd3-b13e-6be4b8d25a72" name="EStopIn2" portName="EStopIn2" portNum="5" objectIndex="9" varId="4" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="6d71abd0-f0eb-49c0-8ff5-f52cc2925b84">
<inPort Id="7564c087-15bd-42ea-8438-ef3fc782ba7a" name="EStopIn3" portName="EStopIn3" portNum="6" objectIndex="10" varId="5" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="b48e3c44-6070-480f-b97c-65691d6d246f">
<inPort Id="d9ddd2e4-7848-4a3c-b2f0-6ec202f1a323" name="EStopIn4" portName="EStopIn4" portNum="7" objectIndex="11" varId="6" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="5695ea1f-0392-469b-ac18-b5b3d2f17eb4">
<inPort Id="ee24cc3a-3b71-4d44-8318-51a7606ef0d5" name="EStopIn5" portName="EStopIn5" portNum="8" objectIndex="12" varId="7" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="eb6ed552-9ae5-4de0-8538-6015f97c4df8">
<inPort Id="0efab5fb-532d-4d9b-81b4-f446f73e9174" name="EStopIn6" portName="EStopIn6" portNum="9" objectIndex="13" varId="8" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="8fe98436-bfbd-4d65-aef8-c568e23670a0">
<inPort Id="a5142eeb-e114-47b7-a8bb-6ac99435991e" name="EStopIn7" portName="EStopIn7" portNum="10" objectIndex="14" varId="9" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="4013df0f-12b6-4557-b16f-5b5e116a54e5">
<inPort Id="f5e9dcf1-f63b-46e7-9d97-1dc222c61136" name="EStopIn8" portName="EStopIn8" portNum="11" objectIndex="15" varId="10" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="302f83ad-5d31-45c3-a754-dafc148c52ee">
<inPort Id="ac8440d0-7a81-4ef3-8c2b-5b74fd625017" name="EDM1" portName="EDM1" portNum="13" objectIndex="1" varId="12" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="b0d9ccfc-39b8-4337-a0f3-5c4340a939d5">
<inPort Id="c7a1db24-a91c-4e53-a871-c219b715a367" name="EDM2" portName="EDM2" portNum="14" objectIndex="2" varId="13" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="b6dfb962-051a-43b9-8314-97e2248301a7">
<outPort Id="02a71f6f-802c-498b-b6df-fcd204893d2f" name="Error" portName="Error" portNum="4" objectIndex="0" varId="16" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="b0a35b82-b055-46c3-b1a0-b53b717df0c6">
<outPort Id="87964014-1b39-48e5-98d1-69fbd68435cf" name="EStopOut" portName="EStopOut" portNum="11" objectIndex="1" varId="23" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="ba6831c6-025d-4b88-a6b7-d04d6c29bcd2">
<outPort Id="a5cbb5ed-15c7-4c33-9f2e-6297fa37fe95" name="EStopDelOut" portName="EStopDelOut" portNum="12" objectIndex="2" varId="26" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
<parameterPorts>
<functionBlockHasParamPorts Id="870c5c74-bfb7-4ee4-829f-42ae05fa8d20">
<parameterPort Id="641c12b0-41fa-482d-aa30-308c8c6d9190" name="Delay Time (ms)" portName="Delay Time (ms)" portNum="8" objectIndex="0" varId="0" filter="0" portDataType="0" timing="250" userFbPortName="Delay Time (ms)" useInUserFb="false" />
</functionBlockHasParamPorts>
</parameterPorts>
</fBEstop>
</networkHasFunctionBlocks>
<networkHasFunctionBlocks Id="7fa03e17-feba-41df-81fe-77dcbdaef0ce">
<fBDecouple Id="10fa1372-c1b8-4169-b0d1-868a85e29f54" name="FBDecouple1" instanceName="FBDecouple1" orderOfExecution="2" mapState="false" mapDiag="false" functionName="safeDecouple">
<inPorts>
<functioBlockHasInPorts Id="8656a332-1ce5-485c-9e7d-06a5ce769ba9">
<inPort Id="b06eb363-7119-498d-aa22-9e81f0e429ec" name="DecIn1" portName="DecIn1" portNum="3" objectIndex="8" varId="5" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="3f97bfe6-8ed8-444a-b3ae-1de19500d0a5">
<inPort Id="96f164d1-7ca8-4d78-98fc-2b5ac67d4d5a" name="DecIn2" portName="DecIn2" portNum="4" objectIndex="9" varId="6" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="4464ca44-94d4-4f6a-bf73-af9480d68423">
<inPort Id="2ba9c9bd-2724-467b-abd1-5cbaa6fb56dd" name="DecIn3" portName="DecIn3" portNum="5" objectIndex="10" varId="7" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="0da41691-65b3-4d48-937b-40cddafe3f43">
<inPort Id="dd835df7-72b8-4cb7-a162-9beba646e005" name="DecIn4" portName="DecIn4" portNum="6" objectIndex="11" varId="8" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="6572ab94-04bc-4e57-9d37-997cf360130e">
<inPort Id="185ec47b-de35-4335-ab23-7fb7f6c54697" name="DecIn5" portName="DecIn5" portNum="7" objectIndex="12" varId="9" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="9ef23405-2a05-4fb3-9eea-581215df33cd">
<inPort Id="3d335481-845e-493d-8968-24a665ff80e9" name="DecIn6" portName="DecIn6" portNum="8" objectIndex="13" varId="10" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="2a77eb3a-a05d-4b63-b55b-afff0d422138">
<inPort Id="245ea9b7-ca31-431f-be80-7f4506950039" name="DecIn7" portName="DecIn7" portNum="9" objectIndex="14" varId="11" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="645f8aa7-c3ec-4ccb-b35a-cd7a24e73c44">
<inPort Id="8205cd4e-0f0c-4c3e-a289-ec54bd62ae15" name="DecIn8" portName="DecIn8" portNum="10" objectIndex="15" varId="12" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="8be134a1-8397-4894-b7b4-5d0d749719d0">
<outPort Id="9b5ec80d-ecb4-471c-a222-9bf564e662ce" name="DecOut1" portName="DecOut1" portNum="3" objectIndex="8" varId="17" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="54f7e7f7-5654-41b0-bc0b-b4da34b334fc">
<outPort Id="5556cdc9-80ef-4ad3-9248-79983e801c2a" name="DecOut2" portName="DecOut2" portNum="4" objectIndex="9" varId="18" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="d9e65995-c9cd-427b-86bf-cc47caedbb8c">
<outPort Id="a00af5f8-b214-4277-9b31-510def443ef6" name="DecOut3" portName="DecOut3" portNum="5" objectIndex="10" varId="19" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="db4484a9-17f6-4efe-9f74-f3bf9966f839">
<outPort Id="f8d24234-8e8b-401c-9f5f-dcc06ac84edc" name="DecOut4" portName="DecOut4" portNum="6" objectIndex="11" varId="20" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="e3f38277-87ae-4964-9fa4-3718c045c66e">
<outPort Id="89a6070b-7939-4ce5-afa7-956c49a7ac57" name="DecOut5" portName="DecOut5" portNum="7" objectIndex="12" varId="21" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="f4106890-ca23-43e2-be9a-5bae9bc0bdca">
<outPort Id="e95afbde-84a8-4d2c-840a-d69fdb8cbd95" name="DecOut6" portName="DecOut6" portNum="8" objectIndex="13" varId="22" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="47232bb7-4f0e-4f16-ae81-db8fa805be48">
<outPort Id="0b8f75e7-3a93-405a-9eba-0d24a4c65347" name="DecOut7" portName="DecOut7" portNum="9" objectIndex="14" varId="23" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="1b82c055-0267-4558-af3f-3817b477d500">
<outPort Id="1f260bf9-70ff-4ea6-a285-7ae75ec54bc0" name="DecOut8" portName="DecOut8" portNum="10" objectIndex="15" varId="24" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
</fBDecouple>
</networkHasFunctionBlocks>
</functionBlocks>
</Network>
</safetyApplicationHasNetworks>
<safetyApplicationHasNetworks Id="b826f77c-c221-45eb-8276-8bdb06803e50">
<Network Id="fbe7b793-cea4-4d74-a879-ab60783fb6bc" name="Network2" networkName="Network2" intId="2" networkOrderId="1">
<functionBlocks>
<networkHasFunctionBlocks Id="e4f53f8a-631a-4589-b2a5-cf00b741da7c">
<fBMon Id="cbc838aa-1e79-4ba4-9945-8a86b1a7b64a" name="FBMon1" instanceName="FBMon1" orderOfExecution="3" mapState="false" mapDiag="false" functionName="safeMon" safeInputsAfterDiscError="false" manualFunctionTest="false">
<inPorts>
<functioBlockHasInPorts Id="852a62eb-5ea3-4e69-bc90-0fe24ce52bc9">
<inPort Id="8db139e8-8e04-46ce-aa54-62aed762cda2" name="Restart" portName="Restart" portNum="2" objectIndex="0" varId="1" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="3bd359e7-968b-4fee-bad5-f2dc393e72f9">
<inPort Id="e30f5617-437f-428b-a7eb-6e7a2c3c6287" name="MonIn1" portName="MonIn1" portNum="4" objectIndex="8" varId="4" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="768898f2-5019-4fc9-bddc-ff92450e3ed1">
<inPort Id="04d12761-6341-4ab0-a60a-d05b4cf54b94" name="MonIn2" portName="MonIn2" portNum="5" objectIndex="9" varId="5" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="c8252af3-44fd-4566-8726-7664ea9eb3b4">
<inPort Id="59ded9b7-a3da-410e-a99e-f227960101c0" name="MonIn3" portName="MonIn3" portNum="6" objectIndex="10" varId="6" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="cd2fb1ca-5380-42a9-bb0d-0a512c8c30cf">
<inPort Id="483f1893-477c-4678-ab35-68a519e8b5c5" name="MonIn4" portName="MonIn4" portNum="7" objectIndex="11" varId="7" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="640c3f98-20a5-48f9-8078-275a537ef698">
<inPort Id="e9f0be6b-8830-42de-ae75-8c8c4a8ae5c8" name="Secure1" portName="Secure1" portNum="9" objectIndex="12" varId="9" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="af83ee99-a113-4de9-b241-ca319acce424">
<inPort Id="20a4b6f9-8304-48bb-a23d-617c9e4a3412" name="Secure2" portName="Secure2" portNum="10" objectIndex="13" varId="10" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="881c0ffb-f4e7-46e5-ab8f-915c4fe4e667">
<inPort Id="fb051d15-0e8c-4379-bf2d-b352c690e851" name="EDM1" portName="EDM1" portNum="13" objectIndex="1" varId="13" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="82dc0f57-fa31-40c8-b29d-39e8a224e66d">
<inPort Id="f7fc4ea1-503e-4755-be79-cb48594b5ef7" name="EDM2" portName="EDM2" portNum="14" objectIndex="2" varId="14" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="b0f99e2e-9845-459d-9942-580a205790be">
<outPort Id="de845dd2-af7d-4d93-8f84-711cc7c49ebb" name="Error" portName="Error" portNum="4" objectIndex="0" varId="16" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="e506e797-7a2f-4fb6-a39a-cec0f0fdf51f">
<outPort Id="d4a8e958-9118-4d1a-af5d-678d91619cd4" name="MonOut" portName="MonOut" portNum="11" objectIndex="1" varId="23" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="f42d66e6-57f1-4111-9f21-317650e79d36">
<outPort Id="529f5e07-7489-43da-86bb-c08d698ba7a2" name="MonDelOut" portName="MonDelOut" portNum="12" objectIndex="2" varId="25" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
<parameterPorts>
<functionBlockHasParamPorts Id="95edca72-57b1-44f6-b1bf-d9537888d08b">
<parameterPort Id="f0aa4f10-25e2-4d27-9ec1-463bb126b347" name="Delay Time (ms)" portName="Delay Time (ms)" portNum="8" objectIndex="0" varId="0" filter="0" portDataType="0" timing="100" userFbPortName="Delay Time (ms)" useInUserFb="false" />
</functionBlockHasParamPorts>
</parameterPorts>
</fBMon>
</networkHasFunctionBlocks>
<networkHasFunctionBlocks Id="df72c35d-47f6-4740-b036-63a89c563d16">
<fBSr Id="c62eeddd-86bb-4da5-967a-f2354dcf7ca5" name="FBSr1" instanceName="FBSr1" orderOfExecution="4" mapState="false" mapDiag="false" functionName="safeSr">
<inPorts>
<functioBlockHasInPorts Id="ed55b1f9-7b1a-42df-a4ad-490c2dbeaab6">
<inPort Id="c4674eb4-9eb7-47a1-ba18-00a768f3c081" name="Set" portName="Set" portNum="2" objectIndex="8" varId="1" filter="2" portDataType="1" channelInterface="Activated" deactivate1="Break Contact (NC)" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="bd3d8c95-bf41-4d27-a0f0-a126c532477b">
<inPort Id="ba818ae5-4653-414d-92ff-41d2b6a846f5" name="Reset" portName="Reset" portNum="3" objectIndex="9" varId="2" filter="2" portDataType="1" channelInterface="Activated" deactivate1="Break Contact (NC)" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="7e3f2ea0-7f52-41ce-9462-6360b708906f">
<outPort Id="2f155809-37be-4dde-a909-75d163647175" name="SrOut" portName="SrOut" portNum="4" objectIndex="1" varId="4" filter="6" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
</fBSr>
</networkHasFunctionBlocks>
</functionBlocks>
</Network>
</safetyApplicationHasNetworks>
</networks>
<twinSAFEGroupAliasPorts>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="43f00259-5bb7-4cca-b76a-293c56da5ced">
<twinSAFEGroupAliasPort Id="29bf96fc-54f6-4f83-bbca-38248c1b54bc" name="RunStop" sdsId="0" channelId="0" portName="RunStop" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="f4d9aa30-efe3-4ddd-a091-e07dc576a9f8">
<twinSAFEGroupAliasPort Id="aac2ecc8-be2f-473c-8e8e-c999e0884123" name="ErrAck" sdsId="0" channelId="0" portName="ErrAck" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="239c9675-0bff-48f4-8040-7b679f50182e">
<twinSAFEGroupAliasPort Id="dd51ae13-278a-44cd-85b1-159a1a66263f" name="ModuleFault" sdsId="0" channelId="0" portName="ModuleFault" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="07493458-cabb-454a-b9c1-abd1c492a982">
<twinSAFEGroupAliasPort Id="e9d8f11a-6f08-4514-9779-1487f4c7bdd4" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="8c5d89c4-ba9f-4ac2-aef9-94b142fd3e79">
<twinSAFEGroupAliasPort Id="2f5280e8-e47d-4bec-9238-50ff7ab4be15" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="c35a09a2-359b-4dfc-9648-f97c3bbb07c3">
<twinSAFEGroupAliasPort Id="58ba7bee-61b8-4589-8fdb-05bc9eb9f2f8" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="4d0b1239-6109-4148-a326-f662e585b0ed">
<twinSAFEGroupAliasPort Id="c9eb854d-7295-4d35-bc1d-7590319a2081" name="OtherErr" sdsId="0" channelId="0" portName="OtherErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="bb57283d-8c89-44d0-9a47-e44ac0c5ed8a">
<twinSAFEGroupAliasPort Id="e03b05c7-aac5-4249-ac08-5d11fefe4a35" name="ComStartup" sdsId="0" channelId="0" portName="ComStartup" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="5cb8b5a3-3ee3-474b-b4dd-458b3f5a3768">
<twinSAFEGroupAliasPort Id="334dc634-0369-465d-bb8c-6c05fb9f5de5" name="FbDeactive" sdsId="0" channelId="0" portName="FbDeactive" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="c2062f6b-2585-46dd-9e37-e54d266dad14">
<twinSAFEGroupAliasPort Id="d719be22-bb18-40d8-be3e-f17b258d1bc5" name="FbRun" sdsId="0" channelId="0" portName="FbRun" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="bab1f439-3482-4e0a-8f0f-ded83fff561a">
<twinSAFEGroupAliasPort Id="1fcb4e67-4799-4a8b-a3ea-c044126f48fb" name="InRun" sdsId="0" channelId="0" portName="InRun" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
</twinSAFEGroupAliasPorts>
<variables>
<safetyApplicationHasVariables Id="6c1fa857-414e-468b-83cc-f97f5b7fe1dc">
<variable Id="d21fcc75-e284-4d5a-9354-53b3974b04e2" name="GroupPort_ErrAck" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="d66bf6d2-6463-442f-b3fc-65bc79b58536">
<variableUsages Id="a22b50fd-c519-49ec-beae-2aa2ef212884">
<usages>
<variableUsagesHasUsages Id="da9007fe-d0af-41b9-9c83-b5e96c0621db">
<aliasDeviceIoUsage Id="d7bd34c9-0aab-4c03-b2de-68f48df215fd" sdsId="23" channelId="1" functionId="1131179973" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="ff8ac945-81aa-4a90-ae90-90677763fce8">
<variableUsages Id="cd3d94f1-5dc1-4eb4-a41f-963c42d9c6c3">
<usages>
<variableUsagesHasUsages Id="db021aea-cbee-4c23-ae1d-b7b1a9917da4">
<groupPortUsage Id="5cff209b-29b6-43b2-a8d9-afa0014941f4">
<twinSAFEGroupAliasPort>
<groupPortUsageReferencesTwinSAFEGroupAliasPort Id="4fb301cc-09a9-45bf-b2ea-335771685918">
<twinSAFEGroupAliasPortMoniker name="//ErrAck" />
</groupPortUsageReferencesTwinSAFEGroupAliasPort>
</twinSAFEGroupAliasPort>
</groupPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="c83c78ea-8111-4249-9c14-fc64c71c741b">
<variable Id="5c0b7a4e-9c77-4a87-b3b6-36d9ccbe394a" name="GroupPort_EStopReset" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="d36ed626-c547-42cd-96d7-0cd1f163a8b2">
<variableUsages Id="2ce0a7ee-66b9-466f-9a98-c2f4d5431658">
<usages>
<variableUsagesHasUsages Id="2a67cd27-f8a4-4d4e-9957-a7bb62c5ed30">
<aliasDeviceIoUsage Id="ebc6e1aa-f12b-4cc3-8d12-65637b225e95" sdsId="28" channelId="1" functionId="1131179973" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="9ee00c2f-1521-49f9-abd1-afa2a1a2509a">
<variableUsages Id="aa0116bb-9c4b-4041-ab93-63034631766f">
<usages>
<variableUsagesHasUsages Id="9d0049ff-c183-4c2c-abba-e2854e7829ec">
<fbPortUsage Id="89c0415a-5410-46b6-bb40-c5f2965defe0">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="2a05cc0f-8c2b-42b6-9e68-239f0bf29bce">
<inPortMoniker name="//Network1/FBEstop1/Restart" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="a3854024-cf62-4f24-bb31-314099a88f6e">
<variable Id="a9307b7c-bcf1-4ace-91a9-35dac4194b80" name="GroupPort_EStopDirect" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="72af6b18-42d1-4ef3-b671-b63ea47d203c">
<variableUsages Id="364008f2-e2d2-4f82-b409-645e00c3b9cd">
<usages>
<variableUsagesHasUsages Id="84dcaac0-3189-451b-9dbb-73f709b65ead">
<fbPortUsage Id="c1711421-53f8-40b5-b62f-1b150a934de6">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="437ea40d-010b-49a3-a18f-f639d491bc69">
<outPortMoniker name="//Network1/FBEstop1/EStopOut" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="454d0d99-9ccc-4edd-b7c7-c7bae7c9ccb0">
<variableUsages Id="2781ebb0-c987-41fd-a4fd-b152ebdad0a8">
<usages>
<variableUsagesHasUsages Id="b1a59bb3-8555-401a-a1c5-7f5142490025">
<aliasDeviceIoUsage Id="39005473-eecf-4386-87a0-015310b5f071" sdsId="31" channelId="1" functionId="1131179972" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="f64835d4-b5b8-4336-983c-383f70ac7975">
<aliasDeviceIoUsage Id="bad3165a-29c2-4d8e-a8aa-777299dedaab" sdsId="38" channelId="2" functionId="378013521" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="b895cc83-0dc0-49fc-b996-e9126b845ef3">
<aliasDeviceIoUsage Id="f774a965-e1b0-48dc-bef8-6a1e3a1d10cb" sdsId="39" channelId="2" functionId="378013521" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="41a92049-5cc2-4a7b-9fda-44e3c2562a60">
<variable Id="88ceee40-27e2-435f-a5b0-a3045563e9da" name="GroupPort_EStopDelayed" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="433e6d0f-1fb4-4100-916b-ebbcef2b2d7d">
<variableUsages Id="7101c514-1c7f-4468-8a4e-da5e60bd3726">
<usages>
<variableUsagesHasUsages Id="b34435bc-355d-4aa3-9207-04a6e4cadb45">
<fbPortUsage Id="bc1fe3f6-1e17-43e1-8838-2dbee699c592">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="2bf544a0-c0f6-4622-b3b8-5b11fe413548">
<outPortMoniker name="//Network1/FBEstop1/EStopDelOut" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="a4130b14-4669-48fc-8228-44f30109e6a9">
<variableUsages Id="b3b283a1-8314-406e-9ef0-c87de0261914">
<usages>
<variableUsagesHasUsages Id="b5d38033-0a3c-4c37-a36e-1073d7951c09">
<aliasDeviceIoUsage Id="b88f19d2-2385-482e-a1e8-72e7f52b1ebd" sdsId="36" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="7ffaa14b-8070-4eb3-8d56-d63554962ed7">
<aliasDeviceIoUsage Id="7f3ce95e-59c1-49e9-97e6-2b75d0667c44" sdsId="42" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="aaadb7bf-a674-46ec-9948-56517854274c">
<aliasDeviceIoUsage Id="56683aef-674e-4768-897b-e1970540a033" sdsId="38" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="a74bdd40-e2dc-4525-8eee-9a32ef4262d7">
<aliasDeviceIoUsage Id="0fed920f-e864-4248-a190-801d6a74050b" sdsId="39" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="730f19e5-be26-4764-b00f-e8b08bb43edb">
<aliasDeviceIoUsage Id="6f62bc57-0375-4aff-99c1-61b99200236e" sdsId="34" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="8afa3354-ab17-4ee6-87e4-59c8162e75a3">
<aliasDeviceIoUsage Id="4d91d4cb-f34d-48d5-b537-f83879fd9ca8" sdsId="35" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="7df685d1-9c75-47bb-9664-0695a03b4b12">
<aliasDeviceIoUsage Id="d4180e97-2033-4936-bf16-82cad27eaf99" sdsId="32" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="0a93ce17-0f3f-4c00-b666-d0bdfc63133d">
<aliasDeviceIoUsage Id="3d985c70-5361-4f76-ad64-7d55d7bb7816" sdsId="37" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="e71ffe8f-c081-456d-b0e1-550d29e589ab">
<variable Id="7e523eb9-d935-4eb3-bbcf-0cf2b95fd200" name="GroupPort_EStopTasterA" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="f67097ad-e999-4995-9cde-c935cbad131a">
<variableUsages Id="61f4473b-1124-4bfd-a917-e4c3f277e902">
<usages>
<variableUsagesHasUsages Id="b9241bcc-8eae-46bc-bfe5-52526b2c44d7">
<aliasDeviceIoUsage Id="915ea58e-cbbe-44a8-81cb-23f0ca36f200" sdsId="30" channelId="1" functionId="1610678529" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="cae55f82-8023-4c03-b411-50b99644d3f4">
<variableUsages Id="dec59ec4-33df-451b-8756-cf7777e4ca05">
<usages>
<variableUsagesHasUsages Id="e5c4795c-69b4-450b-96af-fbb265824e88">
<fbPortUsage Id="4231e818-b5cf-4583-99fc-a49be7b9925f">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="663cc287-65a4-4a07-939f-9f6d4998381b">
<inPortMoniker name="//Network1/FBEstop1/EStopIn1" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="c76a3768-3d4b-4ce3-b14a-0764db515085">
<variable Id="1d068b33-4f2a-46c4-b579-f08fd4a0dabe" name="GroupPort_EStopTasterB" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="40b93286-0e6e-4e62-bdc6-b6b469a522f9">
<variableUsages Id="bd35cc8b-cb9c-4de5-aa0c-cd5039bca696">
<usages>
<variableUsagesHasUsages Id="f660ae46-e4fe-44d2-9dfe-893afe651b36">
<aliasDeviceIoUsage Id="d24a85ae-c594-42fa-a73e-f4fa719b8def" sdsId="30" channelId="3" functionId="1611727105" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="9109b1f9-614c-4543-936c-d8c2c6bd9f1c">
<variableUsages Id="84535528-93d8-4c06-809a-b3fcd4978c07">
<usages>
<variableUsagesHasUsages Id="a94e1a7c-8341-44f3-b2f9-7976e12a9132">
<fbPortUsage Id="1d89f0ee-af1b-40d4-b183-4293957f1928">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="c7ef9a09-b111-4e97-b58c-d4b3795c207e">
<inPortMoniker name="//Network1/FBEstop1/EStopIn2" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="9675816a-0a57-420c-83c6-911db60a2fb2">
<variable Id="b7d899bf-0b53-4980-821b-647698904225" name="GroupPort_Run" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="471e9da1-9052-4e4d-a6d8-3229a5cee95a">
<variableUsages Id="8e095dfb-1b22-4c32-b594-2fd5d0ce54e1">
<usages>
<variableUsagesHasUsages Id="9b537d63-b2e1-42fa-8095-dbd1806ca44c">
<aliasDeviceIoUsage Id="1f0e7e98-dd16-4fbf-897f-0eda7d6ed307" sdsId="33" channelId="1" functionId="1131179973" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="225b7e07-f69e-4b8b-b489-5e250cded3e0">
<variableUsages Id="db854f5c-987b-4980-98eb-434706785a3d">
<usages>
<variableUsagesHasUsages Id="e08bf2bd-68b1-4ef7-8e7f-1732cf68a969">
<groupPortUsage Id="df10db2d-0902-455a-a554-649ff3d31546">
<twinSAFEGroupAliasPort>
<groupPortUsageReferencesTwinSAFEGroupAliasPort Id="d65ebcb2-a8f1-45ce-a819-f6919c78f558">
<twinSAFEGroupAliasPortMoniker name="//RunStop" />
</groupPortUsageReferencesTwinSAFEGroupAliasPort>
</twinSAFEGroupAliasPort>
</groupPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="47c9bcdf-376e-4c8e-8855-786b81e1361b">
<variable Id="f2a7fd9c-d130-468a-9f9d-5e1d8635a94d" name="LaserReducedSpeed" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="4748eafd-eb2a-4dd4-b0ff-eed89b0e6b5d">
<variableUsages Id="95a65b9e-6ae4-482f-8538-6f5681b40be8">
<usages>
<variableUsagesHasUsages Id="74f48bf1-71cf-46e3-9d91-1a7a2f182545">
<aliasDeviceIoUsage Id="0ebaa0f4-14bf-4719-8c36-418767ea9da1" sdsId="43" channelId="17" functionId="1610682113" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="a48d32ef-83de-4eb3-aa55-1f739b9455c7">
<variableUsages Id="a705a678-65aa-4eda-b7ef-394eed0c84da">
<usages>
<variableUsagesHasUsages Id="c2bcc990-97ca-48f0-afb5-2b4acf495a6b">
<fbPortUsage Id="4046bbf2-f07e-4cdd-8829-5fc7e10f13c8">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="6b6f74a8-ac9f-4abb-ac58-ff209772d39d">
<inPortMoniker name="//Network1/FBDecouple1/DecIn1" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="32615b89-0e8b-4c7a-8bff-1f56b7321535">
<variable Id="1af20460-a591-497e-8f75-f2c062afd8a8" name="LaserStop" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="1968ef86-e244-4d0a-a6a4-dce17dff7fd5">
<variableUsages Id="91544522-a6cd-4b26-aae7-1257ba01abb9">
<usages>
<variableUsagesHasUsages Id="5a770306-8e15-4ad4-8054-c51248f7ef62">
<aliasDeviceIoUsage Id="81c6fb62-fe4b-4538-a024-7472e4744096" sdsId="43" channelId="18" functionId="1610682369" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="6d10f6f6-774f-477a-a90b-a20b15061f6a">
<variableUsages Id="2b18feb6-9ca1-45b2-9ac5-5713cc50e931">
<usages>
<variableUsagesHasUsages Id="095aa180-bfd5-4576-9348-60337073a0df">
<fbPortUsage Id="9a13a4ee-2159-4b66-b37c-6c15d044a6af">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="9661910b-934d-438d-85bd-8c23578ff406">
<inPortMoniker name="//Network1/FBDecouple1/DecIn2" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="4baab042-85da-4f65-b52e-3f1940d2690c">
<variable Id="6731131c-13e4-4185-8d51-a57a37c28df2" name="GroupPort_LSReducedSpeed" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="511efff6-2440-4a31-9e7d-f62baa8fb79e">
<variableUsages Id="0cdc4857-584b-4c79-943a-484214dfec4b">
<usages>
<variableUsagesHasUsages Id="cc3c072b-39d4-4482-a04e-3a3bcceee29f">
<fbPortUsage Id="a81649da-9c23-41f5-b2e7-04e70ccd3a4b">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="2dcc1ddb-8c4c-408c-925c-1fdd47d38857">
<outPortMoniker name="//Network1/FBDecouple1/DecOut1" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="266b4cf3-f24c-48c4-8ec4-e8b9a413c690">
<variableUsages Id="13cdb3c2-6e56-442a-8e14-d9ffa866d0cc">
<usages>
<variableUsagesHasUsages Id="80ebe913-4b37-4072-ab26-7db752768d5c">
<aliasDeviceIoUsage Id="ab54e194-f326-4c03-a56b-a4e075a3197d" sdsId="44" channelId="1" functionId="1131179972" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="373963e3-28db-400c-9a41-03da46b520df">
<variable Id="079d799a-a23b-4956-a30f-9f7f2f543864" name="GroupPort_LaserStop" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="a8aec5a4-92e9-4b6b-abd2-c92e38c1d92a">
<variableUsages Id="6edf1c36-6b76-4c55-af71-b43b28d8bd48">
<usages>
<variableUsagesHasUsages Id="289c83dd-24ff-4fdb-9551-559da7f2ff3d">
<fbPortUsage Id="00e37842-320c-4926-9b60-182c3a520ebc">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="61d52e9e-3f39-440c-9a95-407cf7f8f92d">
<outPortMoniker name="//Network1/FBDecouple1/DecOut2" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="09f68847-73be-42f1-be33-53c2d65dfa34">
<variableUsages Id="497159ba-a259-406c-b78b-99f1591269aa">
<usages>
<variableUsagesHasUsages Id="ae808622-5571-47d3-b3bb-c4edef33a502">
<aliasDeviceIoUsage Id="f95ff8a6-7dc3-475e-9ebc-02c96f2c8ad6" sdsId="41" channelId="1" functionId="1131179972" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="74676693-d628-4326-baf7-fd7a6f84e56f">
<variable Id="60b97667-91f4-4b93-8f0c-d9f520c92b9e" name="GroupPort_One" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="bbeaa237-150b-4862-83da-b40ff6f8becb">
<variableUsages Id="1793baf3-8188-461e-8adc-54b8f50bb95d">
<usages>
<variableUsagesHasUsages Id="d5637046-d3b5-4112-9196-c0db7abe6b8e">
<fbPortUsage Id="ee74445a-3417-482f-8ccb-abd4c0b58267">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="0c4f96db-4e84-4d80-b696-148c73c689f9">
<outPortMoniker name="//Network1/FBDecouple1/DecOut3" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="bcf2c2f7-da16-475e-a308-26bb003cd9e9">
<variableUsages Id="bb57d4e6-9e96-4e7b-85d7-5c2981cf1c37">
<usages>
<variableUsagesHasUsages Id="a31c7d3b-e2b5-4218-9708-a93af6eda037">
<aliasDeviceIoUsage Id="3d8ede30-daf7-4aa9-848f-8a6ba005cf62" sdsId="43" channelId="9" functionId="1879114753" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="1c4ce273-2b29-48f1-bc11-70b9f452ed21">
<variable Id="771f6da3-2185-42ea-9bb4-24e8d1cd451f" name="InputOne" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="20035804-9ab7-4f57-a30b-2a8fdfc488f8">
<variableUsages Id="d9805697-20d3-447b-9c63-0310aadcf0fc">
<usages>
<variableUsagesHasUsages Id="b23520bf-f49c-48b2-8fb7-79c7939e5867">
<aliasDeviceIoUsage Id="1dcbf077-d48f-438f-8529-6e58e6201947" sdsId="30" channelId="5" functionId="1612775681" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="2dad4992-259f-4df9-8987-f9bcaaf4461f">
<variableUsages Id="2c21bf2e-69b8-4ee6-85f9-313477c95460">
<usages>
<variableUsagesHasUsages Id="731af4e6-a3eb-4948-aa5f-aabfc528e70c">
<fbPortUsage Id="e84be742-7ea9-4a71-bd66-24f5e9d1bf04">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="d2a800aa-8dbd-452f-93b7-1790537a75ae">
<inPortMoniker name="//Network1/FBDecouple1/DecIn3" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
</variables>
</safetyApplication>

View File

@@ -0,0 +1,224 @@
<?xml version="1.0" encoding="utf-8"?>
<safetyApplicationLanguageDiagram Crc="2068125780" dslVersion="1.3.0.0" Id="a9d6f82b-36f6-4d25-a026-addbbc37bb08" absoluteBounds="0, 0, 16.625, 16.625" name="TwinSAFE">
<safetyApplicationMoniker name="/" />
<nestedChildShapes>
<networkSwimLane Id="befbd574-1ee5-4859-83b8-00aa0253601f" absoluteBounds="0, 0, 16.625, 9.25">
<networkMoniker name="//Network1" />
<nestedChildShapes>
<fBEstopShape Id="09d0e4b1-bd8b-43bb-abed-04c96fe7dbcf" absoluteBounds="2.25, 0.5, 3.35, 4.45">
<fBEstopMoniker name="//Network1/FBEstop1" />
<relativeChildShapes>
<inPortShape Id="2d085fba-e945-4a96-8d58-110008e0199a" absoluteBounds="2.17, 1.245, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/Restart" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="86cc6fac-5000-40e5-8604-1998a1a8f23a" absoluteBounds="2.17, 1.8075, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="acf5b86f-8f82-4f0d-8f5e-2500bc7a8b31" absoluteBounds="2.17, 2.0325, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="2c3c27ad-2047-4b24-bd06-d6b97f4ff0d9" absoluteBounds="2.17, 2.3475, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn3" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="2a0fa36c-fe98-4f08-95b8-80aabbe35ee5" absoluteBounds="2.17, 2.5725000000000002, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn4" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="5941b7fa-bd0f-426a-a391-e3be5d6ff901" absoluteBounds="2.17, 2.8875, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn5" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="127a6e91-b02d-40a5-a83d-1f841ce77e05" absoluteBounds="2.17, 3.1125000000000003, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn6" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="457d9da4-194c-4f9e-a8e6-a8ceef434380" absoluteBounds="2.17, 3.4275, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn7" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="620338ee-ac2a-4175-b615-1e029b7ff1cf" absoluteBounds="2.17, 3.6525000000000003, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn8" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="49a327fd-c724-472e-807c-72c9ce36934c" absoluteBounds="2.17, 4.2375000000000007, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EDM1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="15672d4f-69f4-4ea4-ba8f-1b3e03a79d20" absoluteBounds="2.17, 4.4625, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EDM2" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="0626a22d-f125-450a-9b98-23cfe7d377a5" absoluteBounds="5.5, 1.7850000000000001, 0.15, 0.15">
<outPortMoniker name="//Network1/FBEstop1/Error" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="4c37295b-c965-40be-b2e9-ec9c84e9d41b" absoluteBounds="5.5, 3.6750000000000003, 0.15, 0.15">
<outPortMoniker name="//Network1/FBEstop1/EStopOut" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="b71dfa9a-da12-412f-8810-d8e5700ab672" absoluteBounds="5.5, 3.9450000000000003, 0.15, 0.15">
<outPortMoniker name="//Network1/FBEstop1/EStopDelOut" />
<relativeChildShapes />
</outPortShape>
<paramPortShape Id="63f45fc9-8018-4070-91f1-9c457de4f7e3" absoluteBounds="3.82, 3.7750000000000004, 0.7, 0.2">
<parameterPortMoniker name="//Network1/FBEstop1/Delay Time (ms)" />
<relativeChildShapes />
</paramPortShape>
</relativeChildShapes>
</fBEstopShape>
<fBDecoupleShape Id="34a61197-76eb-42c7-9fb2-c39ecec1879d" absoluteBounds="2.25, 5.75, 2.75, 3.25">
<fBDecoupleMoniker name="//Network1/FBDecouple1" />
<relativeChildShapes>
<inPortShape Id="da14f9cd-f2fd-4384-979d-1dcd11137772" absoluteBounds="2.17, 6.7650000000000006, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="a4a7a3ce-ab1f-40b7-9d79-78fc4a8c45df" absoluteBounds="2.17, 7.035, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="99d08acf-e53b-4cba-b5ec-5057668ba1fa" absoluteBounds="2.17, 7.305, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn3" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="c0c037e1-ee86-43f6-8773-acfdf5831fb5" absoluteBounds="2.17, 7.575, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn4" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="4ea97df9-34ea-495c-b5c7-5e3a2de4c432" absoluteBounds="2.17, 7.8450000000000006, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn5" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="f211affc-667c-47d8-a7de-c58c2f2200b3" absoluteBounds="2.17, 8.115, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn6" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8d216019-de5d-4667-b20d-ba5b88b98a54" absoluteBounds="2.17, 8.385, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn7" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="49158284-109a-4546-8d06-5f7312939286" absoluteBounds="2.17, 8.6550000000000011, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn8" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="b580359c-d6b3-482a-9a02-8cd21bf549c8" absoluteBounds="4.9, 6.7650000000000006, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut1" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="f2e38640-1894-4624-b93f-e7e8304ea665" absoluteBounds="4.9, 7.035, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut2" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="0dfbdeae-ca49-4990-a9e3-2a9928441776" absoluteBounds="4.9, 7.305, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut3" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="bdcb5b9a-b2e1-4672-92ed-fe4fc1d28992" absoluteBounds="4.9, 7.575, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut4" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="66094ba0-b397-48f4-a434-49c7b6c7987f" absoluteBounds="4.9, 7.8450000000000006, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut5" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="53b1ab3b-772c-4135-8934-a9abee5ab12a" absoluteBounds="4.9, 8.115, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut6" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="baee53e4-59d4-4442-acad-5ca0cd38c4c0" absoluteBounds="4.9, 8.385, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut7" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="209daa38-bf4a-4d84-82e4-85c7c8ea1a54" absoluteBounds="4.9, 8.6550000000000011, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut8" />
<relativeChildShapes />
</outPortShape>
</relativeChildShapes>
</fBDecoupleShape>
</nestedChildShapes>
</networkSwimLane>
<networkSwimLane Id="1669eb2f-01fb-4d39-b3c3-98ba7102721a" absoluteBounds="0, 9.25, 16.625, 7.3500000000000014">
<networkMoniker name="//Network2" />
<nestedChildShapes>
<fBMonShape Id="d541c905-35c2-42d0-b38d-49acf7916613" absoluteBounds="3, 9.875, 3.35, 4.45">
<fBMonMoniker name="//Network2/FBMon1" />
<relativeChildShapes>
<inPortShape Id="b7bf6abc-1ba2-4d0f-8595-0b5b9625221e" absoluteBounds="2.92, 10.62, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/Restart" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8519b44b-577c-4064-9094-e54eda5de26e" absoluteBounds="2.92, 11.182500000000001, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="307c9cfa-fdd3-4264-bf94-de327a29236b" absoluteBounds="2.92, 11.4075, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="f77391aa-1de8-4c64-ad17-7f09de595f12" absoluteBounds="2.92, 11.7225, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn3" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8ae4d776-e275-4419-88c8-40825d6da7c1" absoluteBounds="2.92, 11.9475, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn4" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8b06b089-6ba9-4ecf-80e0-2ad5441769ad" absoluteBounds="2.92, 12.5325, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/Secure1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="220e29a9-384a-4f17-a77a-0dabe036beba" absoluteBounds="2.92, 12.7575, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/Secure2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="268d69e4-6f8a-4aca-8e96-6350822b8eb9" absoluteBounds="2.92, 13.6125, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/EDM1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="531eb72d-1864-4848-9d6e-9f1088ff6fbb" absoluteBounds="2.92, 13.8375, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/EDM2" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="0a6e3b67-940e-4a49-8aab-1ad6bc00d87a" absoluteBounds="6.25, 11.16, 0.15, 0.15">
<outPortMoniker name="//Network2/FBMon1/Error" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="07537b5d-1658-4c41-9a72-4aed13a7c229" absoluteBounds="6.25, 13.05, 0.15, 0.15">
<outPortMoniker name="//Network2/FBMon1/MonOut" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="2b2afdd5-ea81-473b-8ae3-8097b04bb12c" absoluteBounds="6.25, 13.32, 0.15, 0.15">
<outPortMoniker name="//Network2/FBMon1/MonDelOut" />
<relativeChildShapes />
</outPortShape>
<paramPortShape Id="d01bb36c-4ec0-4986-99dc-9ea3679c4c52" absoluteBounds="4.57, 13.200000000000001, 0.7, 0.2">
<parameterPortMoniker name="//Network2/FBMon1/Delay Time (ms)" />
<relativeChildShapes />
</paramPortShape>
</relativeChildShapes>
</fBMonShape>
<fBSrShape Id="a2b241de-6cc4-484f-af6e-703ac2a5620f" absoluteBounds="3, 14.5, 2.75, 1.85">
<fBSrMoniker name="//Network2/FBSr1" />
<relativeChildShapes>
<inPortShape Id="4178867f-35ba-42d0-83b6-413ff5df438d" absoluteBounds="2.92, 15.245, 0.15, 0.15">
<inPortMoniker name="//Network2/FBSr1/Set" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="a94417f4-0643-4948-a6b5-0024e1119ea1" absoluteBounds="2.92, 15.515, 0.15, 0.15">
<inPortMoniker name="//Network2/FBSr1/Reset" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="6ac6e4e5-c5e9-416b-bcb8-dd7e703e804f" absoluteBounds="5.65, 15.785, 0.15, 0.15">
<outPortMoniker name="//Network2/FBSr1/SrOut" />
<relativeChildShapes />
</outPortShape>
</relativeChildShapes>
</fBSrShape>
</nestedChildShapes>
</networkSwimLane>
</nestedChildShapes>
</safetyApplicationLanguageDiagram>

73
Safety/Safety.splcProj Normal file
View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Crc="1195819491" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{764047e3-9655-42e0-af97-1c297933dac5}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>TwinCAT3SafePlcProject</RootNamespace>
<AssemblyName>TwinCAT3SafePlcProject</AssemblyName>
<FileUpgradeFlags />
<UpgradeBackupLocation />
<OldToolsVersion>2.0</OldToolsVersion>
<TargetSystem>EL6900</TargetSystem>
<ProgrammingLanguage>Graphical Editor</ProgrammingLanguage>
<Worker>M.Heisig</Worker>
<IntProjName>Safety</IntProjName>
<IsNewCreated>false</IsNewCreated>
<SPlcProjVersion>1.7.0.0</SPlcProjVersion>
<NextSdsId>46</NextSdsId>
<DocuEditor>M.Heisig</DocuEditor>
<PlotDate>2021-11-12</PlotDate>
<CompanyName>Beckhoff Automation &amp; Co. KG</CompanyName>
<CompanyLogo>Beckhoff Automation &amp; Co. KG</CompanyLogo>
<FbPerPage>0</FbPerPage>
<AddUserAdministrationPages>False</AddUserAdministrationPages>
<AddProjectVersionHistoryPages>False</AddProjectVersionHistoryPages>
<AddCustomPages>False</AddCustomPages>
<TextBox />
<AddMultiSettingDocuments>False</AddMultiSettingDocuments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>false</DebugSymbols>
<OutputPath>bin\Release\</OutputPath>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<None Include="Hauptachsen\Alias Devices\AliasEL1918.sds" />
<None Include="Hauptachsen\Alias Devices\AliasErrorAcknowledgement.sds" />
<None Include="Hauptachsen\Alias Devices\AliasEStopDirect.sds" />
<None Include="Hauptachsen\Alias Devices\AliasEStopReset.sds" />
<None Include="Hauptachsen\Alias Devices\AliasFSoELaser.sds" />
<None Include="Hauptachsen\Alias Devices\AliasLSReducedSpeed.sds" />
<None Include="Hauptachsen\Alias Devices\AliasLSStopDirect.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeSpindel.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeWickler.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeWZWArm.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeWZWKette.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeXMaster.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeXSlave.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeY.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeZ.sds" />
<None Include="Hauptachsen\Alias Devices\AliasRun.sds" />
<None Include="Hauptachsen\Hauptachsen.sal" />
<None Include="Hauptachsen\Hauptachsen.sal.diagram">
<Visible>false</Visible>
<DependentUpon>Hauptachsen\Hauptachsen.sal</DependentUpon>
</None>
<None Include="TargetSystemConfig.xml">
<Visible>false</Visible>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="Hauptachsen" />
<Folder Include="Hauptachsen\Alias Devices" />
<Folder Include="User FBs" />
</ItemGroup>
<ProjectExtensions>
<DocumentationProperty>
<ProjectVersionHistories />
</DocumentationProperty>
</ProjectExtensions>
</Project>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<TargetSystemConfig Crc="3106531991" Version="1.5">
<TargetSystemType>HSafetyPLC</TargetSystemType>
<TargetSystemSubType>EL6910</TargetSystemSubType>
<IsExternalDevice>false</IsExternalDevice>
<TargetSystemObjectId>50462727</TargetSystemObjectId>
<TargetSystemObjectName>Klemme 7 (EL6910)</TargetSystemObjectName>
<SoftwareVersion>04 (V01.11) </SoftwareVersion>
<SerialNumber>2494812</SerialNumber>
<ProjectCRC>22512</ProjectCRC>
<MapProjectCRC>false</MapProjectCRC>
<MapSerialNumber>false</MapSerialNumber>
<VersionNumber>1</VersionNumber>
<FSOEAddress>1</FSOEAddress>
<DipSwitch>1</DipSwitch>
<AmsNetID>172.18.236.82.2.1</AmsNetID>
<AmsPort>1008</AmsPort>
<ConnectionInfoDataConfigOld>false</ConnectionInfoDataConfigOld>
<TakeOverSafetyAliasDeviceNamesInProcessImage>false</TakeOverSafetyAliasDeviceNamesInProcessImage>
<TakeOverStandardAliasDeviceNamesInProcessImage>false</TakeOverStandardAliasDeviceNamesInProcessImage>
<BackupRestore Needed="0" Activated="false" RestoreUserAdministration="false" />
</TargetSystemConfig>

View File

@@ -0,0 +1,674 @@
<?xml version="1.0" encoding="utf-8"?>
<safetyApplication Crc="1839656654" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.3.0.0" Id="dbeb74cb-3d2b-4d0b-ae23-f1a9c16695af" name="" mapState="false" mapDiag="false" groupOrderId="0" passificationAllowed="false" temporaryDeactivationAllowed="false" permamentDeactivationAllowed="false" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
<networks>
<safetyApplicationHasNetworks Id="19bfb8a9-179f-45cd-ac91-c4a81f6b8cff">
<Network Id="d1fc00f5-32e5-4467-9dfd-ca885de8b6d6" name="Network1" networkName="Network1" intId="1" networkOrderId="0">
<functionBlocks>
<networkHasFunctionBlocks Id="137f50a7-b5ea-4efb-99aa-d51d1c06de31">
<fBEstop Id="67c3c268-7b89-447b-b572-a20e287f2f72" name="FBEstop1" instanceName="FBEstop" orderOfExecution="1" mapState="false" mapDiag="false" functionName="safeEstop" safeInputsAfterDiscError="true">
<inPorts>
<functioBlockHasInPorts Id="6448f5b0-4308-4258-aff2-90b51598378e">
<inPort Id="8c32701b-b971-4f34-b6a0-3d90417d1c73" name="Restart" portName="Restart" portNum="2" objectIndex="0" varId="1" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="69ce4892-e83a-4f99-9ba4-e594c87eb728">
<inPort Id="ef300a8b-e9ec-48a8-928a-5256636fdf09" name="EStopIn1" portName="EStopIn1" portNum="4" objectIndex="8" varId="3" filter="2" portDataType="1" channelInterface="Two-Channel" discrepancyTime="100" deactivate1="Break Contact (NC)" deactivate2="Break Contact (NC)" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="60a89f3c-ab74-4197-9ec6-6bcb3b63de8a">
<inPort Id="c74d1aea-6bdb-4dd3-b13e-6be4b8d25a72" name="EStopIn2" portName="EStopIn2" portNum="5" objectIndex="9" varId="4" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="6d71abd0-f0eb-49c0-8ff5-f52cc2925b84">
<inPort Id="7564c087-15bd-42ea-8438-ef3fc782ba7a" name="EStopIn3" portName="EStopIn3" portNum="6" objectIndex="10" varId="5" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="b48e3c44-6070-480f-b97c-65691d6d246f">
<inPort Id="d9ddd2e4-7848-4a3c-b2f0-6ec202f1a323" name="EStopIn4" portName="EStopIn4" portNum="7" objectIndex="11" varId="6" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="5695ea1f-0392-469b-ac18-b5b3d2f17eb4">
<inPort Id="ee24cc3a-3b71-4d44-8318-51a7606ef0d5" name="EStopIn5" portName="EStopIn5" portNum="8" objectIndex="12" varId="7" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="eb6ed552-9ae5-4de0-8538-6015f97c4df8">
<inPort Id="0efab5fb-532d-4d9b-81b4-f446f73e9174" name="EStopIn6" portName="EStopIn6" portNum="9" objectIndex="13" varId="8" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="8fe98436-bfbd-4d65-aef8-c568e23670a0">
<inPort Id="a5142eeb-e114-47b7-a8bb-6ac99435991e" name="EStopIn7" portName="EStopIn7" portNum="10" objectIndex="14" varId="9" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="4013df0f-12b6-4557-b16f-5b5e116a54e5">
<inPort Id="f5e9dcf1-f63b-46e7-9d97-1dc222c61136" name="EStopIn8" portName="EStopIn8" portNum="11" objectIndex="15" varId="10" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="302f83ad-5d31-45c3-a754-dafc148c52ee">
<inPort Id="ac8440d0-7a81-4ef3-8c2b-5b74fd625017" name="EDM1" portName="EDM1" portNum="13" objectIndex="1" varId="12" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="b0d9ccfc-39b8-4337-a0f3-5c4340a939d5">
<inPort Id="c7a1db24-a91c-4e53-a871-c219b715a367" name="EDM2" portName="EDM2" portNum="14" objectIndex="2" varId="13" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="b6dfb962-051a-43b9-8314-97e2248301a7">
<outPort Id="02a71f6f-802c-498b-b6df-fcd204893d2f" name="Error" portName="Error" portNum="4" objectIndex="0" varId="16" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="b0a35b82-b055-46c3-b1a0-b53b717df0c6">
<outPort Id="87964014-1b39-48e5-98d1-69fbd68435cf" name="EStopOut" portName="EStopOut" portNum="11" objectIndex="1" varId="23" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="ba6831c6-025d-4b88-a6b7-d04d6c29bcd2">
<outPort Id="a5cbb5ed-15c7-4c33-9f2e-6297fa37fe95" name="EStopDelOut" portName="EStopDelOut" portNum="12" objectIndex="2" varId="26" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
<parameterPorts>
<functionBlockHasParamPorts Id="870c5c74-bfb7-4ee4-829f-42ae05fa8d20">
<parameterPort Id="641c12b0-41fa-482d-aa30-308c8c6d9190" name="Delay Time (ms)" portName="Delay Time (ms)" portNum="8" objectIndex="0" varId="0" filter="0" portDataType="0" timing="250" userFbPortName="Delay Time (ms)" useInUserFb="false" />
</functionBlockHasParamPorts>
</parameterPorts>
</fBEstop>
</networkHasFunctionBlocks>
<networkHasFunctionBlocks Id="7fa03e17-feba-41df-81fe-77dcbdaef0ce">
<fBDecouple Id="10fa1372-c1b8-4169-b0d1-868a85e29f54" name="FBDecouple1" instanceName="FBDecouple1" orderOfExecution="2" mapState="false" mapDiag="false" functionName="safeDecouple">
<inPorts>
<functioBlockHasInPorts Id="8656a332-1ce5-485c-9e7d-06a5ce769ba9">
<inPort Id="b06eb363-7119-498d-aa22-9e81f0e429ec" name="DecIn1" portName="DecIn1" portNum="3" objectIndex="8" varId="5" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="3f97bfe6-8ed8-444a-b3ae-1de19500d0a5">
<inPort Id="96f164d1-7ca8-4d78-98fc-2b5ac67d4d5a" name="DecIn2" portName="DecIn2" portNum="4" objectIndex="9" varId="6" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="4464ca44-94d4-4f6a-bf73-af9480d68423">
<inPort Id="2ba9c9bd-2724-467b-abd1-5cbaa6fb56dd" name="DecIn3" portName="DecIn3" portNum="5" objectIndex="10" varId="7" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="0da41691-65b3-4d48-937b-40cddafe3f43">
<inPort Id="dd835df7-72b8-4cb7-a162-9beba646e005" name="DecIn4" portName="DecIn4" portNum="6" objectIndex="11" varId="8" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="6572ab94-04bc-4e57-9d37-997cf360130e">
<inPort Id="185ec47b-de35-4335-ab23-7fb7f6c54697" name="DecIn5" portName="DecIn5" portNum="7" objectIndex="12" varId="9" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="9ef23405-2a05-4fb3-9eea-581215df33cd">
<inPort Id="3d335481-845e-493d-8968-24a665ff80e9" name="DecIn6" portName="DecIn6" portNum="8" objectIndex="13" varId="10" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="2a77eb3a-a05d-4b63-b55b-afff0d422138">
<inPort Id="245ea9b7-ca31-431f-be80-7f4506950039" name="DecIn7" portName="DecIn7" portNum="9" objectIndex="14" varId="11" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="645f8aa7-c3ec-4ccb-b35a-cd7a24e73c44">
<inPort Id="8205cd4e-0f0c-4c3e-a289-ec54bd62ae15" name="DecIn8" portName="DecIn8" portNum="10" objectIndex="15" varId="12" filter="2" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="8be134a1-8397-4894-b7b4-5d0d749719d0">
<outPort Id="9b5ec80d-ecb4-471c-a222-9bf564e662ce" name="DecOut1" portName="DecOut1" portNum="3" objectIndex="8" varId="17" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="54f7e7f7-5654-41b0-bc0b-b4da34b334fc">
<outPort Id="5556cdc9-80ef-4ad3-9248-79983e801c2a" name="DecOut2" portName="DecOut2" portNum="4" objectIndex="9" varId="18" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="d9e65995-c9cd-427b-86bf-cc47caedbb8c">
<outPort Id="a00af5f8-b214-4277-9b31-510def443ef6" name="DecOut3" portName="DecOut3" portNum="5" objectIndex="10" varId="19" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="db4484a9-17f6-4efe-9f74-f3bf9966f839">
<outPort Id="f8d24234-8e8b-401c-9f5f-dcc06ac84edc" name="DecOut4" portName="DecOut4" portNum="6" objectIndex="11" varId="20" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="e3f38277-87ae-4964-9fa4-3718c045c66e">
<outPort Id="89a6070b-7939-4ce5-afa7-956c49a7ac57" name="DecOut5" portName="DecOut5" portNum="7" objectIndex="12" varId="21" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="f4106890-ca23-43e2-be9a-5bae9bc0bdca">
<outPort Id="e95afbde-84a8-4d2c-840a-d69fdb8cbd95" name="DecOut6" portName="DecOut6" portNum="8" objectIndex="13" varId="22" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="47232bb7-4f0e-4f16-ae81-db8fa805be48">
<outPort Id="0b8f75e7-3a93-405a-9eba-0d24a4c65347" name="DecOut7" portName="DecOut7" portNum="9" objectIndex="14" varId="23" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="1b82c055-0267-4558-af3f-3817b477d500">
<outPort Id="1f260bf9-70ff-4ea6-a285-7ae75ec54bc0" name="DecOut8" portName="DecOut8" portNum="10" objectIndex="15" varId="24" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
</fBDecouple>
</networkHasFunctionBlocks>
</functionBlocks>
</Network>
</safetyApplicationHasNetworks>
<safetyApplicationHasNetworks Id="b826f77c-c221-45eb-8276-8bdb06803e50">
<Network Id="fbe7b793-cea4-4d74-a879-ab60783fb6bc" name="Network2" networkName="Network2" intId="2" networkOrderId="1">
<functionBlocks>
<networkHasFunctionBlocks Id="e4f53f8a-631a-4589-b2a5-cf00b741da7c">
<fBMon Id="cbc838aa-1e79-4ba4-9945-8a86b1a7b64a" name="FBMon1" instanceName="FBMon1" orderOfExecution="3" mapState="false" mapDiag="false" functionName="safeMon" safeInputsAfterDiscError="false" manualFunctionTest="false">
<inPorts>
<functioBlockHasInPorts Id="852a62eb-5ea3-4e69-bc90-0fe24ce52bc9">
<inPort Id="8db139e8-8e04-46ce-aa54-62aed762cda2" name="Restart" portName="Restart" portNum="2" objectIndex="0" varId="1" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="3bd359e7-968b-4fee-bad5-f2dc393e72f9">
<inPort Id="e30f5617-437f-428b-a7eb-6e7a2c3c6287" name="MonIn1" portName="MonIn1" portNum="4" objectIndex="8" varId="4" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="768898f2-5019-4fc9-bddc-ff92450e3ed1">
<inPort Id="04d12761-6341-4ab0-a60a-d05b4cf54b94" name="MonIn2" portName="MonIn2" portNum="5" objectIndex="9" varId="5" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="c8252af3-44fd-4566-8726-7664ea9eb3b4">
<inPort Id="59ded9b7-a3da-410e-a99e-f227960101c0" name="MonIn3" portName="MonIn3" portNum="6" objectIndex="10" varId="6" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="cd2fb1ca-5380-42a9-bb0d-0a512c8c30cf">
<inPort Id="483f1893-477c-4678-ab35-68a519e8b5c5" name="MonIn4" portName="MonIn4" portNum="7" objectIndex="11" varId="7" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="640c3f98-20a5-48f9-8078-275a537ef698">
<inPort Id="e9f0be6b-8830-42de-ae75-8c8c4a8ae5c8" name="Secure1" portName="Secure1" portNum="9" objectIndex="12" varId="9" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="af83ee99-a113-4de9-b241-ca319acce424">
<inPort Id="20a4b6f9-8304-48bb-a23d-617c9e4a3412" name="Secure2" portName="Secure2" portNum="10" objectIndex="13" varId="10" filter="2" portDataType="1" channelInterface="Both Deactivated" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="881c0ffb-f4e7-46e5-ab8f-915c4fe4e667">
<inPort Id="fb051d15-0e8c-4379-bf2d-b352c690e851" name="EDM1" portName="EDM1" portNum="13" objectIndex="1" varId="13" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="82dc0f57-fa31-40c8-b29d-39e8a224e66d">
<inPort Id="f7fc4ea1-503e-4755-be79-cb48594b5ef7" name="EDM2" portName="EDM2" portNum="14" objectIndex="2" varId="14" filter="3" portDataType="1" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="b0f99e2e-9845-459d-9942-580a205790be">
<outPort Id="de845dd2-af7d-4d93-8f84-711cc7c49ebb" name="Error" portName="Error" portNum="4" objectIndex="0" varId="16" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="e506e797-7a2f-4fb6-a39a-cec0f0fdf51f">
<outPort Id="d4a8e958-9118-4d1a-af5d-678d91619cd4" name="MonOut" portName="MonOut" portNum="11" objectIndex="1" varId="23" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
<functionBlockHasOutPorts Id="f42d66e6-57f1-4111-9f21-317650e79d36">
<outPort Id="529f5e07-7489-43da-86bb-c08d698ba7a2" name="MonDelOut" portName="MonDelOut" portNum="12" objectIndex="2" varId="25" filter="7" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
<parameterPorts>
<functionBlockHasParamPorts Id="95edca72-57b1-44f6-b1bf-d9537888d08b">
<parameterPort Id="f0aa4f10-25e2-4d27-9ec1-463bb126b347" name="Delay Time (ms)" portName="Delay Time (ms)" portNum="8" objectIndex="0" varId="0" filter="0" portDataType="0" timing="100" userFbPortName="Delay Time (ms)" useInUserFb="false" />
</functionBlockHasParamPorts>
</parameterPorts>
</fBMon>
</networkHasFunctionBlocks>
<networkHasFunctionBlocks Id="df72c35d-47f6-4740-b036-63a89c563d16">
<fBSr Id="c62eeddd-86bb-4da5-967a-f2354dcf7ca5" name="FBSr1" instanceName="FBSr1" orderOfExecution="4" mapState="false" mapDiag="false" functionName="safeSr">
<inPorts>
<functioBlockHasInPorts Id="ed55b1f9-7b1a-42df-a4ad-490c2dbeaab6">
<inPort Id="c4674eb4-9eb7-47a1-ba18-00a768f3c081" name="Set" portName="Set" portNum="2" objectIndex="8" varId="1" filter="2" portDataType="1" channelInterface="Activated" deactivate1="Break Contact (NC)" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
<functioBlockHasInPorts Id="bd3d8c95-bf41-4d27-a0f0-a126c532477b">
<inPort Id="ba818ae5-4653-414d-92ff-41d2b6a846f5" name="Reset" portName="Reset" portNum="3" objectIndex="9" varId="2" filter="2" portDataType="1" channelInterface="Activated" deactivate1="Break Contact (NC)" maxDeviation="0" resetTime="0" />
</functioBlockHasInPorts>
</inPorts>
<outPorts>
<functionBlockHasOutPorts Id="7e3f2ea0-7f52-41ce-9462-6360b708906f">
<outPort Id="2f155809-37be-4dde-a909-75d163647175" name="SrOut" portName="SrOut" portNum="4" objectIndex="1" varId="4" filter="6" portDataType="1" replacementValue="0" />
</functionBlockHasOutPorts>
</outPorts>
</fBSr>
</networkHasFunctionBlocks>
</functionBlocks>
</Network>
</safetyApplicationHasNetworks>
</networks>
<twinSAFEGroupAliasPorts>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="43f00259-5bb7-4cca-b76a-293c56da5ced">
<twinSAFEGroupAliasPort Id="29bf96fc-54f6-4f83-bbca-38248c1b54bc" name="RunStop" sdsId="0" channelId="0" portName="RunStop" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="f4d9aa30-efe3-4ddd-a091-e07dc576a9f8">
<twinSAFEGroupAliasPort Id="aac2ecc8-be2f-473c-8e8e-c999e0884123" name="ErrAck" sdsId="0" channelId="0" portName="ErrAck" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="239c9675-0bff-48f4-8040-7b679f50182e">
<twinSAFEGroupAliasPort Id="dd51ae13-278a-44cd-85b1-159a1a66263f" name="ModuleFault" sdsId="0" channelId="0" portName="ModuleFault" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="07493458-cabb-454a-b9c1-abd1c492a982">
<twinSAFEGroupAliasPort Id="e9d8f11a-6f08-4514-9779-1487f4c7bdd4" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="8c5d89c4-ba9f-4ac2-aef9-94b142fd3e79">
<twinSAFEGroupAliasPort Id="2f5280e8-e47d-4bec-9238-50ff7ab4be15" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="c35a09a2-359b-4dfc-9648-f97c3bbb07c3">
<twinSAFEGroupAliasPort Id="58ba7bee-61b8-4589-8fdb-05bc9eb9f2f8" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="4d0b1239-6109-4148-a326-f662e585b0ed">
<twinSAFEGroupAliasPort Id="c9eb854d-7295-4d35-bc1d-7590319a2081" name="OtherErr" sdsId="0" channelId="0" portName="OtherErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="bb57283d-8c89-44d0-9a47-e44ac0c5ed8a">
<twinSAFEGroupAliasPort Id="e03b05c7-aac5-4249-ac08-5d11fefe4a35" name="ComStartup" sdsId="0" channelId="0" portName="ComStartup" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="5cb8b5a3-3ee3-474b-b4dd-458b3f5a3768">
<twinSAFEGroupAliasPort Id="334dc634-0369-465d-bb8c-6c05fb9f5de5" name="FbDeactive" sdsId="0" channelId="0" portName="FbDeactive" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="c2062f6b-2585-46dd-9e37-e54d266dad14">
<twinSAFEGroupAliasPort Id="d719be22-bb18-40d8-be3e-f17b258d1bc5" name="FbRun" sdsId="0" channelId="0" portName="FbRun" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="bab1f439-3482-4e0a-8f0f-ded83fff561a">
<twinSAFEGroupAliasPort Id="1fcb4e67-4799-4a8b-a3ea-c044126f48fb" name="InRun" sdsId="0" channelId="0" portName="InRun" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort>
</twinSAFEGroupAliasPorts>
<variables>
<safetyApplicationHasVariables Id="6c1fa857-414e-468b-83cc-f97f5b7fe1dc">
<variable Id="d21fcc75-e284-4d5a-9354-53b3974b04e2" name="GroupPort_ErrAck" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="d66bf6d2-6463-442f-b3fc-65bc79b58536">
<variableUsages Id="a22b50fd-c519-49ec-beae-2aa2ef212884">
<usages>
<variableUsagesHasUsages Id="da9007fe-d0af-41b9-9c83-b5e96c0621db">
<aliasDeviceIoUsage Id="d7bd34c9-0aab-4c03-b2de-68f48df215fd" sdsId="23" channelId="1" functionId="1131179973" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="ff8ac945-81aa-4a90-ae90-90677763fce8">
<variableUsages Id="cd3d94f1-5dc1-4eb4-a41f-963c42d9c6c3">
<usages>
<variableUsagesHasUsages Id="db021aea-cbee-4c23-ae1d-b7b1a9917da4">
<groupPortUsage Id="5cff209b-29b6-43b2-a8d9-afa0014941f4">
<twinSAFEGroupAliasPort>
<groupPortUsageReferencesTwinSAFEGroupAliasPort Id="4fb301cc-09a9-45bf-b2ea-335771685918">
<twinSAFEGroupAliasPortMoniker name="//ErrAck" />
</groupPortUsageReferencesTwinSAFEGroupAliasPort>
</twinSAFEGroupAliasPort>
</groupPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="c83c78ea-8111-4249-9c14-fc64c71c741b">
<variable Id="5c0b7a4e-9c77-4a87-b3b6-36d9ccbe394a" name="GroupPort_EStopReset" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="d36ed626-c547-42cd-96d7-0cd1f163a8b2">
<variableUsages Id="2ce0a7ee-66b9-466f-9a98-c2f4d5431658">
<usages>
<variableUsagesHasUsages Id="2a67cd27-f8a4-4d4e-9957-a7bb62c5ed30">
<aliasDeviceIoUsage Id="ebc6e1aa-f12b-4cc3-8d12-65637b225e95" sdsId="28" channelId="1" functionId="1131179973" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="9ee00c2f-1521-49f9-abd1-afa2a1a2509a">
<variableUsages Id="aa0116bb-9c4b-4041-ab93-63034631766f">
<usages>
<variableUsagesHasUsages Id="9d0049ff-c183-4c2c-abba-e2854e7829ec">
<fbPortUsage Id="89c0415a-5410-46b6-bb40-c5f2965defe0">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="2a05cc0f-8c2b-42b6-9e68-239f0bf29bce">
<inPortMoniker name="//Network1/FBEstop1/Restart" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="a3854024-cf62-4f24-bb31-314099a88f6e">
<variable Id="a9307b7c-bcf1-4ace-91a9-35dac4194b80" name="GroupPort_EStopDirect" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="72af6b18-42d1-4ef3-b671-b63ea47d203c">
<variableUsages Id="364008f2-e2d2-4f82-b409-645e00c3b9cd">
<usages>
<variableUsagesHasUsages Id="84dcaac0-3189-451b-9dbb-73f709b65ead">
<fbPortUsage Id="c1711421-53f8-40b5-b62f-1b150a934de6">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="437ea40d-010b-49a3-a18f-f639d491bc69">
<outPortMoniker name="//Network1/FBEstop1/EStopOut" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="454d0d99-9ccc-4edd-b7c7-c7bae7c9ccb0">
<variableUsages Id="2781ebb0-c987-41fd-a4fd-b152ebdad0a8">
<usages>
<variableUsagesHasUsages Id="b1a59bb3-8555-401a-a1c5-7f5142490025">
<aliasDeviceIoUsage Id="39005473-eecf-4386-87a0-015310b5f071" sdsId="31" channelId="1" functionId="1131179972" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="f64835d4-b5b8-4336-983c-383f70ac7975">
<aliasDeviceIoUsage Id="bad3165a-29c2-4d8e-a8aa-777299dedaab" sdsId="38" channelId="2" functionId="378013521" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="b895cc83-0dc0-49fc-b996-e9126b845ef3">
<aliasDeviceIoUsage Id="f774a965-e1b0-48dc-bef8-6a1e3a1d10cb" sdsId="39" channelId="2" functionId="378013521" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="41a92049-5cc2-4a7b-9fda-44e3c2562a60">
<variable Id="88ceee40-27e2-435f-a5b0-a3045563e9da" name="GroupPort_EStopDelayed" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="433e6d0f-1fb4-4100-916b-ebbcef2b2d7d">
<variableUsages Id="7101c514-1c7f-4468-8a4e-da5e60bd3726">
<usages>
<variableUsagesHasUsages Id="b34435bc-355d-4aa3-9207-04a6e4cadb45">
<fbPortUsage Id="bc1fe3f6-1e17-43e1-8838-2dbee699c592">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="2bf544a0-c0f6-4622-b3b8-5b11fe413548">
<outPortMoniker name="//Network1/FBEstop1/EStopDelOut" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="a4130b14-4669-48fc-8228-44f30109e6a9">
<variableUsages Id="b3b283a1-8314-406e-9ef0-c87de0261914">
<usages>
<variableUsagesHasUsages Id="b5d38033-0a3c-4c37-a36e-1073d7951c09">
<aliasDeviceIoUsage Id="b88f19d2-2385-482e-a1e8-72e7f52b1ebd" sdsId="36" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="7ffaa14b-8070-4eb3-8d56-d63554962ed7">
<aliasDeviceIoUsage Id="7f3ce95e-59c1-49e9-97e6-2b75d0667c44" sdsId="42" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="aaadb7bf-a674-46ec-9948-56517854274c">
<aliasDeviceIoUsage Id="56683aef-674e-4768-897b-e1970540a033" sdsId="38" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="a74bdd40-e2dc-4525-8eee-9a32ef4262d7">
<aliasDeviceIoUsage Id="0fed920f-e864-4248-a190-801d6a74050b" sdsId="39" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="730f19e5-be26-4764-b00f-e8b08bb43edb">
<aliasDeviceIoUsage Id="6f62bc57-0375-4aff-99c1-61b99200236e" sdsId="34" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="8afa3354-ab17-4ee6-87e4-59c8162e75a3">
<aliasDeviceIoUsage Id="4d91d4cb-f34d-48d5-b537-f83879fd9ca8" sdsId="35" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="7df685d1-9c75-47bb-9664-0695a03b4b12">
<aliasDeviceIoUsage Id="d4180e97-2033-4936-bf16-82cad27eaf99" sdsId="32" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
<variableUsagesHasUsages Id="0a93ce17-0f3f-4c00-b666-d0bdfc63133d">
<aliasDeviceIoUsage Id="3d985c70-5361-4f76-ad64-7d55d7bb7816" sdsId="37" channelId="1" functionId="378210128" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="e71ffe8f-c081-456d-b0e1-550d29e589ab">
<variable Id="7e523eb9-d935-4eb3-bbcf-0cf2b95fd200" name="GroupPort_EStopTasterA" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="f67097ad-e999-4995-9cde-c935cbad131a">
<variableUsages Id="61f4473b-1124-4bfd-a917-e4c3f277e902">
<usages>
<variableUsagesHasUsages Id="b9241bcc-8eae-46bc-bfe5-52526b2c44d7">
<aliasDeviceIoUsage Id="915ea58e-cbbe-44a8-81cb-23f0ca36f200" sdsId="30" channelId="1" functionId="1610678529" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="cae55f82-8023-4c03-b411-50b99644d3f4">
<variableUsages Id="dec59ec4-33df-451b-8756-cf7777e4ca05">
<usages>
<variableUsagesHasUsages Id="e5c4795c-69b4-450b-96af-fbb265824e88">
<fbPortUsage Id="4231e818-b5cf-4583-99fc-a49be7b9925f">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="663cc287-65a4-4a07-939f-9f6d4998381b">
<inPortMoniker name="//Network1/FBEstop1/EStopIn1" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="c76a3768-3d4b-4ce3-b14a-0764db515085">
<variable Id="1d068b33-4f2a-46c4-b579-f08fd4a0dabe" name="GroupPort_EStopTasterB" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="40b93286-0e6e-4e62-bdc6-b6b469a522f9">
<variableUsages Id="bd35cc8b-cb9c-4de5-aa0c-cd5039bca696">
<usages>
<variableUsagesHasUsages Id="f660ae46-e4fe-44d2-9dfe-893afe651b36">
<aliasDeviceIoUsage Id="d24a85ae-c594-42fa-a73e-f4fa719b8def" sdsId="30" channelId="3" functionId="1611727105" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="9109b1f9-614c-4543-936c-d8c2c6bd9f1c">
<variableUsages Id="84535528-93d8-4c06-809a-b3fcd4978c07">
<usages>
<variableUsagesHasUsages Id="a94e1a7c-8341-44f3-b2f9-7976e12a9132">
<fbPortUsage Id="1d89f0ee-af1b-40d4-b183-4293957f1928">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="c7ef9a09-b111-4e97-b58c-d4b3795c207e">
<inPortMoniker name="//Network1/FBEstop1/EStopIn2" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="9675816a-0a57-420c-83c6-911db60a2fb2">
<variable Id="b7d899bf-0b53-4980-821b-647698904225" name="GroupPort_Run" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="471e9da1-9052-4e4d-a6d8-3229a5cee95a">
<variableUsages Id="8e095dfb-1b22-4c32-b594-2fd5d0ce54e1">
<usages>
<variableUsagesHasUsages Id="9b537d63-b2e1-42fa-8095-dbd1806ca44c">
<aliasDeviceIoUsage Id="1f0e7e98-dd16-4fbf-897f-0eda7d6ed307" sdsId="33" channelId="1" functionId="1131179973" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="225b7e07-f69e-4b8b-b489-5e250cded3e0">
<variableUsages Id="db854f5c-987b-4980-98eb-434706785a3d">
<usages>
<variableUsagesHasUsages Id="e08bf2bd-68b1-4ef7-8e7f-1732cf68a969">
<groupPortUsage Id="df10db2d-0902-455a-a554-649ff3d31546">
<twinSAFEGroupAliasPort>
<groupPortUsageReferencesTwinSAFEGroupAliasPort Id="d65ebcb2-a8f1-45ce-a819-f6919c78f558">
<twinSAFEGroupAliasPortMoniker name="//RunStop" />
</groupPortUsageReferencesTwinSAFEGroupAliasPort>
</twinSAFEGroupAliasPort>
</groupPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="47c9bcdf-376e-4c8e-8855-786b81e1361b">
<variable Id="f2a7fd9c-d130-468a-9f9d-5e1d8635a94d" name="LaserReducedSpeed" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="4748eafd-eb2a-4dd4-b0ff-eed89b0e6b5d">
<variableUsages Id="95a65b9e-6ae4-482f-8538-6f5681b40be8">
<usages>
<variableUsagesHasUsages Id="74f48bf1-71cf-46e3-9d91-1a7a2f182545">
<aliasDeviceIoUsage Id="0ebaa0f4-14bf-4719-8c36-418767ea9da1" sdsId="43" channelId="17" functionId="1610682113" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="a48d32ef-83de-4eb3-aa55-1f739b9455c7">
<variableUsages Id="a705a678-65aa-4eda-b7ef-394eed0c84da">
<usages>
<variableUsagesHasUsages Id="c2bcc990-97ca-48f0-afb5-2b4acf495a6b">
<fbPortUsage Id="4046bbf2-f07e-4cdd-8829-5fc7e10f13c8">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="6b6f74a8-ac9f-4abb-ac58-ff209772d39d">
<inPortMoniker name="//Network1/FBDecouple1/DecIn1" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="32615b89-0e8b-4c7a-8bff-1f56b7321535">
<variable Id="1af20460-a591-497e-8f75-f2c062afd8a8" name="LaserStop" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="1968ef86-e244-4d0a-a6a4-dce17dff7fd5">
<variableUsages Id="91544522-a6cd-4b26-aae7-1257ba01abb9">
<usages>
<variableUsagesHasUsages Id="5a770306-8e15-4ad4-8054-c51248f7ef62">
<aliasDeviceIoUsage Id="81c6fb62-fe4b-4538-a024-7472e4744096" sdsId="43" channelId="18" functionId="1610682369" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="6d10f6f6-774f-477a-a90b-a20b15061f6a">
<variableUsages Id="2b18feb6-9ca1-45b2-9ac5-5713cc50e931">
<usages>
<variableUsagesHasUsages Id="095aa180-bfd5-4576-9348-60337073a0df">
<fbPortUsage Id="9a13a4ee-2159-4b66-b37c-6c15d044a6af">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="9661910b-934d-438d-85bd-8c23578ff406">
<inPortMoniker name="//Network1/FBDecouple1/DecIn2" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="4baab042-85da-4f65-b52e-3f1940d2690c">
<variable Id="6731131c-13e4-4185-8d51-a57a37c28df2" name="GroupPort_LSReducedSpeed" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="511efff6-2440-4a31-9e7d-f62baa8fb79e">
<variableUsages Id="0cdc4857-584b-4c79-943a-484214dfec4b">
<usages>
<variableUsagesHasUsages Id="cc3c072b-39d4-4482-a04e-3a3bcceee29f">
<fbPortUsage Id="a81649da-9c23-41f5-b2e7-04e70ccd3a4b">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="2dcc1ddb-8c4c-408c-925c-1fdd47d38857">
<outPortMoniker name="//Network1/FBDecouple1/DecOut1" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="266b4cf3-f24c-48c4-8ec4-e8b9a413c690">
<variableUsages Id="13cdb3c2-6e56-442a-8e14-d9ffa866d0cc">
<usages>
<variableUsagesHasUsages Id="80ebe913-4b37-4072-ab26-7db752768d5c">
<aliasDeviceIoUsage Id="ab54e194-f326-4c03-a56b-a4e075a3197d" sdsId="44" channelId="1" functionId="1131179972" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="373963e3-28db-400c-9a41-03da46b520df">
<variable Id="079d799a-a23b-4956-a30f-9f7f2f543864" name="GroupPort_LaserStop" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="a8aec5a4-92e9-4b6b-abd2-c92e38c1d92a">
<variableUsages Id="6edf1c36-6b76-4c55-af71-b43b28d8bd48">
<usages>
<variableUsagesHasUsages Id="289c83dd-24ff-4fdb-9551-559da7f2ff3d">
<fbPortUsage Id="00e37842-320c-4926-9b60-182c3a520ebc">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="61d52e9e-3f39-440c-9a95-407cf7f8f92d">
<outPortMoniker name="//Network1/FBDecouple1/DecOut2" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="09f68847-73be-42f1-be33-53c2d65dfa34">
<variableUsages Id="497159ba-a259-406c-b78b-99f1591269aa">
<usages>
<variableUsagesHasUsages Id="ae808622-5571-47d3-b3bb-c4edef33a502">
<aliasDeviceIoUsage Id="f95ff8a6-7dc3-475e-9ebc-02c96f2c8ad6" sdsId="41" channelId="1" functionId="1131179972" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="74676693-d628-4326-baf7-fd7a6f84e56f">
<variable Id="60b97667-91f4-4b93-8f0c-d9f520c92b9e" name="GroupPort_One" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="bbeaa237-150b-4862-83da-b40ff6f8becb">
<variableUsages Id="1793baf3-8188-461e-8adc-54b8f50bb95d">
<usages>
<variableUsagesHasUsages Id="d5637046-d3b5-4112-9196-c0db7abe6b8e">
<fbPortUsage Id="ee74445a-3417-482f-8ccb-abd4c0b58267">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="0c4f96db-4e84-4d80-b696-148c73c689f9">
<outPortMoniker name="//Network1/FBDecouple1/DecOut3" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="bcf2c2f7-da16-475e-a308-26bb003cd9e9">
<variableUsages Id="bb57d4e6-9e96-4e7b-85d7-5c2981cf1c37">
<usages>
<variableUsagesHasUsages Id="a31c7d3b-e2b5-4218-9708-a93af6eda037">
<aliasDeviceIoUsage Id="3d8ede30-daf7-4aa9-848f-8a6ba005cf62" sdsId="43" channelId="9" functionId="1879114753" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
<safetyApplicationHasVariables Id="1c4ce273-2b29-48f1-bc11-70b9f452ed21">
<variable Id="771f6da3-2185-42ea-9bb4-24e8d1cd451f" name="InputOne" isLocal="false">
<sourceUsages>
<variableHasSourceUsages Id="20035804-9ab7-4f57-a30b-2a8fdfc488f8">
<variableUsages Id="d9805697-20d3-447b-9c63-0310aadcf0fc">
<usages>
<variableUsagesHasUsages Id="b23520bf-f49c-48b2-8fb7-79c7939e5867">
<aliasDeviceIoUsage Id="1dcbf077-d48f-438f-8529-6e58e6201947" sdsId="30" channelId="5" functionId="1612775681" />
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasSourceUsages>
</sourceUsages>
<targetUsages>
<variableHasTargetUsages Id="2dad4992-259f-4df9-8987-f9bcaaf4461f">
<variableUsages Id="2c21bf2e-69b8-4ee6-85f9-313477c95460">
<usages>
<variableUsagesHasUsages Id="731af4e6-a3eb-4948-aa5f-aabfc528e70c">
<fbPortUsage Id="e84be742-7ea9-4a71-bd66-24f5e9d1bf04">
<functionBlockPort>
<fbPortUsageReferencesFunctionBlockPort Id="d2a800aa-8dbd-452f-93b7-1790537a75ae">
<inPortMoniker name="//Network1/FBDecouple1/DecIn3" />
</fbPortUsageReferencesFunctionBlockPort>
</functionBlockPort>
</fbPortUsage>
</variableUsagesHasUsages>
</usages>
</variableUsages>
</variableHasTargetUsages>
</targetUsages>
</variable>
</safetyApplicationHasVariables>
</variables>
</safetyApplication>

View File

@@ -0,0 +1,224 @@
<?xml version="1.0" encoding="utf-8"?>
<safetyApplicationLanguageDiagram Crc="2068125780" dslVersion="1.3.0.0" Id="a9d6f82b-36f6-4d25-a026-addbbc37bb08" absoluteBounds="0, 0, 16.625, 16.625" name="TwinSAFE">
<safetyApplicationMoniker name="/" />
<nestedChildShapes>
<networkSwimLane Id="befbd574-1ee5-4859-83b8-00aa0253601f" absoluteBounds="0, 0, 16.625, 9.25">
<networkMoniker name="//Network1" />
<nestedChildShapes>
<fBEstopShape Id="09d0e4b1-bd8b-43bb-abed-04c96fe7dbcf" absoluteBounds="2.25, 0.5, 3.35, 4.45">
<fBEstopMoniker name="//Network1/FBEstop1" />
<relativeChildShapes>
<inPortShape Id="2d085fba-e945-4a96-8d58-110008e0199a" absoluteBounds="2.17, 1.245, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/Restart" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="86cc6fac-5000-40e5-8604-1998a1a8f23a" absoluteBounds="2.17, 1.8075, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="acf5b86f-8f82-4f0d-8f5e-2500bc7a8b31" absoluteBounds="2.17, 2.0325, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="2c3c27ad-2047-4b24-bd06-d6b97f4ff0d9" absoluteBounds="2.17, 2.3475, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn3" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="2a0fa36c-fe98-4f08-95b8-80aabbe35ee5" absoluteBounds="2.17, 2.5725000000000002, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn4" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="5941b7fa-bd0f-426a-a391-e3be5d6ff901" absoluteBounds="2.17, 2.8875, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn5" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="127a6e91-b02d-40a5-a83d-1f841ce77e05" absoluteBounds="2.17, 3.1125000000000003, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn6" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="457d9da4-194c-4f9e-a8e6-a8ceef434380" absoluteBounds="2.17, 3.4275, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn7" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="620338ee-ac2a-4175-b615-1e029b7ff1cf" absoluteBounds="2.17, 3.6525000000000003, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EStopIn8" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="49a327fd-c724-472e-807c-72c9ce36934c" absoluteBounds="2.17, 4.2375000000000007, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EDM1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="15672d4f-69f4-4ea4-ba8f-1b3e03a79d20" absoluteBounds="2.17, 4.4625, 0.15, 0.15">
<inPortMoniker name="//Network1/FBEstop1/EDM2" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="0626a22d-f125-450a-9b98-23cfe7d377a5" absoluteBounds="5.5, 1.7850000000000001, 0.15, 0.15">
<outPortMoniker name="//Network1/FBEstop1/Error" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="4c37295b-c965-40be-b2e9-ec9c84e9d41b" absoluteBounds="5.5, 3.6750000000000003, 0.15, 0.15">
<outPortMoniker name="//Network1/FBEstop1/EStopOut" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="b71dfa9a-da12-412f-8810-d8e5700ab672" absoluteBounds="5.5, 3.9450000000000003, 0.15, 0.15">
<outPortMoniker name="//Network1/FBEstop1/EStopDelOut" />
<relativeChildShapes />
</outPortShape>
<paramPortShape Id="63f45fc9-8018-4070-91f1-9c457de4f7e3" absoluteBounds="3.82, 3.7750000000000004, 0.7, 0.2">
<parameterPortMoniker name="//Network1/FBEstop1/Delay Time (ms)" />
<relativeChildShapes />
</paramPortShape>
</relativeChildShapes>
</fBEstopShape>
<fBDecoupleShape Id="34a61197-76eb-42c7-9fb2-c39ecec1879d" absoluteBounds="2.25, 5.75, 2.75, 3.25">
<fBDecoupleMoniker name="//Network1/FBDecouple1" />
<relativeChildShapes>
<inPortShape Id="da14f9cd-f2fd-4384-979d-1dcd11137772" absoluteBounds="2.17, 6.7650000000000006, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="a4a7a3ce-ab1f-40b7-9d79-78fc4a8c45df" absoluteBounds="2.17, 7.035, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="99d08acf-e53b-4cba-b5ec-5057668ba1fa" absoluteBounds="2.17, 7.305, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn3" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="c0c037e1-ee86-43f6-8773-acfdf5831fb5" absoluteBounds="2.17, 7.575, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn4" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="4ea97df9-34ea-495c-b5c7-5e3a2de4c432" absoluteBounds="2.17, 7.8450000000000006, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn5" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="f211affc-667c-47d8-a7de-c58c2f2200b3" absoluteBounds="2.17, 8.115, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn6" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8d216019-de5d-4667-b20d-ba5b88b98a54" absoluteBounds="2.17, 8.385, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn7" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="49158284-109a-4546-8d06-5f7312939286" absoluteBounds="2.17, 8.6550000000000011, 0.15, 0.15">
<inPortMoniker name="//Network1/FBDecouple1/DecIn8" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="b580359c-d6b3-482a-9a02-8cd21bf549c8" absoluteBounds="4.9, 6.7650000000000006, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut1" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="f2e38640-1894-4624-b93f-e7e8304ea665" absoluteBounds="4.9, 7.035, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut2" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="0dfbdeae-ca49-4990-a9e3-2a9928441776" absoluteBounds="4.9, 7.305, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut3" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="bdcb5b9a-b2e1-4672-92ed-fe4fc1d28992" absoluteBounds="4.9, 7.575, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut4" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="66094ba0-b397-48f4-a434-49c7b6c7987f" absoluteBounds="4.9, 7.8450000000000006, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut5" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="53b1ab3b-772c-4135-8934-a9abee5ab12a" absoluteBounds="4.9, 8.115, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut6" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="baee53e4-59d4-4442-acad-5ca0cd38c4c0" absoluteBounds="4.9, 8.385, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut7" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="209daa38-bf4a-4d84-82e4-85c7c8ea1a54" absoluteBounds="4.9, 8.6550000000000011, 0.15, 0.15">
<outPortMoniker name="//Network1/FBDecouple1/DecOut8" />
<relativeChildShapes />
</outPortShape>
</relativeChildShapes>
</fBDecoupleShape>
</nestedChildShapes>
</networkSwimLane>
<networkSwimLane Id="1669eb2f-01fb-4d39-b3c3-98ba7102721a" absoluteBounds="0, 9.25, 16.625, 7.3500000000000014">
<networkMoniker name="//Network2" />
<nestedChildShapes>
<fBMonShape Id="d541c905-35c2-42d0-b38d-49acf7916613" absoluteBounds="3, 9.875, 3.35, 4.45">
<fBMonMoniker name="//Network2/FBMon1" />
<relativeChildShapes>
<inPortShape Id="b7bf6abc-1ba2-4d0f-8595-0b5b9625221e" absoluteBounds="2.92, 10.62, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/Restart" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8519b44b-577c-4064-9094-e54eda5de26e" absoluteBounds="2.92, 11.182500000000001, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="307c9cfa-fdd3-4264-bf94-de327a29236b" absoluteBounds="2.92, 11.4075, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="f77391aa-1de8-4c64-ad17-7f09de595f12" absoluteBounds="2.92, 11.7225, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn3" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8ae4d776-e275-4419-88c8-40825d6da7c1" absoluteBounds="2.92, 11.9475, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/MonIn4" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="8b06b089-6ba9-4ecf-80e0-2ad5441769ad" absoluteBounds="2.92, 12.5325, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/Secure1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="220e29a9-384a-4f17-a77a-0dabe036beba" absoluteBounds="2.92, 12.7575, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/Secure2" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="268d69e4-6f8a-4aca-8e96-6350822b8eb9" absoluteBounds="2.92, 13.6125, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/EDM1" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="531eb72d-1864-4848-9d6e-9f1088ff6fbb" absoluteBounds="2.92, 13.8375, 0.15, 0.15">
<inPortMoniker name="//Network2/FBMon1/EDM2" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="0a6e3b67-940e-4a49-8aab-1ad6bc00d87a" absoluteBounds="6.25, 11.16, 0.15, 0.15">
<outPortMoniker name="//Network2/FBMon1/Error" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="07537b5d-1658-4c41-9a72-4aed13a7c229" absoluteBounds="6.25, 13.05, 0.15, 0.15">
<outPortMoniker name="//Network2/FBMon1/MonOut" />
<relativeChildShapes />
</outPortShape>
<outPortShape Id="2b2afdd5-ea81-473b-8ae3-8097b04bb12c" absoluteBounds="6.25, 13.32, 0.15, 0.15">
<outPortMoniker name="//Network2/FBMon1/MonDelOut" />
<relativeChildShapes />
</outPortShape>
<paramPortShape Id="d01bb36c-4ec0-4986-99dc-9ea3679c4c52" absoluteBounds="4.57, 13.200000000000001, 0.7, 0.2">
<parameterPortMoniker name="//Network2/FBMon1/Delay Time (ms)" />
<relativeChildShapes />
</paramPortShape>
</relativeChildShapes>
</fBMonShape>
<fBSrShape Id="a2b241de-6cc4-484f-af6e-703ac2a5620f" absoluteBounds="3, 14.5, 2.75, 1.85">
<fBSrMoniker name="//Network2/FBSr1" />
<relativeChildShapes>
<inPortShape Id="4178867f-35ba-42d0-83b6-413ff5df438d" absoluteBounds="2.92, 15.245, 0.15, 0.15">
<inPortMoniker name="//Network2/FBSr1/Set" />
<relativeChildShapes />
</inPortShape>
<inPortShape Id="a94417f4-0643-4948-a6b5-0024e1119ea1" absoluteBounds="2.92, 15.515, 0.15, 0.15">
<inPortMoniker name="//Network2/FBSr1/Reset" />
<relativeChildShapes />
</inPortShape>
<outPortShape Id="6ac6e4e5-c5e9-416b-bcb8-dd7e703e804f" absoluteBounds="5.65, 15.785, 0.15, 0.15">
<outPortMoniker name="//Network2/FBSr1/SrOut" />
<relativeChildShapes />
</outPortShape>
</relativeChildShapes>
</fBSrShape>
</nestedChildShapes>
</networkSwimLane>
</nestedChildShapes>
</safetyApplicationLanguageDiagram>

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Crc="2220659504" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{764047e3-9655-42e0-af97-1c297933dac5}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>TwinCAT3SafePlcProject</RootNamespace>
<AssemblyName>TwinCAT3SafePlcProject</AssemblyName>
<FileUpgradeFlags />
<UpgradeBackupLocation />
<OldToolsVersion>2.0</OldToolsVersion>
<TargetSystem>EL6900</TargetSystem>
<ProgrammingLanguage>Graphical Editor</ProgrammingLanguage>
<Worker>M.Heisig</Worker>
<IntProjName>Safety</IntProjName>
<IsNewCreated>false</IsNewCreated>
<SPlcProjVersion>1.4.0.0</SPlcProjVersion>
<NextSdsId>46</NextSdsId>
<DocuEditor>M.Heisig</DocuEditor>
<PlotDate>2021-11-12</PlotDate>
<CompanyName>Beckhoff Automation &amp; Co. KG</CompanyName>
<CompanyLogo>Beckhoff Automation &amp; Co. KG</CompanyLogo>
<FbPerPage>0</FbPerPage>
<AddUserAdministrationPages>False</AddUserAdministrationPages>
<AddProjectVersionHistoryPages>False</AddProjectVersionHistoryPages>
<AddCustomPages>False</AddCustomPages>
<TextBox />
<AddMultiSettingDocuments>False</AddMultiSettingDocuments>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>false</DebugSymbols>
<OutputPath>bin\Release\</OutputPath>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<None Include="Hauptachsen\Alias Devices\AliasEL1918.sds" />
<None Include="Hauptachsen\Alias Devices\AliasErrorAcknowledgement.sds" />
<None Include="Hauptachsen\Alias Devices\AliasEStopDirect.sds" />
<None Include="Hauptachsen\Alias Devices\AliasEStopReset.sds" />
<None Include="Hauptachsen\Alias Devices\AliasFSoELaser.sds" />
<None Include="Hauptachsen\Alias Devices\AliasLSReducedSpeed.sds" />
<None Include="Hauptachsen\Alias Devices\AliasLSStopDirect.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeSpindel.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeWickler.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeWZWArm.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeWZWKette.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeXMaster.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeXSlave.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeY.sds" />
<None Include="Hauptachsen\Alias Devices\AliasProfisafeZ.sds" />
<None Include="Hauptachsen\Alias Devices\AliasRun.sds" />
<None Include="Hauptachsen\Hauptachsen.sal" />
<None Include="Hauptachsen\Hauptachsen.sal.diagram">
<Visible>false</Visible>
<DependentUpon>Hauptachsen\Hauptachsen.sal</DependentUpon>
</None>
<None Include="TargetSystemConfig.xml">
<Visible>false</Visible>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="Hauptachsen" />
<Folder Include="Hauptachsen\Alias Devices" />
<Folder Include="User FBs" />
</ItemGroup>
<ProjectExtensions>
<DocumentationProperty>
<ProjectVersionHistories />
</DocumentationProperty>
</ProjectExtensions>
</Project>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<TargetSystemConfig Crc="2709245157" Version="1.4">
<TargetSystemType>HSafetyPLC</TargetSystemType>
<TargetSystemSubType>EL6910</TargetSystemSubType>
<IsExternalDevice>false</IsExternalDevice>
<TargetSystemObjectId>50462727</TargetSystemObjectId>
<TargetSystemObjectName>Klemme 7 (EL6910)</TargetSystemObjectName>
<SoftwareVersion>04 (V01.11) </SoftwareVersion>
<SerialNumber>2494812</SerialNumber>
<ProjectCRC>22512</ProjectCRC>
<MapProjectCRC>false</MapProjectCRC>
<MapSerialNumber>false</MapSerialNumber>
<VersionNumber>1</VersionNumber>
<FSOEAddress>1</FSOEAddress>
<DipSwitch>1</DipSwitch>
<AmsNetID>172.18.236.82.2.1</AmsNetID>
<AmsPort>1008</AmsPort>
<ConnectionInfoDataConfigOld>false</ConnectionInfoDataConfigOld>
<TakeOverSafetyAliasDeviceNamesInProcessImage>false</TakeOverSafetyAliasDeviceNamesInProcessImage>
<TakeOverStandardAliasDeviceNamesInProcessImage>false</TakeOverStandardAliasDeviceNamesInProcessImage>
<BackupRestore Needed="0" Activated="false" RestoreUserAdministration="false" />
</TargetSystemConfig>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<GVL Name="Global_CNC" Id="{53b0382d-e5c1-4d3c-90f4-a474264a53f5}">
<Declaration><![CDATA[VAR_GLOBAL CONSTANT
MAX_USED_CHANNEL_IDX : INT := 0; (* Max index of channel that is used starting at 0, example: 1 -> totally 2 channels, maximum of 11 (12 channels) is allowed here *)
libVersion : ST_LibVersion := stLibVersion_Tc3_CNC;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -0,0 +1,247 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_CNCAxesHandler" Id="{09e86179-f0c7-4e63-9c4c-17d3691b5ccb}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_CNCAxesHandler
VAR
nHliAxisIdx : INT;
fbCNC_Axis : ARRAY[0..HLI_SYS_AX_MAXIDX] OF FB_CNCAxis;
nFirstSpindle : INT := -1;
fbHandleSpindleTechno : HLI3_HandleSpindleTechnoGearChange;
M3,M4,M5,M19 : BOOL;
MDummy : BOOL;
M40, M41, M42, M43, M44, M45: BOOL;
fbAxesError : FB_AxesError;
// FB_CNCAxis Sample
// fbAxis_X : FB_CNCAxis;
// stParameter : ST_CNC_AX_Parameter;
stOptions : ST_CNC_AX_Options;
// stPLCopen : ST_CNC_AX_PLCopen;
(*
fbHandleSpindleTechnoPlcSp : HLI3_HandleSpindleTechno;
SM3,SM4,SM5,SM19 : bool;
*)
bCalibrationCam: BOOL;
fbMoveSpindle: HLI3_MoveSpindle;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(****************************************************************************************)
(* POU: PRG_AxesHandler *)
(* Type: PRG *)
(* Author: TV,MiB *)
(* Date: 20.02.2019 *)
(* Rev.: 1.6 *)
(* ------------------------------------------------------------------------------------ *)
(* Desc: Description *)
(****************************************************************************************)
fbAxesError(bReset := PLCReset);
(****************************************************************************************)
(* Release of all reachable axes *)
(****************************************************************************************)
PLCStatusAxisEnabled := TRUE;
// stOptions.bProbingSignal := GVL_OEM.bMesstaster;
FOR nHliAxisIdx := 0 TO UDINT_TO_INT(gNrAx-1) DO
fbCNC_Axis[nHliAxisIdx](
nLogAxisNo := UINT_TO_INT(gpAx[nHliAxisIdx]^.head.log_ax_nr_r),
bEnable := PLCAxisEnable);
IF (NOT fbCNC_Axis[nHliAxisIdx].stStatus.bIsEnabled) THEN // if one axis status is "not enabled" -> reset PLCStatusAxisEnabled
PLCStatusAxisEnabled := FALSE;
END_IF
IF HLI3_CheckAxisValid(nHliAxisIdx) THEN
IF nFirstSpindle = -1 AND gpAx[nHliAxisIdx]^.ipo_state.spindle_axis_r THEN (* store HLIIndex of first spindle *)
nFirstSpindle := nHliAxisIdx;
END_IF
END_IF
END_FOR
// FB_CNCAxis Sample
// CNC Axis Options
// stOptions.strPathCompTable;
// stOptions.bActivateCompTable;
// stOptions.bReducedSpeed;
// stOptions.bReducedSpeedZone1;
// stOptions.bReducedSpeedZone2;
// stOptions.bResetCalibration;
// CNC Parameters
// stParameter.bWriteParameter;
// stParameter.nNumParameters := 2;
// stParameter.strTempPath := 'C:\';
// stParameter.ParamList[0].strName := 'kenngr.swe_pos';
// stParameter.ParamList[0].strValue := '30000000';
// stParameter.ParamList[1].strName := 'kenngr.swe_neg';
// stParameter.ParamList[1].strValue := '0';
// PLCOpen
// stPLCopen.nOverride;
// stPLCopen.bExecuteHoming;
// stPLCopen.bCamSignal;
// stPLCopen.bExecuteMoveAbsolute;
// stPLCopen.bExecuteReset;
// stPLCopen.fPosition;
// stPLCopen.fVelocity;
// stPLCopen.fAcceleration;
// stPLCopen.fJerk;
(*
fbAxis_X(
nLogAxisNo:=1,
bEnable:= PLCAxisEnable,
bCalibrationCam:= bCalibrationCam,
bSetRefOffset:= ,
fRefOffset:= ,
bFeedhold:= ,
stOptions:= stOptions,
stParameter:= stParameter,
stPLCopen:= stPLCopen,
stStatus=> );
*)
(* if there exits spindles use the first one for spindleoverride *)
IF nFirstSpindle <> -1 THEN
HLI3_SetAxisOverride(nHliAxisIdx:= nFirstSpindle , nOverride:= PLCSpindleOverride *10);
fbHandleSpindleTechno(
nHliAxisIdx:=nFirstSpindle ,
bIsChannelSpecific:= FALSE,
bHandleGearChange := FALSE,
nRevolution=> ,
nPosition=> ,
bError=> ,
nErrorId=> ,
M03:= M3,
M04:= M4,
M05:= M5,
M19:= M19,
M40 := M40,
M41 := M41,
M42 := M42,
M43 := M43,
M44 := M44,
M45 := M45,
);
(* acknowledge all spindle M funnctions immediately *)
M3 := FALSE;
M4 := FALSE;
M5 := FALSE;
M19 := FALSE;
(* Example for starting and stopping a spindle in manual mode in first channel *)
IF (CNCSystem.Channel[0].ActMode = HLI_IMCM_MANUAL_MODE) THEN
fbMoveSpindle(
nHliAxisIdx:=nFirstSpindle ,
nSpeed:= nSpindleRpm , (* defined in Global_HMI *)
bStart:=bSpindleStart, (* defined in Global_HMI *)
bStop:= bSpindleStop , (* defined in Global_HMI *)
bBusy=> ,
bError=> ,
nErrID=> ,
sErrText=> );
END_IF
IF (bSpindleStart AND NOT fbMoveSpindle.bBusy) THEN
bSpindleStart := FALSE;
END_IF
IF (bSpindleStop AND NOT fbMoveSpindle.bBusy) THEN
bSpindleStop := FALSE;
END_IF
END_IF
(* Howto use plc controlled spindle : *)
(*
fbHandleSpindleTechnoPlcSp(
nHliAxisIdx:= 0 ,
nHliChannelIdx:= 0 ,
bIsChannelSpecific:= TRUE,
nLogAxisNoChannelSpecific:= 95 ,
bHandleGearChange:= FALSE ,
bChannelReset:= FALSE,
nRevolution=> ,
nPosition=> ,
bError=> ,
nErrorId=> ,
M03:= SM3,
M04:= SM4,
M05:= SM5,
M19:= SM19);
*)
]]></ST>
</Implementation>
<LineIds Name="PRG_CNCAxesHandler">
<LineId Id="3" Count="8" />
<LineId Id="308" Count="1" />
<LineId Id="12" Count="3" />
<LineId Id="226" Count="0" />
<LineId Id="446" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="103" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="104" Count="0" />
<LineId Id="337" Count="1" />
<LineId Id="98" Count="0" />
<LineId Id="20" Count="5" />
<LineId Id="108" Count="0" />
<LineId Id="107" Count="0" />
<LineId Id="109" Count="0" />
<LineId Id="187" Count="0" />
<LineId Id="174" Count="0" />
<LineId Id="188" Count="0" />
<LineId Id="186" Count="0" />
<LineId Id="176" Count="0" />
<LineId Id="179" Count="5" />
<LineId Id="177" Count="0" />
<LineId Id="192" Count="0" />
<LineId Id="113" Count="7" />
<LineId Id="26" Count="0" />
<LineId Id="193" Count="0" />
<LineId Id="191" Count="0" />
<LineId Id="206" Count="0" />
<LineId Id="197" Count="0" />
<LineId Id="194" Count="0" />
<LineId Id="199" Count="0" />
<LineId Id="201" Count="0" />
<LineId Id="208" Count="0" />
<LineId Id="210" Count="0" />
<LineId Id="212" Count="0" />
<LineId Id="214" Count="0" />
<LineId Id="213" Count="0" />
<LineId Id="211" Count="0" />
<LineId Id="217" Count="5" />
<LineId Id="281" Count="0" />
<LineId Id="223" Count="2" />
<LineId Id="209" Count="0" />
<LineId Id="255" Count="0" />
<LineId Id="229" Count="0" />
<LineId Id="28" Count="7" />
<LineId Id="366" Count="0" />
<LineId Id="36" Count="19" />
<LineId Id="394" Count="1" />
<LineId Id="399" Count="17" />
<LineId Id="396" Count="2" />
<LineId Id="56" Count="22" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.10">
<POU Name="PRG_CNCChannelHandler" Id="{1fecdf9c-539b-4107-8f04-7fd2431b36ce}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_CNCChannelHandler
VAR
nChan : INT;
nOldSelectedChannel : UDINT;
CNCChannel : ARRAY[0..MAX_USED_CHANNEL_IDX] OF HLI3_CNCChannel;
BlockSearch_Channel : ARRAY[0..MAX_USED_CHANNEL_IDX] OF HLI3_BlockSearch;
ErrorHandler_Channel : ARRAY[0..MAX_USED_CHANNEL_IDX] OF FB_ChannelError;
nChanNo: UDINT;
i: INT;
stOptions : ST_CNC_CH_Options;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[(****************************************************************************************)
(* POU: PRG_ChannelHandler *)
(* Type: PRG *)
(* Author: HR / TV / MiB *)
(* Date: 23.01.11 *)
(* Last: 29.03.18 *)
(* Rev.: 1.6 *)
(* ------------------------------------------------------------------------------------ *)
(* Desc: Description *)
(****************************************************************************************)
(****************************************************************************************)
(* Map CNC function selection from HMI to selected channel (and state vice versa) *)
(****************************************************************************************)
IF (nOldSelectedChannel <>INT_TO_UDINT(PLCSelectedChannel)) THEN
PLCChannelSignals.SingleBlock := PLCMachineMode[PLCSelectedChannel].ChannelSignals.SingleBlock;
PLCChannelSignals.PrgBlockIgnore := PLCMachineMode[PLCSelectedChannel].ChannelSignals.PrgBlockIgnore;
PLCChannelSignals.M01Stop := PLCMachineMode[PLCSelectedChannel].ChannelSignals.M01Stop;
PLCChannelSignals.Backward := PLCMachineMode[PLCSelectedChannel].ChannelSignals.Backward;
PLCChannelSignals.FeedHold := PLCMachineMode[PLCSelectedChannel].ChannelSignals.FeedHold;
nOldSelectedChannel := INT_TO_UDINT(PLCSelectedChannel);
END_IF
PLCMachineMode[PLCSelectedChannel].ChannelSignals.SingleBlock := PLCChannelSignals.SingleBlock;
PLCMachineMode[PLCSelectedChannel].ChannelSignals.PrgBlockIgnore := PLCChannelSignals.PrgBlockIgnore;
PLCMachineMode[PLCSelectedChannel].ChannelSignals.M01Stop := PLCChannelSignals.M01Stop;
PLCMachineMode[PLCSelectedChannel].ChannelSignals.Backward := PLCChannelSignals.Backward;
PLCMachineMode[PLCSelectedChannel].ChannelSignals.FeedHold := PLCChannelSignals.FeedHold;
stOptions.bReferenceModeStartRequired := FALSE;
FOR i := 0 TO MAX_USED_CHANNEL_IDX DO
nChan := i;
IF (HLI3_CheckChannelValid(nChan)) THEN
(* Error handler for channel 1 *)
ErrorHandler_Channel[nChan](nChanIdx := nCHan);
(* Channel interface *)
CNCChannel[nChan]
(nChanIdx := nChan,
// Operation Mode with VAR_IN_OUT Variables
bModeStandby := PLCMachineMode[nChan].Standby,
bModeAutomatic := PLCMachineMode[nChan].Automatic,
bModeManual := PLCMachineMode[nChan].Manual,
bModeMDI := PLCMachineMode[nChan].MDI,
bModeReference := PLCMachineMode[nChan].Homing,
// Operation State with VAR_IN_OUT Variables
bStateSelect := PLCMachineMode[nChan].Select,
bStateReady := PLCMachineMode[nChan].Ready,
bStateStart := PLCMachineMode[nChan].Start,
bStateStop := PLCMachineMode[nChan].Stop,
bStateReset := PLCMachineMode[nChan].Reset,
// Operation Mode with VAR_IN Varaibles, the command is executed with a rising edge
bCmdAutomatic := FALSE,
bCmdManual := FALSE,
bCmdReference := FALSE,
bCmdMDI := FALSE,
// Operation State with VAR_IN Varaibles, the command is executed with a rising edge
bCmdStart := FALSE,
bCmdStop := FALSE,
bCmdReset := FALSE,
// EmergencyStop
bEmergencyStop := FALSE, (* If TRUE the interpolation will be aborted, Signal is no TwinSAFE function !*)
// Override
nFeedOverride := PLCFeedOverride * 10,
nRapidFeedOverride := PLCFeedOverride * 10,
// Special Functions
sProgramName := PLCMachineMode[nChan].ProgramName,
sMDIString := PLCMachineMode[nChan].MDIString,
bBackwardMotion := PLCMachineMode[nChan].ChannelSignals.Backward,
bPrgBlockIgnore := PLCMachineMode[nChan].ChannelSignals.PrgBlockIgnore,
bFeedHold := PLCMachineMode[nChan].ChannelSignals.FeedHold,
bSingleBlock := PLCMachineMode[nChan].ChannelSignals.SingleBlock,
bDoSingleBlock := PLCMachineMode[nChan].ChannelSignals.DoSingleBlock,
bM01Stop := PLCMachineMode[nChan].ChannelSignals.M01Stop,
nSyntaxCheck := PLCMachineMode[nChan].SyntaxCheck.nType,
bM30Acknowledgement:= TRUE,
// Manual Mode
stManualModeParameter := stManualModeParameter[nChan],
stManualModeControlElements := stManualModeControlElements[nChan],
stManualModeControlElementState := stManualModeControlElementState,
// Options
stOptions := stOptions
);
(* Handle block search *)
BlockSearch_Channel[nChan]
(nChanIdx := nChan,
bStartRead := PLCMachineMode[nChan].BlockSearch.bStartRead, (* Edge signal *)
bStartWrite := PLCMachineMode[nChan].BlockSearch.bStartWrite, (* Edge signal *)
BlockSearch := PLCMachineMode[nChan].BlockSearch
);
CNCSystem.Channel[nChan].ActDistance := DINT_TO_LREAL(BlockSearch_Channel[nChan].coveredDistance_AfterReset) / 10.0;
CNCSystem.Channel[nChan].ActBlockCount := BlockSearch_Channel[nChan].actualBlockCount_AfterReset;
END_IF
END_FOR
]]></ST>
</Implementation>
<LineIds Name="PRG_CNCChannelHandler">
<LineId Id="3" Count="28" />
<LineId Id="143" Count="0" />
<LineId Id="32" Count="8" />
<LineId Id="47" Count="15" />
<LineId Id="123" Count="0" />
<LineId Id="125" Count="2" />
<LineId Id="124" Count="0" />
<LineId Id="118" Count="0" />
<LineId Id="129" Count="1" />
<LineId Id="128" Count="0" />
<LineId Id="107" Count="1" />
<LineId Id="103" Count="2" />
<LineId Id="63" Count="9" />
<LineId Id="102" Count="0" />
<LineId Id="101" Count="0" />
<LineId Id="73" Count="2" />
<LineId Id="140" Count="1" />
<LineId Id="77" Count="14" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.3">
<POU Name="PRG_CNCManualMode" Id="{3480dcd1-b4df-4004-b394-897655766feb}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_CNCManualMode
VAR
fbUintUdInt: ARRAY [0..MAX_USED_CHANNEL_IDX] OF FB_Uint_Udint;
nHandwheel : UINT; (* increments for handwheel (e.g. EL5101 *)
nHandWheelBig: UDINT;
i: INT;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[
FOR i := 0 TO MAX_USED_CHANNEL_IDX DO
IF (HLI3_CheckChannelValid(i)) THEN
stManualModeParameter[i].stChannelParameter.nChanIdx := i; (* Channel 1 *)
stManualModeParameter[i].stChannelParameter.nInc := PLCMachineMode[i].ManualMode.nInc * 10;
stManualModeParameter[i].stChannelParameter.bG200ConfigurationViaPLC := TRUE;
stManualModeParameter[i].stChannelParameter.eManualType := UINT_TO_INT(PLCMachineMode[i].ManualMode.nManualTyp);
IF (stManualModeParameter[i].stChannelParameter.eManualType = E_CNC_ManualType.Handwheel AND i <> PLCSelectedChannel) THEN (* if in Handwheel mode and the channel is NOT selected -> leave handwheel mode and change to TippMode*)
stManualModeParameter[i].stChannelParameter.eManualType := E_CNC_ManualType.TippMode;
END_IF
stManualModeParameter[i].stChannelParameter.stManualOption.bTrafoActive := PLCMachineMode[i].ManualMode.stManualOption.bTrafoActive;
stManualModeParameter[i].stChannelParameter.stManualOption.bEcsActive := PLCMachineMode[i].ManualMode.stManualOption.bEcsActive;
stManualModeParameter[i].stChannelParameter.stManualOption.eZeroOffset := PLCMachineMode[i].ManualMode.stManualOption.eZeroOffset;
stManualModeParameter[i].stChannelParameter.nHandwheelResolution := UDINT_TO_DINT(PLCMachineMode[i].ManualMode.nHwResolution); (* 0.1 µm /rev (from HMI) *)
stManualModeParameter[i].stAxisParameter.stControlUnit[0].nLogAxisNr := PLCMachineMode[i].ManualMode.nLogAxisNumber; (* Log. Achs Nummer *)
IF stManualModeParameter[i].stAxisParameter.stControlUnit[0].nLogAxisNr = 0 THEN
stManualModeParameter[i].stAxisParameter.stControlUnit[0].nLogAxisNr := gpCh[i]^.bahn_state.coord_r[0].log_achs_nr_r;
PLCMachineMode[i].ManualMode.nLogAxisNumber := gpCh[i]^.bahn_state.coord_r[0].log_achs_nr_r;
END_IF
stManualModeParameter[i].stAxisParameter.stControlUnit[0].nSpeed := LREAL_TO_UDINT(PLCMachineMode[i].ManualMode.nSpeed * 16.666);
stManualModeControlElements[i].stControlKeys[0].bKeyNeg := PLCMachineMode[i].ManualMode.bKeyNeg;
stManualModeControlElements[i].stControlKeys[0].bKeyPos := PLCMachineMode[i].ManualMode.bKeyPos;
stManualModeControlElements[i].stControlKeys[0].bKeyRapid := PLCMachineMode[i].ManualMode.bKeyRapid;
(* the cnc needs an UDINT for handwheel increments, fbUintUdint extends an UInt to an UDINT *)
(* the resoltion of the handwheel is parameterized in CNC-Task GEO/Manual MDS: (e.g. 400 handwheel inc / handwheel revolution
hr_data[0].hr_aufl_z 400 ( P-MANU-00005 : Handwheel resolution numerator
hr_data[0].hr_aufl_n 1 ( P-MANU-00006 : Handwheel resolution denominator
*)
fbUintUdInt[i](nInSmall := nHandwheel, nBig := nHandWheelBig);
stManualModeControlElements[i].nHandwheelInc[0] := UDINT_TO_DINT(nHandWheelBig);
END_IF
END_FOR
]]></ST>
</Implementation>
<LineIds Name="PRG_CNCManualMode">
<LineId Id="3" Count="6" />
<LineId Id="52" Count="0" />
<LineId Id="10" Count="8" />
<LineId Id="59" Count="0" />
<LineId Id="19" Count="25" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<POU Name="PRG_CNCVariablesViewer" Id="{da8e67fd-e008-4579-a9d5-34610f25362d}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_CNCVariablesViewer
VAR
fbReadCNCVariables : FB_ReadCNCVariables;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[fbReadCNCVariables(
bEnable:= TRUE,
nChanIdx:= PLCSelectedChannel,
eVariablesType:= eVariablesType,
tIntervall:= T#1S,
stCNCVariablesViewer_Data:= stCNCVariablesViewer_Data);]]></ST>
</Implementation>
<LineIds Name="PRG_CNCVariablesViewer">
<LineId Id="3" Count="4" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.17">
<POU Name="PRG_ManualFnc" Id="{5971ccc3-5532-4fb7-82e7-175bb16004d6}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_ManualFnc
VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[
ManualFnc[0].headerText := 'HeaderText 1';
ManualFnc[0].addText := 'addText';
ManualFnc[0].infoText1 := 'infoText1';
ManualFnc[0].infoText2 := 'infoText2';
ManualFnc[0].infoText3 := 'infoText3';
ManualFnc[0].infoText4 := 'infoText4';
ManualFnc[0].error := FALSE;
ManualFnc[0].left.key.text := 'left.key.text';
ManualFnc[0].left.status.text := 'left.status.text';
ManualFnc[0].left.key.disable := TRUE;
ManualFnc[0].left.status.colorChange := TRUE;
ManualFnc[0].right.key.text := 'right.key.text';
ManualFnc[0].right.status.text := 'right.status.text';
ManualFnc[0].right.key.colorChange := TRUE;
ManualFnc[1].headerText := 'HeaderText 2';
ManualFnc[1].addText := '';
ManualFnc[1].infoText1 := 'infoText1';
ManualFnc[1].infoText2 := 'infoText2';
ManualFnc[1].infoText3 := 'infoText3';
ManualFnc[1].infoText4 := 'infoText4';
ManualFnc[1].error := FALSE;
ManualFnc[1].select := FALSE;
ManualFnc[1].left.key.text := 'left.key.text';
ManualFnc[1].left.status.text := 'left.status.text';
ManualFnc[1].left.key.disable := FALSE;
ManualFnc[1].left.status.colorChange := FALSE;
ManualFnc[1].right.key.text := 'right.key.text';
ManualFnc[1].right.status.text := 'right.status.text';
ManualFnc[1].right.key.colorChange := FALSE;
ManualFnc[2].headerText := 'HeaderText 3';
ManualFnc[2].addText := 'addText';
ManualFnc[2].infoText1 := 'infoText1';
ManualFnc[2].infoText2 := 'infoText2';
ManualFnc[2].infoText3 := 'infoText3';
ManualFnc[2].infoText4 := 'infoText4';
ManualFnc[2].error := TRUE;
ManualFnc[2].left.key.text := 'left.key.text';
ManualFnc[2].left.status.text := 'left.status.text';
ManualFnc[2].left.key.disable := TRUE;
ManualFnc[2].left.status.colorChange := TRUE;
ManualFnc[2].right.key.text := 'right.key.text';
ManualFnc[2].right.status.text := 'right.status.text';
ManualFnc[2].right.key.colorChange := TRUE;
ManualFnc[3].headerText := 'HeaderText 4';
ManualFnc[3].addText := '';
ManualFnc[3].infoText1 := 'infoText1';
ManualFnc[3].infoText2 := 'infoText2';
ManualFnc[3].infoText3 := 'infoText3';
ManualFnc[3].infoText4 := 'infoText4';
ManualFnc[3].error := FALSE;
ManualFnc[3].select := FALSE;
ManualFnc[3].left.key.text := 'left.key.text';
ManualFnc[3].left.status.text := 'left.status.text';
ManualFnc[3].left.key.disable := FALSE;
ManualFnc[3].left.status.colorChange := FALSE;
ManualFnc[3].right.key.text := 'right.key.text';
ManualFnc[3].right.status.text := 'right.status.text';
ManualFnc[3].right.key.colorChange := FALSE;
]]></ST>
</Implementation>
<LineIds Name="PRG_ManualFnc">
<LineId Id="6" Count="17" />
<LineId Id="85" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="86" Count="0" />
<LineId Id="25" Count="9" />
<LineId Id="36" Count="6" />
<LineId Id="5" Count="0" />
<LineId Id="43" Count="0" />
<LineId Id="87" Count="2" />
<LineId Id="44" Count="0" />
<LineId Id="50" Count="14" />
<LineId Id="45" Count="1" />
<LineId Id="90" Count="1" />
<LineId Id="47" Count="1" />
<LineId Id="68" Count="7" />
<LineId Id="77" Count="7" />
<LineId Id="65" Count="2" />
<LineId Id="49" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

61
TC3_CNCPLCBase/FAST.TcPOU Normal file
View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FAST" Id="{16c202d0-b697-4d74-8856-0055624c8fd5}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM FAST
VAR
//nChan : INT;
//MOS_TS: INT;
//i: INT;
//ChannelMHTFunction : ARRAY[0..MAX_USED_CHANNEL_IDX] OF HLI3_QuitChannelMHTFunction;
bMesstaster AT %I* : BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(****************************************************************************************)
(* Wait for HLI initialization *)
(****************************************************************************************)
IF NOT CNCSystem.bHLIInit THEN
RETURN;
END_IF
gpAx[0]^.lr_mc_control.probing_signal.enable_w := TRUE;
gpAx[0]^.lr_mc_control.probing_signal.command_w := bMesstaster;
gpAx[1]^.lr_mc_control.probing_signal.enable_w := TRUE;
gpAx[1]^.lr_mc_control.probing_signal.command_w := bMesstaster;
gpAx[2]^.lr_mc_control.probing_signal.enable_w := TRUE;
gpAx[2]^.lr_mc_control.probing_signal.command_w := bMesstaster;
(*
IF PRG_CNCChannelHandler.stOptions.bDisableMFunctHandling THEN
FOR i := 0 TO MAX_USED_CHANNEL_IDX DO
ChannelMHTFunction[i](nChanIdx:=0, bM30Acknowledgement := TRUE);
END_FOR
END_IF
PRG_LSB();
*)
(* Programm call for MOS_TS M functions *)
// PRG_FastMFunctions();]]></ST>
</Implementation>
<LineIds Name="FAST">
<LineId Id="3" Count="5" />
<LineId Id="54" Count="1" />
<LineId Id="53" Count="0" />
<LineId Id="69" Count="1" />
<LineId Id="66" Count="0" />
<LineId Id="72" Count="1" />
<LineId Id="71" Count="0" />
<LineId Id="56" Count="0" />
<LineId Id="20" Count="4" />
<LineId Id="18" Count="0" />
<LineId Id="34" Count="0" />
<LineId Id="33" Count="0" />
<LineId Id="43" Count="0" />
<LineId Id="9" Count="2" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<GVL Name="Global_HMI" Id="{4f704176-310f-4d40-8e3c-1ef12402672b}">
<Declaration><![CDATA[VAR_GLOBAL
/// HMI -> PLC
PLCChannelSignals: ST_ChannelSignals;
/// HMI -> PLC
PLCSelectedChannel: INT := 0;
/// HMI -> PLC
PLCFeedOverride: UINT := 100;
/// HMI -> PLC
PLCSpindleOverride: UINT := 100;
/// HMI -> PLC
PLCAxisEnable: BOOL;
/// PLC -> HMI
PLCStatusAxisEnabled : BOOL;
/// HMI -> PLC
PLCReset: BOOL;
PLCMachineMode: ARRAY[0..MAX_USED_CHANNEL_IDX] OF ST_MachineMode;
/// PLC -> HMI : angewähltes File
PLCToHmiFile: STRING(255);
/// Variablen für das Module "InformPlc"
bToggle: BOOL;
sActualForm: STRING(255);
nUserLevel: INT;
sUserName: STRING(255);
/// steigende Flanke: Applikation beenden
bExitApp: BOOL;
userActivity : BOOL;
// @1:MachineData
MachineData : ST_MachineData;
// spindle manual mode
nSpindleRpm: DINT;
bSpindleStart: BOOL;
bSpindleStop: BOOL;
ManualFnc : ARRAY[0..3] OF FB_ManualFncFull;
// DEBUG
bEinspeisungEin : BOOL := FALSE;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<DUT Name="ST_MANUAL" Id="{6a6dbf44-10e6-4e80-a2dd-1164f8c3c34d}">
<Declaration><![CDATA[TYPE ST_MANUAL :
STRUCT
// @1:cylinder one @2:on:1 @3:off:1 @4:pos1:1 @5:pos2:0
cyl1 : BYTE;
cyl1Status : BYTE;
// @1:conveyor @2:IMG1:1 @2:IMG2 @3:IMG15 @4:IMG16 @5:IMG7 @6:IMG13 @7:IMG14
conv : BYTE;
convStatus : BYTE;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<DUT Name="ST_MachineData" Id="{f2c92f7d-c1ff-430b-93ca-b1aefd859ab3}">
<Declaration><![CDATA[TYPE ST_MachineData :
STRUCT
// @1: Value1
Value1: INT;
// @1: Bool Value
Value2: bool;
// @1: Position
pos : ST_Position;
// @1: Manual @6:1
manualFunction : ST_Manual;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.4">
<DUT Name="ST_MachineMode" Id="{bedbe333-fa74-44a4-9ca4-ab8d537f835e}">
<Declaration><![CDATA[TYPE ST_MachineMode :
STRUCT
/// Operation Mode
Standby: BOOL;
Manual: BOOL;
MDI: BOOL;
Automatic: BOOL;
///REFERENCE : BOOL; TC3HR
Homing: BOOL;
/// Operation State
Select : BOOL;
Ready : BOOL;
Start: BOOL;
Stop: BOOL;
Reset: BOOL;
Error: BOOL;
/// Special functions
ChannelSignals: ST_ChannelSignals;
BlockSearch: ST_BlockSearch;
SyntaxCheck: ST_SyntaxCheck;
ManualMode: ST_ManualMode;
/// Strings
// ProgramName: STRING(1024);
// MDIString: STRING(1024);
ProgramName: STRING(HLI_IMCM_MODE_STATE_PARAM_STRL);
MDIString: STRING(HLI_IMCM_MODE_STATE_PARAM_STRL);
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<DUT Name="ST_Position" Id="{54512147-6c2e-4106-bc2c-b21f46de2f63}">
<Declaration><![CDATA[TYPE ST_Position :
STRUCT
// @1:X
x : LREAL;
// @1:Y
y : LREAL;
// @1:Z
Z : LREAL;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

364
TC3_CNCPLCBase/MAIN.TcPOU Normal file
View File

@@ -0,0 +1,364 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="MAIN" Id="{34c8c45c-58c6-4f5f-9362-3ad98fa8450c}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM MAIN
VAR
fbSpindel : FB_Spindel;
fbWZW : FB_WZW;
fbZentralschmierung : FB_Zentralschmierung;
fbMMS : FB_MMS;
fbAbsaugtopf : FB_Absaugtopf;
fbStaubsauger : FB_Staubsauger;
fbVakuumpumpe : FB_Vakuumpumpe;
fbDruckluft : FB_Druckluftueberwachung;
fbVakuumfelder : FB_Vakuumfelder;
fbWickler : FB_Papiervorschub;
fbAnschlag : FB_AnschlagAbsaugung;
fbDCommand : FB_CmdDInfo;
fbTCommand : FB_CmdTInfo;
fbOldDCommand : FB_CmdOldDInfo;
bDebug : Bool;
rtToolChangeDone : R_TRIG;
rtToggleMMS : R_TRIG;
bMMSEnabled : BOOL;
rtNCStart : R_TRIG;
rtNCStop : R_TRIG;
fbBlinker : FB_Blinker;
bFirstRun : BOOL := TRUE;
tonM19 : TON;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[HLI3_Init();
PRG_Messages(); // Messages Eventlogger V1
// PRG_MessagesV2(); // Messages Eventlogger V2
(* Call CNC related code only if the HLI has been initialized succesfully! *)
IF CNCSystem.bHLIInit THEN
IF bFirstRun THEN
bFirstRun := FALSE;
CNCSystem.Channel[0].ToolData.DCommand := fbDCommand;
CNCSystem.Channel[0].ToolData.TCommand := fbTCommand;
CNCSystem.Channel[0].ToolData.DCommandOldTool := fbOldDCommand;
GVL_OEM.pVe := ADR(gpVECh[0]^.ext_var32[0]);
GVL_OEM.pVe^.ToolInSpindle := GVL_ToolMgmt.diToolInSpindle;
END_IF
PRG_CNCAxesHandler();
PRG_CNCManualMode();
PRG_CNCChannelHandler();
PRG_CNCVariablesViewer();
PRG_ManualFnc();
(* OEM program start *)
rtNCSTart(CLK := GVL_OEM.bBtnNCStart);
rtNCStop(CLK := GVL_OEM.bBtnNCStop);
IF rtNCStart.Q THEN
PLCMachineMode[0].Start := TRUE;
END_IF
IF rtNCStop.Q THEN
PLCMachineMode[0].Stop := TRUE;
END_IF
fbBlinker();
CASE CNCSystem.Channel[0].ActState OF
HLI_IMCM_PROCESS_ACTIVE:
GVL_OEM.bBtnNCStartLED := TRUE;
GVL_OEM.bBtnNCStopLED := FALSE;
HLI_IMCM_PROCESS_HOLD:
GVL_OEM.bBtnNCStartLED := fbBlinker.bQ;
GVL_OEM.bBtnNCStopLED := TRUE;
ELSE
GVL_OEM.bBtnNCStartLED := FALSE;
GVL_OEM.bBtnNCStopLED := TRUE;
END_CASE
PRG_Einspeisung();
GVL_HMI.bAxisEnableAllowed := PRG_Einspeisung.bInfeedActive AND fbDruckluft.bDruckluftOk;
fbSpindel(
bCmdOpenSpindle := fbWZW.bCmdOpenSpindle OR GVL_Debug.bCmdOpenSpindle,
bSensor3 := GVL_OEM.byteInputSpindlePin4.0,
bSensor4 := GVL_OEM.byteInputSpindlePin2.0,
bAirCurtainEnabled := GVL_Debug.bAirCurtainEnabled,
bCmdStopSpindle := fbDruckluft.bStopSpindle,
bSperrluft => GVL_OEM.byteOutputSpindlePin2.2,
bKonusReiniung => GVL_OEM.byteOutputSpindlePin4.2,
bATCOn => GVL_OEM.byteOutputSpindlePin2.1,
bATCOff => GVL_OEM.byteOutputSpindlePin4.1);
GVL_HMI.iSpindleLoadPercent := GVL_OEM.iSpindleLoad / 10;
fbWZW(
bExecute := CNCSystem.Channel[0].M[10].bState_rw,
bExecutePreselect := GVL_ToolMgmt.bExecuteToolPrep,
bReset := PLCReset,
bSpindleInPosition := TRUE,
bPreselectOnly := FALSE,
uiToolPocket := GVL_ToolMgmt.stToolToPrep.pos,
bInfeedActive := PRG_Einspeisung.bInfeedActive,
bSpindleOpen := fbSpindel.bSpindleOpen);
rtToolChangeDone(CLk := fbWZW.bDone);
IF rtToolChangeDone.Q AND CNCSystem.Channel[0].M[10].bState_rw THEN
CNCSystem.Channel[0].M[10].bState_rw := FALSE;
END_IF
fbZentralschmierung(
bCmdStartCycle := GVL_Debug.bStartLubricationCycle OR bDebug,
bCycleSensor := GVL_OEM.byteInputSpindlePin2.4,
bBusy => GVL_Debug.bLubricationActive,
bReset := PLCReset);
// MMS über M-Befehl
IF CNCSystem.Channel[0].M[8].bState_rw THEN
bMMSEnabled := TRUE;
CNCSystem.Channel[0].M[8].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[0].M[9].bState_rw THEN
bMMSEnabled := FALSE;
CNCSystem.Channel[0].M[9].bState_rw := FALSE;
END_IF
// MMS über taster
rtToggleMMS(CLK := GVL_Debug.bToggleMMS);
IF rtToggleMMS.Q THEN
bMMSEnabled := NOT bMMSEnabled;
END_IF
// Dissable MMS on Reset
IF PLCReset THEN
bMMSEnabled := FALSE;
END_IF
GVL_Debug.bMMSActive := bMMSEnabled;
fbMMS(bEnable := bMMSEnabled);
// Absaugung
fbAbsaugtopf(
bCmdTopfHoch := GVL_Debug.bAbsaugungHoch,
bCmdTopfRunter := GVL_Debug.bAbsaugungRunter,
bReset := PLCReset,
bSensorKlemmungInaktiv := GVL_OEM.byteInputSpindlePin4.6,
bSensorKlemmungAktiv := GVL_OEM.byteInputSpindlePin2.5,
bSensorTopfUnten := GVL_OEM.byteInputSpindlePin2.3,
bSensorTopfOben := GVL_OEM.byteInputSpindlePin4.5,
bVentilTopfRunter => GVL_OEM.byteOutputSpindlePin4.3,
bVentilKlemmungAus => GVL_OEM.byteOutputSpindlePin2.6);
fbAnschlag(
bEnable := GVL_HMI.bEnableStepper OR PLCAxisEnable,
bReset := PLCReset,
bCmdStartHoming := GVL_HMI.bStartHoming OR fbAbsaugtopf.bHomingKlemmung,
bCmdPosition := fbAbsaugtopf.bBewegeKlemmung,
fTargetPosition := fbAbsaugtopf.fPositionKlemmung,
bHomeSwitch := GVL_OEM.byteInputSpindlePin2.7,
bHomed => fbAbsaugtopf.bKlemmungReferenziert,
bDone => fbAbsaugtopf.bBewegungKlemmungFertig);
// Staubsauger
fbStaubsauger(
bToggleEnable := GVL_Debug.bStaubsauger,
bVacuumOn => GVL_Debug.bStaubsaugerOn);
// Vakuumpumpe
fbVakuumpumpe(
bToggle := GVL_OEM.bBtnToggleVakuumpumpe);
// Vakuumfeldsteuerung
fbVakuumfelder(
bExecuteHMI := GVL_HMI.bExecVacFieldChange,
nFieldNumber := GVL_HMI.bSelectedField);
// Papiervorschub
GVL_OEM.uiEncoderValuePaper := GVL_OEM.byteInputEncoder0;
GVL_OEM.uiEncoderValuePaper := SHL(GVL_OEM.uiEncoderValuePaper,8) + GVL_OEM.byteInputEncoder1;
fbWickler(
bInfeedEnabled := PRG_Einspeisung.bInfeedActive,
bReset := PLCReset,
uiEncoderValue := GVL_OEM.uiEncoderValuePaper);
PRG_Safety();
PRG_Master_Slave();
PRG_Debug();
// Druckluftüberwachung
fbDruckluft(
bDruckluftOk := GVL_OEM.byteInputDruckluft0.0,
bSpindleStopped := fbSpindel.bSpindleStopped);
// Werkzeugtausch behandlung
PRG_Platztausch();
// Aktuelles Werkzeug in der Spindel speichern
GVL_ToolMgmt.diToolInSpindle := GVL_OEM.pVe^.ToolInSpindle;
// Tote M-Befehle quittieren
IF CNCSystem.Channel[0].M[45].bState_rw THEN
CNCSystem.Channel[0].M[45].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[0].M[21].bState_rw THEN
CNCSystem.Channel[0].M[21].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[0].M[22].bState_rw THEN
CNCSystem.Channel[0].M[22].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[0].M[71].bState_rw THEN
CNCSystem.Channel[0].M[71].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[0].M[72].bState_rw THEN
CNCSystem.Channel[0].M[72].bState_rw := FALSE;
END_IF
(* OEM program end *)
END_IF
(* Reset the reset flag from HMI *)
PLCReset := FALSE;]]></ST>
</Implementation>
<LineIds Name="MAIN">
<LineId Id="6" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="47" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="7" Count="1" />
<LineId Id="639" Count="1" />
<LineId Id="642" Count="0" />
<LineId Id="645" Count="0" />
<LineId Id="830" Count="0" />
<LineId Id="648" Count="2" />
<LineId Id="641" Count="0" />
<LineId Id="647" Count="0" />
<LineId Id="9" Count="2" />
<LineId Id="13" Count="0" />
<LineId Id="42" Count="0" />
<LineId Id="62" Count="0" />
<LineId Id="232" Count="0" />
<LineId Id="360" Count="0" />
<LineId Id="363" Count="0" />
<LineId Id="361" Count="0" />
<LineId Id="364" Count="7" />
<LineId Id="385" Count="0" />
<LineId Id="384" Count="0" />
<LineId Id="372" Count="1" />
<LineId Id="375" Count="2" />
<LineId Id="379" Count="0" />
<LineId Id="381" Count="0" />
<LineId Id="380" Count="0" />
<LineId Id="378" Count="0" />
<LineId Id="386" Count="0" />
<LineId Id="388" Count="1" />
<LineId Id="374" Count="0" />
<LineId Id="362" Count="0" />
<LineId Id="57" Count="0" />
<LineId Id="261" Count="0" />
<LineId Id="150" Count="1" />
<LineId Id="170" Count="0" />
<LineId Id="152" Count="1" />
<LineId Id="249" Count="0" />
<LineId Id="529" Count="0" />
<LineId Id="154" Count="3" />
<LineId Id="263" Count="0" />
<LineId Id="262" Count="0" />
<LineId Id="115" Count="0" />
<LineId Id="105" Count="0" />
<LineId Id="113" Count="0" />
<LineId Id="688" Count="0" />
<LineId Id="443" Count="0" />
<LineId Id="107" Count="4" />
<LineId Id="119" Count="4" />
<LineId Id="184" Count="3" />
<LineId Id="420" Count="0" />
<LineId Id="189" Count="0" />
<LineId Id="314" Count="1" />
<LineId Id="304" Count="1" />
<LineId Id="307" Count="0" />
<LineId Id="306" Count="0" />
<LineId Id="311" Count="2" />
<LineId Id="310" Count="0" />
<LineId Id="316" Count="1" />
<LineId Id="319" Count="2" />
<LineId Id="318" Count="0" />
<LineId Id="466" Count="4" />
<LineId Id="308" Count="1" />
<LineId Id="286" Count="0" />
<LineId Id="337" Count="2" />
<LineId Id="418" Count="1" />
<LineId Id="796" Count="0" />
<LineId Id="569" Count="1" />
<LineId Id="572" Count="0" />
<LineId Id="574" Count="0" />
<LineId Id="417" Count="0" />
<LineId Id="568" Count="0" />
<LineId Id="721" Count="1" />
<LineId Id="756" Count="0" />
<LineId Id="795" Count="0" />
<LineId Id="757" Count="0" />
<LineId Id="793" Count="0" />
<LineId Id="791" Count="0" />
<LineId Id="755" Count="0" />
<LineId Id="1068" Count="0" />
<LineId Id="794" Count="0" />
<LineId Id="494" Count="0" />
<LineId Id="498" Count="0" />
<LineId Id="495" Count="2" />
<LineId Id="599" Count="3" />
<LineId Id="1104" Count="0" />
<LineId Id="609" Count="2" />
<LineId Id="831" Count="1" />
<LineId Id="939" Count="2" />
<LineId Id="943" Count="0" />
<LineId Id="978" Count="0" />
<LineId Id="1013" Count="0" />
<LineId Id="1103" Count="0" />
<LineId Id="1014" Count="0" />
<LineId Id="112" Count="0" />
<LineId Id="78" Count="0" />
<LineId Id="83" Count="0" />
<LineId Id="247" Count="1" />
<LineId Id="233" Count="0" />
<LineId Id="541" Count="2" />
<LineId Id="539" Count="0" />
<LineId Id="655" Count="0" />
<LineId Id="652" Count="0" />
<LineId Id="656" Count="0" />
<LineId Id="654" Count="0" />
<LineId Id="653" Count="0" />
<LineId Id="651" Count="0" />
<LineId Id="866" Count="0" />
<LineId Id="1049" Count="0" />
<LineId Id="1055" Count="0" />
<LineId Id="1050" Count="0" />
<LineId Id="1056" Count="2" />
<LineId Id="1054" Count="0" />
<LineId Id="1060" Count="1" />
<LineId Id="1059" Count="0" />
<LineId Id="1063" Count="1" />
<LineId Id="1062" Count="0" />
<LineId Id="1066" Count="1" />
<LineId Id="1065" Count="0" />
<LineId Id="540" Count="0" />
<LineId Id="234" Count="0" />
<LineId Id="2" Count="0" />
<LineId Id="95" Count="0" />
<LineId Id="22" Count="0" />
<LineId Id="19" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Alarm" Id="{8a933d14-5c49-48f7-b88f-d4600752ceb3}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Alarm
VAR_INPUT
Event : TcEventEntry; // AlarmEntry from TMS Editor. Example: TC_EVENTS.Alarms.Alarm1
Raise : BOOL; // true -> Alarm is active, false -> Alarm not active
AddInfo: STRING; // if <> empty -> additional Info that is transfered together with alarm
END_VAR
VAR_OUTPUT
END_VAR
VAR
_alarm : FB_TcAlarm;
_initDone : BOOL;
_rTrigRaise : R_TRIG;
_fTrigRaise : F_TRIG;
_fbSourceInfo : FB_TcSourceInfo;
_fbJson : FB_JsonSaxWriter;
_sJsonDoc : STRING(255);
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(* ========================================================= *)
(* FUN: FB_Alarm *)
(* --------------------------------------------------------- *)
(* Desc: Simple usage of Eventlogger2 Alarms *)
(* Author: MiB *)
(* Date: 09.03.2021 *)
(* Rev.: 1.0 *)
(* ========================================================= *)
// init
IF NOT _initDone AND Event.nEventId <> 0 THEN
_fbSourceInfo.sName := 'PLC';
_alarm.CreateEx(Event, FALSE, _fbSourceInfo );
_initDone := TRUE;
END_IF
// raise alarm
_rTrigRaise(clk := Raise);
IF _rTrigRaise.Q AND NOT _alarm.bRaised THEN
IF LEN(AddInfo) > 0 THEN
_fbJson.ResetDocument();
_fbJson.StartObject();
_fbJson.AddKey('AddInfo');
_fbJson.AddString(AddInfo);
_fbJson.EndObject();
_sJsonDoc := _fbJson.GetDocument();
_alarm.SetJsonAttribute(_sJsonDoc);
ELSE
_alarm.SetJsonAttribute('');
END_IF
_alarm.Raise(0);
END_IF
// clear alarm
_fTrigRaise(clk := Raise);
IF _fTrigRaise.Q AND _alarm.bRaised THEN
_alarm.Clear(0, FALSE);
END_IF]]></ST>
</Implementation>
<LineIds Name="FB_Alarm">
<LineId Id="3" Count="37" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<POU Name="FB_ExtSimpleEventLog" Id="{715e4e5f-ea7f-48d3-986e-f1a58d16fa50}" SpecialFunc="None">
<Declaration><![CDATA[///****************************************************************************************
///Name: FB_ExtSimpleEventLog
///Date: 13.10.2004
///Author: Dirk Nordberg (BECKHOFF INDUSTRIE ELEKTRONIK)
///
///Description: Function block to control the EventLogger
/// Messages can be activated or deactivated through an array of bool.
/// The subscription of the array is equivalent to EventID from EventLogger.
/// Funtion block will be initialized with Init flag, then the busy flag is set true.
///
/// Revision: 2.0
/// History: 13.10.2004 Ng start coding
/// 17.04.2005 MK runtime optimized
/// 06.09.2005 MiB extended version (renamed to FB_ExtSimpleEventLog)
/// 30.05.2017 TV messages with format parameters
///****************************************************************************************
FUNCTION_BLOCK FB_ExtSimpleEventLog
VAR_INPUT
/// Rising flag starts the initialization
Init: BOOL;
SourceId: UINT;
/// Alarm error class
Class: UINT;
/// Activate or deaktivate confirmation
QuitRequired: BOOL;
/// Adress of the array for the messages
adrAlarmArray: POINTER TO BOOL;
/// ...with constant boundaries ARRAY_LBOUND to ARRAY_UBOUND for array size
adrQuitArray: POINTER TO BOOL;
/// ...with constant boundaries ARRAY_LBOUND to ARRAY_UBOUND for array size
adrEventData: POINTER TO ST_EventData;
/// Format String for message
sFormatString: STRING := '';
END_VAR
VAR_OUTPUT
Busy: BOOL;
Err: BOOL;
ErrId: UDINT;
END_VAR
VAR CONSTANT
ARRAY_LBOUND: UDINT := FIRST_MESSAGE;
ARRAY_UBOUND: UDINT := LAST_MESSAGE;
TCEVENTDATAFORMATSTRING: STRING(80) := ' ';
STATE_INIT: INT := 0;
STATE_IDLE: INT := 1;
STATE_RESET_EVENT: INT := 2;
STATE_QUIT_EVENT: INT := 3;
STATE_RESET_END: INT := 4;
STATE_WAIT: INT := 5;
END_VAR
VAR
state: INT;
///{flag nowatch on }
bReady: BOOL;
nMsgHasChanged: DINT;
bEvtState: ARRAY[ARRAY_LBOUND..ARRAY_UBOUND] OF BOOL;
event: ARRAY[ARRAY_LBOUND..ARRAY_UBOUND] OF ADSLOGEVENT;
idx: UDINT;
CfgEvent: TcEvent;
bWait: BOOL;
ptAlarm: POINTER TO BOOL;
ptQuit: POINTER TO BOOL;
RT_Init: R_TRIG;
ptData: POINTER TO ST_EventData;
stDummy: ST_EventData;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[nMsgHasChanged := MEMCMP(ADR(bEvtState), adrAlarmArray, SIZEOF(bEvtState));
RT_Init(CLK:=Init);
CASE State OF
STATE_INIT: (* Set the parameter for TcEvent *)
Err := FALSE;
ErrId :=0;
Busy := FALSE;
CfgEvent.Prio := 0;
CfgEvent.DataFormatStrAddress := ADR(TCEVENTDATAFORMATSTRING);
CfgEvent.Flags := TCEVENTFLAG_LOG OR TCEVENTFLAG_SRCID;
CfgEvent.StreamType := TCEVENTSTREAM_SIMPLE;
CfgEvent.ProgId := 'TcEventFormatter.TcXmlFormatter';
CfgEvent.SourceId := SourceId;
CfgEvent.Class := Class ;
CfgEvent.bQuitRequired := QuitRequired;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
CfgEvent.Id := idx;
event[idx](NETID:='', PORT:=110, Event:=FALSE , EventQuit:=FALSE,
EventConfigData:=CfgEvent, FbCleanup:=FALSE, TMOUT:=t#1s);
END_FOR;
State := STATE_IDLE;
STATE_IDLE:
(* nothing to do *)
IF nMsgHasChanged = 0 AND NOT RT_Init.Q THEN
RETURN;
END_IF
IF adrAlarmArray <> 0 THEN
ptAlarm := adrAlarmArray;
ptData := adrEventData;
IF ptData <> 0 THEN
sFormatString := '%d%s';
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx].EventConfigData.DataFormatStrAddress := ADR(sFormatString);
event[idx].EventConfigData.SourceId := SourceId;
event[idx].EventDataAddress := ptData ;
event[idx].EventDataLength := SIZEOF(stDummy);
event[idx]();
ptData := ptData + SIZEOF(stDummy);
END_FOR
END_IF
IF CfgEvent.bQuitRequired AND adrQuitArray <> 0 THEN
ptQuit := adrQuitArray;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx](Event:=ptAlarm^, EventQuit:=ptQuit^);
ptAlarm := ptAlarm + 1;
ptQuit := ptQuit + 1;
END_FOR;
ELSE
bReady := TRUE;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx](Event:=ptAlarm^);
ptAlarm := ptAlarm + 1;
IF (NOT(event[idx].Event = TRUE (* event is set *)
AND event[idx].Quit = FALSE
AND event[idx].EventState = TCEVENTSTATE_SIGNALED)
AND NOT(event[idx].Event = FALSE (* event is reset *)
AND event[idx].Quit = TRUE
AND event[idx].EventState = TCEVENTSTATE_INVALID)) THEN
bReady := FALSE;
END_IF
END_FOR;
(* copy the status *)
IF bReady THEN
MEMCPY(ADR(bEvtState), adrAlarmArray, SIZEOF(bEvtState));
END_IF
END_IF
END_IF
IF RT_Init.Q THEN
Busy := TRUE;
State := STATE_RESET_EVENT;
END_IF
STATE_RESET_EVENT:(*---------------------------------- clear messages ----------------------------------------*)
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
IF event[idx].EventState = TCEVENTSTATE_SIGNALED THEN
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE, TMOUT:= t#1s);
IF event[idx].Err THEN
Err := TRUE;
ErrId := event[idx].ErrId;
IF event[idx].ErrId = 1282 THEN (* Message Router: mailbox full *)
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE);
RETURN;
END_IF
END_IF
END_IF;
END_FOR;
State := STATE_QUIT_EVENT;
STATE_QUIT_EVENT:(*---------------------------------- quit messages ----------------------------------------*)
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
IF event[idx].EventState = TCEVENTSTATE_SIGNALED THEN
event[idx](Event:=FALSE, EventQuit:= TRUE, FbCleanup:= FALSE, TMOUT:= t#1s);
IF event[idx].Err THEN
Err := TRUE;
ErrId := event[idx].ErrId;
IF event[idx].ErrId = 1282 THEN (* Message Router: mailbox full *)
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE);
RETURN;
END_IF
END_IF
END_IF;
END_FOR;
State := STATE_RESET_END;
STATE_RESET_END:
bWait := FALSE;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE);
IF event[idx].EventState = TCEVENTSTATE_SIGNALED THEN
bWait := TRUE;
END_IF
END_FOR;
IF NOT bWait THEN
State := STATE_INIT;
END_IF
END_CASE]]></ST>
</Implementation>
<LineIds Name="FB_ExtSimpleEventLog">
<LineId Id="285" Count="121" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,194 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<POU Name="FB_SimpleEventLog" Id="{824df5dd-5df2-4652-aeac-edaeb94d45d5}" SpecialFunc="None">
<Declaration><![CDATA[///****************************************************************************************
///Name: FB_SimpleEventLog
///Date: 13.10.2004
///Author: Dirk Nordberg (BECKHOFF INDUSTRIE ELEKTRONIK)
///
///Description: Function block to control the EventLogger
/// Messages can be activated or deactivated through an array of bool.
/// The subscription of the array is equivalent to EventID from EventLogger.
/// Funtion block will be initialized with Init flag, then the busy flag is set true.
///
/// Revision: 1.4
/// History: 13.10.2004 Ng start coding
/// 17.04.2005 MK runtime optimized
/// 07.07.2005 MK short puls BF
/// 29.11.2010 MiB quittierungspflichtige Merker funktionieren nun wieder
/// 21.06.2013 TV change : data type for pointer address from uint to pointer of int
///****************************************************************************************
FUNCTION_BLOCK FB_SimpleEventLog
VAR_INPUT
/// Rising flag starts the initialization
Init: BOOL;
/// Number of the source Id
SourceId: UINT;
/// Alarm error class
Class: UINT;
/// Activate or deaktivate confirmation
QuitRequired: BOOL;
/// Adress of the array for the messages
adrAlarmArray: POINTER TO BOOL;
/// ...with constant boundaries ARRAY_LBOUND to ARRAY_UBOUND for array size
adrQuitArray: POINTER TO BOOL;
END_VAR
VAR_OUTPUT
Busy: BOOL;
Err: BOOL;
ErrId: UDINT;
END_VAR
VAR CONSTANT
ARRAY_LBOUND: UDINT := FIRST_MESSAGE;
ARRAY_UBOUND: UDINT := LAST_MESSAGE;
TCEVENTDATAFORMATSTRING: STRING := ' ';
STATE_INIT: INT := 0;
STATE_IDLE: INT := 1;
STATE_RESET_EVENT: INT := 2;
STATE_QUIT_EVENT: INT := 3;
STATE_RESET_END: INT := 4;
STATE_WAIT: INT := 5;
END_VAR
VAR
state: INT;
///{flag nowatch on }
bReady: BOOL := TRUE;
nMsgHasChanged: DINT;
bEvtState: ARRAY[ARRAY_LBOUND..ARRAY_UBOUND] OF BOOL;
event: ARRAY[ARRAY_LBOUND..ARRAY_UBOUND] OF ADSLOGEVENT;
idx: UDINT;
CfgEvent: TcEvent;
bWait: BOOL;
ptAlarm: POINTER TO BOOL;
ptQuit: POINTER TO BOOL;
RT_Init: R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[nMsgHasChanged := MEMCMP(ADR(bEvtState), adrAlarmArray, SIZEOF(bEvtState));
RT_Init(CLK:=Init);
CASE State OF
STATE_INIT: (* Set the parameter for TcEvent *)
Err := FALSE;
ErrId :=0;
Busy := FALSE;
CfgEvent.Prio := 0;
CfgEvent.DataFormatStrAddress := ADR(TCEVENTDATAFORMATSTRING);
// CfgEvent.Flags := TCEVENTFLAG_LOG OR TCEVENTFLAG_SRCID OR TCEVENTFLAG_PRIOCLASS OR TCEVENTFLAG_FMTSELF OR 16#1000;
// MiB 2015.10.07 Flags changed -> now the class is defined here and not in Event config file.
CfgEvent.Flags := TCEVENTFLAG_LOG OR TCEVENTFLAG_SRCID;
CfgEvent.StreamType := TCEVENTSTREAM_SIMPLE;
CfgEvent.ProgId := 'TcEventFormatter.TcXmlFormatter';
CfgEvent.SourceId := SourceId;
CfgEvent.Class := Class ;
CfgEvent.bQuitRequired := QuitRequired;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
CfgEvent.Id := idx;
event[idx](NETID:='', PORT:=110, Event:=FALSE , EventQuit:=FALSE,
EventConfigData:=CfgEvent, FbCleanup:=FALSE, TMOUT:=t#1s);
END_FOR;
State := STATE_IDLE;
STATE_IDLE:
(* nothing to do *)
IF nMsgHasChanged = 0
AND NOT QuitRequired
AND bReady = TRUE
AND NOT RT_Init.Q THEN
RETURN;
END_IF
IF adrAlarmArray <> 0 THEN
ptAlarm := adrAlarmArray;
IF CfgEvent.bQuitRequired AND adrQuitArray <> 0 THEN
ptQuit := adrQuitArray;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx](Event:=ptAlarm^, EventQuit:=ptQuit^);
ptAlarm := ptAlarm + 1;
ptQuit := ptQuit + 1;
END_FOR;
bReady := TRUE;
ELSE
bReady := TRUE;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx](Event:=ptAlarm^);
IF (NOT (ptAlarm^ = TRUE
AND event[idx].Event = TRUE (* event is set/on *)
AND event[idx].Quit = FALSE
AND event[idx].EventState = TCEVENTSTATE_SIGNALED)
AND NOT (ptAlarm^ = FALSE
AND event[idx].Event = FALSE (* event is reset/off *)
AND event[idx].Quit = TRUE
AND event[idx].EventState = TCEVENTSTATE_INVALID)) THEN
bReady := FALSE;
END_IF
ptAlarm := ptAlarm + 1;
END_FOR;
(* copy the status *)
IF bReady THEN
MEMCPY(ADR(bEvtState), adrAlarmArray, SIZEOF(bEvtState));
END_IF
END_IF
END_IF
IF RT_Init.Q THEN
Busy := TRUE;
State := STATE_RESET_EVENT;
END_IF
STATE_RESET_EVENT:(*---------------------------------- clear messages ----------------------------------------*)
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
IF event[idx].EventState = TCEVENTSTATE_SIGNALED THEN
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE, TMOUT:= t#1s);
IF event[idx].Err THEN
Err := TRUE;
ErrId := event[idx].ErrId;
IF event[idx].ErrId = 1282 THEN (* Message Router: mailbox full *)
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE);
RETURN;
END_IF
END_IF
END_IF;
END_FOR;
State := STATE_QUIT_EVENT;
STATE_QUIT_EVENT:(*---------------------------------- quit messages ----------------------------------------*)
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
IF event[idx].EventState = TCEVENTSTATE_SIGNALED THEN
event[idx](Event:=FALSE, EventQuit:= TRUE, FbCleanup:= FALSE, TMOUT:= t#1s);
IF event[idx].Err THEN
Err := TRUE;
ErrId := event[idx].ErrId;
IF event[idx].ErrId = 1282 THEN (* Message Router: mailbox full *)
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE);
RETURN;
END_IF
END_IF
END_IF;
END_FOR;
State := STATE_RESET_END;
STATE_RESET_END:
bWait := FALSE;
FOR idx := ARRAY_LBOUND TO ARRAY_UBOUND BY 1 DO
event[idx](Event:=FALSE, EventQuit:= FALSE, FbCleanup:= FALSE);
IF event[idx].EventState = TCEVENTSTATE_SIGNALED THEN
bWait := TRUE;
END_IF
END_FOR;
IF NOT bWait THEN
State := STATE_INIT;
END_IF
END_CASE]]></ST>
</Implementation>
<LineIds Name="FB_SimpleEventLog">
<LineId Id="3" Count="118" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<GVL Name="Global_Messages" Id="{37dff550-8eb5-40c9-88e9-ab900d467742}">
<Declaration><![CDATA[VAR_GLOBAL
///--------------------------
/// Messages
///--------------------------
MSG_WARNING_List: ARRAY[FIRST_MESSAGE..LAST_MESSAGE] OF BOOL;
MSG_WARNING_ListQuit: ARRAY[FIRST_MESSAGE..LAST_MESSAGE] OF BOOL;
MSG_ALARM_List: ARRAY[FIRST_MESSAGE..LAST_MESSAGE] OF BOOL;
MSG_ALARM_ListQuit: ARRAY[FIRST_MESSAGE..LAST_MESSAGE] OF BOOL;
END_VAR
VAR_GLOBAL CONSTANT
FIRST_MESSAGE: UDINT := 1;
LAST_MESSAGE: UDINT := 50;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
<POU Name="PRG_Messages" Id="{3add6422-7f87-47f0-a78a-763357959f3f}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Messages
VAR
bStart: BOOL;
fbWarningMessages : FB_SimpleEventLog;
fbAlarmMessages : FB_SimpleEventLog;
//fbExAlarmMessages : FB_ExtSimpleEventLog;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(*
TCEVENTCLASS_NONE :=0, No class
TCEVENTCLASS_MAINTENANCE :=1, Maintenance hint
TCEVENTCLASS_MESSAGE :=2, Message
TCEVENTCLASS_HINT :=3, Hint
TCEVENTCLASS_STATEINFO :=4, State information
TCEVENTCLASS_INSTRUCTION :=5, Instruction
TCEVENTCLASS_WARNING :=6, Warning
TCEVENTCLASS_ALARM :=7, Alarm
TCEVENTCLASS_PARAMERROR :=8 Parameter error
*)
(* Shows how to generate messages *)
IF NOT bStart THEN
bStart := TRUE;
fbWarningMessages
(Init := TRUE,
SourceId := 51,
Class := TCEVENTCLASS_WARNING,
QuitRequireD := FALSE,
adrAlarmArray := ADR(MSG_WARNING_List),
adrQuitArray := ADR(MSG_WARNING_ListQuit)
);
fbAlarmMessages
(Init := TRUE,
SourceId := 50,
Class := TCEVENTCLASS_ALARM,
QuitRequired := FALSE,
adrAlarmArray := ADR(MSG_ALARM_List),
adrQuitArray := ADR(MSG_ALARM_ListQuit)
);
(*
fbExAlarmMessages(
Init:= TRUE,
SourceId:= 52,
Class:= TCEVENTCLASS_WARNING,
QuitRequired:= FALSE,
adrAlarmArray:= ADR(MSG_ExALARM_List),
adrQuitArray:= ADR(MSG_ExALARM_ListQuit),
adrEventData:= ADR(MSG_ExALARM_EventData),
sFormatString:= '%d%s'
);
*)
ELSE
fbWarningMessages
(Init := FALSE);
fbAlarmMessages
(Init := FALSE);
(*
fbExAlarmMessages
(Init := FALSE);
*)
END_IF
]]></ST>
</Implementation>
<LineIds Name="PRG_Messages">
<LineId Id="3" Count="33" />
<LineId Id="53" Count="0" />
<LineId Id="55" Count="1" />
<LineId Id="74" Count="0" />
<LineId Id="57" Count="5" />
<LineId Id="54" Count="0" />
<LineId Id="75" Count="0" />
<LineId Id="37" Count="5" />
<LineId Id="63" Count="2" />
<LineId Id="76" Count="0" />
<LineId Id="43" Count="2" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_MessagesV2" Id="{f2f74d3f-6d68-41d2-886b-e5cb709738b9}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_MessagesV2
VAR
arrAlarmSimple: ARRAY[1..10] OF FB_Alarm;
bTestAlarm1: BOOL;
bTestAlarm2: BOOL;
bTestAlarm3: BOOL;
sTestString : STRING := 'this is a test line';
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[;
(* add Alarms.tmc to "Systen\Type System" before uncommenting this *)
(*
arrAlarmSimple[1](Event := TC_EVENTS.Alarms.AlarmHeisig);
arrAlarmSimple[1].Raise := bTestAlarm1;
arrAlarmSimple[1].AddInfo := sTestString;
arrAlarmSimple[2](Event := TC_EVENTS.Alarms.Alarm2);
arrAlarmSimple[2].Raise := bTestAlarm2;
arrAlarmSimple[3](Event := TC_EVENTS.Alarms.Alarm3);
arrAlarmSimple[3].Raise := bTestAlarm3;
*)
]]></ST>
</Implementation>
<LineIds Name="PRG_MessagesV2">
<LineId Id="24" Count="1" />
<LineId Id="27" Count="0" />
<LineId Id="29" Count="0" />
<LineId Id="28" Count="0" />
<LineId Id="7" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="39" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="8" Count="0" />
<LineId Id="23" Count="0" />
<LineId Id="21" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="14" Count="0" />
<LineId Id="40" Count="0" />
<LineId Id="30" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,194 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Absaugtopf" Id="{d576f32d-5534-4480-b4a2-951a5fd0953a}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Absaugtopf
VAR_INPUT
bCmdTopfRunter : BOOL;
bCmdTopfHoch : BOOL;
bReset : BOOL;
nMHoch : UINT := 12;
nMRunter : UINT := 13;
nMRunterWZW : UINT := 100;
bSensorTopfOben : BOOL;
bSensorTopfUnten : BOOL;
bSensorKlemmungAktiv : BOOL;
bSensorKlemmungInaktiv : BOOL;
bBewegungKlemmungFertig : BOOL;
bKlemmungReferenziert : BOOL;
END_VAR
VAR_OUTPUT
bVentilTopfRunter : BOOL;
bVentilKlemmungAus : BOOL;
fPositionKlemmung : LREAL;
bBewegeKlemmung : BOOL;
bHomingKlemmung : BOOL;
END_VAR
VAR
nState : INT;
tTimerRunter : TON;
tTimerHoch : TON;
rtCmdTopfHoch : R_TRIG;
rtCmdTopfRunter : R_TRIG;
rtReset : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[rtCmdTopfHoch(CLK := bCmdTopfHoch);
rtCmdTopfRunter(CLK := bCmdTopfRunter);
rtReset(CLK := bReset);
IF rtReset.Q THEN
nState := 0;
bBewegeKlemmung := FALSE;
tTimerRunter(IN := FALSE);
tTimerHoch(IN := FALSE);
END_IF
CASE nState OF
0:
IF CNCSystem.Channel[0].M[nMRunter].bState_rw OR rtCmdTopfRunter.Q THEN
IF CNCSystem.Channel[0].M[nMRunter].bState_rw THEN
fPositionKlemmung := DINT_TO_LREAL(CNCSystem.Channel[0].M[nMRunter].nArgument_r) * 0.1;
IF bKlemmungReferenziert THEN
nState := 10;
ELSE
nState := 1;
END_IF
ELSE
bVentilKlemmungAus := FALSE;
nState := 12;
END_IF
END_IF
IF CNCSystem.Channel[0].M[nMHoch].bState_rw OR rtCmdTopfHoch.Q THEN
bVentilTopfRunter := FALSE;
nState := 20;
END_IF
IF CNCSystem.Channel[0].M[nMRunterWZW].bState_rw THEN
nState := 30;
bVentilTopfRunter := TRUE;
bVentilKlemmungAus := TRUE;
END_IF
1: // Referenzieren der Klemmung
bHomingKlemmung := TRUE;
IF bKlemmungReferenziert THEN
bHomingKlemmung := FALSE;
nState := 10;
END_IF
10: // Fahre Klemmung auf Position
bBewegeKlemmung := TRUE;
nState := 11;
11: // Warte auf Klemmung in Position
IF bBewegungKlemmungFertig THEN
bBewegeKlemmung := FALSE;
bVentilKlemmungAus := FALSE;
nState := 12;
END_IF
12: // Warte auf Klemmung aktiv
IF bSensorKlemmungAktiv THEN
bVentilTopfRunter := TRUE;
nState := 13;
END_IF
13: // Warte auf Topf unten
tTimerRunter(IN := TRUE, PT := T#3S);
IF tTimerRunter.Q THEN
tTimerRunter(IN := FALSE);
CNCSystem.Channel[0].M[nMRunter].bState_rw := FALSE;
nState := 0;
END_IF
20: // Warten auf druckaufbau bevor die Klemmung gelöst wird
// Damit der Topf nicht runterfällt
tTimerHoch(IN := TRUE, PT := T#500MS);
IF tTimerHoch.Q THEN
tTimerHoch(IN := FALSE);
bVentilKlemmungAus := TRUE;
nState := 21;
END_IF
21: // Warte auf Topf oben
IF bSensorTopfOben THEN
CNCSystem.Channel[0].M[nMHoch].bState_rw := FALSE;
nState := 0;
END_IF
30: // Topf runter ohne Klemmung
IF bSensorTopfUnten THEN
CNCSystem.Channel[0].M[nMRunterWZW].bState_rw := FALSE;
nState := 0;
END_IF
END_CASE]]></ST>
</Implementation>
<LineIds Name="FB_Absaugtopf">
<LineId Id="70" Count="0" />
<LineId Id="72" Count="0" />
<LineId Id="192" Count="0" />
<LineId Id="194" Count="0" />
<LineId Id="193" Count="0" />
<LineId Id="195" Count="0" />
<LineId Id="197" Count="2" />
<LineId Id="196" Count="0" />
<LineId Id="22" Count="1" />
<LineId Id="25" Count="0" />
<LineId Id="28" Count="0" />
<LineId Id="183" Count="1" />
<LineId Id="232" Count="0" />
<LineId Id="186" Count="0" />
<LineId Id="233" Count="2" />
<LineId Id="187" Count="2" />
<LineId Id="185" Count="0" />
<LineId Id="29" Count="0" />
<LineId Id="27" Count="0" />
<LineId Id="31" Count="0" />
<LineId Id="140" Count="0" />
<LineId Id="32" Count="1" />
<LineId Id="96" Count="2" />
<LineId Id="100" Count="1" />
<LineId Id="99" Count="0" />
<LineId Id="236" Count="2" />
<LineId Id="240" Count="1" />
<LineId Id="244" Count="0" />
<LineId Id="242" Count="1" />
<LineId Id="34" Count="1" />
<LineId Id="162" Count="1" />
<LineId Id="151" Count="1" />
<LineId Id="171" Count="0" />
<LineId Id="182" Count="0" />
<LineId Id="175" Count="0" />
<LineId Id="172" Count="1" />
<LineId Id="176" Count="2" />
<LineId Id="181" Count="0" />
<LineId Id="179" Count="1" />
<LineId Id="153" Count="1" />
<LineId Id="165" Count="5" />
<LineId Id="164" Count="0" />
<LineId Id="44" Count="1" />
<LineId Id="134" Count="0" />
<LineId Id="46" Count="0" />
<LineId Id="135" Count="2" />
<LineId Id="141" Count="0" />
<LineId Id="139" Count="0" />
<LineId Id="138" Count="0" />
<LineId Id="129" Count="1" />
<LineId Id="142" Count="0" />
<LineId Id="144" Count="1" />
<LineId Id="133" Count="0" />
<LineId Id="102" Count="3" />
<LineId Id="107" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="26" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_AnschlagAbsaugung" Id="{268e7bad-7237-4eb6-ae17-e2c840d2dcaa}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_AnschlagAbsaugung
VAR_INPUT
bCmdPosition : BOOL;
bReset : BOOL;
fTargetPosition : LREAL;
bEnable : BOOL;
bCmdStartHoming : BOOL;
bHomeSwitch : BOOL;
END_VAR
VAR_OUTPUT
bNotEnableDrive AT %Q* : BOOL;
bDone : BOOL;
bHomed : BOOL;
END_VAR
VAR
refAxis : AXIS_REF;
axisPower : MC_Power;
axisHoming : MC_Home;
axisMoveAbs : MC_MoveAbsolute;
bStartHoming : BOOL;
bStartMoveAbs : BOOL;
rtStartHoming : R_TRIG;
rtHomingDone : R_TRIG;
rtStartMoving : R_TRIG;
rtMoveDone : R_TRIG;
rtReset : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[bNotEnableDrive := NOT bEnable;
refAxis.ReadStatus();
rtStartHoming(CLK := bCmdStartHoming);
rtStartMoving(CLK := bCmdPosition);
rtReset(CLK := bReset);
axisPower(
Axis := refAxis,
Enable := bEnable,
Enable_Positive := TRUE,
Enable_Negative := TRUE,
Override := 100);
axisHoming(
Axis := refAxis,
Execute := bStartHoming,
HomingMode := MC_HomingMode.MC_DefaultHoming,
bCalibrationCam := NOT bHomeSwitch);
rtHomingDone(CLK := axisHoming.Done);
axisMoveAbs(
Axis := refAxis,
Execute := bStartMoveAbs,
Position := fTargetPosition,
Velocity := 50,
Acceleration := 0,
Deceleration := 0,
Jerk := 0);
rtMoveDone(CLK := axisMoveAbs.Done);
// Starte die Referenzpunktfahrt nur wenn die Achse auch aktiv ist
IF axisPower.Status AND rtStartHoming.Q THEN
bDone := FALSE;
bStartHoming := TRUE;
END_IF
IF rtHomingDone.Q THEN
bDone := TRUE;
bStartHoming := FALSE;
END_IF
// Starte das positionieren nur wenn die Achse aktiv und referenziert ist
IF axisPower.Status AND refAxis.Status.Homed AND rtStartMoving.Q THEN
bDone := FALSE;
bStartMoveAbs := TRUE;
END_IF
IF rtMoveDone.Q THEN
bDone := TRUE;
bStartMoveAbs := FALSE;
END_IF
bHomed := refAxis.Status.Homed;
// Reset
IF rtReset.Q THEN
bDone := FALSE;
bStartHoming := FALSE;
bStartMoveAbs := FALSE;
END_IF]]></ST>
</Implementation>
<LineIds Name="FB_AnschlagAbsaugung">
<LineId Id="9" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="51" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="102" Count="0" />
<LineId Id="110" Count="0" />
<LineId Id="25" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="26" Count="1" />
<LineId Id="29" Count="2" />
<LineId Id="43" Count="4" />
<LineId Id="49" Count="0" />
<LineId Id="105" Count="0" />
<LineId Id="83" Count="7" />
<LineId Id="123" Count="0" />
<LineId Id="57" Count="1" />
<LineId Id="42" Count="0" />
<LineId Id="39" Count="0" />
<LineId Id="28" Count="0" />
<LineId Id="100" Count="0" />
<LineId Id="40" Count="1" />
<LineId Id="54" Count="0" />
<LineId Id="53" Count="0" />
<LineId Id="101" Count="0" />
<LineId Id="55" Count="1" />
<LineId Id="92" Count="0" />
<LineId Id="91" Count="0" />
<LineId Id="93" Count="1" />
<LineId Id="106" Count="0" />
<LineId Id="95" Count="0" />
<LineId Id="119" Count="0" />
<LineId Id="118" Count="0" />
<LineId Id="120" Count="0" />
<LineId Id="122" Count="0" />
<LineId Id="121" Count="0" />
<LineId Id="158" Count="0" />
<LineId Id="157" Count="0" />
<LineId Id="112" Count="0" />
<LineId Id="111" Count="0" />
<LineId Id="113" Count="1" />
<LineId Id="116" Count="1" />
<LineId Id="115" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Blinker" Id="{7d2f1335-f667-4c98-8d51-a965a077362d}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Blinker
VAR_INPUT
timeTime : TIME := t#330ms;
END_VAR
VAR_OUTPUT
bQ : BOOL;
END_VAR
VAR
tonA : TON;
tonB : TON;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[tonA(IN := NOT tonB.Q, PT := timeTime, Q => bQ);
tonB(IN := tonA.Q, PT := timeTime);]]></ST>
</Implementation>
<LineIds Name="FB_Blinker">
<LineId Id="20" Count="0" />
<LineId Id="9" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_ControlUnit" Id="{40784e58-07f5-4c0c-bc44-0e5d4881e0e5}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_ControlUnit
VAR_INPUT
bReset : BOOL;
iZSW AT %I* : UINT;
END_VAR
VAR_OUTPUT
iSTW AT %Q* : UINT;
END_VAR
VAR
byteZSW : BYTE;
byteSTW : BYTE;
rtReset : R_TRIG;
tofReset : TOF;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[byteZSW := UINT_TO_BYTE(iZSW);
tofReset(IN := bReset, PT := T#2000MS);
byteSTW.7 := tofReset.Q;
iSTW := BYTE_TO_UINT(byteSTW);]]></ST>
</Implementation>
<LineIds Name="FB_ControlUnit">
<LineId Id="9" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="28" Count="1" />
<LineId Id="19" Count="0" />
<LineId Id="15" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Druckluftueberwachung" Id="{4ec61056-d0c8-4903-a1aa-fd76f3b805f6}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Druckluftueberwachung
VAR_INPUT
nErrorId : UINT := 1;
bSpindleStopped : BOOL;
bDruckluftOk : BOOL;
END_VAR
VAR_OUTPUT
bStopSpindle : BOOL;
END_VAR
VAR
tofDruckluftOk : TOF;
ftDruckluftOk : F_TRIG;
nState : INT := 0;
bDummy : BOOL;
fbAlarm : FB_Alarm;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[tofDruckluftOk(IN := bDruckluftOk, PT := T#1S);
// Abschalten bei fallender Flanke von Druckluft OK
ftDruckluftOk(CLK:= tofDruckluftOk.Q);
// Alarmbehandlung
fbAlarm(Event := TC_EVENTS.Alarms.Druckluft);
CASE nState OF
0: // IDLE
IF ftDruckluftOk.Q THEN
// MSG_ALARM_List[nErrorId] := TRUE;
fbAlarm.Raise := TRUE;
nState := 10;
END_IF
10: // Druck unter Wert gefallen -> Maschine anhalten und Freigabe wegnehmen
IF CNCSystem.Channel[0].ActState = HLI_IMCM_PROCESS_ACTIVE THEN
PLCMachineMode[0].Stop := TRUE;
nState := 20;
ELSE
bStopSpindle := TRUE;
PLCAxisEnable := FALSE;
nState := 30;
END_IF
20: // Warten auf Hold
IF CNCSystem.Channel[0].ActState = HLI_IMCM_PROCESS_HOLD THEN
bStopSpindle := TRUE;
nState := 30;
END_IF
30: // Warten auf Spindel stopp
IF bSpindleStopped THEN
nState := 60;
END_IF
60: // Warten auf Druckluft ok
IF bDruckluftOk THEN
fbAlarm.Raise := FALSE;
bStopSpindle := FALSE;
nState := 0;
END_IF
END_CASE]]></ST>
</Implementation>
<LineIds Name="FB_Druckluftueberwachung">
<LineId Id="98" Count="1" />
<LineId Id="14" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="140" Count="0" />
<LineId Id="139" Count="0" />
<LineId Id="141" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="114" Count="0" />
<LineId Id="137" Count="0" />
<LineId Id="20" Count="3" />
<LineId Id="90" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="47" Count="0" />
<LineId Id="92" Count="0" />
<LineId Id="95" Count="0" />
<LineId Id="94" Count="0" />
<LineId Id="93" Count="0" />
<LineId Id="91" Count="0" />
<LineId Id="38" Count="1" />
<LineId Id="49" Count="0" />
<LineId Id="61" Count="0" />
<LineId Id="65" Count="0" />
<LineId Id="62" Count="2" />
<LineId Id="66" Count="2" />
<LineId Id="81" Count="2" />
<LineId Id="116" Count="0" />
<LineId Id="86" Count="0" />
<LineId Id="84" Count="1" />
<LineId Id="72" Count="0" />
<LineId Id="18" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_MFunctions" Id="{cbc6d41c-7124-4f75-8f78-dc8f5d56d0c8}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_MFunctions
VAR_INPUT
nChannelIdx : INT := 0;
END_VAR
VAR_OUTPUT
END_VAR
VAR
bBSActive : BOOL;
iBSStatus : INT;
bMFunctionStatus : ARRAY [0..999] OF BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<LineIds Name="FB_MFunctions">
<LineId Id="9" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_MMS" Id="{6e8d53b3-dd5a-4cfe-a2ed-b0efb8ace903}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_MMS
VAR_INPUT
bEnable : BOOL;
END_VAR
VAR_OUTPUT
bAirOn AT %Q* : BOOL;
bLiquidPulse AT %Q* : BOOL;
END_VAR
VAR
tonA : TON;
tonB : TON;
bPulse : BOOL;
timeOnOff : TIME := t#400ms;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[bAirOn := bEnable;
bLiquidPulse := bEnable AND bPulse;
tonA(IN := NOT tonB.Q, PT := timeOnOff, Q => bPulse);
tonB(IN := tonA.Q, PT := timeOnOff);
]]></ST>
</Implementation>
<LineIds Name="FB_MMS">
<LineId Id="9" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="24" Count="0" />
<LineId Id="23" Count="0" />
<LineId Id="25" Count="0" />
<LineId Id="19" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,299 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Papiervorschub" Id="{668a62cf-64c8-49b5-ae3e-8fde0e3961f5}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Papiervorschub
VAR_INPUT
bExecute : BOOL;
bReset : BOOL;
bInfeedEnabled : BOOL;
fMMToGo : LREAL;
nMEnable : UINT := 50;
uiEncoderValue : UINT;
fMMPerRev : LREAL := 200;
nIncrPerRev : UINT := 1024;
fNSoll : LREAL := -400;
END_VAR
VAR_OUTPUT
bDone : BOOL;
bError : BOOL;
END_VAR
VAR
uiZSW1 AT %I* : UINT;
uiSTW1 AT %Q* : UINT;
iNSoll_A AT %Q* : INT;
iNIst_A AT %I* : INT;
wZSW1 : WORD;
wSTW1 : WORD;
nTargetPosition : DINT;
nActualPosition : DINT;
nDiff : DINT;
uiEncoderValueOld : UINT;
fPathToGo : LREAL;
nState : INT := 0;
nErrorState : INT := -1;
rtStart : R_TRIG;
rtReset : R_TRIG;
rtMFunctionStart : R_TRIG;
ftError : F_TRIG;
tofReset : TOF;
tonPollage : TON;
(*
bTest : BOOL;
fbADSRead : ADSREAD;
fbADSWrite : ADSWRITE;
ReadPort : T_AMSPort := 16#1002;
ReadGroup : UDINT := 16#F302;
ReadGroupOffset : UDINT := 16#0FA60000;
ReadLen : UDINT := 30;
ReadAdsDest : BYTE;
*)
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Einlesen
wZSW1 := UINT_TO_WORD(uiZSW1);
// Führung durch PLC
wSTW1.10 := 1;
// Start bei steigender Flanke
rtStart(CLK := bExecute);
rtMFunctionStart(CLK:= CNCSystem.Channel[0].M[nMEnable].bState_rw);
// Reset der Achse
tofReset(IN := bReset, PT := T#250MS);
wSTW1.7 := tofReset.Q;
// Error trigger
ftError(CLK := wZSW1.3);
// Fehlerzustand weitergeben
bError := wZSW1.3;
// Fehlerzustand
IF (wZSW1.3 = 1) AND (nState < 99) THEN
nErrorState := nState;
iNSoll_A := 0;
nState := 99;
END_IF
// Positionsnachführung
nDiff := ((nIncrPerRev + nIncrPerRev / 2 + (uiEncoderValue - uiEncoderValueOld)) MOD nIncrPerRev) - (nIncrPerRev / 2);
nActualPosition := nActualPosition + nDiff;
uiEncoderValueOld := uiEncoderValue;
CASE nState OF
0: // Idle -> Einschalten
wStW1.0 := 0; // Ein
wStW1.1 := 0; // Nicht Austrudel
wStW1.2 := 0; // Kein Schnellhalt
wStW1.3 := 0; // Betrieb freigeben
wSTW1.4 := 0; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
iNSoll_A := 0;
IF rtStart.Q AND bInfeedEnabled THEN
bDone := FALSE;
nActualPosition := 0;
nTargetPosition := LREAL_TO_DINT(nActualPosition + (nIncrPerRev * fMMToGo / fMMPerRev));
nState := 10;
END_IF
IF rtMFunctionStart.Q AND bInfeedEnabled THEN
bDone := FALSE;
nActualPosition := 0;
nTargetPosition := LREAL_TO_DINT(nActualPosition + (nIncrPerRev * CNCSystem.Channel[0].M[nMEnable].nArgument_r / fMMPerRev));
nState := 10;
END_IF
10: // Warten auf Einschaltbereit -> Betriebsbereit
wStW1.0 := 0; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // Hochlaufgeber freigeben
wSTW1.5 := 1; // Hochlaufgeber starten
wSTW1.6 := 1; // Sollwerte Freigeben
IF wZSW1.0 THEN // Einschaltbereit
nState := 20;
END_IF
20: // Warten auf Betriebsbereit
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // Hochlaufgeber freigeben
wSTW1.5 := 1; // Hochlaufgeber starten
wSTW1.6 := 1; // Sollwerte Freigeben
IF wZSW1.1 THEN // Betriebsbereit
nState := 25;
END_IF
25: // Warten auf pollagenidentifikation
tonPollage(IN := TRUE, PT := T#500MS);
IF tonPollage.Q THEN
tonPollage(IN := FALSE);
nState := 30;
END_IF
30: // Betriebsbereit -> Bewegungsparameter setzen
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // Hochlaufgeber freigeben
wSTW1.5 := 1; // Hochlaufgeber starten
wSTW1.6 := 1; // Sollwerte Freigeben
// Berechnung des Ausgabewertes
iNSoll_A := LREAL_TO_INT((16384 * fNSoll) / 1500);
IF nActualPosition >= nTargetPosition THEN
iNSoll_A := 0;
nState := 40;
END_IF
40: // Ausschalten
wStW1.0 := 0; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 0; // Hochlaufgeber freigeben
wSTW1.5 := 0; // Hochlaufgeber starten
wSTW1.6 := 0; // Sollwerte Freigeben
IF NOT wZSW1.1 THEN
nState := 0;
CNCSystem.Channel[0].M[nMEnable].bState_rw := FALSE;
bDone := TRUE;
END_IF
99: // Fehler
IF ftError.Q OR (wZSW1.3 = 0) THEN
nState := 0;
END_IF
END_CASE
(*
ReadGroupOffset := 16#0FA60000;
fbADSRead(
NETID := '172.18.236.82.5.17',
PORT := ReadPort,
IDXGRP := ReadGroup,
IDXOFFS := ReadGroupOffset,
LEN := ReadLen,
DESTADDR := ADR(ReadAdsDest),
READ := bTest,
TMOUT := T#1S);
*)
(*
ReadAdsDest := 1;
fbADSWrite(
NETID := '172.18.236.82.5.17',
PORT := ReadPort,
IDXGRP := ReadGroup,
IDXOFFS := ReadGroupOffset,
LEN := 1,
SRCADDR := ADR(ReadAdsDest),
WRITE := bTest,
TMOUT := T#1S);
*)
uiSTW1 := WORD_TO_UINT(wStw1);]]></ST>
</Implementation>
<LineIds Name="FB_Papiervorschub">
<LineId Id="39" Count="0" />
<LineId Id="37" Count="0" />
<LineId Id="41" Count="1" />
<LineId Id="40" Count="0" />
<LineId Id="59" Count="0" />
<LineId Id="61" Count="0" />
<LineId Id="60" Count="0" />
<LineId Id="387" Count="0" />
<LineId Id="47" Count="2" />
<LineId Id="38" Count="0" />
<LineId Id="195" Count="1" />
<LineId Id="194" Count="0" />
<LineId Id="198" Count="1" />
<LineId Id="197" Count="0" />
<LineId Id="54" Count="3" />
<LineId Id="147" Count="0" />
<LineId Id="58" Count="0" />
<LineId Id="53" Count="0" />
<LineId Id="165" Count="0" />
<LineId Id="162" Count="0" />
<LineId Id="333" Count="0" />
<LineId Id="161" Count="0" />
<LineId Id="164" Count="0" />
<LineId Id="64" Count="9" />
<LineId Id="145" Count="1" />
<LineId Id="76" Count="2" />
<LineId Id="151" Count="0" />
<LineId Id="158" Count="0" />
<LineId Id="80" Count="0" />
<LineId Id="84" Count="0" />
<LineId Id="388" Count="2" />
<LineId Id="392" Count="2" />
<LineId Id="391" Count="0" />
<LineId Id="85" Count="8" />
<LineId Id="96" Count="13" />
<LineId Id="111" Count="2" />
<LineId Id="63" Count="0" />
<LineId Id="398" Count="5" />
<LineId Id="405" Count="0" />
<LineId Id="404" Count="0" />
<LineId Id="116" Count="0" />
<LineId Id="118" Count="7" />
<LineId Id="136" Count="1" />
<LineId Id="144" Count="0" />
<LineId Id="148" Count="1" />
<LineId Id="168" Count="0" />
<LineId Id="166" Count="1" />
<LineId Id="169" Count="1" />
<LineId Id="172" Count="5" />
<LineId Id="171" Count="0" />
<LineId Id="178" Count="0" />
<LineId Id="180" Count="1" />
<LineId Id="395" Count="0" />
<LineId Id="182" Count="0" />
<LineId Id="179" Count="0" />
<LineId Id="183" Count="0" />
<LineId Id="185" Count="0" />
<LineId Id="188" Count="1" />
<LineId Id="184" Count="0" />
<LineId Id="143" Count="0" />
<LineId Id="331" Count="0" />
<LineId Id="313" Count="0" />
<LineId Id="312" Count="0" />
<LineId Id="253" Count="0" />
<LineId Id="252" Count="0" />
<LineId Id="254" Count="7" />
<LineId Id="326" Count="1" />
<LineId Id="315" Count="1" />
<LineId Id="319" Count="3" />
<LineId Id="318" Count="0" />
<LineId Id="323" Count="2" />
<LineId Id="328" Count="0" />
<LineId Id="317" Count="0" />
<LineId Id="193" Count="0" />
<LineId Id="192" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Spindel" Id="{50a6eecd-bacb-461c-81db-8d25d13f0ab9}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Spindel
VAR_INPUT
bSensor3 : BOOL;
bSensor4 : BOOL;
iAxNr : INT := 4;
bCmdOpenSpindle : BOOL;
bCmdStopSpindle : BOOL;
bAirCurtainEnabled : BOOL := TRUE;
END_VAR
VAR_OUTPUT
bSperrluft : BOOL := TRUE;
bKonusReiniung : BOOL;
bATCOn : BOOL;
bATCOff : BOOL;
bSpindleOpen : BOOL;
bSpindleClosed : BOOL;
bSpindleClosedWithTool : BOOL;
bSpindleStopped : BOOL;
END_VAR
VAR
ftATCOn : F_TRIG;
tofATCOff : TOF;
bInternCmdOpenSpindle : BOOL;
bCanOpenSpindle : BOOL;
rtCmdOpenSpindle : R_TRIG;
ftCmdOpenSpindle : F_TRIG;
tofCmdCloseSpindle : TOF;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// State spindle closed with tool
bSpindleClosedWithTool := bSensor3 AND bSensor4;
// State spindle closed without tool
bSpindleClosed := bSensor3 AND (NOT bSensor4);
// Spindle open
bSpindleOpen := (NOT bSensor3) AND bSensor4;
// Sperrluftbehandlung
bSperrluft := bAirCurtainEnabled;
rtCmdOpenSpindle(CLK := bCmdOpenSpindle);
IF rtCmdOpenSpindle.Q THEN
bInternCmdOpenSpindle := TRUE;
END_IF
ftCmdOpenSpindle(CLK := bCmdOpenSpindle);
IF ftCmdOpenSpindle.Q THEN
bInternCmdOpenSpindle := FALSE;
END_IF
// Freigabe der Spindel nur bei gespannten Werkzeug
gpAx[iAxNr]^.ipo_mc_control.feedhold.enable_w := TRUE;
gpAx[iAxNr]^.ipo_mc_control.feedhold.command_w := (NOT bSpindleClosedWithTool) OR bCmdStopSpindle;
// Enable taper cleaning air with open spindle
IF bSpindleOpen THEN
bKonusReiniung := TRUE;
ELSE
bKonusReiniung := FALSE;
END_IF
// Spindel öffnen
ftATCOn(CLK := bATCOn);
tofATCOff(In := ftATCOn.Q, PT := T#1S);
// bATCOn := bCmdOpenSpindle;
// Öffnen der Spindel nur bei stillstand der Spindel und programmierter 0 drehzahl
bSpindleStopped := gpAx[iAxNr]^.lr_state.rev_null_r;
bCanOpenSpindle := bSpindleStopped AND (gpAx[iAxNr]^.lr_state.active_rev_r = 0);
bATCOn := bInternCmdOpenSpindle AND bCanOpenSpindle;
bATCOff := tofATCOff.Q;]]></ST>
</Implementation>
<LineIds Name="FB_Spindel">
<LineId Id="24" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="49" Count="0" />
<LineId Id="52" Count="0" />
<LineId Id="56" Count="0" />
<LineId Id="55" Count="0" />
<LineId Id="57" Count="0" />
<LineId Id="186" Count="2" />
<LineId Id="116" Count="0" />
<LineId Id="115" Count="0" />
<LineId Id="117" Count="2" />
<LineId Id="152" Count="0" />
<LineId Id="151" Count="0" />
<LineId Id="153" Count="2" />
<LineId Id="95" Count="0" />
<LineId Id="94" Count="0" />
<LineId Id="97" Count="0" />
<LineId Id="96" Count="0" />
<LineId Id="26" Count="0" />
<LineId Id="25" Count="0" />
<LineId Id="27" Count="1" />
<LineId Id="30" Count="1" />
<LineId Id="29" Count="0" />
<LineId Id="62" Count="0" />
<LineId Id="61" Count="0" />
<LineId Id="67" Count="2" />
<LineId Id="63" Count="0" />
<LineId Id="219" Count="0" />
<LineId Id="254" Count="0" />
<LineId Id="220" Count="0" />
<LineId Id="113" Count="0" />
<LineId Id="64" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Staubsauger" Id="{50cee699-4f80-42b0-957b-fb687074a8d0}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Staubsauger
VAR_INPUT
bToggleEnable : BOOL;
nMOn : INT := 68;
nMOff : INT := 69;
END_VAR
VAR_OUTPUT
bVacuumOn AT %Q* : BOOL;
END_VAR
VAR
rtToggleEnable : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[rtToggleEnable(CLK := bToggleEnable);
IF rtToggleEnable.Q THEN
bVacuumOn := NOT bVacuumOn;
END_IF
IF CNCSystem.Channel[0].M[nMOn].bState_rw THEN
bVacuumOn := TRUE;
CNCSystem.Channel[0].M[nMOn].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[0].M[nMOff].bState_rw THEN
bVacuumOn := FALSE;
CNCSystem.Channel[0].M[nMOff].bState_rw := FALSE;
END_IF]]></ST>
</Implementation>
<LineIds Name="FB_Staubsauger">
<LineId Id="9" Count="0" />
<LineId Id="25" Count="3" />
<LineId Id="15" Count="0" />
<LineId Id="14" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="21" Count="3" />
<LineId Id="20" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,238 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Vakuumfelder" Id="{b73b6e2f-4be0-410a-bacf-8c5aedb29f5d}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Vakuumfelder
VAR_IN_OUT
bExecuteHMI : BOOL;
END_VAR
VAR_INPUT
nFieldNumber : INT;
nMVakuumfeldEin : UINT := 51;
nMVakuumfeldAus : UINT := 52;
nMVakuumAlleEin : UINT := 53;
nMVakuumAlleAus : UINT := 54;
nChannelIdx : UINT := 0;
END_VAR
VAR_OUTPUT
bVentilVakuumfeld1 AT %Q* : BOOL;
bVentilVakuumfeld2 AT %Q* : BOOL;
bVentilVakuumfeld3 AT %Q* : BOOL;
bVentilVakuumfeld4 AT %Q* : BOOL;
bVentilVakuumfeld5 AT %Q* : BOOL;
bVentilVakuumfeld6 AT %Q* : BOOL;
bVentilVakuumfeld7 AT %Q* : BOOL;
bVentilVakuumfeld8 AT %Q* : BOOL;
bVentilVakuumfeld9 AT %Q* : BOOL;
bVentilVakuumfeld10 AT %Q* : BOOL;
bVentilBelueftung AT %Q* : BOOL;
END_VAR
VAR
bEinschalten : BOOL;
bSchalten : BOOL;
nVakuumfeldNummer : DINT;
nState : INT := 0;
rtExecuteHMI : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[rtExecuteHMI(CLK := bExecuteHMI);
IF rtExecuteHMI.Q THEN
bExecuteHMI := FALSE;
bEinschalten := TRUE;
bSchalten := TRUE;
nVakuumfeldNummer := nFieldNumber;
END_IF
(* Einschalten aller Vakuumfelder *)
IF CNCSystem.Channel[nChannelIdx].M[nMVakuumAlleEin].bState_rw THEN
bVentilVakuumfeld10 := TRUE;
bVentilVakuumfeld9 := TRUE;
bVentilVakuumfeld8 := TRUE;
bVentilVakuumfeld7 := TRUE;
bVentilVakuumfeld6 := TRUE;
bVentilVakuumfeld5 := TRUE;
bVentilVakuumfeld4 := TRUE;
bVentilVakuumfeld3 := TRUE;
bVentilVakuumfeld2 := TRUE;
bVentilVakuumfeld1 := TRUE;
bVentilBelueftung := FALSE;
CNCSystem.Channel[nChannelIdx].M[nMVakuumAlleEin].bState_rw := FALSE;
END_IF
(* Ausschalten aller Vakuumfelder *)
IF CNCSystem.Channel[nChannelIdx].M[nMVakuumAlleAus].bState_rw THEN
bVentilVakuumfeld10 := FALSE;
bVentilVakuumfeld9 := FALSE;
bVentilVakuumfeld8 := FALSE;
bVentilVakuumfeld7 := FALSE;
bVentilVakuumfeld6 := FALSE;
bVentilVakuumfeld5 := FALSE;
bVentilVakuumfeld4 := FALSE;
bVentilVakuumfeld3 := FALSE;
bVentilVakuumfeld2 := FALSE;
bVentilVakuumfeld1 := FALSE;
bVentilBelueftung := TRUE;
CNCSystem.Channel[nChannelIdx].M[nMVakuumAlleAus].bState_rw := FALSE;
END_IF
(* Einschalten der Vakuumfelder *)
IF CNCSystem.Channel[nChannelIdx].M[nMVakuumfeldEin].bState_rw THEN
nVakuumfeldNummer := CNCSystem.Channel[nChannelIdx].M[nMVakuumfeldEin].nArgument_r;
bSchalten := TRUE;
bEinschalten := TRUE;
CNCSystem.Channel[nChannelIdx].M[nMVakuumfeldEin].bState_rw := FALSE;
END_IF
(* Ausschalten der Vakuumfelder *)
IF CNCSystem.Channel[nChannelIdx].M[nMVakuumfeldAus].bState_rw THEN
nVakuumfeldNummer := CNCSystem.Channel[nChannelIdx].M[nMVakuumfeldAus].nArgument_r;
bSchalten := TRUE;
bEinschalten := FALSE;
CNCSystem.Channel[nChannelIdx].M[nMVakuumfeldAus].bState_rw := FALSE;
END_IF
IF bSchalten THEN
bSchalten := FALSE;
bVentilVakuumfeld10 := FALSE;
bVentilVakuumfeld9 := FALSE;
bVentilVakuumfeld8 := FALSE;
bVentilVakuumfeld7 := FALSE;
bVentilVakuumfeld6 := FALSE;
bVentilVakuumfeld5 := FALSE;
bVentilVakuumfeld4 := FALSE;
bVentilVakuumfeld3 := FALSE;
bVentilVakuumfeld2 := FALSE;
bVentilVakuumfeld1 := FALSE;
bVentilBelueftung := NOT bEinschalten;
CASE nVakuumfeldNummer OF
1:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld2 := bEinschalten;
bVentilVakuumfeld5 := bEinschalten;
bVentilVakuumfeld6 := bEinschalten;
2:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld3 := bEinschalten;
3:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld2 := bEinschalten;
bVentilVakuumfeld3 := bEinschalten;
bVentilVakuumfeld4 := bEinschalten;
4:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld2 := bEinschalten;
bVentilVakuumfeld3 := bEinschalten;
bVentilVakuumfeld4 := bEinschalten;
bVentilVakuumfeld7 := bEinschalten;
5:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld2 := bEinschalten;
bVentilVakuumfeld3 := bEinschalten;
bVentilVakuumfeld4 := bEinschalten;
bVentilVakuumfeld5 := bEinschalten;
bVentilVakuumfeld7 := bEinschalten;
bVentilVakuumfeld8 := bEinschalten;
6:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld2 := bEinschalten;
bVentilVakuumfeld3 := bEinschalten;
bVentilVakuumfeld4 := bEinschalten;
bVentilVakuumfeld5 := bEinschalten;
bVentilVakuumfeld6 := bEinschalten;
bVentilVakuumfeld7 := bEinschalten;
bVentilVakuumfeld8 := bEinschalten;
bVentilVakuumfeld9 := bEinschalten;
7:
bVentilVakuumfeld1 := bEinschalten;
bVentilVakuumfeld2 := bEinschalten;
bVentilVakuumfeld3 := bEinschalten;
bVentilVakuumfeld4 := bEinschalten;
bVentilVakuumfeld5 := bEinschalten;
bVentilVakuumfeld6 := bEinschalten;
bVentilVakuumfeld7 := bEinschalten;
bVentilVakuumfeld8 := bEinschalten;
bVentilVakuumfeld9 := bEinschalten;
bVentilVakuumfeld10 := bEinschalten;
END_CASE
END_IF]]></ST>
</Implementation>
<LineIds Name="FB_Vakuumfelder">
<LineId Id="233" Count="0" />
<LineId Id="236" Count="0" />
<LineId Id="235" Count="0" />
<LineId Id="237" Count="0" />
<LineId Id="239" Count="1" />
<LineId Id="275" Count="0" />
<LineId Id="238" Count="0" />
<LineId Id="234" Count="0" />
<LineId Id="45" Count="15" />
<LineId Id="43" Count="1" />
<LineId Id="29" Count="2" />
<LineId Id="39" Count="0" />
<LineId Id="32" Count="6" />
<LineId Id="9" Count="0" />
<LineId Id="40" Count="0" />
<LineId Id="42" Count="0" />
<LineId Id="61" Count="1" />
<LineId Id="41" Count="0" />
<LineId Id="64" Count="0" />
<LineId Id="66" Count="2" />
<LineId Id="86" Count="0" />
<LineId Id="77" Count="0" />
<LineId Id="173" Count="0" />
<LineId Id="70" Count="4" />
<LineId Id="87" Count="0" />
<LineId Id="78" Count="0" />
<LineId Id="174" Count="0" />
<LineId Id="63" Count="0" />
<LineId Id="89" Count="0" />
<LineId Id="88" Count="0" />
<LineId Id="90" Count="0" />
<LineId Id="125" Count="0" />
<LineId Id="116" Count="8" />
<LineId Id="115" Count="0" />
<LineId Id="126" Count="1" />
<LineId Id="92" Count="2" />
<LineId Id="105" Count="0" />
<LineId Id="203" Count="2" />
<LineId Id="96" Count="0" />
<LineId Id="128" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="97" Count="0" />
<LineId Id="129" Count="1" />
<LineId Id="107" Count="0" />
<LineId Id="206" Count="0" />
<LineId Id="98" Count="0" />
<LineId Id="132" Count="1" />
<LineId Id="131" Count="0" />
<LineId Id="108" Count="0" />
<LineId Id="208" Count="0" />
<LineId Id="99" Count="0" />
<LineId Id="135" Count="2" />
<LineId Id="134" Count="0" />
<LineId Id="109" Count="0" />
<LineId Id="211" Count="1" />
<LineId Id="100" Count="0" />
<LineId Id="139" Count="3" />
<LineId Id="138" Count="0" />
<LineId Id="110" Count="0" />
<LineId Id="213" Count="2" />
<LineId Id="101" Count="0" />
<LineId Id="216" Count="7" />
<LineId Id="111" Count="0" />
<LineId Id="224" Count="0" />
<LineId Id="95" Count="0" />
<LineId Id="91" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Vakuumpumpe" Id="{56747386-4093-4ce8-86aa-e3f67ca94e13}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Vakuumpumpe
VAR_INPUT
bToggle : BOOL;
nMEin : INT := 74;
nMAus : INT := 75;
nChannelIdx : UINT := 0;
bReset : BOOL;
END_VAR
VAR_OUTPUT
bUmrichterFehler AT %I* : BOOL;
bVakuumpumpeEin AT %Q* : BOOL := FALSE;
iFrequenzVakuumpumpe AT %Q* : INT := 0; // 27230 = 50 Hz, 32767 = 60 Hz
END_VAR
VAR
rtToggle : R_TRIG;
rtReset : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[rtReset(CLK := bReset);
rtToggle(CLK := bToggle);
IF rtToggle.Q THEN
IF NOT bVakuumpumpeEin THEN
bVakuumpumpeEin := TRUE;
iFrequenzVakuumpumpe := 32000;
ELSE
bVakuumpumpeEin := FALSE;
iFrequenzVakuumpumpe := 0;
END_IF
END_IF
IF CNCSystem.Channel[nChannelIdx].M[nMEin].bState_rw THEN
bVakuumpumpeEin := TRUE;
iFrequenzVakuumpumpe := 32000;
CNCSystem.Channel[nChannelIdx].M[nMEin].bState_rw := FALSE;
END_IF
IF CNCSystem.Channel[nChannelIdx].M[nMAus].bState_rw THEN
bVakuumpumpeEin := FALSE;
iFrequenzVakuumpumpe := 0;
CNCSystem.Channel[nChannelIdx].M[nMAus].bState_rw := FALSE;
END_IF
IF rtReset.Q THEN
bVakuumpumpeEin := FALSE;
iFrequenzVakuumpumpe := 0;
CNCSystem.Channel[nChannelIdx].M[nMEin].bState_rw := FALSE;
CNCSystem.Channel[nChannelIdx].M[nMAus].bState_rw := FALSE;
END_IF]]></ST>
</Implementation>
<LineIds Name="FB_Vakuumpumpe">
<LineId Id="9" Count="0" />
<LineId Id="56" Count="0" />
<LineId Id="55" Count="0" />
<LineId Id="58" Count="0" />
<LineId Id="57" Count="0" />
<LineId Id="61" Count="1" />
<LineId Id="64" Count="3" />
<LineId Id="63" Count="0" />
<LineId Id="60" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="21" Count="1" />
<LineId Id="20" Count="0" />
<LineId Id="26" Count="4" />
<LineId Id="25" Count="0" />
<LineId Id="32" Count="0" />
<LineId Id="31" Count="0" />
<LineId Id="33" Count="0" />
<LineId Id="35" Count="2" />
<LineId Id="34" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_WZW" Id="{ca776168-414c-43f4-a7b2-3bac94c29b90}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_WZW
VAR_INPUT
bExecute : BOOL;
bReset : BOOL;
bSpindleInPosition : BOOL;
bPreselectOnly : BOOL;
uiToolPocket : DINT;
bInfeedActive : BOOL;
bSpindleOpen : BOOL;
END_VAR
VAR_IN_OUT
bExecutePreselect : BOOL;
END_VAR
VAR_OUTPUT
bCmdOpenSpindle : BOOL;
bDone : BOOL;
bError : BOOL;
END_VAR
VAR
fbWZWArm : FB_WZWArm;
bExecuteArm : BOOL;
fbWZWKette : FB_WZWKette;
bExecuteChain : BOOL;
rtExecute : R_TRIG;
rtPreselectTool : R_TRIG;
rtReset : R_TRIG;
nState : INT := 0;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Start command with rising edge
rtExecute(CLK := bExecute);
rtReset(CLK := bReset);
fbWZWArm(
bReset := bReset,
bExecute := bExecuteArm,
bSpindleOpen := bSpindleOpen,
bInfeedEnabled := bInfeedActive);
fbWZWKette(
bExecute := bExecuteChain OR bExecutePreselect,
bReset := bReset,
bInfeedEnabled := bInfeedActive,
uiToolPocket := uiToolPocket);
IF bExecutePreselect THEN
bExecutePreselect := FALSE;
END_IF
IF fbWZWArm.bError OR fbWZWKette.bError THEN
nState := 99;
END_IF
CASE nState OF
0: // Idle
bExecuteArm := FALSE;
bExecuteChain := FALSE;
bDone := TRUE;
IF rtExecute.Q AND bInfeedActive THEN
bExecuteChain := TRUE;
bDone := FALSE;
nState := 10;
END_IF
10: // Move chain to tool pocket
IF fbWZWKette.bDone THEN
bExecuteChain := FALSE;
IF bPreselectOnly THEN
nState := 0;
ELSE
nState := 20;
END_IF
END_IF
20: // Warte auf Spindel in Position zum Wechseln
IF bSpindleInPosition THEN
bExecuteArm := TRUE;
nState := 30;
END_IF
30: // Warte auf wechsel abgeschlossen
bCmdOpenSpindle := fbWZWArm.bCmdOpenSpindle;
IF fbWZWArm.bDone THEN
bExecuteArm := FALSE;
bDone := TRUE;
nState := 0;
END_IF
99: // Error
IF rtReset.Q THEN
nState := 0;
END_IF
bExecuteArm := FALSE;
bExecuteChain := FALSE;
END_CASE]]></ST>
</Implementation>
<LineIds Name="FB_WZW">
<LineId Id="79" Count="1" />
<LineId Id="213" Count="0" />
<LineId Id="212" Count="0" />
<LineId Id="94" Count="0" />
<LineId Id="93" Count="0" />
<LineId Id="246" Count="0" />
<LineId Id="100" Count="0" />
<LineId Id="150" Count="0" />
<LineId Id="105" Count="0" />
<LineId Id="101" Count="0" />
<LineId Id="95" Count="0" />
<LineId Id="102" Count="0" />
<LineId Id="179" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="103" Count="0" />
<LineId Id="281" Count="3" />
<LineId Id="142" Count="3" />
<LineId Id="82" Count="2" />
<LineId Id="148" Count="1" />
<LineId Id="136" Count="1" />
<LineId Id="85" Count="0" />
<LineId Id="108" Count="0" />
<LineId Id="138" Count="0" />
<LineId Id="86" Count="1" />
<LineId Id="89" Count="0" />
<LineId Id="91" Count="0" />
<LineId Id="109" Count="0" />
<LineId Id="118" Count="0" />
<LineId Id="122" Count="0" />
<LineId Id="110" Count="0" />
<LineId Id="112" Count="0" />
<LineId Id="115" Count="1" />
<LineId Id="113" Count="0" />
<LineId Id="111" Count="0" />
<LineId Id="119" Count="2" />
<LineId Id="129" Count="0" />
<LineId Id="123" Count="4" />
<LineId Id="130" Count="2" />
<LineId Id="135" Count="0" />
<LineId Id="134" Count="0" />
<LineId Id="133" Count="0" />
<LineId Id="139" Count="1" />
<LineId Id="214" Count="2" />
<LineId Id="146" Count="1" />
<LineId Id="92" Count="0" />
<LineId Id="28" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,274 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_WZWArm" Id="{0bd61078-7831-4aaf-91a6-e74717f4416a}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_WZWArm
VAR_INPUT
bReset : BOOL;
bExecute : BOOL;
bInfeedEnabled : BOOL;
bSpindleOpen : BOOL;
END_VAR
VAR_OUTPUT
bCmdOpenSpindle : BOOL;
bError : BOOL;
bDone : BOOL;
END_VAR
VAR
// Achssteuerung
uiZSW1 AT %I* : UINT;
uiAKTSATZ AT %I* : UINT;
uiSTW1 AT %Q* : UINT;
uiSatzAnw AT %Q* : UINT;
// Zustandsautomat
nState : INT := 0;
// Start bei steigender Flanke
rtStart : R_TRIG;
// Hilfsvariablen
wZSW1 : WORD;
wAktSatz : WORD;
wSTW1 : WORD;
tofReset : TOF;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Umrichterwerte lesen
wZSW1 := UINT_TO_WORD(uiZSW1);
wAktSatz := UINT_TO_WORD(uiAktSatz);
// Führung durch PLC
wSTW1.10 := 1;
// Reset der Achse wenn nötig
tofReset(IN := bReset, PT := T#250MS);
wSTW1.7 := tofReset.Q;
// Start bei steigender Flanke
rtStart(CLK := bExecute);
CASE nState OF
0 : // Idle
wStW1.0 := 0; // Ein
wStW1.1 := 0; // Nicht Austrudel
wStW1.2 := 0; // Kein Schnellhalt
wStW1.3 := 0; // Betrieb freigeben
wSTW1.4 := 0; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
bDone := TRUE;
bCmdOpenSpindle := FALSE;
IF rtStart.Q AND bInfeedEnabled THEN
bExecute := FALSE;
bDone := FALSE;
nState := 10;
END_IF
10: // Warten auf Einschaltbereit
wStW1.0 := 0; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 1; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF wZSW1.0 THEN // Einschaltbereit
nState := 20;
END_IF
20: // Warten auf Betriebsbereit
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 1; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF wZSW1.2 THEN // Betriebsbereit
nState := 30;
END_IF
30: // Betreibsbereit -> Greifen
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 1; // EPOS kein Zwischenhalt
wSTW1.6 := 1; // EPOS Verfahrauftrag aktivieren 0 -> 1
// Starte beim ersten Satz
uiSatzAnw := 0;
IF wZSW1.12 AND (NOT wZSW1.10) THEN // Verfahrauftrag aktiv
nState := 40;
END_IF
40: // Warten auf in Position
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF wZSW1.10 THEN
nState := 50;
END_IF
50: // Warten auf Spindel offen
bCmdOpenSpindle := TRUE;
uiSatzAnw := 1;
IF bSpindleOpen THEN
nState := 60;
END_IF
60: // Warten auf nächste Position (Werkzeuge getauscht)
wSTW1.6 := 1; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF wZSW1.12 AND (NOT wZSW1.10) THEN
nState := 65;
END_IF
65: // Warten auf in Position
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF wZSW1.10 THEN
nState := 70;
END_IF
70: // Warte auf Spindel zu
uiSatzAnw := 2;
wSTW1.6 := 0;
bCmdOpenSpindle := FALSE;
IF (NOT bSpindleOpen) THEN
nState := 80;
END_IF
80: // Warte auf nächste Position (Ruheposition)
wSTW1.6 := 1;
IF wZSW1.12 AND (NOT wZSW1.10) THEN
nState := 85;
END_IF
85: // Warte auf position erreicht
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF wZSW1.10 THEN
nState := 90;
END_IF
90: // Ausschalten
wStW1.0 := 0; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 0; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
IF NOT wZSW1.1 THEN
nState := 0;
END_IF
99: // Error
bError := TRUE;
END_CASE
// Umrichterwerte schreiben
uiSTW1 := WORD_TO_UINT(wSTW1);]]></ST>
</Implementation>
<LineIds Name="FB_WZWArm">
<LineId Id="132" Count="0" />
<LineId Id="378" Count="0" />
<LineId Id="288" Count="0" />
<LineId Id="433" Count="1" />
<LineId Id="432" Count="0" />
<LineId Id="600" Count="0" />
<LineId Id="599" Count="0" />
<LineId Id="601" Count="1" />
<LineId Id="398" Count="1" />
<LineId Id="397" Count="0" />
<LineId Id="33" Count="1" />
<LineId Id="162" Count="0" />
<LineId Id="379" Count="4" />
<LineId Id="363" Count="0" />
<LineId Id="435" Count="0" />
<LineId Id="560" Count="1" />
<LineId Id="555" Count="1" />
<LineId Id="400" Count="0" />
<LineId Id="402" Count="0" />
<LineId Id="500" Count="0" />
<LineId Id="562" Count="0" />
<LineId Id="403" Count="0" />
<LineId Id="401" Count="0" />
<LineId Id="384" Count="1" />
<LineId Id="387" Count="4" />
<LineId Id="386" Count="0" />
<LineId Id="436" Count="0" />
<LineId Id="404" Count="0" />
<LineId Id="406" Count="1" />
<LineId Id="405" Count="0" />
<LineId Id="408" Count="1" />
<LineId Id="411" Count="4" />
<LineId Id="410" Count="0" />
<LineId Id="437" Count="0" />
<LineId Id="416" Count="0" />
<LineId Id="418" Count="1" />
<LineId Id="417" Count="0" />
<LineId Id="420" Count="1" />
<LineId Id="424" Count="4" />
<LineId Id="423" Count="0" />
<LineId Id="438" Count="0" />
<LineId Id="429" Count="0" />
<LineId Id="431" Count="0" />
<LineId Id="430" Count="0" />
<LineId Id="439" Count="0" />
<LineId Id="441" Count="1" />
<LineId Id="440" Count="0" />
<LineId Id="443" Count="1" />
<LineId Id="503" Count="0" />
<LineId Id="445" Count="4" />
<LineId Id="554" Count="0" />
<LineId Id="502" Count="0" />
<LineId Id="450" Count="0" />
<LineId Id="493" Count="0" />
<LineId Id="451" Count="3" />
<LineId Id="504" Count="0" />
<LineId Id="495" Count="0" />
<LineId Id="455" Count="0" />
<LineId Id="463" Count="1" />
<LineId Id="543" Count="1" />
<LineId Id="546" Count="2" />
<LineId Id="545" Count="0" />
<LineId Id="465" Count="1" />
<LineId Id="506" Count="0" />
<LineId Id="505" Count="0" />
<LineId Id="557" Count="1" />
<LineId Id="497" Count="0" />
<LineId Id="467" Count="4" />
<LineId Id="507" Count="0" />
<LineId Id="499" Count="0" />
<LineId Id="473" Count="1" />
<LineId Id="472" Count="0" />
<LineId Id="509" Count="1" />
<LineId Id="550" Count="2" />
<LineId Id="549" Count="0" />
<LineId Id="475" Count="1" />
<LineId Id="478" Count="5" />
<LineId Id="477" Count="0" />
<LineId Id="484" Count="3" />
<LineId Id="234" Count="1" />
<LineId Id="564" Count="0" />
<LineId Id="36" Count="0" />
<LineId Id="201" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="392" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,264 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_WZWArm_old" Id="{47db9376-1829-4363-81cb-0972e2cb3efc}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_WZWArm_old
VAR_INPUT
bNextStep AT %I* : BOOL;
bFullAuto AT %I* : BOOL;
bInfeedReady : BOOL;
END_VAR
VAR_OUTPUT
bNextStepActive AT %Q* : BOOL;
bFullAutoActive AT %Q* : BOOL;
END_VAR
VAR
refAxis : AXIS_REF;
axPower : MC_Power;
axMoveAdd : MC_MoveAdditive;
axMoveAbsMod : MC_MoveModulo;
axReset : MC_Reset;
rtNextStep : R_TRIG;
rtFullAuto : R_Trig;
nState : INT := -20;
fHomePos : REAL := 0;
fGrabPos : REAL := 1433.5;
fChangePos : REAL := 5917;
fNextPosition : REAL := 0;
bEnable : BOOL;
bExecute : BOOL;
bResetAxis : BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[rtNextStep(CLK := bNextStep);
rtFullAuto(CLK := bFullAuto);
IF rtFullAuto.Q AND (nState = 0) THEN
bFullAutoActive := NOT bFullAutoActive;
END_IF
axPower(
Axis := refAxis,
Enable := bEnable OR bFullAutoActive,
Enable_Positive := TRUE,
Enable_Negative := TRUE);
axMoveAbsMod(
Axis := refAxis,
Execute := axPower.Status AND bExecute,
Position := fNextPosition,
Velocity := 4320, // 4320
Acceleration := 12960, // 12960
Deceleration := 12960, // 12960
Direction := MC_Direction.MC_Positive_Direction);
IF PLCReset THEN
bResetAxis := TRUE;
END_IF
axReset(Axis := refAxis, Execute := bResetAxis);
IF axReset.Done THEN
bResetAxis := FALSE;
END_IF
CASE nState OF
-20 : // Wait for start Tick
bNextStepActive := TRUE;
IF rtNextStep.Q AND bInfeedReady THEN
nState := -10;
bEnable := TRUE;
bExecute := TRUE;
fNextPosition := fHomePos;
bNextStepActive := FALSE;
END_IF
-10: // Move to home Position on first Startup
IF axMoveAbsMod.Done AND (NOT axMoveAbsMod.Error) AND (NOT axPower.Error) THEN
bEnable := FALSE;
bExecute := FALSE;
nState := 0;
END_IF
IF axMoveAbsMod.Error OR axPower.Error THEN
nState := 99;
END_IF
0: // In Home Position
bNextStepActive := TRUE;
IF rtNextStep.Q THEN
fNextPosition := fGrabPos;
bEnable := TRUE;
bExecute := TRUE;
bNextStepActive := FALSE;
IF bFullAutoActive THEN
fNextPosition := 7320;
nState := 60;
ELSE
fNextPosition := fGrabPos;
nState := 10;
END_IF
END_IF
10: // Move to Grab Position
IF axMoveAbsMod.Done AND (NOT axMoveAbsMod.Error) THEN
bEnable := FALSE;
bExecute := FALSE;
nState := 20;
END_IF
20: // In Grab Position
bNextStepActive := TRUE;
IF rtNextStep.Q OR bFullAutoActive THEN
fNextPosition := fChangePos;
bEnable := TRUE;
bExecute := TRUE;
nState := 30;
bNextStepActive := FALSE;
END_IF
30: // Wait for Change Position
IF axMoveAbsMod.Done AND (NOT axMoveAbsMod.Error) THEN
bEnable := FALSE;
bExecute := FALSE;
nState := 40;
END_IF
40: // In Change Position
bNextStepActive := TRUE;
IF rtNextStep.Q OR bFullAutoActive THEN
fNextPosition := fHomePos;
bEnable := TRUE;
bExecute := TRUE;
nState := 50;
bNextStepActive := FALSE;
END_IF
50: // Wait for Home Position
IF axMoveAbsMod.Done AND (NOT axMoveAbsMod.Error) THEN
bEnable := FALSE;
bExecute := FALSE;
nState := 0;
END_IF
60: // Move to Grab Position
IF axMoveAbsMod.Done AND (NOT axMoveAbsMod.Error) THEN
bEnable := FALSE;
bExecute := FALSE;
nState := 0;
END_IF
99: // Error
IF PLCReset THEN
bEnable := FALSE;
bExecute := FALSE;
bFullAutoActive := FALSE;
nState := -20;
END_IF
END_CASE
//bNextStepActive := bNextStepActive AND bInfeedReady;
// 0
// 1433,5
// 5917
// 7320]]></ST>
</Implementation>
<LineIds Name="FB_WZWArm_old">
<LineId Id="22" Count="0" />
<LineId Id="132" Count="0" />
<LineId Id="134" Count="0" />
<LineId Id="133" Count="0" />
<LineId Id="135" Count="1" />
<LineId Id="39" Count="0" />
<LineId Id="38" Count="0" />
<LineId Id="42" Count="8" />
<LineId Id="107" Count="2" />
<LineId Id="53" Count="0" />
<LineId Id="279" Count="3" />
<LineId Id="285" Count="0" />
<LineId Id="284" Count="0" />
<LineId Id="286" Count="2" />
<LineId Id="33" Count="1" />
<LineId Id="55" Count="0" />
<LineId Id="122" Count="0" />
<LineId Id="56" Count="1" />
<LineId Id="117" Count="0" />
<LineId Id="138" Count="0" />
<LineId Id="118" Count="0" />
<LineId Id="123" Count="0" />
<LineId Id="58" Count="1" />
<LineId Id="35" Count="0" />
<LineId Id="114" Count="1" />
<LineId Id="139" Count="0" />
<LineId Id="116" Count="0" />
<LineId Id="111" Count="0" />
<LineId Id="242" Count="3" />
<LineId Id="67" Count="1" />
<LineId Id="124" Count="0" />
<LineId Id="69" Count="1" />
<LineId Id="72" Count="0" />
<LineId Id="140" Count="0" />
<LineId Id="152" Count="1" />
<LineId Id="159" Count="0" />
<LineId Id="154" Count="0" />
<LineId Id="156" Count="0" />
<LineId Id="158" Count="0" />
<LineId Id="157" Count="0" />
<LineId Id="155" Count="0" />
<LineId Id="125" Count="0" />
<LineId Id="71" Count="0" />
<LineId Id="74" Count="1" />
<LineId Id="77" Count="1" />
<LineId Id="141" Count="0" />
<LineId Id="79" Count="0" />
<LineId Id="76" Count="0" />
<LineId Id="80" Count="1" />
<LineId Id="126" Count="0" />
<LineId Id="84" Count="2" />
<LineId Id="142" Count="0" />
<LineId Id="87" Count="0" />
<LineId Id="127" Count="0" />
<LineId Id="83" Count="0" />
<LineId Id="88" Count="1" />
<LineId Id="91" Count="1" />
<LineId Id="143" Count="0" />
<LineId Id="93" Count="0" />
<LineId Id="90" Count="0" />
<LineId Id="94" Count="1" />
<LineId Id="128" Count="0" />
<LineId Id="97" Count="2" />
<LineId Id="144" Count="0" />
<LineId Id="100" Count="0" />
<LineId Id="129" Count="0" />
<LineId Id="96" Count="0" />
<LineId Id="101" Count="1" />
<LineId Id="104" Count="1" />
<LineId Id="145" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="103" Count="0" />
<LineId Id="160" Count="0" />
<LineId Id="163" Count="4" />
<LineId Id="162" Count="0" />
<LineId Id="234" Count="3" />
<LineId Id="239" Count="0" />
<LineId Id="241" Count="0" />
<LineId Id="240" Count="0" />
<LineId Id="238" Count="0" />
<LineId Id="36" Count="0" />
<LineId Id="201" Count="0" />
<LineId Id="200" Count="0" />
<LineId Id="32" Count="0" />
<LineId Id="14" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="12" Count="1" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,399 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_WZWKette" Id="{de78c7b1-582b-4c7b-bb52-35e58f49ffdc}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_WZWKette
VAR_INPUT
bExecute : BOOL;
bReset : BOOL;
uiToolPocket : DINT := 1;
bInfeedEnabled : BOOL;
uiMaxToolPockets : UINT := 51;
END_VAR
VAR_OUTPUT
bDone : BOOL;
bError : BOOL;
nErrorId : INT;
END_VAR
VAR
uiZSW1 AT %I* : UINT;
uiAKTSATZ AT %I* : UINT;
uiZSW2 AT %I* : UINT;
uiX_IST AT %I* : UINT;
uiX_IST2 AT %I* : UINT;
uiSTW1 AT %Q* : UINT;
uiSATZANW AT %Q* : UINT;
uiSTW2 AT %Q* : UINT;
uiMDI_TARPOS AT %Q* : UINT;
uiMDI_TARPOS2 AT %Q* : UINT;
uiMDI_VELOCITY AT %Q* : UINT;
uiMDI_VELOCITY2 AT %Q* : UINT;
uiMDI_ACC AT %Q* : UINT;
uiMDI_DEC AT %Q* : UINT;
uiMDI_MOD AT %Q* : UINT;
rtStart : R_TRIG;
rtReset : R_TRIG;
ftError : F_TRIG;
nState : INT := 0;
nErrorState : INT := -1;
dwTargetPosition : DWORD;
dwCurrentPosition : DWORD;
dwTargetSpeed : DWORD := 17260; // MAX 17260
wTargetPositionLow : WORD;
wTargetPositionHigh : WORD;
wZSW1 : WORD;
wSATZANW : WORD;
wZSW2 : WORD;
wSTW1 : WORD;
wAKTSATZ : WORD;
wSTW2 : WORD;
wMDI_MOD : WORD;
tofReset : TOF;
tonWaitAktive : TON;
bTest : BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// VERSION FÜR EPOS
// Einlesen
wZSW1 := UINT_TO_WORD(uiZSW1);
wAKTSATZ := UINT_TO_WORD(uiAKTSATZ);
wZSW2 := UINT_TO_WORD(uiZSW2);
dwCurrentPosition := UINT_TO_DWORD(uiX_IST);
dwCurrentPosition := SHL(dwCurrentPosition, 16) + UINT_TO_DWORD(uiX_IST2);
IF uiToolPocket > 0 AND uiToolPocket < 51 THEN
dwTargetPosition := DINT_TO_DWORD(3672000 - ((uiToolPocket - 1) * 72000));
ELSE
dwTargetPosition := 0;
END_IF
// Führung durch PLC
wSTW1.10 := 1;
// Absolute positionierung
wMDI_MOD.0 := 1;
// Positionierung absolut kürzester Weg
wMDI_MOD.1 := 0;
// Start bei steigender Flanke
rtStart(CLK := bExecute);
// Reset
rtReset(CLK := bReset);
// Error trigger
ftError(CLK := wZSW1.3);
// Fehlerzustand weitergeben
bError := wZSW1.3;
// Fehlerzustand
IF (wZSW1.3 = 1) AND (nState < 99) THEN
nErrorState := nState;
nState := 99;
END_IF
// Reset der Achse
tofReset(IN := bReset, PT := T#250MS);
wSTW1.7 := tofReset.Q;
CASE nState OF
0: // Idle -> Einschalten
wStW1.0 := 0; // Ein
wStW1.1 := 0; // Nicht Austrudel
wStW1.2 := 0; // Kein Schnellhalt
wStW1.3 := 0; // Betrieb freigeben
wSTW1.4 := 0; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 0; // MDI aktivieren
IF rtStart.Q AND bInfeedEnabled THEN
bDone := FALSE;
IF dwTargetPosition <> dwCurrentPosition THEN
nState := 10;
ELSE
nState := 70;
END_IF
END_IF
10: // Warten auf Einschaltbereit -> Betriebsbereit
wStW1.0 := 0; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 0; // MDI aktivieren
IF wZSW1.0 THEN // Einschaltbereit
nState := 20;
END_IF
20: // Warten auf Betriebsbereit
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 0; // MDI aktivieren
IF wZSW1.1 THEN // Betriebsbereit
nState := 30;
END_IF
30: // Betriebsbereit -> Bewegungsparameter setzen
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 1; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 1; // MDI aktivieren
// Beschleunigungsausgabe
uiMDI_ACC := 16384;
uiMDI_DEC := 16384;
// Positionsausgabe in zwei udint
uiMDI_TARPOS := DWORD_TO_UINT(SHR(dwTargetPosition, 16));
uiMDI_TARPOS2 := DWORD_TO_UINT(dwTargetPosition);
// Geschwindigkeitsausgabe
uiMDI_VELOCITY := DWORD_TO_UINT(SHR(dwTargetSpeed, 16));
uiMDI_VELOCITY2 := DWORD_TO_UINT(dwTargetSpeed);
IF wAKTSATZ.15 THEN // MDI aktiviert
nState := 40;
END_IF
40: // Warten auf Fahrauftrag quittierung
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 1; // EPOS nicht Verwerfen
wSTW1.5 := 1; // EPOS kein Zwischenhalt
wSTW1.6 := 1; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 1; // MDI aktivieren
// Workaraound für kurze Fahrwege (optimierungsbedarf)
tonWaitAktive(In := TRUE, PT := T#1S);
IF wZSW1.12 AND (NOT wZSW1.10) THEN // Verfahrauftrag aktiv
tonWaitAktive(In := FALSE);
nState := 45;
END_IF
// Workaraound siehe oben
IF wZSW1.12 AND tonWaitAktive.Q AND (ABS(dwCurrentPosition - dwTargetPosition) < 10) THEN
tonWaitAktive(In := FALSE);
nState := 45;
END_IF
45: // Warten auf in position
IF wZSW1.10 THEN
nState := 50;
END_IF
50: // MDI abschalten
wStW1.0 := 1; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 0; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 0; // MDI aktivieren
IF NOT wAKTSATZ.10 THEN
nState := 60;
END_IF
60: // Ausschalten
wStW1.0 := 0; // Ein
wStW1.1 := 1; // Nicht Austrudel
wStW1.2 := 1; // Kein Schnellhalt
wStW1.3 := 1; // Betrieb freigeben
wSTW1.4 := 0; // EPOS nicht Verwerfen
wSTW1.5 := 0; // EPOS kein Zwischenhalt
wSTW1.6 := 0; // EPOS Verfahrauftrag aktivieren 0 -> 1
wSATZANW.15 := 0; // MDI aktivieren
IF NOT wZSW1.1 THEN
nState := 0;
bDone := TRUE;
END_IF
70: // Stehen schon an der Position, nichts machen
bDone := TRUE;
nState := 0;
99: // Fehler
bError := TRUE;
IF ftError.Q OR (wZSW1.3 = 0) THEN
nState := 0;
END_IF
END_CASE
// Ausgabe
uiSTW1 := WORD_TO_UINT(wStw1);
uiSATZANW := WORD_TO_UINT(wSATZANW);
uiSTW2 := WORD_TO_UINT(wStw2);
uiMDI_MOD := WORD_TO_UINT(wMDI_MOD);]]></ST>
</Implementation>
<LineIds Name="FB_WZWKette">
<LineId Id="162" Count="0" />
<LineId Id="181" Count="0" />
<LineId Id="184" Count="0" />
<LineId Id="490" Count="0" />
<LineId Id="182" Count="0" />
<LineId Id="580" Count="0" />
<LineId Id="579" Count="0" />
<LineId Id="581" Count="0" />
<LineId Id="585" Count="0" />
<LineId Id="584" Count="0" />
<LineId Id="583" Count="0" />
<LineId Id="586" Count="2" />
<LineId Id="276" Count="0" />
<LineId Id="183" Count="0" />
<LineId Id="163" Count="0" />
<LineId Id="280" Count="0" />
<LineId Id="279" Count="0" />
<LineId Id="281" Count="0" />
<LineId Id="283" Count="0" />
<LineId Id="282" Count="0" />
<LineId Id="284" Count="0" />
<LineId Id="382" Count="0" />
<LineId Id="381" Count="0" />
<LineId Id="380" Count="0" />
<LineId Id="525" Count="0" />
<LineId Id="524" Count="0" />
<LineId Id="526" Count="0" />
<LineId Id="540" Count="0" />
<LineId Id="539" Count="0" />
<LineId Id="544" Count="0" />
<LineId Id="678" Count="0" />
<LineId Id="677" Count="0" />
<LineId Id="679" Count="0" />
<LineId Id="511" Count="0" />
<LineId Id="510" Count="0" />
<LineId Id="512" Count="0" />
<LineId Id="530" Count="0" />
<LineId Id="527" Count="1" />
<LineId Id="805" Count="0" />
<LineId Id="742" Count="0" />
<LineId Id="741" Count="0" />
<LineId Id="743" Count="0" />
<LineId Id="373" Count="0" />
<LineId Id="372" Count="0" />
<LineId Id="374" Count="0" />
<LineId Id="386" Count="3" />
<LineId Id="385" Count="0" />
<LineId Id="446" Count="0" />
<LineId Id="407" Count="0" />
<LineId Id="465" Count="1" />
<LineId Id="390" Count="0" />
<LineId Id="379" Count="0" />
<LineId Id="674" Count="0" />
<LineId Id="865" Count="0" />
<LineId Id="383" Count="0" />
<LineId Id="866" Count="2" />
<LineId Id="384" Count="0" />
<LineId Id="391" Count="0" />
<LineId Id="376" Count="0" />
<LineId Id="471" Count="0" />
<LineId Id="393" Count="2" />
<LineId Id="392" Count="0" />
<LineId Id="447" Count="0" />
<LineId Id="408" Count="0" />
<LineId Id="467" Count="1" />
<LineId Id="396" Count="3" />
<LineId Id="410" Count="0" />
<LineId Id="377" Count="0" />
<LineId Id="401" Count="3" />
<LineId Id="400" Count="0" />
<LineId Id="448" Count="0" />
<LineId Id="409" Count="0" />
<LineId Id="469" Count="1" />
<LineId Id="405" Count="1" />
<LineId Id="411" Count="3" />
<LineId Id="417" Count="4" />
<LineId Id="449" Count="0" />
<LineId Id="416" Count="0" />
<LineId Id="439" Count="1" />
<LineId Id="422" Count="0" />
<LineId Id="424" Count="1" />
<LineId Id="423" Count="0" />
<LineId Id="431" Count="6" />
<LineId Id="427" Count="0" />
<LineId Id="450" Count="0" />
<LineId Id="486" Count="2" />
<LineId Id="451" Count="2" />
<LineId Id="457" Count="7" />
<LineId Id="454" Count="0" />
<LineId Id="472" Count="0" />
<LineId Id="940" Count="0" />
<LineId Id="932" Count="1" />
<LineId Id="473" Count="0" />
<LineId Id="934" Count="0" />
<LineId Id="474" Count="1" />
<LineId Id="935" Count="0" />
<LineId Id="941" Count="0" />
<LineId Id="936" Count="1" />
<LineId Id="939" Count="0" />
<LineId Id="938" Count="0" />
<LineId Id="569" Count="4" />
<LineId Id="455" Count="0" />
<LineId Id="476" Count="0" />
<LineId Id="478" Count="7" />
<LineId Id="477" Count="0" />
<LineId Id="491" Count="5" />
<LineId Id="498" Count="7" />
<LineId Id="497" Count="0" />
<LineId Id="506" Count="2" />
<LineId Id="673" Count="0" />
<LineId Id="509" Count="0" />
<LineId Id="869" Count="3" />
<LineId Id="415" Count="0" />
<LineId Id="378" Count="0" />
<LineId Id="675" Count="0" />
<LineId Id="547" Count="0" />
<LineId Id="542" Count="0" />
<LineId Id="545" Count="0" />
<LineId Id="532" Count="1" />
<LineId Id="375" Count="0" />
<LineId Id="179" Count="0" />
<LineId Id="165" Count="0" />
<LineId Id="180" Count="0" />
<LineId Id="441" Count="0" />
<LineId Id="185" Count="0" />
<LineId Id="285" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_Zentralschmierung" Id="{bcde91c3-50bd-4ca1-8148-e05e13bdb662}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Zentralschmierung
VAR_INPUT
bCmdStartCycle : BOOL;
bCycleSensor : BOOL;
bReset : BOOL;
END_VAR
VAR_OUTPUT
bError : BOOL;
bBusy : BOOL;
END_VAR
VAR
bEnablePump AT %Q* : BOOL;
rtStartCycle : R_TRIG;
rtReset : R_TRIG;
rtCycleSensor : R_TRIG;
tonError : TON;
nState : INT := 0;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Start cycle on rising edge
rtStartCycle(CLK := bCmdStartCycle);
// Cycle done on rising edge of sensor
rtCycleSensor(CLK := bCycleSensor);
// Reset on rising edge
rtReset(CLK := bReset);
CASE nState OF
0: // Idle
bEnablePump := FALSE;
bBusy := FALSE;
bError :=FALSE;
tonError(IN := FALSE);
IF rtStartCycle.Q THEN
nState := 10;
END_IF
10: // Cycle started
bEnablePump := TRUE;
bBusy := TRUE;
// Timeout protection (Normal cycle approx. 7 min 40 sec)
tonError(IN := TRUE, PT := T#15M);
IF tonError.Q THEN
nState := 99;
END_IF
// Cacle done
IF rtCycleSensor.Q THEN
nState := 0;
END_IF
99: // Error
bEnablePump := FALSE;
tonError(IN := FALSE);
bError := TRUE;
bBusy := FALSE;
IF rtReset.Q THEN
nState := 0;
END_IF
END_CASE]]></ST>
</Implementation>
<LineIds Name="FB_Zentralschmierung">
<LineId Id="18" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="21" Count="0" />
<LineId Id="60" Count="0" />
<LineId Id="59" Count="0" />
<LineId Id="61" Count="0" />
<LineId Id="27" Count="0" />
<LineId Id="26" Count="0" />
<LineId Id="28" Count="0" />
<LineId Id="36" Count="0" />
<LineId Id="51" Count="1" />
<LineId Id="47" Count="0" />
<LineId Id="37" Count="0" />
<LineId Id="30" Count="5" />
<LineId Id="50" Count="0" />
<LineId Id="38" Count="0" />
<LineId Id="67" Count="0" />
<LineId Id="39" Count="3" />
<LineId Id="62" Count="0" />
<LineId Id="66" Count="0" />
<LineId Id="63" Count="2" />
<LineId Id="43" Count="3" />
<LineId Id="48" Count="1" />
<LineId Id="55" Count="3" />
<LineId Id="29" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<GVL Name="GVL_HMI" Id="{14920b99-5488-4ef2-b48f-b63f88230741}">
<Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL
bAxisEnableAllowed : BOOL;
bProgramStartAllowed : BOOL;
iSpindleLoadPercent : INT;
bEnableStepper : BOOL;
bStartHoming : BOOL;
bSelectedField : INT;
bExecVacFieldChange : BOOL;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<GVL Name="GVL_OEM" Id="{0f5063c1-8c06-48ae-9b7a-47cf210f919b}">
<Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL
byteInputSpindlePin2 AT %I* : BYTE;
byteInputSpindlePin4 AT %I* : BYTE;
byteOutputSpindlePin2 AT %Q* : BYTE;
byteOutputSpindlePin4 AT %Q* : BYTE;
byteInputDruckluft0 AT %I* : BYTE;
byteInputDruckluft1 AT %I* : BYTE;
byteInputEncoder0 AT %I* : BYTE;
byteInputEncoder1 AT %I* : BYTE;
uiEncoderValuePaper : UINT;
// Tasten am Bildschirm 1
bBtnNCStart AT %I* : BOOL;
bBtnNCStartLED AT %Q* : BOOL;
bBtnNCStop AT %I* : BOOL;
bBtnNCStopLED AT %Q* : BOOL;
bBtnInfeedEnable AT %I* : BOOL;
bBtnInfeedEnableLED AT %Q* : BOOL;
bBtnToggleVakuumpumpe AT %I* : BOOL;
iSpindleLoad AT %I* : INT;
bMesstaster AT %I* : BOOL;
pVe : POINTER TO VE_CHANNEL_DATA_CH_1;
END_VAR
// bit 6 pin 4 -> Klemmung inaktiv
// BK -> Pin 4
// WHT -> Pin 2
// 1.6.2 -> Ventil Klemmung NC]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.4">
<POU Name="POU_AutoOff" Id="{4150bdd9-8aaf-487c-9b90-517ff81ad5a8}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM POU_AutoOff
VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<LineIds Name="POU_AutoOff">
<LineId Id="5" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_Einspeisung" Id="{5cd6801a-283d-4acd-9eba-b4e80aa15a2c}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Einspeisung
VAR
// Einschalten der Einspeisung
bEnable : BOOL := TRUE;
// statuswort der Einspeisung
uiZsw AT %I* : UINT;
bError : BOOL;
// Steuerwort der Einspeisung
uiStw AT %Q* : UINT := 0;
// Ausgänge der CU
uiCUIO AT %Q* : USINT;
// Einspeisung aktiv (für extern)
bInfeedActive : BOOL;
wZsw : WORD := 0;
wStw : WORD := 0;
wCUIO : WORD := 0;
// Zustandsvariable
nState : INT := 0;
bBtnEnable : BOOL;
bBtnDisable AT %I* : BOOL;
bLEDBtnEnable : BOOL;
bLEDBtnDissable : BOOL;
rtEinschalten : R_TRIG;
rtAusschalten : R_TRIG;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Umwandeln des Zustandwortes
wZsw := UINT_TO_WORD(uiZsw);
wStw := UINT_TO_WORD(uiStw);
bError := (gpAx[0]^.lr_state.axis_state_r <> 7) AND (gpAx[1]^.lr_state.axis_state_r <> 7);
wStw.10 := 1;
bBtnEnable := GVL_OEM.bBtnInfeedEnable;
GVL_OEM.bBtnInfeedEnableLED := bLEDBtnEnable;
rtEinschalten(CLk := bBtnEnable AND bError);
IF rtEinschalten.Q THEN
bEnable := TRUE;
END_IF
rtAusschalten(CLK := bBtnDisable);
IF rtAusschalten.Q THEN
bEnable := FALSE;
END_IF
bLEDBtnEnable := wZsw.2;
bLEDBtnDissable := NOT wZsw.2;
wCUIO.4 := wZsw.2;
wCUIO.5 := wZsw.2;
CASE nState OF
0: // Einschaltsperre
wStw.0 := 0;
wStw.1 := 1;
bInfeedActive := FALSE;
IF wZsw.0 AND (NOT wZsw.1) AND (NOT wZsw.2) AND (NOT wZsw.6) AND bEnable THEN
nState := 10;
END_IF
10: // Einschaltbereit
wStw.0 := 1;
IF (wZsw.0 = 1) AND (wZsw.1 = 1) AND (wZsw.2 = 0) AND (wZsw.6 = 0) THEN
nState := 20;
END_IF
20: // Betriebsbereit
wStw.3 := 1;
IF (wZsw.0 = 1) AND (wZsw.1 = 1) AND (wZsw.2 = 1) AND (wZsw.6 = 0) THEN
nState := 30;
END_IF
30: //Betrieb
bInfeedActive := TRUE;
IF (NOT bEnable) THEN
wStw.0 := 0;
wStw.1 := 0;
wStw.3 := 0;
wCUIO.4 := 0;
wCUIO.5 := 0;
nState := 0;
END_IF
END_CASE
IF (wZsw.3) AND PLCReset THEN
wStw.7 := 1;
ELSE
wStw.7 := 0;
END_IF
// Umwandeln des Steuerwortes
uiStw := WORD_TO_UINT(wStw);
uiCUIO := WORD_TO_USINT(wCUIO);]]></ST>
</Implementation>
<LineIds Name="PRG_Einspeisung">
<LineId Id="48" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="52" Count="0" />
<LineId Id="297" Count="0" />
<LineId Id="296" Count="0" />
<LineId Id="74" Count="0" />
<LineId Id="73" Count="0" />
<LineId Id="334" Count="0" />
<LineId Id="333" Count="0" />
<LineId Id="335" Count="0" />
<LineId Id="137" Count="0" />
<LineId Id="136" Count="0" />
<LineId Id="138" Count="2" />
<LineId Id="142" Count="0" />
<LineId Id="141" Count="0" />
<LineId Id="143" Count="2" />
<LineId Id="150" Count="0" />
<LineId Id="149" Count="0" />
<LineId Id="151" Count="0" />
<LineId Id="261" Count="1" />
<LineId Id="260" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="21" Count="1" />
<LineId Id="181" Count="1" />
<LineId Id="23" Count="10" />
<LineId Id="35" Count="3" />
<LineId Id="40" Count="1" />
<LineId Id="39" Count="0" />
<LineId Id="42" Count="1" />
<LineId Id="184" Count="1" />
<LineId Id="44" Count="0" />
<LineId Id="85" Count="1" />
<LineId Id="84" Count="0" />
<LineId Id="224" Count="1" />
<LineId Id="55" Count="0" />
<LineId Id="54" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="105" Count="0" />
<LineId Id="104" Count="0" />
<LineId Id="106" Count="0" />
<LineId Id="108" Count="0" />
<LineId Id="110" Count="0" />
<LineId Id="107" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="49" Count="0" />
<LineId Id="51" Count="0" />
<LineId Id="226" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_LSB" Id="{a1421415-b581-4cdc-b4e6-91d688e67a9e}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_LSB
VAR
(*uiStw AT %Q* : UINT;*)
uiStw2 AT %I* : UINT;
uiZsw2 AT %I* : UINT;
uiZsw2Fake AT %Q* : UINT;
uiStw2Fake AT %Q* : UINT;
(*wStw : WORD;*)
wZsw2 : WORD;
wStw2 : WORD;
wZsw2Fake : WORD;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[wStw2 := UINT_TO_WORD(uiStw2);
wZsw2Fake := UINT_TO_WORD(uiZsw2);
// Slave Life Sign Bits einfügen
wZsw2Fake.12 := wStw2.12;
wZsw2Fake.13 := wStw2.13;
wZsw2Fake.14 := wStw2.14;
wZsw2Fake.15 := wStw2.15;
uiZsw2Fake := WORD_TO_UINT(wZsw2Fake);
uiStw2Fake := uiStw2;
(*
wStw.0 := 0; // AUS1 (3)
wStw.1 := 0; // AUS2 (1)
wStw.2 := 0; // AUS3 (2)
wStw.3 := 0; // Betrieb freigegeben (4)
wStw.4 := 0; // Hochlaufgeber freigeben (5)
wStw.5 := 0; // Hochlaufgeber fortsetzen
wStw.6 := 0; // Sollwert freigeben (6)
wStw.7 := 0; // Fehler Quittieren
wStw.10 := 1; // Führung PLC
*)
(*uiStw := WORD_TO_UINT(wStw);*)]]></ST>
</Implementation>
<LineIds Name="PRG_LSB">
<LineId Id="34" Count="0" />
<LineId Id="46" Count="1" />
<LineId Id="38" Count="0" />
<LineId Id="35" Count="0" />
<LineId Id="40" Count="0" />
<LineId Id="36" Count="0" />
<LineId Id="41" Count="0" />
<LineId Id="49" Count="0" />
<LineId Id="48" Count="0" />
<LineId Id="67" Count="0" />
<LineId Id="37" Count="0" />
<LineId Id="32" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="10" Count="7" />
<LineId Id="33" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="18" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_MFunction" Id="{6d431046-0b2c-4635-9f2b-6f0d304b2a61}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_MFunction
VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[CNCSystem.Channel[0].M[10].nArgument_r]]></ST>
</Implementation>
<LineIds Name="PRG_MFunction">
<LineId Id="5" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_Master_Slave" Id="{72b05d60-0105-457d-b067-e2b055c3596a}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Master_Slave
VAR
fDiffMasterSlave : DINT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[fDiffMasterSlave := gpAx[0]^.lr_state.current_position_acs_r - gpAx[1]^.lr_state.current_position_acs_r;]]></ST>
</Implementation>
<LineIds Name="PRG_Master_Slave">
<LineId Id="5" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_Safety" Id="{fb0a2b6b-e6cb-460c-a9a1-e601b08f918a}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Safety
VAR
bRun AT %Q* : BOOL := TRUE;
bReset AT %Q* : BOOL;
bErrorAck AT %Q* : BOOL;
bFallNummerBit0 AT %Q* : BOOL;
bSiemensReset AT %Q* : BOOL;
bEStop AT %I* : BOOL;
bLSStop AT %I* : BOOL;
bLSReducedSpeed AT %I* : BOOL;
bTest : BOOL;
tofErrorAck : TOF;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[tofErrorAck(IN := PLCReset OR bTest, PT := T#500MS);
bFallNummerBit0 := TRUE;
// Nothalt Kanal
gpCh[0]^.bahn_mc_control.emergency_stop.enable_w :=TRUE;
gpCh[0]^.bahn_mc_control.emergency_stop.command_w := NOT bEStop;
// Nothalt Spindel
gpAx[4]^.ipo_mc_control.emergency_stop.enable_w := TRUE;
gpAx[4]^.ipo_mc_control.emergency_stop.command_w := NOT bEStop;
// Feedhold Laserscanner
gpCh[0]^.bahn_mc_control.e_feedhold.enable_w := TRUE;
gpCh[0]^.bahn_mc_control.e_feedhold.command_w := NOT bLSStop;
// Reduzierte Geschwindigkeit Laserscanner
gpCh[0]^.bahn_mc_control.reduced_speed.enable_w := TRUE;
gpCh[0]^.bahn_mc_control.reduced_speed.command_w := NOT bLSReducedSpeed;
//bErrorAck := tofErrorAck.Q;
bSiemensReset := tofErrorAck.Q;
bReset := tofErrorAck.Q;
bErrorAck := tofErrorAck.Q;
IF bTest THEN
bTest := FALSE;
END_IF]]></ST>
</Implementation>
<LineIds Name="PRG_Safety">
<LineId Id="25" Count="0" />
<LineId Id="45" Count="0" />
<LineId Id="65" Count="0" />
<LineId Id="63" Count="0" />
<LineId Id="62" Count="0" />
<LineId Id="66" Count="0" />
<LineId Id="69" Count="0" />
<LineId Id="68" Count="0" />
<LineId Id="70" Count="1" />
<LineId Id="89" Count="0" />
<LineId Id="88" Count="0" />
<LineId Id="118" Count="0" />
<LineId Id="90" Count="0" />
<LineId Id="114" Count="0" />
<LineId Id="113" Count="0" />
<LineId Id="115" Count="1" />
<LineId Id="24" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="28" Count="0" />
<LineId Id="11" Count="0" />
<LineId Id="67" Count="0" />
<LineId Id="109" Count="0" />
<LineId Id="108" Count="0" />
<LineId Id="110" Count="1" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<DUT Name="STRING_20" Id="{60ca124a-11fd-4280-bd99-97569231342c}">
<Declaration><![CDATA[TYPE STRING_20 :
STRUCT
token: STRING(20);
f1_st: ARRAY[0..2] OF BYTE;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<DUT Name="STRING_20_2" Id="{a6969424-b9d6-4c85-af94-a7810852125e}">
<Declaration><![CDATA[TYPE STRING_20_2 :
STRUCT
token: STRING(20);
f1_st: ARRAY[0..106] OF BYTE;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<DUT Name="VE_CHANNEL_DATA_CH_1" Id="{76b51807-10ab-45ea-99dc-732c4f0280ed}">
<Declaration><![CDATA[TYPE VE_CHANNEL_DATA_CH_1 :
STRUCT
ToolInSpindle: DINT;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_CmdDInfo" Id="{e0e28df1-2233-498b-971b-7f8c787db05a}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_CmdDInfo IMPLEMENTS ITF_ToolAction
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
_tool : TC3_CNC.ST_CNC_TOOL_DATA_EXT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<Method Name="Commit" Id="{25561adb-e2c3-4952-8971-6e0bd5714826}">
<Declaration><![CDATA[(* Commits the tool data transfer action if it returns true*)
METHOD Commit : BOOL
VAR_INPUT
t : Tc3_CNC.ST_CNC_TOOL_DATA_EXT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_tool := t;
GVL_ToolMgmt.stCurrentTool := _tool;
Commit := true;]]></ST>
</Implementation>
</Method>
<Property Name="Tool" Id="{55b786a9-d0b6-4eca-9acb-c4eac7ca1a59}">
<Declaration><![CDATA[PROPERTY Tool : Tc3_CNC.ST_CNC_TOOL_DATA_EXT
]]></Declaration>
<Get Name="Get" Id="{0ca7819b-ca71-4950-b112-4e0e7a01037b}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[Tool := _tool;]]></ST>
</Implementation>
</Get>
</Property>
<LineIds Name="FB_CmdDInfo">
<LineId Id="9" Count="0" />
</LineIds>
<LineIds Name="FB_CmdDInfo.Commit">
<LineId Id="8" Count="0" />
<LineId Id="10" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="12" Count="0" />
<LineId Id="11" Count="0" />
</LineIds>
<LineIds Name="FB_CmdDInfo.Tool.Get">
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_CmdOldDInfo" Id="{a08c7560-7f97-4dff-8602-2d2f0ae3c977}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_CmdOldDInfo IMPLEMENTS ITF_ToolAction
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
_tool : TC3_CNC.ST_CNC_TOOL_DATA_EXT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<Method Name="Commit" Id="{5fb9d6fd-121d-4d04-a478-855a86ce4c09}">
<Declaration><![CDATA[(* Commits the tool data transfer action if it returns true*)
METHOD Commit : BOOL
VAR_INPUT
t : Tc3_CNC.ST_CNC_TOOL_DATA_EXT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_tool := t;
IF _tool.tool_desc.param[9] = 1 THEN
_tool.laenge := LREAL_TO_DINT(_tool.tool_desc.param[10] * 10000);
_tool.tool_desc.param[9] := 0;
END_IF
Commit := TRUE;]]></ST>
</Implementation>
</Method>
<Property Name="Tool" Id="{1a4f8238-9d9a-4932-b866-1ce4c82e67e8}">
<Declaration><![CDATA[PROPERTY Tool : Tc3_CNC.ST_CNC_TOOL_DATA_EXT
]]></Declaration>
<Get Name="Get" Id="{950e7d8b-6a41-4aac-8e65-03f8966c7c3a}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[Tool := _tool;]]></ST>
</Implementation>
</Get>
</Property>
<LineIds Name="FB_CmdOldDInfo">
<LineId Id="9" Count="0" />
</LineIds>
<LineIds Name="FB_CmdOldDInfo.Commit">
<LineId Id="15" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="17" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="21" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="8" Count="0" />
</LineIds>
<LineIds Name="FB_CmdOldDInfo.Tool.Get">
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="FB_CmdTInfo" Id="{adb7b52d-b0cb-47e5-92a4-3d78a8902e46}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_CmdTInfo IMPLEMENTS ITF_ToolAction
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
_tool : Tc3_CNC.ST_CNC_TOOL_DATA_EXT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
<Method Name="Commit" Id="{fa444163-0c71-4c86-ba1b-725f5723ca12}">
<Declaration><![CDATA[(* Commits the tool data transfer action if it returns true*)
METHOD Commit : BOOL
VAR_INPUT
t : Tc3_CNC.ST_CNC_TOOL_DATA_EXT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_tool := t;
// Wenn das neue Werkzeug das Nullwerkzeug ist, lade die WZW-Position des Nullwerkzeugs
// aus den Remanenten Daten
IF _tool.tool_desc.tool_id.basic = 0 THEN
_tool.pos := GVL_ToolMgmt.diToolZeroPosition;
END_IF
GVL_ToolMgmt.stToolToPrep := _tool;
// Positioniere das Kettenmagazin nur vor, wenn das neue Werkzeug nicht das
// selbe wie das alte ist
IF _tool.tool_desc.tool_id.basic <> GVL_ToolMgmt.diToolInSpindle THEN
GVL_ToolMgmt.bExecuteToolPrep := TRUE;
END_IF
Commit := TRUE;]]></ST>
</Implementation>
</Method>
<Property Name="Tool" Id="{0d967f20-5453-46e3-8feb-60cef128eee6}">
<Declaration><![CDATA[PROPERTY Tool : Tc3_CNC.ST_CNC_TOOL_DATA_EXT
]]></Declaration>
<Get Name="Get" Id="{88ffee38-caad-4c7f-b82c-730b0c67a5e9}">
<Declaration><![CDATA[VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[Tool := _tool;]]></ST>
</Implementation>
</Get>
</Property>
<LineIds Name="FB_CmdTInfo">
<LineId Id="9" Count="0" />
</LineIds>
<LineIds Name="FB_CmdTInfo.Commit">
<LineId Id="8" Count="0" />
<LineId Id="30" Count="0" />
<LineId Id="32" Count="3" />
<LineId Id="31" Count="0" />
<LineId Id="11" Count="1" />
<LineId Id="22" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="23" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="21" Count="0" />
<LineId Id="10" Count="0" />
<LineId Id="9" Count="0" />
</LineIds>
<LineIds Name="FB_CmdTInfo.Tool.Get">
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<GVL Name="GVL_ToolMgmt" Id="{b8b980b7-8782-4a7d-86b6-be4993cff48f}">
<Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL PERSISTENT
diToolInSpindle : DINT;
diToolZeroPosition : DINT; // Aktuell = 1
END_VAR
VAR_GLOBAL
stToolToPrep : TC3_CNC.ST_CNC_TOOL_DATA_EXT;
stCurrentTool : TC3_CNC.ST_CNC_TOOL_DATA_EXT;
bExecuteToolPrep : BOOL;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<POU Name="PRG_Platztausch" Id="{14050e21-b06c-4055-84da-8b2062df95a7}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_Platztausch
VAR
nState : INT := 0;
diTPos : DINT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(* Initiate tool pocket change on M106 command *)
IF CNCSystem.Channel[0].M[106].bState_rw AND nState = 0 THEN
nState := 10;
END_IF
CASE nState OF
10: // Change pocket position of tool currently in Spindle to -1
// Save position of tool to change for old tool
diTPos := GVL_ToolMgmt.stToolToPrep.pos;
GVL_ToolMgmt.stToolToPrep.pos := -1;
CNCSystem.Channel[0].ToolData.stOldTool := GVL_ToolMgmt.stToolToPrep;
CNCSystem.Channel[0].ToolData.bOldToolDataExist := TRUE;
nState := 15;
15: // Wait for HMI to be done reading the tool
IF CNCSystem.Channel[0].ToolData.bOldToolDataExist = FALSE THEN
nState := 20;
END_IF
20: // Change pocket of old tool to pocketnumber of new tool
// Wenn das neue Werkzeug das Nullwerkzeug ist,
// Speichere die Position in den Remanenten Daten
IF GVL_ToolMgmt.stCurrentTool.tool_desc.tool_id.basic = 0 THEN
GVL_ToolMgmt.diToolZeroPosition := diTPos;
END_IF
GVL_ToolMgmt.stCurrentTool.pos := diTPos;
CNCSystem.Channel[0].ToolData.stOldTool := GVL_ToolMgmt.stCurrentTool;
CNCSystem.Channel[0].ToolData.bOldToolDataExist := TRUE;
nState := 25;
25: // Wait for HMI to be done reading the tool
IF CNCSystem.Channel[0].ToolData.bOldToolDataExist = FALSE THEN
CNCSystem.Channel[0].M[106].bState_rw := FALSE;
nState := 0;
END_IF
END_CASE]]></ST>
</Implementation>
<LineIds Name="PRG_Platztausch">
<LineId Id="10" Count="0" />
<LineId Id="8" Count="1" />
<LineId Id="5" Count="0" />
<LineId Id="12" Count="0" />
<LineId Id="11" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="17" Count="10" />
<LineId Id="44" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="45" Count="4" />
<LineId Id="28" Count="1" />
<LineId Id="42" Count="0" />
<LineId Id="30" Count="2" />
<LineId Id="34" Count="2" />
<LineId Id="33" Count="0" />
<LineId Id="14" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.6">
<Task Name="PlcTask" Id="{307d67c9-37b6-41b2-ad69-047434d39935}">
<!--CycleTime in micro seconds.-->
<CycleTime>10000</CycleTime>
<Priority>20</Priority>
<PouCall>
<Name>MAIN</Name>
</PouCall>
<TaskFBGuid>{7406a469-29cf-43b8-b0f2-01ab4f9ea601}</TaskFBGuid>
<Fb_init>{d8758872-4df6-427f-9fae-e40e96570e2e}</Fb_init>
<Fb_exit>{abc2b991-c162-4c1e-aaa9-675a587c3a92}</Fb_exit>
<CycleUpdate>{49257d14-5809-46eb-94b2-b0622c05b9e9}</CycleUpdate>
<PostCycleUpdate>{43e7e5ea-7c3a-47cb-b82e-df9feefffc63}</PostCycleUpdate>
</Task>
</TcPlcObject>

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.7">
<POU Name="PRG_FastMFunctions" Id="{ffeb27fe-75b6-4c5a-99e1-641a5772f3a5}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM PRG_FastMFunctions
VAR
anMFunctionNo : ARRAY[0..MAX_FAST_M_FUNC_ITEM_IDX] OF UINT;
fbFastMFunctionProvider : HLI3_FastMFunctionProvider;
fbFastMFunctionHandler : HLI3_FastMFunctionHandler;
abyOutput AT %Q* : ARRAY[0..MAX_FAST_M_FUNC_OUTPUT_IDX] OF BYTE;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[(****************************************************************************************)
(* POU: PRG_FastMFunctions *)
(* Type: PRG *)
(* Author: RCH *)
(* Date: 14/10/29 *)
(* Rev.: 1.0 *)
(* ------------------------------------------------------------------------------------ *)
(* Desc.: PLC program to demonstrate usage of MOS_TS M functions using the FB´s *)
(* HLI3_FastMFunctionProvider and HLI3_FastMFunctionHandler. *)
(* In order to achieve a determenistic output behavior this program has to be *)
(* called by a task running synchronously to the CNC GEO task. Therefore that *)
(* task´s priority has to be adjusted in a way that it gets called by the *)
(* realtime system right after the CNC GEO task. *)
(* *)
(* THIS IMPLEMENTATION REQUIRES A 1MS CNC GEO AND 1MS FAST PLC TASK CYCLE!!! *)
(* ------------------------------------------------------------------------------------ *)
(* Rev.: <Enter revision number here> *)
(* Date: <Enter revision data here> *)
(* Author: <Enter author´s shortcut here> *)
(* Desc.: <Enter description here> *)
(****************************************************************************************)
(****************************************************************************************)
(* Configure M function no´s to provide *)
(****************************************************************************************)
(* Add up to MAX_FAST_M_FUNC_ITEM_IDX m function numbers that should be handled by *)
(* fbFastMFunctionProvider. *)
anMFunctionNo[0] := 25;
anMFunctionNo[1] := 26;
fbFastMFunctionProvider
(nHliChanIdx := 0,
anMFunctionNo := anMFunctionNo
);
(****************************************************************************************)
(* Handle Laser ON/OFF (M25/M26) *)
(****************************************************************************************)
(* M function numbers for switching ON and OFF have to be contained in the *)
(* 'anMFunctionNo' array of the HLI3_FastMFunctionProvider instance which provides the *)
(* 'stData' structure to this FB. *)
(* The delay times nDelayOn and nDelayOff can be used to adopt to external hardware *)
(* delays! *)
fbFastMFunctionHandler
(bForceOff := FALSE,
bReset := FALSE,
nFunctionNoOn := 25,
nDelayOn := 0,
nFunctionNoOff := 26,
nDelayOff := 0,
stData := fbFastMFunctionProvider.stData,
abyOutput => abyOutput
);]]></ST>
</Implementation>
<LineIds Name="PRG_FastMFunctions">
<LineId Id="3" Count="52" />
<LineId Id="2" Count="0" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -0,0 +1,335 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<FileVersion>1.0.0.0</FileVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{92165872-738f-41b6-82b5-c95468b41ea0}</ProjectGuid>
<SubObjectsSortedByName>True</SubObjectsSortedByName>
<Name>TC3_CNCPLCBase</Name>
<ProgramVersion>3.1.4022.1</ProgramVersion>
<Application>{4792b338-7654-435c-bce6-303df071534f}</Application>
<TypeSystem>{32fbd390-598e-4478-9b81-b60e6794cc8c}</TypeSystem>
<Implicit_Task_Info>{e3fa28dc-86ef-4ab1-890b-48b87d1ce1fc}</Implicit_Task_Info>
<Implicit_KindOfTask>{9881227e-be81-4d78-96a7-3de788b3c4b5}</Implicit_KindOfTask>
<Implicit_Jitter_Distribution>{7b6ffa4b-128d-480c-add5-33ebdc288eac}</Implicit_Jitter_Distribution>
<LibraryReferences>{bf4cfde2-44b6-4be8-b87d-d2c2ea6efb2f}</LibraryReferences>
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
<CombineIds>true</CombineIds>
<Company>Beckhoff Automation GmbH &amp; Co. KG</Company>
<Released>false</Released>
<Title>CNC PLC Project</Title>
<Author>Beckhoff Automation GmbH &amp; Co. KG</Author>
<Description>TwinCAT CNC Base Project</Description>
<ProjectVersion>3.1.5000.18</ProjectVersion>
<GenerateTpy>false</GenerateTpy>
</PropertyGroup>
<ItemGroup>
<Compile Include="CNC\Global_CNC.TcGVL">
<SubType>Code</SubType>
<LinkAlways>true</LinkAlways>
</Compile>
<Compile Include="CNC\PRG_CNCAxesHandler.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="CNC\PRG_CNCChannelHandler.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="CNC\PRG_CNCManualMode.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="CNC\PRG_CNCVariablesViewer.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="CNC\PRG_ManualFnc.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="FAST.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="HMI\Global_HMI.TcGVL">
<SubType>Code</SubType>
</Compile>
<Compile Include="HMI\ST_MachineData.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="HMI\ST_MachineMode.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="HMI\ST_MANUAL.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="HMI\ST_Position.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="MAIN.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Messages\FB_Alarm.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Messages\FB_ExtSimpleEventLog.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Messages\FB_SimpleEventLog.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Messages\Global_Messages.TcGVL">
<SubType>Code</SubType>
</Compile>
<Compile Include="Messages\PRG_Messages.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="Messages\PRG_MessagesV2.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\Debug\GVL_Debug.TcGVL">
<SubType>Code</SubType>
<LinkAlways>true</LinkAlways>
</Compile>
<Compile Include="OEM\Debug\PRG_Debug.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Absaugtopf.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_AnschlagAbsaugung.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Blinker.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_ControlUnit.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Druckluftueberwachung.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_MFunctions.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_MMS.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Papiervorschub.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Spindel.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Staubsauger.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Vakuumfelder.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Vakuumpumpe.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_WZW.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_WZWArm_old.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_WZWArm.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_WZWKette.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\FB_Zentralschmierung.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\GVL_HMI.TcGVL">
<SubType>Code</SubType>
<LinkAlways>true</LinkAlways>
</Compile>
<Compile Include="OEM\GVL_OEM.TcGVL">
<SubType>Code</SubType>
<LinkAlways>true</LinkAlways>
</Compile>
<Compile Include="OEM\PRG_LSB.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\PRG_Einspeisung.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\PRG_Master_Slave.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\PRG_MFunction.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\PRG_Safety.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\VE\STRING_20.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\VE\STRING_20_2.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\VE\VE_CHANNEL_DATA_CH_1.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\Werkzeugverwaltung\FB_CmdDInfo.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\Werkzeugverwaltung\FB_CmdOldDInfo.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\Werkzeugverwaltung\FB_CmdTInfo.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="OEM\Werkzeugverwaltung\GVL_ToolMgmt.TcGVL">
<SubType>Code</SubType>
<LinkAlways>true</LinkAlways>
</Compile>
<Compile Include="OEM\Werkzeugverwaltung\PRG_Platztausch.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="PlcTask.TcTTO">
<SubType>Code</SubType>
</Compile>
<Compile Include="Samples\PRG_FastMFunctions.TcPOU">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<PlaceholderReference Include="Tc2_CncHli">
<DefaultResolution>Tc2_CncHli, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_CncHli</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc2_MC2">
<DefaultResolution>Tc2_MC2, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_MC2</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc2_NC">
<DefaultResolution>Tc2_NC, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_NC</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc2_Standard">
<DefaultResolution>Tc2_Standard, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_Standard</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc2_System">
<DefaultResolution>Tc2_System, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_System</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc3_CNC">
<DefaultResolution>Tc3_CNC, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc3_CNC</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc3_EventLogger">
<DefaultResolution>Tc3_EventLogger, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc3_EventLogger</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc3_JsonXml">
<DefaultResolution>Tc3_JsonXml, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc3_JsonXml</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc3_Module">
<DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc3_Module</Namespace>
</PlaceholderReference>
</ItemGroup>
<ItemGroup>
<Folder Include="CNC" />
<Folder Include="HMI" />
<Folder Include="Messages" />
<Folder Include="OEM\VE" />
<Folder Include="OEM\Werkzeugverwaltung" />
<Folder Include="OEM" />
<Folder Include="OEM\Debug" />
<Folder Include="Samples" />
</ItemGroup>
<ItemGroup>
<None Include="TC3_CNCPLCBase.tmc">
<SubType>Content</SubType>
</None>
</ItemGroup>
<ProjectExtensions>
<PlcProjectOptions>
<XmlArchive>
<Data>
<o xml:space="preserve" t="OptionKey">
<v n="Name">"&lt;ProjectRoot&gt;"</v>
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
<o>
<v n="Name">"{192FAD59-8248-4824-A8DE-9177C94C195A}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{8F99A816-E488-41E4-9FA3-846536012284}</v>
<o>
<v n="Name">"{8F99A816-E488-41E4-9FA3-846536012284}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{29BD8D0C-3586-4548-BB48-497B9A01693F}</v>
<o>
<v n="Name">"{29BD8D0C-3586-4548-BB48-497B9A01693F}"</v>
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
<v>Rules</v>
<o>
<v n="Name">"Rules"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
</d>
<d n="Values" t="Hashtable" />
</o>
<v>{40450F57-0AA3-4216-96F3-5444ECB29763}</v>
<o>
<v n="Name">"{40450F57-0AA3-4216-96F3-5444ECB29763}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String">
<v>ActiveVisuExtensionsLength</v>
<v>0</v>
<v>ActiveVisuProfile</v>
<v>"IR0whWr8bwfwBwAAiD2qpQAAAABVAgAA37x72QAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDBUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA0AC4ANwAFFlAAcgBvAGYAaQBsAGUARABhAHQAYQAGTHsAMQA2AGUANQA1AGIANgAwAC0ANwAwADQAMwAtADQAYQA2ADMALQBiADYANQBiAC0ANgAxADQANwAxADMAOAA3ADgAZAA0ADIAfQAHEkwAaQBiAHIAYQByAGkAZQBzAAhMewAzAGIAZgBkADUANAA1ADkALQBiADAANwBmAC0ANABkADYAZQAtAGEAZQAxAGEALQBhADgAMwAzADUANgBhADUANQAxADQAMgB9AAlMewA5AGMAOQA1ADgAOQA2ADgALQAyAGMAOAA1AC0ANAAxAGIAYgAtADgAOAA3ADEALQA4ADkANQBmAGYAMQBmAGUAZABlADEAYQB9AAoOVgBlAHIAcwBpAG8AbgALBmkAbgB0AAwKVQBzAGEAZwBlAA0KVABpAHQAbABlAA4aVgBpAHMAdQBFAGwAZQBtAE0AZQB0AGUAcgAPDkMAbwBtAHAAYQBuAHkAEAxTAHkAcwB0AGUAbQARElYAaQBzAHUARQBsAGUAbQBzABIwVgBpAHMAdQBFAGwAZQBtAHMAUwBwAGUAYwBpAGEAbABDAG8AbgB0AHIAbwBsAHMAEyhWAGkAcwB1AEUAbABlAG0AcwBXAGkAbgBDAG8AbgB0AHIAbwBsAHMAFCRWAGkAcwB1AEUAbABlAG0AVABlAHgAdABFAGQAaQB0AG8AcgAVIlYAaQBzAHUATgBhAHQAaQB2AGUAQwBvAG4AdAByAG8AbAAWFHYAaQBzAHUAaQBuAHAAdQB0AHMAFwxzAHkAcwB0AGUAbQAYGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABkmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAaCGIAbwBvAGwAGyJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAHEx7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHRxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHhRQAGwAdQBnAGkAbgBHAHUAaQBkAB8WUwB5AHMAdABlAG0ALgBHAHUAaQBkACBIYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIRRVAHAAZABhAHQAZQBJAG4AZgBvACJMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACMOVQBwAGQAYQB0AGUAcwAkTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAlTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAmFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAnVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACgQTABpAGIAVABpAHQAbABlACkUTABpAGIAQwBvAG0AcABhAG4AeQAqHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACs4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQAsEnYAaQBzAHUAZQBsAGUAbQBzAC1INgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALihJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8AL0x7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0AMBhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAxGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADIMTABlAGcAYQBjAHkAMzBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwA0MEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADUaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgfQBwgaAUUHCQjQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60BAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAUAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0X0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60EAAAA0A0BLRjQDwEtENAZGq0BRRscAdAAHBoCRR0LBAMAAAAFAAAADQAAAAAAAADQHh8tINAhIhoCRSMkAtAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAAAAANADAS0n0CgBLRHQKQEtENAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAQAAANADAS0n0CgBLRHQKQEtEJoqKwFFAAEC0AABLSzQAAEtF9AAHy0t0C4vGgPQMAutAQAAANAxC60XAAAA0DIarQDQMy8aA9AwC60CAAAA0DELrQMAAADQMhqtANA0Gq0A0DUarQA="</v>
</d>
</o>
<v>{535658C0-5AF5-460d-99A4-BFFB984A829A}</v>
<o>
<v n="Name">"{535658C0-5AF5-460d-99A4-BFFB984A829A}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String" cvt="NewestVersionConstraintToSave">
<v>VersionConstraint</v>
<o />
</d>
</o>
<v>{F66C7017-BDD8-4114-926C-81D6D687E35F}</v>
<o>
<v n="Name">"{F66C7017-BDD8-4114-926C-81D6D687E35F}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{246001F4-279D-43AC-B241-948EB31120E1}</v>
<o>
<v n="Name">"{246001F4-279D-43AC-B241-948EB31120E1}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String" cvt="String">
<v>GlobalVisuImageFilePath</v>
<v>%APPLICATIONPATH%</v>
</d>
</o>
</d>
<d n="Values" t="Hashtable" />
</o>
</Data>
<TypeList>
<Type n="Hashtable">System.Collections.Hashtable</Type>
<Type n="Int32">System.Int32</Type>
<Type n="NewestVersionConstraintToSave">{af9bafe2-ba31-4b15-a2b9-48a0f2cd09fb}</Type>
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
<Type n="String">System.String</Type>
</TypeList>
</XmlArchive>
</PlcProjectOptions>
</ProjectExtensions>
</Project>

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More