├── .bumpversion.cfg
├── .github
└── workflows
│ ├── bump-version.yaml
│ └── create-release.yaml
├── .gitignore
├── .vscode
└── launch.json
├── LICENSE
├── README.md
├── TcBase.nuspec
├── TcBase
├── TcBase.sln
└── TcBase
│ ├── TcBase.tsproj
│ ├── TcBase
│ ├── Action
│ │ ├── FB_Action.TcPOU
│ │ ├── FB_RunCyclicTasksAction.TcPOU
│ │ ├── I_Action.TcIO
│ │ └── Tests
│ │ │ ├── FB_ActionTestObject.TcPOU
│ │ │ ├── FB_Action_Test.TcPOU
│ │ │ └── FB_ActivateAction.TcPOU
│ ├── Collection
│ │ ├── FB_List.TcPOU
│ │ ├── I_Collection.TcIO
│ │ ├── I_Enumerable.TcIO
│ │ ├── I_List.TcIO
│ │ ├── Param_List.TcGVL
│ │ └── Tests
│ │ │ ├── FB_ListCapacity_Test.TcPOU
│ │ │ └── FB_List_Test.TcPOU
│ ├── Context
│ │ ├── FB_Context.TcPOU
│ │ └── I_Context.TcIO
│ ├── Cyclic Task
│ │ └── I_CyclicTask.TcIO
│ ├── GVL_IntegerTypeBounds.TcGVL
│ ├── Helpers
│ │ └── F_CompareObjects.TcPOU
│ ├── Invocation Control
│ │ ├── FB_InvocationControl.TcPOU
│ │ └── Tests
│ │ │ ├── FB_InvocationControlTestTask.TcPOU
│ │ │ └── FB_InvocationControl_Test.TcPOU
│ ├── Object
│ │ ├── FB_LinkedObject.TcPOU
│ │ ├── FB_Object.TcPOU
│ │ ├── I_LinkedObject.TcIO
│ │ ├── I_Object.TcIO
│ │ └── Tests
│ │ │ ├── FB_DummyObject.TcPOU
│ │ │ └── FB_Object_Test.TcPOU
│ ├── Observer Pattern
│ │ ├── Abstraction
│ │ │ ├── Actions
│ │ │ │ └── FB_NotifyObserverAction.TcPOU
│ │ │ ├── FB_AbstractObservable.TcPOU
│ │ │ ├── FB_AbstractObserver.TcPOU
│ │ │ ├── I_Observable.TcIO
│ │ │ └── I_Observer.TcIO
│ │ ├── FB_Observable_BOOL.TcPOU
│ │ ├── FB_Observable_BYTE.TcPOU
│ │ ├── FB_Observable_DINT.TcPOU
│ │ ├── FB_Observable_DWORD.TcPOU
│ │ ├── FB_Observable_INT.TcPOU
│ │ ├── FB_Observable_LINT.TcPOU
│ │ ├── FB_Observable_LREAL.TcPOU
│ │ ├── FB_Observable_LWORD.TcPOU
│ │ ├── FB_Observable_REAL.TcPOU
│ │ ├── FB_Observable_SINT.TcPOU
│ │ ├── FB_Observable_UDINT.TcPOU
│ │ ├── FB_Observable_UINT.TcPOU
│ │ ├── FB_Observable_ULINT.TcPOU
│ │ ├── FB_Observable_USINT.TcPOU
│ │ ├── FB_Observable_WORD.TcPOU
│ │ ├── FB_ObserverExt.TcPOU
│ │ ├── FB_Observer_BOOL.TcPOU
│ │ ├── FB_Observer_BYTE.TcPOU
│ │ ├── FB_Observer_DINT.TcPOU
│ │ ├── FB_Observer_DWORD.TcPOU
│ │ ├── FB_Observer_INT.TcPOU
│ │ ├── FB_Observer_LINT.TcPOU
│ │ ├── FB_Observer_LREAL.TcPOU
│ │ ├── FB_Observer_LWORD.TcPOU
│ │ ├── FB_Observer_REAL.TcPOU
│ │ ├── FB_Observer_SINT.TcPOU
│ │ ├── FB_Observer_UDINT.TcPOU
│ │ ├── FB_Observer_UINT.TcPOU
│ │ ├── FB_Observer_ULINT.TcPOU
│ │ ├── FB_Observer_USINT.TcPOU
│ │ ├── FB_Observer_WORD.TcPOU
│ │ └── Tests
│ │ │ ├── FB_ObserverPattern_Test.TcPOU
│ │ │ └── FB_Observer_LREAL_.TcPOU
│ ├── Programs
│ │ └── Test.TcPOU
│ ├── Restorable
│ │ ├── I_ObjectRestorer.TcIO
│ │ └── I_Restorable.TcIO
│ ├── State Pattern
│ │ ├── FB_State.TcPOU
│ │ ├── FB_StateMachine.TcPOU
│ │ ├── I_State.TcIO
│ │ ├── I_StateMachine.TcIO
│ │ └── Tests
│ │ │ ├── FB_StatePattern_Test.TcPOU
│ │ │ └── Test Subjects
│ │ │ ├── E_Season.TcDUT
│ │ │ ├── FB_Autumn.TcPOU
│ │ │ ├── FB_Default.TcPOU
│ │ │ ├── FB_SeasonBase.TcPOU
│ │ │ ├── FB_SeasonStateMachine.TcPOU
│ │ │ ├── FB_Spring.TcPOU
│ │ │ ├── FB_State1.TcPOU
│ │ │ ├── FB_State2.TcPOU
│ │ │ ├── FB_State3.TcPOU
│ │ │ ├── FB_State4.TcPOU
│ │ │ ├── FB_StateMachine1.TcPOU
│ │ │ ├── FB_Summer.TcPOU
│ │ │ ├── FB_Winter.TcPOU
│ │ │ ├── FB_Year.TcPOU
│ │ │ ├── I_SeasonControl.TcIO
│ │ │ └── I_SeasonState.TcIO
│ ├── Task
│ │ ├── Data Type
│ │ │ └── E_TaskState.TcDUT
│ │ ├── FB_Task.TcPOU
│ │ ├── I_Task.TcIO
│ │ └── I_TaskStatus.TcIO
│ ├── TcBase.plcproj
│ └── TestTask.TcTTO
│ └── _Config
│ └── PLC
│ └── TcBase.xti
└── tools
├── Dummy.tpzip
├── chocolateyInstall.ps1
├── chocolateyUninstall.ps1
└── createArtifacts.ps1
/.bumpversion.cfg:
--------------------------------------------------------------------------------
1 | [bumpversion]
2 | current_version="0.1.2"
3 | commit=true
4 | tag=true
5 |
6 | [bumpversion.file.0]
7 | file = "TcBase.nuspec"
8 | search = "{current_version}"
9 | replace = "{new_version}"
10 | [bumpversion.file.1]
11 | file = "TcBase/TcBase/TcBase/TcBase.plcproj"
12 | search = "{current_version}"
13 | replace = "{new_version}"
14 |
--------------------------------------------------------------------------------
/.github/workflows/bump-version.yaml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow that is manually triggered
2 |
3 | name: Bump version
4 |
5 | # Controls when the action will run. Workflow runs when manually triggered using the UI
6 | # or API.
7 | on:
8 | workflow_dispatch:
9 | # Inputs the workflow accepts.
10 | inputs:
11 | version:
12 | # Friendly description to be shown in the UI instead of 'name'
13 | description: "Semver type of new version (major / minor / patch)"
14 | # Input has to be provided for the workflow to run
15 | required: true
16 | type: choice
17 | options:
18 | - patch
19 | - minor
20 | - major
21 |
22 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
23 | jobs:
24 | # This workflow contains a single job called "bump-version"
25 | bump-version:
26 | # The type of runner that the job will run on
27 | runs-on: [self-hosted, Windows, x64, runner-1]
28 |
29 | # Steps represent a sequence of tasks that will be executed as part of the job
30 | steps:
31 | # Check out the content (source branch). Use a deploy key so that
32 | # when we push changes, it will trigger the release workflow
33 | # run that runs on: tag. (Using the GitHub token would
34 | # not run the workflow to prevent infinite recursion.)
35 | - name: Check out source
36 | uses: actions/checkout@v2
37 | with:
38 | ssh-key: ${{ secrets.DEPLOY_KEY }}
39 |
40 | - name: Setup Git
41 | run: |
42 | git config user.name 'Giang Nguyen'
43 | git config user.email 'nhgiangvt117@gmail.com'
44 |
45 | - name: Install BumpVersion
46 | run: |
47 | dotnet new tool-manifest
48 | dotnet tool install --local BumpVersion --version 0.0.9
49 |
50 | - name: Bump version
51 | run: dotnet tool run bumpversion -- ${{ github.event.inputs.version }}
52 |
53 | - name: Push latest version
54 | run: git push origin main --follow-tags
55 |
--------------------------------------------------------------------------------
/.github/workflows/create-release.yaml:
--------------------------------------------------------------------------------
1 | on:
2 | push:
3 | tags:
4 | - "v*"
5 |
6 | name: Create Release
7 |
8 | jobs:
9 | create-github-release:
10 | name: Create GitHub Release
11 | runs-on: [self-hosted, Windows, x64, runner-1]
12 | permissions:
13 | contents: write
14 | steps:
15 | - name: Checkout source
16 | uses: actions/checkout@v3
17 |
18 | - name: Create artifacts
19 | run: .\tools\createArtifacts.ps1
20 |
21 | - name: Install GitHub CLI
22 | run: |
23 | choco install gh -y
24 | refreshenv
25 |
26 | - name: Create Release
27 | run: gh release create ${{ github.ref }} (Get-Item ./tools/*.library) --generate-notes
28 | env:
29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # gitignore template for TwinCAT3
2 | # website: https://www.beckhoff.com/twincat3/
3 | #
4 | # Recommended: VisualStudio.gitignore
5 |
6 | # TwinCAT files
7 | *.tpy
8 | *.tclrs
9 | *.compiled-library
10 | *.compileinfo
11 | # Don't include the tmc-file rule if either of the following is true:
12 | # 1. You've got TwinCAT C++ projects, as the information in the TMC-file is created manually for the C++ projects (in that case, only (manually) ignore the tmc-files for the PLC projects)
13 | # 2. You've created a standalone PLC-project and added events to it, as these are stored in the TMC-file.
14 | *.tmc
15 | *.tmcRefac
16 | *.library
17 | *.project.~u
18 | *.tsproj.bak
19 | *.tspproj.bak
20 | *.xti.bak
21 | LineIDs.dbg
22 | LineIDs.dbg.bak
23 | _Boot/
24 | _CompileInfo/
25 | _Libraries/
26 | _ModuleInstall/
27 |
28 | # Visual studio
29 | .vs/
30 |
31 | # VS code
32 | .vscode/
33 |
34 | .config/
35 |
36 | *.nupkg
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "chocolateyInstall.ps1",
9 | "type": "PowerShell",
10 | "request": "launch",
11 | "script": "D:\\src\\TcBase\\tools\\chocolateyInstall.ps1",
12 | "args": ["-ForceProgId \"TcXaeShell.DTE.15.0\" -Verbose -Debug -Force"]
13 | },
14 | {
15 | "name": "chocolateyUninstall.ps1",
16 | "type": "PowerShell",
17 | "request": "launch",
18 | "script": "D:\\src\\TcBase\\tools\\chocolateyUninstall.ps1",
19 | "args": ["-ForceProgId \"TcXaeShell.DTE.15.0\" -Verbose -Debug"]
20 | }
21 | ]
22 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Giang Nguyen
4 | Copyright (c) 2020 Dustin Hullett, Inxton team, MTS spol. s r.o. and contributors
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://github.com/ahuca/TcBase/blob/main/LICENSE)
2 |
3 | # TcBase - TwinCAT 3 base framework
4 |
5 | ## Introduction
6 |
7 | This is an open-source TwinCAT 3 base framework providing a baseline for developing object-oriented TwinCAT 3 projects. It provides boilerplates of some well-known software design patterns, such as [state pattern](https://en.wikipedia.org/wiki/State_pattern), and [observer pattern](https://en.wikipedia.org/wiki/Observer_pattern). More patterns to come. It aims to provide more advanced types of data collection, for now only a [list](https://github.com/ahuca/TcBase/blob/main/TcBase/TcBase/TcBase/Collection/FB_List.TcPOU). Additionally, it has some utilities like an [invocation tracker](https://github.com/ahuca/TcBase/tree/main/TcBase/TcBase/TcBase/Invocation%20Control) and [action](https://github.com/ahuca/TcBase/tree/main/TcBase/TcBase/TcBase/Action), which can be executed iteratively over an [I_Enumerable](https://github.com/ahuca/TcBase/blob/main/TcBase/TcBase/TcBase/Collection/I_Enumerable.TcIO), for example, `fbList.ForEach(fbRunAllCyclicTask)`.
8 |
9 | This project is under heavy development, so there will not be any releases any time soon. However, the project is built to be a library, so you can manually produce a library out of this project from the source code. For instructions on how to do this, check [here](https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/4189255051.html&id=).
10 |
11 | ## How to use the framework
12 |
13 | To take full advantage of the framework - being an object-oriented framework itself - every new FB that you create should inherit from FB_Object or its children. Like how FB_State inherits from FB_Object and thus can be stored in FB_List without any extra implementation. At this point, you might be wondering "well that is a helluva lot of coupling", and we applaud such intuition. That is why we try our best to keep the framework as lite as possible, to minimize the coupling.
14 |
15 | Being under heavy development, we advise you well to use [proxy](https://en.wikipedia.org/wiki/Proxy_pattern) - or simply put, a wrapper - when using this library, instead of direct usage.
16 |
17 | ## Dependencies
18 |
19 | The unit tests for [TcBase](https://github.com/ahuca/TcBase/tree/main/TcBase) depends on the [TcUnit library](https://github.com/tcunit/TcUnit) version [1.2.0.0](https://github.com/tcunit/TcUnit/releases/tag/1.2.0.0).
20 |
21 | ## Acknowledgement
22 |
23 | Some elements of the TcBase were based on parts of the open-sourced project [TcOpen](https://github.com/TcOpenGroup/TcOpen).
24 |
--------------------------------------------------------------------------------
/TcBase.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TcBase
5 | 0.1.2
6 | Giang Nguyen
7 | false
8 | https://github.com/ahuca/TcBase/blob/main/LICENSE
9 | https://github.com/ahuca/TcBase
10 | https://github.com/ahuca/TcBase
11 | https://github.com/ahuca/TcBase/issues
12 | Yet another object-oriented TwinCAT 3 framework
13 | https://github.com/ahuca/TcBase/releases
14 | Beckhoff TwinCAT3
15 |
16 | ## Overview
17 | Yet another open-source TwinCAT 3 object-oriented framework. For more information, check the project's [README](https://github.com/ahuca/TcBase/blob/main/README.md).
18 |
19 | ## Package parameters
20 |
21 | * `-ForceProgId` - Force the installer to use the specified ProgId first.
22 | * `-LibRepo` - Specify the PLC library repository to install to, "System" by deffault.
23 | * `-MaxAttempts` - Retry (un)installation for [MaxAttemtps] amount in case of failure.
24 |
25 | Example: `choco install tcbase --params "-LibRepo System"`
26 |
27 | ## Notes
28 | This package needs [TwinCAT XAE](https://www.beckhoff.com/en-en/products/automation/twincat/texxxx-twincat-3-engineering/te1000.html) installed. It utilizes TwinCAT's [Automation Interface](https://infosys.beckhoff.com/content/1033/tc3_automationinterface/242733963.html?id=3803805599597676142) for the (un)installation of the `.library` file.
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/TcBase/TcBase.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.33026.149
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "TcBase", "TcBase\TcBase.tsproj", "{E433D447-1E57-4990-B085-621CF7EFF45F}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|TwinCAT CE7 (ARMV7) = Debug|TwinCAT CE7 (ARMV7)
11 | Debug|TwinCAT OS (ARMT2) = Debug|TwinCAT OS (ARMT2)
12 | Debug|TwinCAT RT (x64) = Debug|TwinCAT RT (x64)
13 | Debug|TwinCAT RT (x86) = Debug|TwinCAT RT (x86)
14 | Release|TwinCAT CE7 (ARMV7) = Release|TwinCAT CE7 (ARMV7)
15 | Release|TwinCAT OS (ARMT2) = Release|TwinCAT OS (ARMT2)
16 | Release|TwinCAT RT (x64) = Release|TwinCAT RT (x64)
17 | Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86)
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
21 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
22 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
23 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
24 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
25 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
26 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
27 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
28 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
29 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
30 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
31 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
32 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
33 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
34 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
35 | {E433D447-1E57-4990-B085-621CF7EFF45F}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
36 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
37 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
38 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
39 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
40 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
41 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
42 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
43 | {553D344D-26D1-4070-8621-D82B73140D8A}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
44 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
45 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
46 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
47 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
48 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
49 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
50 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
51 | {553D344D-26D1-4070-8621-D82B73140D8A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
52 | EndGlobalSection
53 | GlobalSection(SolutionProperties) = preSolution
54 | HideSolutionNode = FALSE
55 | EndGlobalSection
56 | GlobalSection(ExtensibilityGlobals) = postSolution
57 | SolutionGuid = {C4831085-6EDB-4A7A-9C55-0B1F2F7A2726}
58 | EndGlobalSection
59 | EndGlobal
60 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase.tsproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | TestTask
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Action/FB_Action.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Action/FB_RunCyclicTasksAction.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
19 |
20 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Action/I_Action.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Action/Tests/FB_ActionTestObject.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
42 |
43 |
45 |
46 |
47 |
48 |
49 |
53 |
54 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Action/Tests/FB_Action_Test.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
14 |
19 |
20 |
37 |
38 |
39 |
40 |
47 |
48 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Action/Tests/FB_ActivateAction.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
20 |
21 | 0 THEN
24 | p^.Activate(THIS^._bActivated);
25 | END_IF
26 | ]]>
27 |
28 |
29 |
30 |
35 |
36 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Collection/I_Collection.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
14 |
15 |
16 |
21 |
22 |
23 |
29 |
30 |
31 |
41 |
42 |
43 |
45 |
46 |
47 |
48 |
49 |
50 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Collection/I_Enumerable.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Collection/I_List.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
14 |
15 |
16 |
23 |
24 |
25 |
30 |
31 |
32 |
37 |
38 |
39 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Collection/Param_List.TcGVL:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Collection/Tests/FB_ListCapacity_Test.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
19 |
20 |
21 |
28 |
29 | 20 THEN
46 | THIS^.AssertEquals_UDINT(Expected := 40,
47 | Actual := fbList.nCapacity,
48 | Message := 'Unexpected new capacity');
49 | END_IF
50 | END_FOR
51 |
52 |
53 | TcUnit.TEST_FINISHED();
54 | ]]>
55 |
56 |
57 |
58 |
65 |
66 |
76 |
77 |
78 |
79 |
86 |
87 |
124 |
125 |
126 |
127 |
136 |
137 |
161 |
162 |
163 |
164 |
173 |
174 |
203 |
204 |
205 |
206 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Context/FB_Context.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
17 |
18 |
19 |
24 |
25 |
27 |
28 |
29 |
30 |
36 |
37 |
40 |
41 |
42 |
43 |
44 |
45 |
48 |
49 |
51 |
52 |
53 |
54 |
55 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
69 |
70 |
72 |
73 |
74 |
75 |
76 |
80 |
81 |
82 |
83 |
84 |
85 |
89 |
90 |
91 |
92 |
93 |
94 |
98 |
99 |
103 |
104 |
105 |
106 |
107 |
108 |
111 |
112 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Context/I_Context.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Cyclic Task/I_CyclicTask.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/GVL_IntegerTypeBounds.TcGVL:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
23 |
24 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Helpers/F_CompareObjects.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Invocation Control/Tests/FB_InvocationControlTestTask.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
17 |
18 |
19 |
21 |
22 |
25 |
26 |
28 |
29 |
30 |
31 |
32 |
36 |
37 | 0 THEN
38 | THIS^._nCyclesToRun := THIS^._nCyclesToRunIn;
39 | ELSE
40 | THIS^._nCyclesToRun := THIS^.cDefaultCyclesToRun;
41 | END_IF
42 | ]]>
43 |
44 |
45 |
46 |
48 |
49 |
53 |
54 |
55 |
56 |
60 |
61 |
67 |
68 |
69 |
70 |
75 |
76 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Invocation Control/Tests/FB_InvocationControl_Test.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
16 |
17 |
18 |
24 |
25 | 1 THEN
43 | THIS^.AssertTrue(Condition := fbCallCtrl.bCalledLastCycle,
44 | Message := '$'bCalledLastCycle$' is false, but it should be true');
45 | IF NOT fbCallCtrl.bCalledLastCycle THEN
46 | ADSLOGSTR(msgCtrlMask := ADSLOG_MSGTYPE_ERROR,
47 | msgFmtStr := fbCallCtrl.ToString(),
48 | strArg := '');
49 | END_IF
50 | ELSE
51 | THIS^.AssertFalse(Condition := fbCallCtrl.bCalledLastCycle,
52 | Message := '$'bCalledLastCycle$' should not be true on the first cycle it is called');
53 | END_IF
54 |
55 | IF fbCallCtrlTestTask.bDone THEN
56 | TcUnit.TEST_FINISHED();
57 | END_IF
58 | ]]>
59 |
60 |
61 |
62 |
68 |
69 |
87 |
88 |
89 |
90 |
96 |
97 |
114 |
115 |
116 |
117 |
123 |
124 |
141 |
142 |
143 |
144 |
150 |
151 | 1 THEN
156 | THIS^.AssertTrue(Condition := fbCallCtrl.bMultipleCall,
157 | Message := '$'bMultipleCall$' is false, but it should be true');
158 | END_IF
159 |
160 | fbCallCtrl.Track().Track().Track();
161 |
162 | THIS^.AssertTrue(Condition := fbCallCtrl.bMultipleCall,
163 | Message := '$'bMultipleCall$' is false, but it should be true');
164 |
165 | IF fbCallCtrlTestTask.bDone THEN
166 | TcUnit.TEST_FINISHED();
167 | END_IF
168 | ]]>
169 |
170 |
171 |
172 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Object/FB_LinkedObject.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 | 0 THEN
33 | ipContext := THIS^.ipParent.ipContext;
34 | END_IF
35 | ]]>
36 |
37 |
38 |
39 |
40 |
41 |
42 |
45 |
46 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Object/FB_Object.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
17 |
18 |
19 |
24 |
25 |
28 |
29 |
30 |
31 |
37 |
38 |
41 |
42 |
43 |
44 |
46 |
47 |
50 |
51 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
63 |
64 |
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Object/I_LinkedObject.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Object/I_Object.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Object/Tests/FB_DummyObject.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
22 |
23 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Object/Tests/FB_Object_Test.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
21 |
22 |
23 |
27 |
28 |
35 |
36 |
37 |
38 |
44 |
45 |
52 |
53 |
54 |
55 |
59 |
60 |
68 |
69 |
70 |
71 |
73 |
74 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/Abstraction/Actions/FB_NotifyObserverAction.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
14 |
15 |
22 |
23 |
33 |
34 |
35 |
36 |
43 |
44 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/Abstraction/FB_AbstractObservable.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 |
20 |
21 |
25 |
26 | THIS^._nTypeClass // Invalid type
28 | OR_ELSE THIS^.Contains(ipObserver) // Already added
29 | THEN
30 | RETURN;
31 | END_IF
32 |
33 | Attach := THIS^._fbObsList.AddItem(ipObserver) <> -1;
34 |
35 | IF Attach THEN
36 | THIS^.NotifyLast();
37 | END_IF
38 | ]]>
39 |
40 |
41 |
42 |
44 |
45 |
48 |
49 |
51 |
52 |
53 |
54 |
57 |
58 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
69 |
70 |
72 |
73 |
74 |
75 |
78 |
79 |
81 |
82 |
83 |
84 |
85 |
89 |
90 |
92 |
93 |
94 |
95 |
100 |
101 |
103 |
104 |
105 |
106 |
110 |
111 |
113 |
114 |
115 |
116 |
118 |
119 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
130 |
131 |
134 |
135 |
137 |
138 |
139 |
140 |
141 |
143 |
144 |
152 |
153 |
154 |
155 |
159 |
160 | 0 THEN
165 | ipLastObs.UpdateP(pData := THIS^.pData,
166 | nTypeClass := THIS^._nTypeClass,
167 | nSize := THIS^.nDataSize);
168 | END_IF
169 | ]]>
170 |
171 |
172 |
173 |
177 |
178 |
191 |
192 |
193 |
194 |
195 |
196 |
199 |
200 |
202 |
203 |
204 |
205 |
206 |
211 |
212 |
214 |
215 |
216 |
217 |
218 |
219 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
232 |
233 |
234 |
235 |
236 |
237 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/Abstraction/FB_AbstractObserver.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
25 |
26 | THIS^._nTypeClass THEN
27 | RETURN;
28 | END_IF
29 |
30 | IF nSize <> TO_UDINT(THIS^._nSize) THEN
31 | RETURN;
32 | END_IF
33 |
34 | IF pData = 0 THEN
35 | RETURN;
36 | END_IF
37 |
38 | nMemcpyRes := Tc2_System.MEMCPY(destAddr := THIS^._pVal,
39 | srcAddr := pData,
40 | n := TO_UDINT(THIS^._nSize));
41 |
42 | IF nMemcpyRes <> 0 THEN
43 | THIS^._nUpdateCounter := THIS^._nUpdateCounter + 1;
44 | END_IF
45 | ]]>
46 |
47 |
48 |
49 |
51 |
52 |
55 |
56 |
58 |
59 |
60 |
61 |
62 |
66 |
67 |
68 |
69 |
70 |
71 |
75 |
76 |
77 |
78 |
79 |
80 |
87 |
88 |
96 |
97 |
98 |
99 |
107 |
108 |
116 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/Abstraction/I_Observable.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
14 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
58 |
59 |
60 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/Abstraction/I_Observer.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_BOOL.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
22 |
23 |
24 |
25 |
28 |
29 |
34 |
35 |
36 |
37 |
38 |
44 |
45 |
47 |
48 |
49 |
50 |
51 |
52 |
55 |
56 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._bVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_BYTE.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_DINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
14 |
15 |
21 |
22 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
44 |
45 |
47 |
48 |
49 |
50 |
53 |
54 |
59 |
60 |
61 |
62 |
63 |
65 |
66 |
69 |
70 |
72 |
73 |
74 |
75 |
76 |
80 |
81 | THIS^._nVal;
82 | ]]>
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_DWORD.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
59 |
60 |
61 |
62 |
63 |
65 |
66 |
69 |
70 |
72 |
73 |
74 |
75 |
76 |
80 |
81 | THIS^._nVal;
82 | ]]>
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_INT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_LINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_LREAL.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
40 |
41 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
55 |
56 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._fVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_LWORD.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_REAL.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
40 |
41 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
55 |
56 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._fVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_SINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_UDINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
59 |
60 |
61 |
62 |
63 |
65 |
66 |
69 |
70 |
72 |
73 |
74 |
75 |
76 |
80 |
81 | THIS^._nVal;
82 | ]]>
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_UINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_ULINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_USINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observable_WORD.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
46 |
47 |
48 |
49 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
64 |
65 |
68 |
69 |
71 |
72 |
73 |
74 |
75 |
79 |
80 | THIS^._nVal;
81 | ]]>
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_ObserverExt.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
25 |
26 |
27 |
28 |
29 |
30 |
33 |
34 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
45 |
46 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
57 |
58 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_BOOL.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
18 |
19 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_BYTE.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_DINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_DWORD.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_INT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_LINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_LREAL.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_LWORD.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_REAL.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_SINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_UDINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_UINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_ULINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_USINT.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/FB_Observer_WORD.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Observer Pattern/Tests/FB_Observer_LREAL_.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
21 |
22 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Programs/Test.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Restorable/I_ObjectRestorer.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Restorable/I_Restorable.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/FB_State.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
18 |
19 | 0
20 | AND_THEN THIS^._ipStateMachine = 0 THEN
21 | THIS^._ipStateMachine := ipStateMachine;
22 | AssignStateMachine := TRUE;
23 | END_IF
24 | ]]>
25 |
26 |
27 |
28 |
35 |
36 | 0 THEN
37 | ipStateMachine.AddState(THIS^);
38 | END_IF
39 | ]]>
40 |
41 |
42 |
43 |
44 |
45 |
48 |
49 |
51 |
52 |
53 |
54 |
55 |
59 |
60 |
62 |
63 |
64 |
65 |
69 |
70 |
71 |
72 |
73 |
74 |
78 |
79 |
80 |
81 |
82 |
83 |
87 |
88 |
90 |
91 |
92 |
93 |
97 |
98 |
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/FB_StateMachine.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
22 |
23 | -1;
29 | IF AddState THEN
30 | THIS^.TryAssignSelfToState(ipState);
31 | END_IF
32 | ]]>
33 |
34 |
35 |
36 |
41 |
42 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
62 |
63 |
64 |
66 |
67 |
70 |
71 |
73 |
74 |
75 |
76 |
77 |
79 |
80 |
83 |
84 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
95 |
96 | 0 THEN
97 | nLastIdx := TO_DINT(THIS^.fbStateList.nCount - 1);
98 | END_IF]]>
99 |
100 |
101 |
102 |
103 |
104 |
105 |
108 |
109 |
111 |
112 |
113 |
114 |
115 |
117 |
118 |
121 |
122 |
124 |
125 |
126 |
127 |
128 |
132 |
133 |
135 |
136 |
137 |
138 |
140 |
141 | 0 THEN
144 | THIS^._ipState.Run();
145 | ELSE
146 | IF THIS^.fbRunCallCtrl.bNewInvocation THEN
147 | Tc2_System.ADSLOGSTR(msgCtrlMask := Tc2_System.ADSLOG_MSGTYPE_ERROR,
148 | msgFmtStr := 'Current state for %s is not yet initialized',
149 | strArg := THIS^.sPath);
150 | END_IF
151 | END_IF
152 | ]]>
153 |
154 |
155 |
156 |
163 |
164 | 0 THEN
194 | THIS^._ipState.OnExit();
195 | END_IF
196 |
197 | THIS^._ipPrevState := _ipState;
198 | THIS^._ipState := newState;
199 |
200 | IF THIS^._ipState <> 0 THEN
201 | THIS^._ipState.OnEntry();
202 | END_IF
203 |
204 | THIS^._nStateChangeCount := THIS^._nStateChangeCount + 1;
205 |
206 | SetState := TRUE;
207 | ]]>
208 |
209 |
210 |
211 |
218 |
219 | 0 THEN
222 | __QUERYINTERFACE(ipObject, StateAt);
223 | END_IF
224 | ]]>
225 |
226 |
227 |
228 |
233 |
234 | 0
235 | AND_THEN THIS^.fbStateList.Contains(ipState) THEN
236 | ipState.AssignStateMachine(THIS^);
237 | TryAssignSelfToState := TRUE;
238 | END_IF
239 | ]]>
240 |
241 |
242 |
243 |
248 |
249 | 0 THEN
250 | ipState.MakeOrphan();
251 | TryMakeStateOrphan := TRUE;
252 | END_IF
253 | ]]>
254 |
255 |
256 |
257 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/I_State.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
30 |
31 |
32 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/I_StateMachine.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
13 |
17 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
49 |
50 |
51 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/E_Season.TcDUT:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 |
17 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_Autumn.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
23 |
24 |
26 |
27 |
28 |
29 |
33 |
34 |
36 |
37 |
38 |
39 |
43 |
44 |
55 |
56 |
57 |
58 |
60 |
61 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_Default.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
16 |
17 | 0 THEN
24 | THIS^.ipStateMachine.SetState(THIS^);
25 | END_IF
26 | ]]>
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_SeasonStateMachine.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
24 |
25 |
26 |
27 |
31 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
42 |
43 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_Spring.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
20 |
21 |
26 |
27 |
28 |
29 |
36 |
37 |
39 |
40 |
41 |
42 |
46 |
47 |
49 |
50 |
51 |
52 |
56 |
57 |
63 |
64 |
65 |
66 |
68 |
69 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_State1.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_State2.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_State3.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_State4.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_StateMachine1.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_Summer.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
16 |
20 |
21 |
26 |
27 |
28 |
29 |
36 |
37 |
39 |
40 |
41 |
42 |
46 |
47 |
49 |
50 |
51 |
52 |
54 |
55 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_Winter.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
22 |
23 |
24 |
25 |
32 |
33 |
35 |
36 |
37 |
38 |
42 |
43 |
45 |
46 |
47 |
48 |
52 |
53 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/FB_Year.TcPOU:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 |
17 |
18 |
19 |
20 |
21 |
25 |
26 |
28 |
29 |
30 |
31 |
35 |
36 |
38 |
39 |
40 |
41 |
43 |
44 |
46 |
47 |
48 |
49 |
55 |
56 |
59 |
60 |
61 |
62 |
66 |
67 |
69 |
70 |
71 |
72 |
76 |
77 |
80 |
81 |
82 |
83 |
84 |
85 |
88 |
89 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
100 |
101 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
112 |
113 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
124 |
125 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/I_SeasonControl.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/State Pattern/Tests/Test Subjects/I_SeasonState.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
36 |
37 |
38 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Task/Data Type/E_TaskState.TcDUT:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 |
17 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Task/I_Task.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
11 |
12 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/Task/I_TaskStatus.TcIO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/TcBase/TcBase/TcBase/TestTask.TcTTO:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 10000
6 | 1
7 |
8 | Test
9 |
10 | {994236d8-5822-4bc4-8a2a-8fc7ed3ead48}
11 | {d7955a35-7fb2-4623-969d-5c67971fe7ce}
12 | {b8ad2070-6454-424f-b86c-d8a82184de64}
13 | {aabba891-eee4-4443-8c04-87a004525f9a}
14 | {36d4d66d-4f2c-4f15-9553-b1a3466cca69}
15 |
16 |
--------------------------------------------------------------------------------
/TcBase/TcBase/_Config/PLC/TcBase.xti:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | TcBase Instance
6 | {08500001-0000-0000-F000-000000000064}
7 |
8 |
9 | 0
10 | TestTask
11 |
12 | #x02010030
13 |
14 | 1
15 | 10000000
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/tools/Dummy.tpzip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahuca/TcBase/430f700da552ebeb65a759e270f19dce7f998299/tools/Dummy.tpzip
--------------------------------------------------------------------------------
/tools/chocolateyInstall.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding()]
2 | Param(
3 | [string]$ForceProgId,
4 | [string]$LibRepo = "System",
5 | [int]$MaxAttempts = 5,
6 | [switch]$Force
7 | )
8 |
9 | $LibPath = "$PSScriptRoot\TcBase.library"
10 |
11 | if (!$env:TWINCAT3DIR) {
12 | Write-Host "TwinCAT 3 is not installed, exiting normally"
13 | exit 0
14 | }
15 |
16 | Start-MessageFilter
17 |
18 | # Create new DTE instance
19 | $dteArgs = @{}
20 | if ($ForceProgId) { $dteArgs.Add("-ForceProgId", $ForceProgId) }
21 | $dte = New-DteInstance @dteArgs
22 |
23 | # Install library
24 | $installArgs = @{}
25 | if ($env:ChocolateyForce) { $installArgs.Add("-Force", $true) }
26 | elseif ($Force) { $installArgs.Add("-Force", $true) }
27 | if ($env:ChocolateyEnvironmentVerbose) { $installArgs.Add("-Verbose", $true) }
28 | $dte | Install-TcLibrary -Path $LibPath @installArgs
29 |
30 | # Close DTE instace
31 | Close-DteInstace -DteInstace $dte
32 |
33 | Stop-MessageFilter
34 | exit $exitCode
35 |
--------------------------------------------------------------------------------
/tools/chocolateyUninstall.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding()]
2 | Param(
3 | [string]$ForceProgId,
4 | [string]$LibRepo = "System",
5 | [int]$MaxAttempts = 5,
6 | [string]$LibVersion = "*"
7 | )
8 |
9 | $LibName = "TcBase"
10 |
11 | if (!$env:TWINCAT3DIR) {
12 | Write-Host "TwinCAT 3 is not installed, exiting normally"
13 | exit 0
14 | }
15 |
16 | Start-MessageFilter
17 |
18 | # Create new DTE instance
19 | $dteArgs = @{}
20 | if ($ForceProgId) { $dteArgs.Add("-ForceProgId", $ForceProgId) }
21 | $dte = New-DteInstance @dteArgs
22 |
23 | if ($env:ChocolateyPackageVersion) { $LibVersion = $env:ChocolateyPackageVersion }
24 |
25 | # Uninstall library
26 | $uninstallArgs = @{}
27 | if ($env:ChocolateyEnvironmentVerbose) { $uninstallArgs.Add("-Verbose", $true) }
28 |
29 | Write-Host "Trying to uninstall $LibName with $MaxAttempts attempts"
30 |
31 | for (($attempts = 0); $attempts -lt $MaxAttempts; $attempts++) {
32 | Write-Host "Attempt $($attempts + 1)"
33 |
34 | try {
35 | Uninstall-TcLibrary -LibName $LibName -LibRepo $LibRepo -LibVersion $LibVersion -DteInstace $dte @uninstallArgs
36 | if ($?) { $exitCode = 0 }
37 | }
38 | catch {
39 | Write-Error $_
40 | $exitCode = 1
41 | }
42 |
43 | if ($exitCode -eq 0) { break }
44 | }
45 |
46 | # Close DTE instace
47 | Close-DteInstace -DteInstace $dte
48 | Stop-MessageFilter
49 | exit 0
50 |
--------------------------------------------------------------------------------
/tools/createArtifacts.ps1:
--------------------------------------------------------------------------------
1 | [CmdletBinding()]
2 | Param(
3 | [string]$ForceProgId
4 | )
5 |
6 | Start-MessageFilter
7 |
8 | # Create new DTE instance
9 | $dteArgs = @{}
10 | if ($ForceProgId) { $dteArgs.Add("-ForceProgId", $ForceProgId) }
11 | $dte = New-DteInstance @dteArgs
12 |
13 | # Save project as library
14 | try {
15 | Export-TcProject -DteInstace $dte -Solution ".\TcBase\TcBase.sln" -ProjectName "TcBase" -Path (Resolve-Path(".\tools"))
16 | }
17 | catch {
18 | Write-Error $_
19 | }
20 |
21 | # Close DTE instace
22 | Close-DteInstace -DteInstace $dte
23 |
24 | Stop-MessageFilter
25 | exit $exitCode
26 |
--------------------------------------------------------------------------------