Merged in MBP-139-merge-integration-into-master (pull request #32)
MBP-139 merge integration into master
This commit is contained in:
Regular → Executable
+15
-5
@@ -1,8 +1,18 @@
|
||||
# end of line conversion CLRF -- LF
|
||||
# Default is no conversion (follow Visual Studio)
|
||||
* -text
|
||||
#
|
||||
.gitattributes text
|
||||
.gitignore text
|
||||
# Default is auto
|
||||
* text=auto
|
||||
|
||||
# Hidden .git files: CRLF for convenience
|
||||
.gitattributes text eol=crlf
|
||||
.gitignore text eol=crlf
|
||||
|
||||
# Shell scripts must be LF
|
||||
*.sh text eol=lf
|
||||
|
||||
# Tc files must be CRLF
|
||||
*.plcproj text eol=crlf
|
||||
*.Tc* text eol=crlf
|
||||
*.tsproj text eol=crlf
|
||||
*.txt text eol=crlf
|
||||
*.xml text eol=crlf
|
||||
*.xti text eol=crlf
|
||||
|
||||
+16
-12
@@ -1,17 +1,21 @@
|
||||
|
||||
*.bak
|
||||
*.pyc
|
||||
*.suo
|
||||
*.tmc
|
||||
*.tpy
|
||||
*.~u
|
||||
*~
|
||||
.#*
|
||||
.epics.*
|
||||
UpgradeLog.htm
|
||||
\#*#
|
||||
_Boot/
|
||||
_CompileInfo/
|
||||
_Libraries/
|
||||
logs.0*
|
||||
solution/TrialLicense.tclrs
|
||||
tools/linux/ADS/
|
||||
tools/linux/getADSState/getADSState.bin
|
||||
logs.0*
|
||||
.epics.*
|
||||
*.bak
|
||||
*.~u
|
||||
*.pyc
|
||||
*.tpy
|
||||
*.suo
|
||||
*~
|
||||
.#*
|
||||
\#*#
|
||||
*.tmc
|
||||
|
||||
_Config/NC/Axes
|
||||
_Config/IO
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
[submodule "solution/tc_epicscommodule"]
|
||||
path = solution/tc_epicscommodule
|
||||
url = https://bitbucket.org/europeanspallationsource/tc_epicscommodule.git
|
||||
[submodule "solution/tc_project_app/tc_mca_std_lib"]
|
||||
path = solution/tc_project_app/tc_mca_std_lib
|
||||
url = https://bitbucket.org/europeanspallationsource/tc_mca_std_lib.git
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
image: python:3.7.3
|
||||
options:
|
||||
max-time: 1
|
||||
pipelines:
|
||||
default:
|
||||
- step:
|
||||
script:
|
||||
- git submodule update --init
|
||||
- python twincat_version_manager.py
|
||||
- python check_fix_white_space.py
|
||||
Executable
+113
@@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# Script to fix whithespace errors in files
|
||||
# All trailing white space are removed
|
||||
# TAB are replace by spaces
|
||||
#
|
||||
import glob
|
||||
import sys
|
||||
|
||||
file_patterns_tab_width = {"**/*.Tc*": 4,
|
||||
"**/*.py": 4,
|
||||
"**/*.sh": 8}
|
||||
def fix_white_space(debug, fix_files):
|
||||
"""
|
||||
Checks the Twincat source code for white space:
|
||||
TAB should not be used
|
||||
Trailing SPACE shoulf not be there.
|
||||
:return: A dictionary of white-space-damaged files
|
||||
"""
|
||||
incorrect_files = dict()
|
||||
for file_path, tab_width in file_patterns_tab_width.items():
|
||||
found_files = glob.glob(file_path, recursive=True)
|
||||
#if not found_files:
|
||||
# raise IOError("ERROR: No files of type {} found".format(file_path))
|
||||
|
||||
for pathname in found_files:
|
||||
dirty = False
|
||||
had_TAB = False
|
||||
had_trailing_WS = False
|
||||
new_lines = []
|
||||
if debug >= 1:
|
||||
print("tab_with=%d pathname=%s" % (tab_width, pathname))
|
||||
file = open(pathname, 'r', newline='', encoding="iso-8859-1")
|
||||
lines = file.readlines()
|
||||
file.close()
|
||||
for old_line in lines:
|
||||
had_crlf = 0
|
||||
this_line_dirty = False
|
||||
if old_line.endswith('\r\n'):
|
||||
had_crlf = 2 # Both CR and LF
|
||||
elif old_line.endswith('\n'):
|
||||
had_crlf = 1 # LF
|
||||
# Convert all TAB into SPACE
|
||||
new_line = old_line.expandtabs(tabsize=tab_width)
|
||||
if new_line != old_line:
|
||||
had_TAB = True
|
||||
# Strip the CRLF
|
||||
new_line = new_line.rstrip("\r\n")
|
||||
# Strip trailing WS
|
||||
tmp_line = new_line.rstrip(" ")
|
||||
if tmp_line != new_line:
|
||||
had_trailing_WS = True
|
||||
new_line = tmp_line
|
||||
|
||||
if had_crlf == 2:
|
||||
new_line = new_line + '\r\n'
|
||||
elif had_crlf == 1:
|
||||
new_line = new_line + '\n'
|
||||
|
||||
if len(new_line) != len(old_line):
|
||||
dirty = True
|
||||
this_line_dirty = True
|
||||
new_lines.append(new_line)
|
||||
if this_line_dirty:
|
||||
if debug >= 2:
|
||||
print("had_crlf=%d" % had_crlf)
|
||||
print("old_line=%s" % old_line)
|
||||
print("new_line=%s" % new_line)
|
||||
# end of loop of all line in one file
|
||||
if debug >= 1:
|
||||
print("pathname=%s dirty=%d" % (pathname, dirty))
|
||||
if dirty:
|
||||
if had_TAB and had_trailing_WS:
|
||||
incorrect_files[pathname] = 'has white space damage'
|
||||
elif had_TAB:
|
||||
incorrect_files[pathname] = 'has TAB'
|
||||
elif had_trailing_WS:
|
||||
incorrect_files[pathname] = 'has trailing whitespace'
|
||||
if fix_files:
|
||||
file = open(pathname, 'w', newline='', encoding="iso-8859-1")
|
||||
file.writelines(new_lines)
|
||||
file.close()
|
||||
|
||||
return incorrect_files
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
argc = len(sys.argv)
|
||||
arg_idx = 1
|
||||
debug = 0
|
||||
fix_files = False
|
||||
while arg_idx < argc:
|
||||
if sys.argv[arg_idx] == "--fix":
|
||||
fix_files = True
|
||||
elif sys.argv[arg_idx] == "--debug":
|
||||
debug = debug + 1
|
||||
else:
|
||||
print("%s : [--fix|--debug]" % sys.argv[0])
|
||||
exit(2)
|
||||
arg_idx = arg_idx + 1
|
||||
incorrect_files = fix_white_space(debug, fix_files)
|
||||
if not fix_files:
|
||||
for file in incorrect_files:
|
||||
message = incorrect_files[file]
|
||||
print("ERROR: '{}' {}".format(file,message))
|
||||
if incorrect_files:
|
||||
print('run %s --fix' % sys.argv[0])
|
||||
exit(1)
|
||||
except IOError as e:
|
||||
print(e) # Likely no files found
|
||||
exit(2)
|
||||
+72
-72
@@ -1,72 +1,72 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "solution", "solution\solution.tsproj", "{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}"
|
||||
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
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "solution", "solution\solution.tsproj", "{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}"
|
||||
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
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||
{9CF97348-B9D3-4938-B1F2-5F0B0B6AA66A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||
{F935F1DE-0753-4702-B418-1DC0ED040A4D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
|
||||
{FB261665-FD20-4BF2-97F8-2854C82B752D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Copy and paste in this folder the licenses contained inside the Beckhoff CPU in the path:
|
||||
|
||||
C:\TwinCAT\3.1\Target\License
|
||||
|
||||
Copy and paste in this folder the licenses contained inside the Beckhoff CPU in the path:
|
||||
|
||||
C:\TwinCAT\3.1\Target\License
|
||||
|
||||
Thank you
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcLicenseInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2011/11/TcLicenseInfo"><LicenseInfo><SystemId>{647C6958-3A0C-73AB-3631-FCA93A32D91D}</SystemId><IssueTime>2019-03-28T10:01:00</IssueTime><ExpireTime>2019-04-05T00:00:00</ExpireTime><LicenseKey>c5d3cb1031fe69b92637f818532268e150e73209fbcde806d6a45fa5c587430d79f2c1228179d00673ab0c897cec2974facbbdea6732800f514190342df993e6cf6c8900d81c6168e82abc6419353caaa16eae89c3652b99dc5724bd894c9688d636d924d65f9bd2be9c76a54d9389d9c2e80b95ac96243e653e4af19badfbdfa010ba61245f038ad5eef223906c4cade2def8629cdbed3a49da1c64a666625c6c23b0d87507ee78907eaf7e2d8bf7b2ce4fd5d511ecc80ae9058fbc8fabd02bf239827c8abad467f34390374768fe2427b583c8af5c86ee51c2f4bbadd341b0daccb1e0c5625b4894babedd35d3cb816a514aab66bc4fcaa5762164e6e078da</LicenseKey><License><LicenseId>{4C256767-E6E6-4AF5-BD68-9F7ABAD0C200}</LicenseId><Name>TC3 ADS</Name><OrderNo>TC1000</OrderNo></License><License><LicenseId>{3FF18E97-7754-401B-93FB-70544DE28A13}</LicenseId><Name>TC3 IO</Name><OrderNo>TC1100</OrderNo></License><License><LicenseId>{66689887-CCBD-452C-AC9A-039D997C6E66}</LicenseId><Name>TC3 PLC</Name><OrderNo>TC1200</OrderNo></License><License><LicenseId>{A19036CF-A53B-4E3A-99FF-023EF5C4798B}</LicenseId><Name>TC3 NC PTP Axis</Name><Instances>10</Instances></License><License><LicenseId>{520DE751-9DB6-47CB-8240-BD5C466E7E64}</LicenseId><Name>TC3 NC PTP</Name><OrderNo>TF5000</OrderNo></License><License><LicenseId>{3EBB9639-5FF3-42B6-8847-35C70DC013C8}</LicenseId><Name>TC3 TCP/IP</Name><OrderNo>TF6310</OrderNo></License></LicenseInfo></TcLicenseInfo>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4023.119" ClassName="CNcSafTaskDef" SubType="0">
|
||||
<NC>
|
||||
<SafTask Priority="4" CycleTime="20000" AmsPort="501" IoAtBegin="true">
|
||||
<Name>NC-Task 1 SAF</Name>
|
||||
<Vars VarGrpType="1" InsertType="1">
|
||||
<Name>Inputs</Name>
|
||||
</Vars>
|
||||
<Vars VarGrpType="2" InsertType="1">
|
||||
<Name>Outputs</Name>
|
||||
</Vars>
|
||||
<Image Id="1" AddrType="1" ImageType="1">
|
||||
<Name>Image</Name>
|
||||
</Image>
|
||||
</SafTask>
|
||||
<SvbTask Priority="8" CycleTime="100000" AmsPort="511">
|
||||
<Name>NC-Task 1 SVB</Name>
|
||||
</SvbTask>
|
||||
</NC>
|
||||
</TcSmItem>
|
||||
+40
-1032
File diff suppressed because it is too large
Load Diff
Submodule solution/tc_epicscommodule deleted from 6c86fc4bd9
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<GVL Name="GVL_APP" Id="{8fe9690c-7907-432e-bedb-6fc99b5ce255}">
|
||||
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||
VAR_GLOBAL
|
||||
|
||||
END_VAR
|
||||
|
||||
VAR_GLOBAL CONSTANT
|
||||
axisNum : UINT:=0;
|
||||
END_VAR]]></Declaration>
|
||||
</GVL>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,279 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<GlobalTextList Name="GlobalTextList" Id="{c3494959-baa5-4f73-b0cd-9c11912145dd}">
|
||||
<XmlArchive>
|
||||
<Data>
|
||||
<o xml:space="preserve" t="GlobalTextListObject">
|
||||
<l n="TextList" t="ArrayList" cet="TextListRow">
|
||||
<o>
|
||||
<v n="TextID">"951"</v>
|
||||
<v n="TextDefault">"%2.2f"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"878"</v>
|
||||
<v n="TextDefault">"%d"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"706"</v>
|
||||
<v n="TextDefault">"%i"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"940"</v>
|
||||
<v n="TextDefault">"%x"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"703"</v>
|
||||
<v n="TextDefault">"Acknowledge"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"710"</v>
|
||||
<v n="TextDefault">"Active:"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"952"</v>
|
||||
<v n="TextDefault">"actPos"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"953"</v>
|
||||
<v n="TextDefault">"actVel"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"110"</v>
|
||||
<v n="TextDefault">"AXESMAX"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"107"</v>
|
||||
<v n="TextDefault">"axisSel"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"945"</v>
|
||||
<v n="TextDefault">"bBusy"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"950"</v>
|
||||
<v n="TextDefault">"bBwEnabled"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"946"</v>
|
||||
<v n="TextDefault">"bDone"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"943"</v>
|
||||
<v n="TextDefault">"bEnabled"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"941"</v>
|
||||
<v n="TextDefault">"bError"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"102"</v>
|
||||
<v n="TextDefault">"bExecute"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"949"</v>
|
||||
<v n="TextDefault">"bFwEnabled"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"297"</v>
|
||||
<v n="TextDefault">"bGeared"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"948"</v>
|
||||
<v n="TextDefault">"bHomed"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"947"</v>
|
||||
<v n="TextDefault">"bResetDone"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"944"</v>
|
||||
<v n="TextDefault">"bWarning"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"704"</v>
|
||||
<v n="TextDefault">"Clear All"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"104"</v>
|
||||
<v n="TextDefault">"ENABLE"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"106"</v>
|
||||
<v n="TextDefault">"ENABLE BW"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"105"</v>
|
||||
<v n="TextDefault">"ENABLE FW"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"109"</v>
|
||||
<v n="TextDefault">"English"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"939"</v>
|
||||
<v n="TextDefault">"errID"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"701"</v>
|
||||
<v n="TextDefault">"Error #"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"705"</v>
|
||||
<v n="TextDefault">"Error #:"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"702"</v>
|
||||
<v n="TextDefault">"Error Log"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"707"</v>
|
||||
<v n="TextDefault">"Errors:"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"955"</v>
|
||||
<v n="TextDefault">"fAcceleration"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"956"</v>
|
||||
<v n="TextDefault">"fDeceleration"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"957"</v>
|
||||
<v n="TextDefault">"fPosition"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"708"</v>
|
||||
<v n="TextDefault">"Free Entries:"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"954"</v>
|
||||
<v n="TextDefault">"fVelocity"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"299"</v>
|
||||
<v n="TextDefault">"gearIn"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"300"</v>
|
||||
<v n="TextDefault">"gearOut"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"711"</v>
|
||||
<v n="TextDefault">"Inactive:"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"116"</v>
|
||||
<v n="TextDefault">"jogBw"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"117"</v>
|
||||
<v n="TextDefault">"jogFw"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"298"</v>
|
||||
<v n="TextDefault">"masterGear"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"111"</v>
|
||||
<v n="TextDefault">"moveAbsolute"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"114"</v>
|
||||
<v n="TextDefault">"moveModulo"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"113"</v>
|
||||
<v n="TextDefault">"moveRelative"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"112"</v>
|
||||
<v n="TextDefault">"moveVelocity"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"709"</v>
|
||||
<v n="TextDefault">"Overflows:"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"942"</v>
|
||||
<v n="TextDefault">"reset"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"115"</v>
|
||||
<v n="TextDefault">"stop"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"108"</v>
|
||||
<v n="TextDefault">"Test Language"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
<o>
|
||||
<v n="TextID">"103"</v>
|
||||
<v n="TextDefault">"toggle"</v>
|
||||
<l n="LanguageTexts" t="ArrayList" />
|
||||
</o>
|
||||
</l>
|
||||
<l n="Languages" t="ArrayList" />
|
||||
<v n="GuidInit">{062c6d5a-aca0-4f82-8481-8e26e8c8681e}</v>
|
||||
<v n="GuidReInit">{d08328f1-0dac-4dfb-b105-bd18d7b5a756}</v>
|
||||
<v n="GuidExitX">{180f93fa-c96b-483e-953c-133bc7d30e18}</v>
|
||||
</o>
|
||||
</Data>
|
||||
<TypeList>
|
||||
<Type n="ArrayList">System.Collections.ArrayList</Type>
|
||||
<Type n="GlobalTextListObject">{63784cbb-9ba0-45e6-9d69-babf3f040511}</Type>
|
||||
<Type n="Guid">System.Guid</Type>
|
||||
<Type n="String">System.String</Type>
|
||||
<Type n="TextListRow">{53da1be7-ad25-47c3-b0e8-e26286dad2e0}</Type>
|
||||
</TypeList>
|
||||
</XmlArchive>
|
||||
</GlobalTextList>
|
||||
</TcPlcObject>
|
||||
@@ -1,125 +1,329 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.10">
|
||||
<POU Name="MAIN" Id="{33eb6f49-7781-4211-a70b-87ada6d80cb7}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[PROGRAM MAIN
|
||||
VAR
|
||||
sVersion: STRING:='1.0.0';
|
||||
i : UINT; //index variable for AXES()
|
||||
aFbAxes: ARRAY [1..gvl.axisNum] OF FB_Axis;
|
||||
(******Outputs: Power for Limit switches and Home Sensors (every 4th output)********)
|
||||
|
||||
bOutput1 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput2 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput3 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput4 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput5 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput6 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput7 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput8 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput9 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput13 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput17 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput21 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput24 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput28 AT %Q*: BOOL:= TRUE;
|
||||
|
||||
(******Error Handling********)
|
||||
fbErrorList: FB_ErrorList;
|
||||
//fbEL3214: EL3214;
|
||||
//fbEL1808: EL1808;
|
||||
//fbEL2819: EL2819;
|
||||
//fbEL9410: EL9410;
|
||||
|
||||
END_VAR
|
||||
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[PROG();
|
||||
AXES();
|
||||
ERROR();]]></ST>
|
||||
</Implementation>
|
||||
<Action Name="AXES" Id="{7eb32732-9b53-4934-8cd9-20ba971dd8ff}">
|
||||
<Implementation>
|
||||
<ST><;
|
||||
END_FOR
|
||||
|
||||
|
||||
]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="ERROR" Id="{35f2cf38-f81e-4aa3-9534-be5fb417817d}">
|
||||
<Implementation>
|
||||
<ST><![CDATA[//
|
||||
(****FB containting the log of the errors****)
|
||||
//
|
||||
fbErrorList(
|
||||
En:= TRUE,
|
||||
bReset:= ,
|
||||
lErrorID:= ,
|
||||
bACK:= ,
|
||||
EnO=> ,
|
||||
nNoError=> ,
|
||||
nNoOverflow=> ,
|
||||
pErrorSystem=> );
|
||||
|
||||
(*call all the necessary instance (input assistance F2 or right click) according to the terminals that you have in your hardware and
|
||||
add "TRUE" in the input En, the corresponding number of termianl to the iTerminal_ID and
|
||||
the variable "fbErrorList.pErrorSystem" to the input ErrorSystem in each FB E. g. :
|
||||
fbEL1808(
|
||||
En:= TRUE,
|
||||
iTerminal_ID:= 1,
|
||||
ErrorSystem:= fbErrorList.pErrorSystem,
|
||||
EnO=> ,
|
||||
bDi_1=> ,
|
||||
bDi_2=> ,
|
||||
bDi_3=> ,
|
||||
bDi_4=> ,
|
||||
bDi_5=> ,
|
||||
bDi_6=> ,
|
||||
bDi_7=> ,
|
||||
bDi_8=> ,
|
||||
bError=> ); *)
|
||||
//
|
||||
]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="PROG" Id="{5d03ebbb-2a47-4890-ad6d-e82daf72dc51}">
|
||||
<Implementation>
|
||||
<ST><![CDATA[//
|
||||
(* Program any sequence, safety or feature (if necessary) application specific in thsi section*)
|
||||
//]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<LineIds Name="MAIN">
|
||||
<LineId Id="2" Count="0" />
|
||||
<LineId Id="81" Count="1" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.AXES">
|
||||
<LineId Id="3" Count="0" />
|
||||
<LineId Id="1" Count="0" />
|
||||
<LineId Id="4" Count="0" />
|
||||
<LineId Id="10" Count="0" />
|
||||
<LineId Id="7" Count="0" />
|
||||
<LineId Id="16" Count="0" />
|
||||
<LineId Id="11" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.ERROR">
|
||||
<LineId Id="31" Count="0" />
|
||||
<LineId Id="10" Count="1" />
|
||||
<LineId Id="2" Count="7" />
|
||||
<LineId Id="1" Count="0" />
|
||||
<LineId Id="12" Count="1" />
|
||||
<LineId Id="29" Count="1" />
|
||||
<LineId Id="16" Count="12" />
|
||||
<LineId Id="14" Count="0" />
|
||||
<LineId Id="32" Count="1" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.PROG">
|
||||
<LineId Id="2" Count="0" />
|
||||
<LineId Id="1" Count="0" />
|
||||
<LineId Id="3" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<POU Name="MAIN" Id="{33eb6f49-7781-4211-a70b-87ada6d80cb7}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[PROGRAM MAIN
|
||||
VAR
|
||||
sVersion: STRING:='1.0.0';
|
||||
i : UINT; //index variable for AXES()
|
||||
aFbAxes: ARRAY [1..gvl_app.axisNum] OF FB_Axis;
|
||||
|
||||
hmiAxisSelection : INT:=1; //Not possible to use local hmi variables for array indexes
|
||||
|
||||
(******Outputs: Power for Limit switches and Home Sensors (every 4th output)********)
|
||||
|
||||
bOutput1 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput2 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput3 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput4 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput5 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput6 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput7 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput8 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput9 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput13 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput17 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput21 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput24 AT %Q*: BOOL:= TRUE;
|
||||
//bOutput28 AT %Q*: BOOL:= TRUE;
|
||||
|
||||
(******Startup, Shutdown and UPS********)
|
||||
fbUPS : FB_S_UPS_CX51x0;
|
||||
eUpsMode : E_S_UPS_Mode := eSUPS_WrPersistData_Shutdown;
|
||||
eStartUp: (ColdStart, ReadAxisFeedbackType, CheckReadDone, ExecuteRestore, CheckRestore, FinishRestore);
|
||||
bPositionRestoreDone : BOOL := FALSE;
|
||||
bRestoreExecute : BOOL := FALSE;
|
||||
bExecuteReadEncRefSys : BOOL := FALSE;
|
||||
iRetry : INT;
|
||||
fbReadEncRefSys : ARRAY [1..gvl_app.axisNum] OF MC_ReadParameter;
|
||||
fbRestorePosition : ARRAY [1..GVL_app.axisNum] OF MC_SetPosition;
|
||||
fbGetDeviceIdentification : FB_GetDeviceIdentification;
|
||||
|
||||
END_VAR
|
||||
|
||||
VAR PERSISTENT
|
||||
bRestoreOnStartup : BOOL;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[POSITION_RECOVERY();
|
||||
PROG();
|
||||
AXES();]]></ST>
|
||||
</Implementation>
|
||||
<Folder Name="POSITION_RECOVERY" Id="{3561f6ef-e145-4ed3-9839-f17334bd2d97}" />
|
||||
<Action Name="AXES" Id="{7eb32732-9b53-4934-8cd9-20ba971dd8ff}">
|
||||
<Implementation>
|
||||
<ST><;
|
||||
END_FOR]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="CHECK_UPS" Id="{f0f28f50-53b8-4f73-b0f5-6d7ce4c1636f}" FolderPath="POSITION_RECOVERY\">
|
||||
<Implementation>
|
||||
<ST><![CDATA[fbUPS(eUpsMode := eUpsMode); (* call UPS-FB instance in first lines of the fastest PLC Task *)
|
||||
|
||||
IF eGlobalSUpsState = eSUPS_PowerFailure THEN
|
||||
(* first cycle of powerfailure *)
|
||||
(* execute code that should only be done once with each powerfailure, i.e. increase powerfailure counter *)
|
||||
bRestoreOnStartup:=TRUE;
|
||||
STORE_PERSISTENT();
|
||||
RETURN;
|
||||
ELSIF eGlobalSUpsState <> eSUPS_PowerOK THEN
|
||||
(* next cycles of powerfailure *)
|
||||
(* skip regular code execution for the remaining cycles of the powerfailure/writing of persistent data/quick shutdown ... *)
|
||||
RETURN;
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="POSITION_RECOVERY" Id="{28e203b7-aea5-42d0-980d-12a6841f9d22}" FolderPath="POSITION_RECOVERY\">
|
||||
<Implementation>
|
||||
<ST><![CDATA[fbGetDeviceIdentification(bExecute:=TRUE);
|
||||
IF (fbGetDeviceIdentification.stDevIdent.strHardwareSerialNo <> '0') THEN
|
||||
CHECK_UPS();
|
||||
RESTORE_POSITIONS();
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="PROG" Id="{5d03ebbb-2a47-4890-ad6d-e82daf72dc51}">
|
||||
<Implementation>
|
||||
<ST><![CDATA[//
|
||||
(* Program any sequence, safety or feature (if necessary) application specific in thsi section*)
|
||||
//]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="RESTORE_POSITIONS" Id="{0c7ee537-7bd9-4833-b428-c17cbb57e893}" FolderPath="POSITION_RECOVERY\">
|
||||
<Implementation>
|
||||
<ST><![CDATA[///#########################################################
|
||||
// This ACT will restore the position of an incremental axis on startup with the act position it read before losing power.
|
||||
// It checks the type of axis, 0=incremental, and that the axis was stationary at shut down.
|
||||
// Because 0 equates to incremental we also need to check that the data is valid, otherwise by default it would restore all axes.
|
||||
// By default an axis will not restore the position unless it is set to opt-in, i.e. gvl.axes[i].config.eRestorePosition is non-zero.
|
||||
// This needs to be initialised somewhere in TwinCAT code otherwise it will not be available at start up.
|
||||
// A restore will only be performed on a loss of power, this code shouldn't make any changes on a reset cold, a rest origin or a download.
|
||||
// There is a enum to allow for different types of restore modes, currently only one is implemented.
|
||||
// 0 'DontRestore'
|
||||
// 1 'RestoreWithoutHome' -restores the position using a set position fb and does not set the home bit in the axis struct.
|
||||
// Note from Beckhoff: "A maximum of 1 MB persistent data can be reliably saved over the entire service life."
|
||||
///#########################################################
|
||||
|
||||
IF bRestoreOnStartup AND eGlobalSUpsState = eSUPS_PowerOK THEN
|
||||
bRestoreOnStartup:=FALSE;
|
||||
bRestoreExecute:=TRUE;
|
||||
END_IF
|
||||
|
||||
// Upon startup bPositionRestoreDone will be set to FALSE, after successfully completing the following code it will be set TRUE
|
||||
// and should stay TRUE for the rest of the time the PLC is operational, thus this routine should only be completed once.
|
||||
IF bRestoreExecute AND NOT bPositionRestoreDone THEN
|
||||
|
||||
// Cycle through function blocks that read the encoder reference system i.e. whether axis is incremental or absolute
|
||||
// Result stored in Value, 0=Inc 1=Abs, execute set during the case statement
|
||||
FOR i:=1 TO gvl_app.axisNum DO
|
||||
fbReadEncRefSys[i](
|
||||
Axis:= gvl.axes[i].Axis,
|
||||
Enable:= bExecuteReadEncRefSys,
|
||||
ParameterNumber:= MC_AxisParameter.AxisEncoderReferenceSystem,
|
||||
Value=>,
|
||||
ReadMode:= E_READMODE.READMODE_ONCE);
|
||||
END_FOR
|
||||
|
||||
// Cycle through set position function blocks for each axis
|
||||
FOR i:=1 TO gvl_app.axisNum DO
|
||||
fbRestorePosition[i](
|
||||
Axis:= gvl.axes[i].Axis,
|
||||
Execute:= ,
|
||||
Position:= axesPersistent[i].iPositionAtShutdown);
|
||||
END_FOR
|
||||
|
||||
CASE eStartUp OF
|
||||
ColdStart:
|
||||
// First cycle of the PLC, do nothing just give one cycle for variables to initialise
|
||||
IF NOT bPositionRestoreDone THEN
|
||||
eStartUp:= ReadAxisFeedbackType;
|
||||
iRetry:=0;
|
||||
END_IF
|
||||
|
||||
ReadAxisFeedbackType:
|
||||
// Exectute the function blocks to read the encoder reference system (0=inc OR 1=ABS)
|
||||
bExecuteReadEncRefSys:=TRUE;
|
||||
eStartUp:=CheckReadDone;
|
||||
|
||||
CheckReadDone:
|
||||
// Check the encoder reference system has been read for all axis -> if busy then continue with PLC cycle and check again next time.
|
||||
// If fbReadEncRefSys not started then go back a step.
|
||||
// If any axes result in an error the code will get stuck here, this happens if gvl_app.axisNum is not set correctly
|
||||
FOR i:=1 TO gvl_app.axisNum DO
|
||||
IF fbReadEncRefSys[i].Valid = FALSE THEN
|
||||
IF fbReadEncRefSys[i].Busy = TRUE THEN
|
||||
// Exit MAIN.STARTUP Action and wait till next cycle, needs to cycle through whole program in order for data to update
|
||||
RETURN;
|
||||
ELSE
|
||||
// Sometimes the code gets here and the fbReadEncRefSys[i] misses the rising edge. If the code gets here it means
|
||||
// .valid=FALSE and .busy=FALSE which indicateds the FB probably hasn't started and thus needs to see a rising edge.
|
||||
// Set execute to low, Exit MAIN.STARTUP and go back a step in the CASE statement.
|
||||
bExecuteReadEncRefSys:=FALSE;
|
||||
eStartUp:=ReadAxisFeedbackType;
|
||||
iRetry:=iRetry+1; // counter used for troubleshooting to see how many cycles it takes before fbReadEncRefSys function blocks are read correctly
|
||||
RETURN;
|
||||
END_IF
|
||||
END_IF
|
||||
END_FOR
|
||||
// If the code gets here all axes either have .valid=TRUE for all axes
|
||||
eStartUp:= ExecuteRestore;
|
||||
|
||||
ExecuteRestore:
|
||||
// Execute position restore by setting fbRestorePosition.execute = TRUE
|
||||
FOR i:=1 TO gvl_app.axisNum DO
|
||||
IF fbReadEncRefSys[i].Valid = TRUE AND fbReadEncRefSys[i].Value = 0 AND NOT(axesPersistent[i].bMovingAtShutdown) THEN
|
||||
IF GVL.axes[i].config.eRestorePosition = RestorePosition.RestoreWithoutHome THEN
|
||||
fbRestorePosition[i].Execute:=TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_FOR
|
||||
eStartUp:= CheckRestore;
|
||||
|
||||
CheckRestore:
|
||||
// Check the set position fbs are finished
|
||||
// Nothing actually happens if the restore is not done, the code just returns from here each cycle and the
|
||||
// bPositionRestoreDone will never get set to TRUE and will take up cycle time
|
||||
FOR i:=1 TO gvl_app.axisNum DO
|
||||
IF fbReadEncRefSys[i].Valid = TRUE AND fbReadEncRefSys[i].Value = 0 AND NOT(axesPersistent[i].bMovingAtShutdown) THEN
|
||||
IF GVL.axes[i].config.eRestorePosition = RestorePosition.RestoreWithoutHome THEN
|
||||
IF NOT fbRestorePosition[i].Done THEN
|
||||
RETURN;
|
||||
END_IF
|
||||
END_IF
|
||||
END_IF
|
||||
END_FOR
|
||||
eStartUp:= FinishRestore;
|
||||
|
||||
FinishRestore:
|
||||
// Remove execute = TRUE for fbRestorePosition
|
||||
FOR i:=1 TO gvl_app.axisNum DO
|
||||
fbRestorePosition[i].Execute:=FALSE;
|
||||
END_FOR
|
||||
bPositionRestoreDone:=TRUE;
|
||||
bRestoreExecute:=FALSE;
|
||||
END_CASE
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<Action Name="STORE_PERSISTENT" Id="{cb5c9254-2e5f-47b1-9baa-10e728a961b0}" FolderPath="POSITION_RECOVERY\">
|
||||
<Implementation>
|
||||
<ST><![CDATA[FOR i:=1 TO gvl_app.axisNum DO
|
||||
axesPersistent[i].iPositionAtShutdown:=gvl.axes[i].Axis.NcToPlc.ActPos;
|
||||
IF gvl.axes[i].Axis.NcToPlc.ActVelo <> 0 THEN
|
||||
axesPersistent[i].bMovingAtShutdown:=TRUE;
|
||||
ELSE
|
||||
axesPersistent[i].bMovingAtShutdown:=FALSE;
|
||||
END_IF
|
||||
axesPersistent[i].bMovingAtShutdown:=axesPersistent[i].bMovingAtShutdown OR gvl.axes[i].Axis.Status.Moving;
|
||||
END_FOR]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
<LineIds Name="MAIN">
|
||||
<LineId Id="505" Count="0" />
|
||||
<LineId Id="134" Count="0" />
|
||||
<LineId Id="81" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.AXES">
|
||||
<LineId Id="1" Count="0" />
|
||||
<LineId Id="4" Count="0" />
|
||||
<LineId Id="10" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.CHECK_UPS">
|
||||
<LineId Id="2" Count="11" />
|
||||
<LineId Id="1" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.POSITION_RECOVERY">
|
||||
<LineId Id="2" Count="3" />
|
||||
<LineId Id="1" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.PROG">
|
||||
<LineId Id="2" Count="0" />
|
||||
<LineId Id="1" Count="0" />
|
||||
<LineId Id="3" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.RESTORE_POSITIONS">
|
||||
<LineId Id="99" Count="0" />
|
||||
<LineId Id="94" Count="0" />
|
||||
<LineId Id="98" Count="0" />
|
||||
<LineId Id="213" Count="0" />
|
||||
<LineId Id="101" Count="0" />
|
||||
<LineId Id="233" Count="1" />
|
||||
<LineId Id="102" Count="0" />
|
||||
<LineId Id="215" Count="0" />
|
||||
<LineId Id="214" Count="0" />
|
||||
<LineId Id="109" Count="0" />
|
||||
<LineId Id="95" Count="0" />
|
||||
<LineId Id="236" Count="2" />
|
||||
<LineId Id="240" Count="0" />
|
||||
<LineId Id="239" Count="0" />
|
||||
<LineId Id="206" Count="0" />
|
||||
<LineId Id="208" Count="1" />
|
||||
<LineId Id="207" Count="0" />
|
||||
<LineId Id="100" Count="0" />
|
||||
<LineId Id="91" Count="1" />
|
||||
<LineId Id="2" Count="7" />
|
||||
<LineId Id="96" Count="0" />
|
||||
<LineId Id="10" Count="6" />
|
||||
<LineId Id="18" Count="2" />
|
||||
<LineId Id="177" Count="0" />
|
||||
<LineId Id="21" Count="3" />
|
||||
<LineId Id="171" Count="0" />
|
||||
<LineId Id="25" Count="0" />
|
||||
<LineId Id="178" Count="0" />
|
||||
<LineId Id="26" Count="1" />
|
||||
<LineId Id="170" Count="0" />
|
||||
<LineId Id="29" Count="0" />
|
||||
<LineId Id="179" Count="0" />
|
||||
<LineId Id="163" Count="0" />
|
||||
<LineId Id="212" Count="0" />
|
||||
<LineId Id="152" Count="0" />
|
||||
<LineId Id="139" Count="0" />
|
||||
<LineId Id="131" Count="0" />
|
||||
<LineId Id="155" Count="0" />
|
||||
<LineId Id="190" Count="0" />
|
||||
<LineId Id="140" Count="0" />
|
||||
<LineId Id="157" Count="0" />
|
||||
<LineId Id="210" Count="1" />
|
||||
<LineId Id="187" Count="0" />
|
||||
<LineId Id="150" Count="1" />
|
||||
<LineId Id="200" Count="0" />
|
||||
<LineId Id="145" Count="0" />
|
||||
<LineId Id="141" Count="0" />
|
||||
<LineId Id="166" Count="0" />
|
||||
<LineId Id="203" Count="0" />
|
||||
<LineId Id="201" Count="0" />
|
||||
<LineId Id="173" Count="0" />
|
||||
<LineId Id="56" Count="0" />
|
||||
<LineId Id="181" Count="0" />
|
||||
<LineId Id="57" Count="1" />
|
||||
<LineId Id="216" Count="0" />
|
||||
<LineId Id="219" Count="1" />
|
||||
<LineId Id="63" Count="2" />
|
||||
<LineId Id="174" Count="0" />
|
||||
<LineId Id="66" Count="0" />
|
||||
<LineId Id="182" Count="0" />
|
||||
<LineId Id="204" Count="1" />
|
||||
<LineId Id="67" Count="1" />
|
||||
<LineId Id="221" Count="0" />
|
||||
<LineId Id="71" Count="2" />
|
||||
<LineId Id="222" Count="0" />
|
||||
<LineId Id="79" Count="2" />
|
||||
<LineId Id="175" Count="0" />
|
||||
<LineId Id="82" Count="0" />
|
||||
<LineId Id="223" Count="0" />
|
||||
<LineId Id="83" Count="3" />
|
||||
<LineId Id="241" Count="0" />
|
||||
<LineId Id="87" Count="0" />
|
||||
<LineId Id="1" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="MAIN.STORE_PERSISTENT">
|
||||
<LineId Id="10" Count="0" />
|
||||
<LineId Id="3" Count="0" />
|
||||
<LineId Id="5" Count="1" />
|
||||
<LineId Id="8" Count="1" />
|
||||
<LineId Id="7" Count="0" />
|
||||
<LineId Id="4" Count="0" />
|
||||
<LineId Id="1" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -1,16 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4022.6">
|
||||
<Task Name="PlcTask" Id="{96ece0eb-a21b-4000-8986-812071c196ce}">
|
||||
<!--CycleTime in micro seconds.-->
|
||||
<CycleTime>1000</CycleTime>
|
||||
<Priority>20</Priority>
|
||||
<PouCall>
|
||||
<Name>MAIN</Name>
|
||||
</PouCall>
|
||||
<TaskFBGuid>{26d89752-95b4-4b52-80c0-c79242bc34d7}</TaskFBGuid>
|
||||
<Fb_init>{137c4fd1-c794-4dee-a041-b4fea1d22866}</Fb_init>
|
||||
<Fb_exit>{2478772d-357b-433f-886f-15340bef9bdf}</Fb_exit>
|
||||
<CycleUpdate>{c16ee410-277f-45f0-a92e-1ec5f87024b9}</CycleUpdate>
|
||||
<PostCycleUpdate>{291eb57a-f9a9-4722-b7d3-fd700e5db288}</PostCycleUpdate>
|
||||
</Task>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<Task Name="PlcTask" Id="{96ece0eb-a21b-4000-8986-812071c196ce}">
|
||||
<!--CycleTime in micro seconds.-->
|
||||
<CycleTime>10000</CycleTime>
|
||||
<Priority>20</Priority>
|
||||
<PouCall>
|
||||
<Name>MAIN</Name>
|
||||
</PouCall>
|
||||
<TaskFBGuid>{26d89752-95b4-4b52-80c0-c79242bc34d7}</TaskFBGuid>
|
||||
<Fb_init>{137c4fd1-c794-4dee-a041-b4fea1d22866}</Fb_init>
|
||||
<Fb_exit>{2478772d-357b-433f-886f-15340bef9bdf}</Fb_exit>
|
||||
<CycleUpdate>{c16ee410-277f-45f0-a92e-1ec5f87024b9}</CycleUpdate>
|
||||
<PostCycleUpdate>{291eb57a-f9a9-4722-b7d3-fd700e5db288}</PostCycleUpdate>
|
||||
</Task>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<POU Name="tcUNIT_APP_RUN" Id="{677fcae4-9d84-425e-8fcd-8e3d3a1985e8}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[(* tcUNIT Tests: Add this program to PLC task in order to run tcUNIT tests against the declared POU test suites.
|
||||
see https://tcunit.org/ for documentation.*)
|
||||
PROGRAM tcUNIT_APP_RUN
|
||||
|
||||
VAR
|
||||
(* Declare standard library POU tests to be run
|
||||
E.g. fbMoveNonLinearSlits: FB_MoveNonLinearSlits_Test;*)
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TcUnit.RUN();]]></ST>
|
||||
</Implementation>
|
||||
<LineIds Name="tcUNIT_APP_RUN">
|
||||
<LineId Id="45" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,149 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<POU Name="FB_tcUNIT_common" Id="{0f757d3d-99b7-46eb-bdc6-03aa126689f4}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[// tcUNIT Common function block: Contains helper methods for tcUNIT.
|
||||
FUNCTION_BLOCK FB_tcUNIT_common
|
||||
|
||||
VAR
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="mEnableAxis" Id="{12e91532-7139-4c17-998e-4c670b584b9d}">
|
||||
<Declaration><![CDATA[METHOD mEnableAxis : BOOL
|
||||
VAR_INPUT
|
||||
iAxisIndex: INT; // The idex of the axis to action the method on.
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[GVL.axes[iAxisIndex].control.bEnable := TRUE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="mExecute" Id="{010bd927-5568-40db-a7c5-fcfe995a5cb1}">
|
||||
<Declaration><![CDATA[METHOD mExecute : BOOL
|
||||
VAR_INPUT
|
||||
iAxisIndex: INT; // The idex of the axis to action the method on.
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[GVL.axes[iAxisIndex].control.bExecute := TRUE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="mPrepareDefaultMove" Id="{c23244d5-896c-49ad-8d8a-19390856e4dc}">
|
||||
<Declaration><![CDATA[METHOD mPrepareDefaultMove
|
||||
|
||||
VAR_INPUT
|
||||
iAxisIndex: INT; // The idex of the axis to action the method on.
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Prepare an axis so it is ready to action a move using target defaults when executed.
|
||||
|
||||
GVL.axes[iAxisIndex].control.bEnable := TRUE;
|
||||
GVL.axes[iAxisIndex].control.eCommand := MotionFunctions.MoveAbsolute;
|
||||
|
||||
GVL.axes[iAxisIndex].inputs.bLimitBwd := TRUE;
|
||||
GVL.axes[iAxisIndex].inputs.bLimitFwd := TRUE;
|
||||
|
||||
GVL.axes[iAxisIndex].config.fVelocity := tcUNIT_GVL.fDEFAULT_TARGET_VELOCITY;
|
||||
GVL.axes[iAxisIndex].config.fAcceleration := tcUNIT_GVL.fDEFAULT_TARGET_ACCELERATION;
|
||||
GVL.axes[iAxisIndex].config.fDeceleration := tcUNIT_GVL.fDEFAULT_TARGET_DECCELERATION;
|
||||
GVL.axes[iAxisIndex].config.fOverride := tcUNIT_GVL.fDEFAULT_TARGET_OVERRIDE;
|
||||
GVL.axes[iAxisIndex].config.fPosition := tcUNIT_GVL.fDEFAULT_POSITION;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="mPrepareMove" Id="{97bd5417-d0a1-4d32-8732-16310a863fcc}">
|
||||
<Declaration><![CDATA[METHOD mPrepareMove
|
||||
|
||||
VAR_INPUT
|
||||
iAxisIndex: INT; // The idex of the axis to action the method on.
|
||||
fTargetVelocity: LREAL;
|
||||
fTargetAcceleration: LREAL;
|
||||
fTargetDeceleration: LREAL;
|
||||
fTargetPosition: LREAL;
|
||||
eMotionStrategy: MotionFunctions; // The desired MotionFunctions motion strategy.
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Prepare the axis so it is ready to action a move when executed for a given motion strategy.
|
||||
|
||||
GVL.axes[iAxisIndex].control.bEnable := FALSE;
|
||||
GVL.axes[iAxisIndex].control.eCommand := eMotionStrategy;
|
||||
|
||||
GVL.axes[iAxisIndex].inputs.bLimitBwd := TRUE;
|
||||
GVL.axes[iAxisIndex].inputs.bLimitFwd := TRUE;
|
||||
|
||||
GVL.axes[iAxisIndex].config.fVelocity := fTargetVelocity;
|
||||
GVL.axes[iAxisIndex].config.fAcceleration := fTargetAcceleration;
|
||||
GVL.axes[iAxisIndex].config.fDeceleration := fTargetDeceleration;
|
||||
GVL.axes[iAxisIndex].config.fPosition := fTargetPosition;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="mSetAxisDefaults" Id="{5b9336be-4414-4858-a614-0fdb2847e171}">
|
||||
<Declaration><![CDATA[METHOD mSetAxisDefaults
|
||||
|
||||
VAR_INPUT
|
||||
iAxisIndex: INT; // The idex of the axis to action the method on.
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Set PLC default values for the axis. Note: Status values can take multiple cycles to updated. This is not an instant reset.
|
||||
|
||||
IF GVL.axes[iAxisIndex].status.bBusy THEN
|
||||
GVL.axes[iAxisIndex].control.bStop := TRUE;
|
||||
END_IF
|
||||
IF GVL.axes[iAxisIndex].status.bError THEN
|
||||
GVL.axes[iAxisIndex].control.bReset := TRUE;
|
||||
END_IF
|
||||
IF NOT GVL.axes[iAxisIndex].control.bEnable AND GVL.axes[iAxisIndex].control.bStop THEN
|
||||
GVL.axes[iAxisIndex].control.bStop := FALSE;
|
||||
END_IF
|
||||
|
||||
GVL.axes[iAxisIndex].control.bEnable := FALSE;
|
||||
GVL.axes[iAxisIndex].control.bExecute := FALSE;
|
||||
GVL.axes[iAxisIndex].control.bReset := FALSE;
|
||||
GVL.axes[iAxisIndex].control.bJogFwd := FALSE;
|
||||
GVL.axes[iAxisIndex].control.bJogBwd := FALSE;
|
||||
GVL.axes[iAxisIndex].control.bStop := FALSE;
|
||||
GVL.axes[iAxisIndex].control.eCommand := MotionFunctions.MoveAbsolute;
|
||||
|
||||
GVL.axes[iAxisIndex].config.fVelocity := 0.0;
|
||||
GVL.axes[iAxisIndex].config.fAcceleration := 0.0;
|
||||
GVL.axes[iAxisIndex].config.fDeceleration := 0.0;
|
||||
GVL.axes[iAxisIndex].config.fPosition := 0;
|
||||
GVL.axes[iAxisIndex].config.fOverride := 0.0;
|
||||
GVL.axes[iAxisIndex].config.nHomeSeq := 0;
|
||||
|
||||
GVL.axes[iAxisIndex].inputs.bLimitBwd := FALSE;
|
||||
GVL.axes[iAxisIndex].inputs.bLimitFwd := FALSE;
|
||||
GVL.axes[iAxisIndex].inputs.bEncLAtch := FALSE;
|
||||
GVL.axes[iAxisIndex].inputs.bHomeSensor := FALSE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<LineIds Name="FB_tcUNIT_common">
|
||||
<LineId Id="9" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_tcUNIT_common.mEnableAxis">
|
||||
<LineId Id="5" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_tcUNIT_common.mExecute">
|
||||
<LineId Id="5" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_tcUNIT_common.mPrepareDefaultMove">
|
||||
<LineId Id="6" Count="0" />
|
||||
<LineId Id="38" Count="0" />
|
||||
<LineId Id="8" Count="1" />
|
||||
<LineId Id="39" Count="0" />
|
||||
<LineId Id="11" Count="6" />
|
||||
<LineId Id="19" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_tcUNIT_common.mPrepareMove">
|
||||
<LineId Id="17" Count="11" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_tcUNIT_common.mSetAxisDefaults">
|
||||
<LineId Id="6" Count="0" />
|
||||
<LineId Id="41" Count="0" />
|
||||
<LineId Id="34" Count="1" />
|
||||
<LineId Id="31" Count="0" />
|
||||
<LineId Id="44" Count="1" />
|
||||
<LineId Id="43" Count="0" />
|
||||
<LineId Id="36" Count="2" />
|
||||
<LineId Id="7" Count="19" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<GVL Name="tcUNIT_GVL" Id="{4b23d6c9-6a88-40b7-9bf4-d55c4dfd4246}">
|
||||
<Declaration><![CDATA[// tcUNIT_GVL: Global variables used in tcUNIT tests.
|
||||
{attribute 'qualified_only'}
|
||||
VAR_GLOBAL CONSTANT
|
||||
// Constants for axis defaults.
|
||||
fDEFAULT_VELOCITY: LREAL := 0.0;
|
||||
fDEFAULT_ACCELERATION: LREAL := 0.0;
|
||||
fDEFAULT_DECCELERATION: LREAL := 0.0;
|
||||
fDEFAULT_POSITION: LREAL := 0.0;
|
||||
|
||||
fDEFAULT_TARGET_VELOCITY: LREAL := 1.0;
|
||||
fDEFAULT_TARGET_ACCELERATION: LREAL := 0.5;
|
||||
fDEFAULT_TARGET_DECCELERATION: LREAL := 0.5;
|
||||
fDEFAULT_TARGET_POSITION: LREAL := 10.0;
|
||||
fDEFAULT_TARGET_OVERRIDE: LREAL := 100;
|
||||
END_VAR
|
||||
|
||||
VAR_GLOBAL
|
||||
END_VAR]]></Declaration>
|
||||
</GVL>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,248 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<POU Name="FB_Axis_TEST" Id="{3bfca2b4-3b3f-48f2-9900-9d4cd3404e9e}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[// Test suite for the FB_Axis POU
|
||||
{attribute 'call_after_init'}
|
||||
FUNCTION_BLOCK FB_Axis_TEST EXTENDS tcUnit.FB_TestSuite
|
||||
VAR
|
||||
fbCommon: FB_tcUNIT_common;
|
||||
iTargetAxis: INT := 1; // The <index> of the axis within GVL.axes[<index>] to test against.
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Declare methods defined in the FB_Axis_TEST POU to be included (executed) in the test suite
|
||||
SetAxisControl_Enabled();
|
||||
CheckAxisStatus_Moving();
|
||||
SetAxisConfig_Acceleration();
|
||||
CheckAxisStatus_NewPosition();
|
||||
SetAxisControl_Velocity();
|
||||
SetAxisInputs_bLimitFwd();]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="CheckAxisStatus_Moving" Id="{f7dcf822-91ec-4555-918f-e2487353578a}">
|
||||
<Declaration><![CDATA[METHOD CheckAxisStatus_Moving
|
||||
VAR
|
||||
Result: BOOL;
|
||||
ExpectedResult: BOOL;
|
||||
|
||||
nCycle: UINT;
|
||||
nMaxCycles: UINT := 30;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TEST('test_GIVEN_new_axis_position_WHEN_execute_move_THEN_axis_moves');
|
||||
|
||||
ExpectedResult := TRUE;
|
||||
|
||||
fbCommon.mPrepareDefaultMove(iTargetAxis);
|
||||
fbCommon.mExecute(iTargetAxis);
|
||||
|
||||
Result := GVL.axes[iTargetAxis].status.bBusy;
|
||||
|
||||
IF nCycle > nMaxCycles OR ExpectedResult = Result THEN
|
||||
AssertEquals(Expected := ExpectedResult,
|
||||
Actual := Result,
|
||||
Message := 'Axis is not moving.');
|
||||
TEST_FINISHED();
|
||||
ELSE
|
||||
nCycle := nCycle + 1;
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="CheckAxisStatus_NewPosition" Id="{604b9446-af57-41db-afac-f53f5b12cc2c}">
|
||||
<Declaration><![CDATA[METHOD CheckAxisStatus_NewPosition
|
||||
VAR
|
||||
InitialValue: LREAL;
|
||||
Result: LREAL;
|
||||
ExpectedResult: LREAL;
|
||||
nCycle: UINT;
|
||||
nCycleMax: UINT := 100;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TEST('test_GIVEN_new_axis_position_set_WHEN_executed_THEN_axis_moves_to_new_position');
|
||||
|
||||
// Since the axis has state; a test might begin the position at some location set by
|
||||
// a previous test. Therefore if we execute a move we should just check it's moved
|
||||
// from the initial location not some initial default.
|
||||
|
||||
InitialValue := GVL.axes[iTargetAxis].config.fPosition;
|
||||
ExpectedResult := InitialValue + 10;
|
||||
GVL.axes[iTargetAxis].config.fPosition := ExpectedResult;
|
||||
|
||||
GVL.axes[iTargetAxis].control.eCommand := MotionFunctions.MoveAbsolute;
|
||||
GVL.axes[iTargetAxis].control.bExecute := TRUE;
|
||||
|
||||
Result := GVL.axes[iTargetAxis].status.fActPosition;
|
||||
|
||||
IF nCycle > nCycleMax OR ExpectedResult = Result THEN
|
||||
AssertEquals(Expected := ExpectedResult,
|
||||
Actual := Result,
|
||||
Message := 'fPosition of the axis is different.');
|
||||
TEST_FINISHED();
|
||||
ELSE
|
||||
nCycle := nCycle + 1;
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="SetAxisConfig_Acceleration" Id="{2efd2402-6ad3-455d-a703-347847c98522}">
|
||||
<Declaration><![CDATA[METHOD SetAxisConfig_Acceleration
|
||||
VAR
|
||||
InitialValue: LREAL;
|
||||
Result: LREAL;
|
||||
ExpectedResult: LREAL;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TEST('test_GIVEN_new_axis_acceleration_set_WHEN_executed_THEN_new_axis_acceleration_set');
|
||||
|
||||
// example of direct GVL axis reference for assert.
|
||||
|
||||
ExpectedResult := tcUNIT_gvl.fDEFAULT_TARGET_ACCELERATION;
|
||||
fbCommon.mPrepareDefaultMove(iTargetAxis);
|
||||
|
||||
Result := GVL.axes[1].config.fAcceleration;
|
||||
|
||||
AssertEquals(Expected := ExpectedResult,
|
||||
Actual := Result,
|
||||
Message := 'fAcceleration of the axis is different.');
|
||||
|
||||
TEST_FINISHED();]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="SetAxisControl_Enabled" Id="{749049e6-6152-4a23-ac76-75883bd089b7}">
|
||||
<Declaration><![CDATA[METHOD SetAxisControl_Enabled
|
||||
VAR
|
||||
Result: BOOL;
|
||||
ExpectedResult: BOOL;
|
||||
nCycle: UINT;
|
||||
nMaxCycles: UINT := 30;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TEST('test_GIVEN_prepare_default_move_WHEN_move_prepared_THEN_axis_enabled');
|
||||
|
||||
// example of test that requires multiple cycles to complete. Due to stateful behaviour of the axis structure.
|
||||
|
||||
ExpectedResult := TRUE;
|
||||
GVL.axes[1].control.bEnable := ExpectedResult;
|
||||
|
||||
Result := GVL.axes[iTargetAxis].status.bEnabled;
|
||||
|
||||
IF nCycle > nMaxCycles OR ExpectedResult = Result THEN
|
||||
AssertEquals(Expected := ExpectedResult,
|
||||
Actual := Result,
|
||||
Message := 'Axis is not enabled.');
|
||||
TEST_FINISHED();
|
||||
ELSE
|
||||
nCycle := nCycle + 1;
|
||||
END_IF
|
||||
]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="SetAxisControl_Velocity" Id="{f87270b6-fb94-4214-bb13-17f22f6ab8f5}">
|
||||
<Declaration><![CDATA[METHOD SetAxisControl_Velocity
|
||||
VAR
|
||||
InitialValue: LREAL;
|
||||
Result: LREAL;
|
||||
ExpectedResult: LREAL;
|
||||
|
||||
fDelta: REAL := 0.01;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TEST('test_GIVEN_new_axis_velocity_set_WHEN_executed_THEN_new_axis_velocity_set');
|
||||
|
||||
// Example of using a tcUNIT assert for a specific type (in this case LREAL).
|
||||
|
||||
InitialValue := GVL.axes[iTargetAxis].config.fVelocity;
|
||||
ExpectedResult := InitialValue + 0.5;
|
||||
GVL.Axes[iTargetAxis].config.fVelocity := ExpectedResult;
|
||||
|
||||
Result := GVL.axes[iTargetAxis].config.fVelocity;
|
||||
|
||||
AssertEquals_LREAL(Expected := ExpectedResult,
|
||||
Actual := Result,
|
||||
Delta := fDelta,
|
||||
Message := 'fVelocity of the axis is different.');
|
||||
TEST_FINISHED();
|
||||
]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="SetAxisInputs_bLimitFwd" Id="{6304c3b1-9e72-403e-9ae2-a5609b1efe92}">
|
||||
<Declaration><![CDATA[METHOD SetAxisInputs_bLimitFwd
|
||||
VAR
|
||||
Result: BOOL;
|
||||
ExpectedResult: BOOL;
|
||||
|
||||
nCycle: UINT;
|
||||
nMaxCycles: UINT := 30;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TEST('test_GIVEN_prepare_default_move_WHEN_bFwEnabled_prepared_enabled_THEN_bFwEnable_enabled');
|
||||
|
||||
ExpectedResult := TRUE;
|
||||
|
||||
GVL.axes[iTargetAxis].inputs.bLimitFwd := TRUE;
|
||||
|
||||
Result := GVL.axes[iTargetAxis].status.bFwEnabled;
|
||||
|
||||
IF nCycle > nMaxCycles OR ExpectedResult = Result THEN
|
||||
AssertEquals(Expected := ExpectedResult,
|
||||
Actual := Result,
|
||||
Message := 'Axis bLimitFwd is not enabled.');
|
||||
TEST_FINISHED();
|
||||
ELSE
|
||||
nCycle := nCycle + 1;
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<LineIds Name="FB_Axis_TEST">
|
||||
<LineId Id="37" Count="0" />
|
||||
<LineId Id="34" Count="0" />
|
||||
<LineId Id="38" Count="1" />
|
||||
<LineId Id="12" Count="0" />
|
||||
<LineId Id="40" Count="0" />
|
||||
<LineId Id="48" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Axis_TEST.CheckAxisStatus_Moving">
|
||||
<LineId Id="127" Count="16" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Axis_TEST.CheckAxisStatus_NewPosition">
|
||||
<LineId Id="121" Count="21" />
|
||||
<LineId Id="56" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Axis_TEST.SetAxisConfig_Acceleration">
|
||||
<LineId Id="5" Count="0" />
|
||||
<LineId Id="50" Count="1" />
|
||||
<LineId Id="9" Count="0" />
|
||||
<LineId Id="13" Count="0" />
|
||||
<LineId Id="57" Count="0" />
|
||||
<LineId Id="23" Count="0" />
|
||||
<LineId Id="22" Count="0" />
|
||||
<LineId Id="25" Count="4" />
|
||||
<LineId Id="24" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Axis_TEST.SetAxisControl_Enabled">
|
||||
<LineId Id="144" Count="16" />
|
||||
<LineId Id="107" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Axis_TEST.SetAxisControl_Velocity">
|
||||
<LineId Id="5" Count="0" />
|
||||
<LineId Id="92" Count="1" />
|
||||
<LineId Id="10" Count="0" />
|
||||
<LineId Id="61" Count="2" />
|
||||
<LineId Id="67" Count="0" />
|
||||
<LineId Id="69" Count="0" />
|
||||
<LineId Id="91" Count="0" />
|
||||
<LineId Id="70" Count="1" />
|
||||
<LineId Id="80" Count="0" />
|
||||
<LineId Id="72" Count="0" />
|
||||
<LineId Id="24" Count="0" />
|
||||
<LineId Id="86" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Axis_TEST.SetAxisInputs_bLimitFwd">
|
||||
<LineId Id="24" Count="0" />
|
||||
<LineId Id="26" Count="0" />
|
||||
<LineId Id="25" Count="0" />
|
||||
<LineId Id="48" Count="2" />
|
||||
<LineId Id="67" Count="0" />
|
||||
<LineId Id="19" Count="0" />
|
||||
<LineId Id="58" Count="6" />
|
||||
<LineId Id="57" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<POU Name="tcUNIT_STD_LIB_RUN" Id="{5e8cc903-e536-40be-a096-d6b305fbb618}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[// tcUNIT Standard Library tests: Add program to PLC task in order to run tcUNIT tests against the declared POU test suites
|
||||
PROGRAM tcUNIT_STD_LIB_RUN
|
||||
VAR
|
||||
// Declare standard library POU tests to be run
|
||||
fbFB_Axis: FB_Axis_TEST;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[TcUnit.RUN();]]></ST>
|
||||
</Implementation>
|
||||
<LineIds Name="tcUNIT_STD_LIB_RUN">
|
||||
<LineId Id="45" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,568 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.0">
|
||||
<VisuManager Name="Visualization Manager" Id="{9ab27b0a-e061-4269-b032-b221661a7379}">
|
||||
<XmlArchive>
|
||||
<Data>
|
||||
<o xml:space="preserve" t="VisualManagerObject">
|
||||
<v n="UseUnicodeStrings" t="UnicodeSupport">Undefined</v>
|
||||
<o n="ViewSettings" t="VisualManagerViewSettings">
|
||||
<n n="StartVisu" />
|
||||
<v n="StartVisu33">"MainVisu"</v>
|
||||
<v n="OpenTargetvisu">false</v>
|
||||
<v n="BestFit">false</v>
|
||||
<v n="ClientSizeMode" t="VisualClientSizeMode">AutoDetect</v>
|
||||
<v n="ClientSizeX">2000</v>
|
||||
<v n="ClientSizeY">2000</v>
|
||||
<v n="ExtendedSettings">false</v>
|
||||
<v n="PaintBufferSize">50000</v>
|
||||
<v n="MemorybufferSize">400000</v>
|
||||
<v n="VisuInternal">false</v>
|
||||
<v n="CurrentVisuGlobal">false</v>
|
||||
<v n="FileTransferMode">true</v>
|
||||
<v n="VisuStyle">"Default, 3.1.5.0 (Beckhoff Automation GmbH)"</v>
|
||||
<v n="MaxNumOfClients">100</v>
|
||||
<v n="Language">""</v>
|
||||
<v n="NumpadDialog">"VisuDialogs.Numpad"</v>
|
||||
<v n="KeypadDialog">"VisuDialogs.Keypad"</v>
|
||||
<v n="InputWithLimitsDialog">"VisuDialogs.TextinputWithLimits"</v>
|
||||
<v n="UseInputWithLimits">false</v>
|
||||
<v n="TouchHandlingActive">false</v>
|
||||
<v n="SemiTransparentDrawingActive">true</v>
|
||||
<v n="UpdateColorvariablesAfterActivationDone">true</v>
|
||||
<v n="TransferSvgAndConvertedImages">false</v>
|
||||
<v n="LoginDialog">"VisuUserManagement.VUM_Login"</v>
|
||||
<v n="ChangePasswordDialog">"VisuUserManagement.VUM_ChangePassword"</v>
|
||||
<v n="ChangeConfigDialog">"VisuUserManagement.VUM_UserManagement"</v>
|
||||
<v n="GuidShowChangePasswordDialogFunction">{00000000-0000-0000-0000-000000000000}</v>
|
||||
<v n="GuidShowChangeConfigDialogFunction">{00000000-0000-0000-0000-000000000000}</v>
|
||||
<v n="UseStandardKeyboardHandling">true</v>
|
||||
<v n="PaintDeactiveElementsGrayedOut">true</v>
|
||||
<v n="ConvertImages">false</v>
|
||||
<v n="ConversionType">""</v>
|
||||
</o>
|
||||
<o n="RegisterDesc" t="GenericFbDescription">
|
||||
<d n="FbMethods" t="CaseInsensitiveHashtable" ckt="String" cvt="Guid">
|
||||
<v>FB_Init</v>
|
||||
<v>c98701bd-1e9f-450a-a2a8-a2474d536f2e</v>
|
||||
<v>FB_Reinit</v>
|
||||
<v>5b6e372a-a69d-40e8-aef7-f470b7c53d95</v>
|
||||
<v>FB_Exit</v>
|
||||
<v>0be1b9ab-e8eb-4b33-b803-109abb46bde4</v>
|
||||
</d>
|
||||
<v n="FbName">"NotImportant"</v>
|
||||
<v n="FbGuid">{aa8b7e42-e967-427f-8f2e-f00f9d706470}</v>
|
||||
</o>
|
||||
<o n="TargetProperties" t="VisualizationTargetProperties">
|
||||
<o n="AvailableKeys" t="DeviceBasedHotkeysProvider">
|
||||
<v n="Modifiers">7</v>
|
||||
<v n="DevType">4096</v>
|
||||
<v n="DevId">"1002 0004"</v>
|
||||
<v n="DevVersion">"1.0.0.4"</v>
|
||||
<v n="BaseProvider">{cb73a13e-6ccc-4bc6-8859-f5aa98bb116b}</v>
|
||||
<l n="Keys" t="ArrayList" cet="DeviceBasedHotkeyItem">
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">48</v>
|
||||
<v n="CanonicalName">"0"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">49</v>
|
||||
<v n="CanonicalName">"1"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">50</v>
|
||||
<v n="CanonicalName">"2"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">51</v>
|
||||
<v n="CanonicalName">"3"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">52</v>
|
||||
<v n="CanonicalName">"4"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">53</v>
|
||||
<v n="CanonicalName">"5"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">54</v>
|
||||
<v n="CanonicalName">"6"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">55</v>
|
||||
<v n="CanonicalName">"7"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">56</v>
|
||||
<v n="CanonicalName">"8"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">57</v>
|
||||
<v n="CanonicalName">"9"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">65</v>
|
||||
<v n="CanonicalName">"A"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">107</v>
|
||||
<v n="CanonicalName">"ADDITION"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">66</v>
|
||||
<v n="CanonicalName">"B"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">8</v>
|
||||
<v n="CanonicalName">"BACKSPACE"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">67</v>
|
||||
<v n="CanonicalName">"C"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">110</v>
|
||||
<v n="CanonicalName">"COMMA"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">68</v>
|
||||
<v n="CanonicalName">"D"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">46</v>
|
||||
<v n="CanonicalName">"DELETE"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">111</v>
|
||||
<v n="CanonicalName">"DIVIDE"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">40</v>
|
||||
<v n="CanonicalName">"DOWN"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">69</v>
|
||||
<v n="CanonicalName">"E"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">35</v>
|
||||
<v n="CanonicalName">"END"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">27</v>
|
||||
<v n="CanonicalName">"ESCAPE"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">70</v>
|
||||
<v n="CanonicalName">"F"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">112</v>
|
||||
<v n="CanonicalName">"F1"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">121</v>
|
||||
<v n="CanonicalName">"F10"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">122</v>
|
||||
<v n="CanonicalName">"F11"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">123</v>
|
||||
<v n="CanonicalName">"F12"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">113</v>
|
||||
<v n="CanonicalName">"F2"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">114</v>
|
||||
<v n="CanonicalName">"F3"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">115</v>
|
||||
<v n="CanonicalName">"F4"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">116</v>
|
||||
<v n="CanonicalName">"F5"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">117</v>
|
||||
<v n="CanonicalName">"F6"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">118</v>
|
||||
<v n="CanonicalName">"F7"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">119</v>
|
||||
<v n="CanonicalName">"F8"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">120</v>
|
||||
<v n="CanonicalName">"F9"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">71</v>
|
||||
<v n="CanonicalName">"G"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">72</v>
|
||||
<v n="CanonicalName">"H"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">36</v>
|
||||
<v n="CanonicalName">"HOME"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">73</v>
|
||||
<v n="CanonicalName">"I"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">45</v>
|
||||
<v n="CanonicalName">"INSERT"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">74</v>
|
||||
<v n="CanonicalName">"J"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">75</v>
|
||||
<v n="CanonicalName">"K"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">76</v>
|
||||
<v n="CanonicalName">"L"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">37</v>
|
||||
<v n="CanonicalName">"LEFT"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">77</v>
|
||||
<v n="CanonicalName">"M"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">106</v>
|
||||
<v n="CanonicalName">"MULTIPLY"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">78</v>
|
||||
<v n="CanonicalName">"N"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">96</v>
|
||||
<v n="CanonicalName">"NUM0"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">97</v>
|
||||
<v n="CanonicalName">"NUM1"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">98</v>
|
||||
<v n="CanonicalName">"NUM2"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">99</v>
|
||||
<v n="CanonicalName">"NUM3"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">100</v>
|
||||
<v n="CanonicalName">"NUM4"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">101</v>
|
||||
<v n="CanonicalName">"NUM5"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">102</v>
|
||||
<v n="CanonicalName">"NUM6"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">103</v>
|
||||
<v n="CanonicalName">"NUM7"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">104</v>
|
||||
<v n="CanonicalName">"NUM8"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">105</v>
|
||||
<v n="CanonicalName">"NUM9"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">79</v>
|
||||
<v n="CanonicalName">"O"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">80</v>
|
||||
<v n="CanonicalName">"P"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">19</v>
|
||||
<v n="CanonicalName">"PAUSE"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">42</v>
|
||||
<v n="CanonicalName">"PRINT"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">81</v>
|
||||
<v n="CanonicalName">"Q"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">82</v>
|
||||
<v n="CanonicalName">"R"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">13</v>
|
||||
<v n="CanonicalName">"RETURN_KEY"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">39</v>
|
||||
<v n="CanonicalName">"RIGHT"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">83</v>
|
||||
<v n="CanonicalName">"S"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">32</v>
|
||||
<v n="CanonicalName">"SPACE"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">109</v>
|
||||
<v n="CanonicalName">"SUBTRACT"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">84</v>
|
||||
<v n="CanonicalName">"T"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">9</v>
|
||||
<v n="CanonicalName">"TAB"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">85</v>
|
||||
<v n="CanonicalName">"U"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">38</v>
|
||||
<v n="CanonicalName">"UP"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">86</v>
|
||||
<v n="CanonicalName">"V"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">87</v>
|
||||
<v n="CanonicalName">"W"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">88</v>
|
||||
<v n="CanonicalName">"X"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">89</v>
|
||||
<v n="CanonicalName">"Y"</v>
|
||||
</o>
|
||||
<o>
|
||||
<v n="FromBase">true</v>
|
||||
<v n="KeyCode">90</v>
|
||||
<v n="CanonicalName">"Z"</v>
|
||||
</o>
|
||||
</l>
|
||||
</o>
|
||||
</o>
|
||||
<o n="ConfiguredHotkeys" t="HotkeyConfiguration">
|
||||
<v n="IdMin">481037385728L</v>
|
||||
<v n="IdMax">549755813887L</v>
|
||||
<v n="Id">481037385728L</v>
|
||||
<v n="IdMask">549754765312L</v>
|
||||
<v n="IdStep">1048576L</v>
|
||||
<l2 n="Inputs" />
|
||||
</o>
|
||||
<o n="DefInpHandlerGuids" t="GenericFbDescription">
|
||||
<d n="FbMethods" t="CaseInsensitiveHashtable" ckt="String" cvt="Guid">
|
||||
<v>ExecuteLooseCapture</v>
|
||||
<v>4e2884cd-dc97-4120-914c-87a83e618f1f</v>
|
||||
<v>ExecuteMouseUp</v>
|
||||
<v>57eea9a5-15d9-4269-bb8d-9fee5420cdb2</v>
|
||||
<v>Init</v>
|
||||
<v>e61a0910-39b6-4bcc-9a64-fcab62230628</v>
|
||||
<v>FB_Exit</v>
|
||||
<v>e6e1ea47-0811-4b03-9888-d0564361e0d6</v>
|
||||
<v>ExecuteMouseDblClick</v>
|
||||
<v>a517a0ac-170b-4df4-b289-55dcb57628ed</v>
|
||||
<v>GetElementInfo</v>
|
||||
<v>f64cb89f-3016-4fba-85f5-02efcd4282c1</v>
|
||||
<v>ExecuteMouseDown</v>
|
||||
<v>94bab392-b395-4c03-9d0e-5738d11bd021</v>
|
||||
<v>FB_Reinit</v>
|
||||
<v>97933c03-0169-4afe-ac83-de892204e120</v>
|
||||
<v>Initialize</v>
|
||||
<v>6946d6e0-129f-4425-b8b0-ef98281a99e9</v>
|
||||
<v>ExecuteMouseMove</v>
|
||||
<v>58fc221c-be14-4e34-871e-a118f8ba9539</v>
|
||||
<v>ExecuteDialogClosed</v>
|
||||
<v>f08d08b6-e70c-4bef-a136-38845bd246d8</v>
|
||||
<v>ExecuteKeyUp</v>
|
||||
<v>7403635b-2725-4f00-93d4-e0dd125959de</v>
|
||||
<v>ExecuteKeyDown</v>
|
||||
<v>9649ecda-3794-4d6b-a8a7-71e528d9d170</v>
|
||||
<v>abstrGetDefaultCursor</v>
|
||||
<v>25718998-50a9-408d-8b3f-20a55e2cc784</v>
|
||||
<v>ExecuteMouseEnter</v>
|
||||
<v>569205fa-533b-4fc2-8d51-21ccab693305</v>
|
||||
<v>ExecuteMouseLeave</v>
|
||||
<v>3bacea68-55b4-4764-928e-e69910299932</v>
|
||||
<v>FB_Init</v>
|
||||
<v>f37e1250-9b48-45ca-810e-c192ea9440ec</v>
|
||||
<v>ExecuteMouseClick</v>
|
||||
<v>cd348bda-7eaf-4dfe-8c4b-bf9b71e5b10c</v>
|
||||
</d>
|
||||
<v n="FbName">"NotImportant"</v>
|
||||
<v n="FbGuid">{073ee466-cf0a-4c8b-ba92-64f671516699}</v>
|
||||
</o>
|
||||
<n n="InstantiationStorage" />
|
||||
<n n="VisuUserManagement" />
|
||||
<v n="UseLocalUserMgmt">true</v>
|
||||
<v n="UseUserMgmtInPlc">true</v>
|
||||
<n n="RemoteUserMgmtPath" />
|
||||
<n n="FontsConfig" />
|
||||
<n n="FontDownloadConfig" />
|
||||
<n n="VisuInitializationCode" />
|
||||
<v n="GuidVisuSettingsPou">{925c2b24-84d1-469a-954d-7af8b99219ef}</v>
|
||||
<v n="GuidVisuSettingsPouInit">{f905b871-af16-47c5-a6ef-0a0918a8b009}</v>
|
||||
<v n="GuidVisuSettingsPouReInit">{d3706fa7-8257-48b3-af0a-cab0afb4dc49}</v>
|
||||
<v n="GuidVisuSettingsPouBoolMethod">{4d5d9e0c-fa46-4312-abcd-ab81ecde84e1}</v>
|
||||
<v n="GuidVisuSettingsPouDIntMethod">{00a84c7a-9a31-408b-860a-9d896efbd842}</v>
|
||||
<v n="GuidVisuSettingsPouStringMethod">{3ef700b6-44e8-4cfc-b6e0-26bfef38c2b6}</v>
|
||||
<v n="GuidVisuSettingsPouReservedMethod">{e2123cf7-55c2-43c4-8135-f70e23d789b6}</v>
|
||||
<v n="GuidMemManInitPou">{b7fab3e5-7354-42a4-bdf2-bc53461ec63c}</v>
|
||||
<v n="GuidMemManInitPouInit">{967863f2-ccef-44e4-a545-05cbd9acb6be}</v>
|
||||
<v n="GuidMemManInitPouReInit">{f97c4870-0a84-4b7b-9cfd-0059a20bebbd}</v>
|
||||
<v n="GuidStartVisuInitPou">{81498829-8b99-4474-8196-a48127c8e5d4}</v>
|
||||
<v n="GuidStartVisuInitPouInit">{71bfd0df-7f34-4abc-b3b9-84bad2430630}</v>
|
||||
<v n="GuidStartVisuInitPouReInit">{6695a96b-387d-4f98-b9f1-09dab5b7c483}</v>
|
||||
<v n="GuidVisuGVL0">{5fe53f14-f5a7-4173-9e2b-538b7d89379a}</v>
|
||||
<v n="GuidVisuGVL1">{09c26f6e-e9b1-4455-a763-8dfd243af668}</v>
|
||||
<v n="GuidVisuGVL2">{48451f3d-75f9-48ba-acdb-82d62e000f26}</v>
|
||||
<v n="GuidVisuGVL_3">{8214e061-c2ef-40f5-b519-acfed1ca1cca}</v>
|
||||
<v n="GuidReservedPou">{97cdf6c7-053d-4364-abf2-f17c232375c1}</v>
|
||||
<v n="GuidVisuGVL3">{30af51e2-0f28-4c98-bb4e-6c7a4ef6b64e}</v>
|
||||
<v n="GuidReservedPouInit">{9e20996c-a8e0-4843-9524-9317ce5fc512}</v>
|
||||
<v n="GuidVisuGVL4">{9d656f8b-b228-46a1-8204-ecc426d69d24}</v>
|
||||
<v n="GuidVisuGVL5">{0a915a90-ba73-4abc-b7c3-f5acec9f952a}</v>
|
||||
<v n="GuidLicenseGVL">{0dedbb39-c60c-476d-aa88-36e50d09fdfc}</v>
|
||||
<v n="GuidGlobalClientManagerGVL">{9dd59c98-b565-4e32-8873-d0c41e452b61}</v>
|
||||
<v n="GuidVisuUserMgmtInitPou">{43ba7f16-75cc-4157-b401-5b6df597b0b4}</v>
|
||||
<v n="GuidVisuUserMgmtInitPouInit">{ccfc9bcc-edea-480a-ac07-0c05646a5eda}</v>
|
||||
<v n="GuidBeforeCompileCommonGVL">{5531e874-67e5-49bb-abdc-7ac83b125a33}</v>
|
||||
<v n="GuidVisuGVL6">{398fdf90-7db7-4f59-b7ca-c68fb5513e2e}</v>
|
||||
<v n="GuidReservedPouMethod1">{c21922fc-3c9f-4927-affe-3857961c67c0}</v>
|
||||
<v n="GuidReservedPouReInit">{b435091b-c53f-4ea3-9ed5-223f402a82e7}</v>
|
||||
<v n="GuidReservedPouMethod0">{2acce1aa-45b9-434d-bd0d-05676ddde292}</v>
|
||||
<v n="GuidReservedPouMethod2">{7e796d60-07e9-4daf-b8ad-e42e285dae85}</v>
|
||||
</o>
|
||||
</Data>
|
||||
<TypeList>
|
||||
<Type n="ArrayList">System.Collections.ArrayList</Type>
|
||||
<Type n="Boolean">System.Boolean</Type>
|
||||
<Type n="CaseInsensitiveHashtable">{7df88604-7ac5-4e36-91c4-55e4fdad3e68}</Type>
|
||||
<Type n="DeviceBasedHotkeyItem">{11a86981-4b02-4f98-b432-96e385cb41b7}</Type>
|
||||
<Type n="DeviceBasedHotkeysProvider">{c91fc5aa-1e38-43b2-9a05-c52cc5d7f5b6}</Type>
|
||||
<Type n="GenericFbDescription">{40d6dd8d-dfd0-493a-8e29-c9a35e1e6539}</Type>
|
||||
<Type n="Guid">System.Guid</Type>
|
||||
<Type n="HotkeyConfiguration">{6b108d46-58af-4e41-a3f4-174d8f160cc4}</Type>
|
||||
<Type n="Int32">System.Int32</Type>
|
||||
<Type n="Int64">System.Int64</Type>
|
||||
<Type n="String">System.String</Type>
|
||||
<Type n="UnicodeSupport">{19611221-ebd3-4607-86d2-9822fbe84c30}</Type>
|
||||
<Type n="VisualClientSizeMode">{c37fe731-4f69-4d98-82fe-4f9aefbe200d}</Type>
|
||||
<Type n="VisualizationTargetProperties">{997fedbb-1888-4256-b61c-2933d8056bfd}</Type>
|
||||
<Type n="VisualManagerObject">{4d3fdb8f-ab50-4c35-9d3a-d4bb9bb9a628}</Type>
|
||||
<Type n="VisualManagerViewSettings">{ec9b2ec6-92a2-4856-be72-7866fb274c64}</Type>
|
||||
</TypeList>
|
||||
</XmlArchive>
|
||||
</VisuManager>
|
||||
</TcPlcObject>
|
||||
Submodule solution/tc_project_app/tc_mca_std_lib updated: 936ed0e9d0...85f11c08bc
@@ -1,347 +1,319 @@
|
||||
<?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>{fb261665-fd20-4bf2-97f8-2854c82b752d}</ProjectGuid>
|
||||
<SubObjectsSortedByName>True</SubObjectsSortedByName>
|
||||
<Name>tc_project_app</Name>
|
||||
<ProgramVersion>3.1.4022.2</ProgramVersion>
|
||||
<Application>{047dee04-c246-47b2-8ccc-a15e36987c43}</Application>
|
||||
<TypeSystem>{ae4eb5ee-6030-47a6-bf35-5a6afd9efeeb}</TypeSystem>
|
||||
<Implicit_Task_Info>{5ef19bd0-aca2-493f-b2a1-89e363647697}</Implicit_Task_Info>
|
||||
<Implicit_KindOfTask>{f52f0efe-1be1-4600-94a9-9aa59fdf8e4e}</Implicit_KindOfTask>
|
||||
<Implicit_Jitter_Distribution>{26d08e27-a705-49a9-95de-a3a0b6ea049c}</Implicit_Jitter_Distribution>
|
||||
<LibraryReferences>{577f21c4-8eb2-4f2c-a24e-4c3f62ca96d2}</LibraryReferences>
|
||||
<AutoUpdateVisuProfile>true</AutoUpdateVisuProfile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="PlcTask.TcTTO">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="POUs\MAIN.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\MotionFunctions.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisStruct.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\GVLs\GVL.TcGVL">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_ReadFloatParameter.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_ReadParameterInNc_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_WriteFloatParameter.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_WriteParameterInNc_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ErrorHandling\DUT_ErrorState.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ErrorHandling\DUT_TerminalError.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ErrorHandling\FB_ErrorList.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ErrorHandling\FB_TerminalError.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ErrorHandling\GVL_ErrorSystem.TcGVL">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ErrorHandling\ST_ErrorSystem.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Analog_Inputs\EL3174_0002.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Analog_Inputs\EL3214.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Analog_Inputs\EL3255.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Analog_Inputs\FB_CalculateFrequency_3702_v0_01.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs\EL1008.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs\EL1018.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs\EL1808.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs\EL1809.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs\EL1819.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs\FB_EL1252ASM_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\EL2014.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\EL2252.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\EL2808.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\EL2819.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\External_Types\dutEL2521_Ctrl.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\External_Types\dutEL2521_Status.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Measuring_Terminals\EL5002.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Measuring_Terminals\EL5021.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Measuring_Terminals\EL5042.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Measuring_Terminals\EL5101.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Motion\EL7211_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Motion\EL9576_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\System\EL9410.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\System\EL9505.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Hardware\Other\EK1200.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\FB_Axis.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeDirect.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeFinish.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomePrepare.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeReadNcVelocities.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeReadSoftLimEnable.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeToSwitch.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeVirtual.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeWriteNcVelocities.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeWriteSoftLimEnable.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_Homing.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\VISUs\FbDriveVisual.TcVIS">
|
||||
<SubType>Code</SubType>
|
||||
<DependentUpon>Visualization Manager.TcVMO</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\VISUs\Visualization.TcVIS">
|
||||
<SubType>Code</SubType>
|
||||
<DependentUpon>Visualization Manager.TcVMO</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="DUTs" />
|
||||
<Folder Include="GVLs" />
|
||||
<Folder Include="tc_mca_std_lib" />
|
||||
<Folder Include="tc_mca_std_lib\DUTs" />
|
||||
<Folder Include="tc_mca_std_lib\GVLs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\ChangeConfig" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Analog_Inputs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Inputs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Digital_Outputs\External_Types" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Measuring_Terminals" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\Motion" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\EtherCAT_Terminals\System" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware\Other" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Motion" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Hardware" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\ErrorHandling" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Motion\Homing" />
|
||||
<Folder Include="tc_mca_std_lib\VISUs" />
|
||||
<Folder Include="VISUs" />
|
||||
<Folder Include="POUs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PlaceholderReference Include="System_VisuElemMeter">
|
||||
<DefaultResolution>VisuElemMeter, 3.5.10.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemMeter</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElems">
|
||||
<DefaultResolution>VisuElems, 3.5.10.20 (System)</DefaultResolution>
|
||||
<Namespace>VisuElems</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElemsSpecialControls">
|
||||
<DefaultResolution>VisuElemsSpecialControls, 3.5.10.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemsSpecialControls</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElemsWinControls">
|
||||
<DefaultResolution>VisuElemsWinControls, 3.5.10.20 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemsWinControls</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElemTextEditor">
|
||||
<DefaultResolution>VisuElemTextEditor, 3.5.10.10 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemTextEditor</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="system_visuinputs">
|
||||
<DefaultResolution>visuinputs, 3.5.10.0 (system)</DefaultResolution>
|
||||
<Namespace>visuinputs</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuNativeControl">
|
||||
<DefaultResolution>VisuNativeControl, 3.5.10.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuNativeControl</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_EtherCAT">
|
||||
<DefaultResolution>Tc2_EtherCAT, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_EtherCAT</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_MC2">
|
||||
<DefaultResolution>Tc2_MC2, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_MC2</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="Tc2_Utilities">
|
||||
<DefaultResolution>Tc2_Utilities, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_Utilities</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc3_MC2_AdvancedHoming">
|
||||
<DefaultResolution>Tc3_MC2_AdvancedHoming, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc3_MC2_AdvancedHoming</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc3_Module">
|
||||
<DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc3_Module</Namespace>
|
||||
</PlaceholderReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="tc_project_app.tmc">
|
||||
<SubType>Content</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<PlcProjectOptions>
|
||||
<XmlArchive>
|
||||
<Data>
|
||||
<o xml:space="preserve" t="OptionKey">
|
||||
<v n="Name">"<ProjectRoot>"</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>{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" />
|
||||
</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>{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>{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>"IR0whWr8bwfyBwAAHf+pawAAAABVAgAADnffSgAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDJUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgAyAC4AMQAwAAUWUAByAG8AZgBpAGwAZQBEAGEAdABhAAZMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AAcSTABpAGIAcgBhAHIAaQBlAHMACEx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0ACUx7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0ACg5WAGUAcgBzAGkAbwBuAAsGaQBuAHQADApVAHMAYQBnAGUADQpUAGkAdABsAGUADhpWAGkAcwB1AEUAbABlAG0ATQBlAHQAZQByAA8OQwBvAG0AcABhAG4AeQAQDFMAeQBzAHQAZQBtABESVgBpAHMAdQBFAGwAZQBtAHMAEjBWAGkAcwB1AEUAbABlAG0AcwBTAHAAZQBjAGkAYQBsAEMAbwBuAHQAcgBvAGwAcwATKFYAaQBzAHUARQBsAGUAbQBzAFcAaQBuAEMAbwBuAHQAcgBvAGwAcwAUJFYAaQBzAHUARQBsAGUAbQBUAGUAeAB0AEUAZABpAHQAbwByABUiVgBpAHMAdQBOAGEAdABpAHYAZQBDAG8AbgB0AHIAbwBsABYUdgBpAHMAdQBpAG4AcAB1AHQAcwAXDHMAeQBzAHQAZQBtABgYVgBpAHMAdQBFAGwAZQBtAEIAYQBzAGUAGSZEAGUAdgBQAGwAYQBjAGUAaABvAGwAZABlAHIAcwBVAHMAZQBkABoIYgBvAG8AbAAbIlAAbAB1AGcAaQBuAEMAbwBuAHMAdAByAGEAaQBuAHQAcwAcTHsANAAzAGQANQAyAGIAYwBlAC0AOQA0ADIAYwAtADQANABkADcALQA5AGUAOQA0AC0AMQBiAGYAZABmADMAMQAwAGUANgAzAGMAfQAdHEEAdABMAGUAYQBzAHQAVgBlAHIAcwBpAG8AbgAeFFAAbAB1AGcAaQBuAEcAdQBpAGQAHxZTAHkAcwB0AGUAbQAuAEcAdQBpAGQAIEhhAGYAYwBkADUANAA0ADYALQA0ADkAMQA0AC0ANABmAGUANwAtAGIAYgA3ADgALQA5AGIAZgBmAGUAYgA3ADAAZgBkADEANwAhFFUAcABkAGEAdABlAEkAbgBmAG8AIkx7AGIAMAAzADMANgA2AGEAOAAtAGIANQBjADAALQA0AGIAOQBhAC0AYQAwADAAZQAtAGUAYgA4ADYAMAAxADEAMQAwADQAYwAzAH0AIw5VAHAAZABhAHQAZQBzACRMewAxADgANgA4AGYAZgBjADkALQBlADQAZgBjAC0ANAA1ADMAMgAtAGEAYwAwADYALQAxAGUAMwA5AGIAYgA1ADUANwBiADYAOQB9ACVMewBhADUAYgBkADQAOABjADMALQAwAGQAMQA3AC0ANAAxAGIANQAtAGIAMQA2ADQALQA1AGYAYwA2AGEAZAAyAGIAOQA2AGIANwB9ACYWTwBiAGoAZQBjAHQAcwBUAHkAcABlACdUVQBwAGQAYQB0AGUATABhAG4AZwB1AGEAZwBlAE0AbwBkAGUAbABGAG8AcgBDAG8AbgB2AGUAcgB0AGkAYgBsAGUATABpAGIAcgBhAHIAaQBlAHMAKBBMAGkAYgBUAGkAdABsAGUAKRRMAGkAYgBDAG8AbQBwAGEAbgB5ACoeVQBwAGQAYQB0AGUAUAByAG8AdgBpAGQAZQByAHMAKzhTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEgAYQBzAGgAdABhAGIAbABlACwSdgBpAHMAdQBlAGwAZQBtAHMALUg2AGMAYgAxAGMAZABlADEALQBkADUAZABjAC0ANABhADMAYgAtADkAMAA1ADQALQAyADEAZgBhADcANQA2AGEAMwBmAGEANAAuKEkAbgB0AGUAcgBmAGEAYwBlAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAvTHsAYwA2ADEAMQBlADQAMAAwAC0ANwBmAGIAOQAtADQAYwAzADUALQBiADkAYQBjAC0ANABlADMAMQA0AGIANQA5ADkANgA0ADMAfQAwGE0AYQBqAG8AcgBWAGUAcgBzAGkAbwBuADEYTQBpAG4AbwByAFYAZQByAHMAaQBvAG4AMgxMAGUAZwBhAGMAeQAzMEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwAVgBlAHIAcwBpAG8AbgBJAG4AZgBvADQwTABvAGEAZABMAGkAYgByAGEAcgBpAGUAcwBJAG4AdABvAFAAcgBvAGoAZQBjAHQANRpDAG8AbQBwAGEAdABpAGIAaQBsAGkAdAB5ANAAAhoD0AMBLQTQBQYaB9AHCBoBRQcJCNAACRoERQoLBAMAAAAFAAAACgAAAAAAAADQDAutAgAAANANAS0O0A8BLRDQAAkaBEUKCwQDAAAABQAAAAoAAAAoAAAA0AwLrQEAAADQDQEtEdAPAS0Q0AAJGgRFCgsEAwAAAAUAAAAKAAAAAAAAANAMC60CAAAA0A0BLRLQDwEtENAACRoERQoLBAMAAAAFAAAACgAAACgAAADQDAutAgAAANANAS0T0A8BLRDQAAkaBEUKCwQDAAAABQAAAAoAAAAKAAAA0AwLrQIAAADQDQEtFNAPAS0Q0AAJGgRFCgsEAwAAAAUAAAAKAAAAKAAAANAMC60CAAAA0A0BLRXQDwEtENAACRoERQoLBAMAAAAFAAAACgAAAAAAAADQDAutAgAAANANAS0W0A8BLRfQAAkaBEUKCwQDAAAABQAAAAoAAAAoAAAA0AwLrQQAAADQDQEtGNAPAS0Q0BkarQFFGxwB0AAcGgJFHQsEAwAAAAUAAAAKAAAAAAAAANAeHy0g0CEiGgJFIyQC0AAlGgVFCgsEAwAAAAMAAAAAAAAACgAAANAmC60AAAAA0AMBLSfQKAEtEdApAS0Q0AAlGgVFCgsEAwAAAAMAAAAAAAAACgAAANAmC60BAAAA0AMBLSfQKAEtEdApAS0QmiorAUUAAQLQAAEtLNAAAS0X0AAfLS3QLi8aA9AwC60BAAAA0DELrRMAAADQMhqtANAzLxoD0DALrQIAAADQMQutAwAAANAyGq0A0DQarQDQNRqtAA=="</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="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
|
||||
<Type n="String">System.String</Type>
|
||||
</TypeList>
|
||||
</XmlArchive>
|
||||
</PlcProjectOptions>
|
||||
</ProjectExtensions>
|
||||
<?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>{fb261665-fd20-4bf2-97f8-2854c82b752d}</ProjectGuid>
|
||||
<SubObjectsSortedByName>True</SubObjectsSortedByName>
|
||||
<Name>tc_project_app</Name>
|
||||
<ProgramVersion>3.1.4022.6</ProgramVersion>
|
||||
<Application>{047dee04-c246-47b2-8ccc-a15e36987c43}</Application>
|
||||
<TypeSystem>{ae4eb5ee-6030-47a6-bf35-5a6afd9efeeb}</TypeSystem>
|
||||
<Implicit_Task_Info>{5ef19bd0-aca2-493f-b2a1-89e363647697}</Implicit_Task_Info>
|
||||
<Implicit_KindOfTask>{f52f0efe-1be1-4600-94a9-9aa59fdf8e4e}</Implicit_KindOfTask>
|
||||
<Implicit_Jitter_Distribution>{26d08e27-a705-49a9-95de-a3a0b6ea049c}</Implicit_Jitter_Distribution>
|
||||
<LibraryReferences>{577f21c4-8eb2-4f2c-a24e-4c3f62ca96d2}</LibraryReferences>
|
||||
<AutoUpdateVisuProfile>true</AutoUpdateVisuProfile>
|
||||
<Released>false</Released>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="GlobalTextList.TcGTLO">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GVLs\GVL_APP.TcGVL">
|
||||
<SubType>Code</SubType>
|
||||
<LinkAlways>true</LinkAlways>
|
||||
</Compile>
|
||||
<Compile Include="PlcTask.TcTTO">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="POUs\MAIN.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\RestorePosition.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisConfig.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisControl.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\MotionFunctions.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisInputs.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisPersistent.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_GearAxis.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisStatus.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\DUTs\ST_AxisStruct.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\GVLs\GVL.TcGVL">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_ReadFloatParameter.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_ReadParameterInNc_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_WriteFloatParameter.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\ChangeConfig\FB_WriteParameterInNc_v1_00.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\FB_Axis.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeDirect.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeFinish.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomePrepare.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeReadNcVelocities.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeReadSoftLimEnable.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeToSwitch.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeVirtual.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeWriteNcVelocities.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_HomeWriteSoftLimEnable.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_Homing.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\VISUs\Error_Log_Visu.TcVIS">
|
||||
<SubType>Code</SubType>
|
||||
<DependentUpon>Visualization Manager.TcVMO</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\VISUs\languageSupport.TcTLO">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\VISUs\MainVisu.TcVIS">
|
||||
<SubType>Code</SubType>
|
||||
<DependentUpon>Visualization Manager.TcVMO</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="tc_mca_std_lib\POUs\VISUs\visuTextLinks.TcTLO">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Test\app_tests\tcUNIT_APP_RUN.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Test\common\FB_tcUNIT_common.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Test\common\tcUNIT_GVL.TcGVL">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Test\standard_library_tests\FB_Axis_TEST.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Test\standard_library_tests\tcUNIT_STD_LIB_RUN.TcPOU">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Visualization Manager.TcVMO">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="DUTs" />
|
||||
<Folder Include="GVLs" />
|
||||
<Folder Include="Test" />
|
||||
<Folder Include="tc_mca_std_lib" />
|
||||
<Folder Include="tc_mca_std_lib\DUTs" />
|
||||
<Folder Include="tc_mca_std_lib\GVLs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\ChangeConfig" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Motion" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\Motion\Homing" />
|
||||
<Folder Include="tc_mca_std_lib\POUs\VISUs" />
|
||||
<Folder Include="Test\app_tests" />
|
||||
<Folder Include="Test\common" />
|
||||
<Folder Include="Test\standard_library_tests" />
|
||||
<Folder Include="VISUs" />
|
||||
<Folder Include="POUs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PlaceholderReference Include="System_VisuElemMeter">
|
||||
<DefaultResolution>VisuElemMeter, 3.5.13.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemMeter</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElems">
|
||||
<DefaultResolution>VisuElems, 3.5.13.21 (System)</DefaultResolution>
|
||||
<Namespace>VisuElems</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElemsSpecialControls">
|
||||
<DefaultResolution>VisuElemsSpecialControls, 3.5.13.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemsSpecialControls</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElemsWinControls">
|
||||
<DefaultResolution>VisuElemsWinControls, 3.5.13.20 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemsWinControls</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuElemTextEditor">
|
||||
<DefaultResolution>VisuElemTextEditor, 3.5.13.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuElemTextEditor</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="system_visuinputs">
|
||||
<DefaultResolution>visuinputs, 3.5.13.0 (system)</DefaultResolution>
|
||||
<Namespace>visuinputs</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="System_VisuNativeControl">
|
||||
<DefaultResolution>VisuNativeControl, 3.5.13.0 (System)</DefaultResolution>
|
||||
<Namespace>VisuNativeControl</Namespace>
|
||||
<SystemLibrary>true</SystemLibrary>
|
||||
<ResolverGuid>2717eb6a-dd07-4c66-8d8d-cacebd7b18ae</ResolverGuid>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_EtherCAT">
|
||||
<DefaultResolution>Tc2_EtherCAT, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_EtherCAT</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_MC2">
|
||||
<DefaultResolution>Tc2_MC2, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_MC2</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_Standard">
|
||||
<DefaultResolution>Tc2_Standard, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_Standard</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_SUPS">
|
||||
<DefaultResolution>Tc2_SUPS, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_SUPS</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_System">
|
||||
<DefaultResolution>Tc2_System, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_System</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc2_Utilities">
|
||||
<DefaultResolution>Tc2_Utilities, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc2_Utilities</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc3_MC2_AdvancedHoming">
|
||||
<DefaultResolution>Tc3_MC2_AdvancedHoming, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc3_MC2_AdvancedHoming</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="Tc3_Module">
|
||||
<DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||
<Namespace>Tc3_Module</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="TcUnit">
|
||||
<DefaultResolution>TcUnit, * (www.tcunit.org)</DefaultResolution>
|
||||
<Namespace>TcUnit</Namespace>
|
||||
</PlaceholderReference>
|
||||
<PlaceholderReference Include="VisuDialogs">
|
||||
<DefaultResolution>VisuDialogs, * (System)</DefaultResolution>
|
||||
<Namespace>VisuDialogs</Namespace>
|
||||
</PlaceholderReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="tc_project_app.tmc">
|
||||
<SubType>Content</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PlaceholderResolution Include="Tc2_MC2">
|
||||
<Resolution>Tc2_MC2, 3.3.28.0 (Beckhoff Automation GmbH)</Resolution>
|
||||
</PlaceholderResolution>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<PlcProjectOptions>
|
||||
<XmlArchive>
|
||||
<Data>
|
||||
<o xml:space="preserve" t="OptionKey">
|
||||
<v n="Name">"<ProjectRoot>"</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>{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="Boolean">
|
||||
<v>UnicodeStrings</v>
|
||||
<v>False</v>
|
||||
</d>
|
||||
</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>{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>{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>"IR0whWr8bwfwBwAAhiaVXgAAAABVAgAAWdTSaQAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDBUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA0AC4AMAAFFlAAcgBvAGYAaQBsAGUARABhAHQAYQAGTHsAMQA2AGUANQA1AGIANgAwAC0ANwAwADQAMwAtADQAYQA2ADMALQBiADYANQBiAC0ANgAxADQANwAxADMAOAA3ADgAZAA0ADIAfQAHEkwAaQBiAHIAYQByAGkAZQBzAAhMewAzAGIAZgBkADUANAA1ADkALQBiADAANwBmAC0ANABkADYAZQAtAGEAZQAxAGEALQBhADgAMwAzADUANgBhADUANQAxADQAMgB9AAlMewA5AGMAOQA1ADgAOQA2ADgALQAyAGMAOAA1AC0ANAAxAGIAYgAtADgAOAA3ADEALQA4ADkANQBmAGYAMQBmAGUAZABlADEAYQB9AAoOVgBlAHIAcwBpAG8AbgALBmkAbgB0AAwKVQBzAGEAZwBlAA0KVABpAHQAbABlAA4aVgBpAHMAdQBFAGwAZQBtAE0AZQB0AGUAcgAPDkMAbwBtAHAAYQBuAHkAEAxTAHkAcwB0AGUAbQARElYAaQBzAHUARQBsAGUAbQBzABIwVgBpAHMAdQBFAGwAZQBtAHMAUwBwAGUAYwBpAGEAbABDAG8AbgB0AHIAbwBsAHMAEyhWAGkAcwB1AEUAbABlAG0AcwBXAGkAbgBDAG8AbgB0AHIAbwBsAHMAFCRWAGkAcwB1AEUAbABlAG0AVABlAHgAdABFAGQAaQB0AG8AcgAVIlYAaQBzAHUATgBhAHQAaQB2AGUAQwBvAG4AdAByAG8AbAAWFHYAaQBzAHUAaQBuAHAAdQB0AHMAFwxzAHkAcwB0AGUAbQAYGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABkmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAaCGIAbwBvAGwAGyJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAHEx7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHRxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHhRQAGwAdQBnAGkAbgBHAHUAaQBkAB8WUwB5AHMAdABlAG0ALgBHAHUAaQBkACBIYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIRRVAHAAZABhAHQAZQBJAG4AZgBvACJMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACMOVQBwAGQAYQB0AGUAcwAkTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAlTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAmFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAnVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACgQTABpAGIAVABpAHQAbABlACkUTABpAGIAQwBvAG0AcABhAG4AeQAqHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACs4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQAsEnYAaQBzAHUAZQBsAGUAbQBzAC1INgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALihJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8AL0x7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0AMBhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAxGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADIMTABlAGcAYQBjAHkAMzBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwA0MEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADUaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgfQBwgaAUUHCQjQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAFQAAANAMC60BAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAUAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0X0AAJGgRFCgsEAwAAAAUAAAANAAAAFQAAANAMC60EAAAA0A0BLRjQDwEtENAZGq0BRRscAdAAHBoCRR0LBAMAAAAFAAAADQAAAAAAAADQHh8tINAhIhoCRSMkAtAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAAAAANADAS0n0CgBLRHQKQEtENAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAQAAANADAS0n0CgBLRHQKQEtEJoqKwFFAAEC0AABLSzQAAEtF9AAHy0t0C4vGgPQMAutAQAAANAxC60XAAAA0DIarQDQMy8aA9AwC60CAAAA0DELrQMAAADQMhqtANA0Gq0A0DUarQA="</v>
|
||||
</d>
|
||||
</o>
|
||||
</d>
|
||||
<d n="Values" t="Hashtable" />
|
||||
</o>
|
||||
</Data>
|
||||
<TypeList>
|
||||
<Type n="Boolean">System.Boolean</Type>
|
||||
<Type n="Hashtable">System.Collections.Hashtable</Type>
|
||||
<Type n="Int32">System.Int32</Type>
|
||||
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
|
||||
<Type n="String">System.String</Type>
|
||||
</TypeList>
|
||||
</XmlArchive>
|
||||
</PlcProjectOptions>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -0,0 +1,44 @@
|
||||
import glob
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
VERSION_TAGS = {"**/*.Tc*": "ProductVersion", "**/*.tsproj": "TcVersion"}
|
||||
CORRECT_VERSIONS = {"**/*.Tc*": "3.1.4024.0", "**/*.tsproj": "3.1.4023.119"}
|
||||
|
||||
|
||||
def check_versions():
|
||||
"""
|
||||
Checks the Twincat version used to create a file.
|
||||
It assumes that the version is stored as an attribute on the top element of the file, the attribute names are
|
||||
listed in VERSION_TAGS.
|
||||
:return: A dictionary of incorrect files and their version numbers
|
||||
"""
|
||||
incorrect_files_exp = dict()
|
||||
incorrect_files_act = dict()
|
||||
for file_path, version_attrib in VERSION_TAGS.items():
|
||||
correct_version = CORRECT_VERSIONS[file_path]
|
||||
found_files = glob.glob(file_path, recursive=True)
|
||||
if not found_files:
|
||||
raise IOError("ERROR: No files of type {} found".format(file_path))
|
||||
for file in found_files:
|
||||
tree = ET.parse(file)
|
||||
try:
|
||||
found_version = tree.getroot().attrib[version_attrib]
|
||||
if found_version != correct_version:
|
||||
incorrect_files_exp[file] = correct_version
|
||||
incorrect_files_act[file] = found_version
|
||||
except KeyError:
|
||||
print("WARNING: No version found for {}".format(file))
|
||||
return incorrect_files_exp, incorrect_files_act
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
incorrect_files_exp, incorrect_files_act = check_versions()
|
||||
for file, version in incorrect_files_act.items():
|
||||
correct_version = incorrect_files_exp[file]
|
||||
print("ERROR: {} has incorrect version {}, expected version {}".format(file, version, correct_version))
|
||||
if incorrect_files_act:
|
||||
exit(1)
|
||||
except IOError as e:
|
||||
print(e) # Likely no files found
|
||||
exit(2)
|
||||
Reference in New Issue
Block a user