Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial development TcoCore #13

Closed
wants to merge 275 commits into from
Closed
Show file tree
Hide file tree
Changes from 192 commits
Commits
Show all changes
275 commits
Select commit Hold shift + click to select a range
fd009d8
simple manipulator example
Mar 3, 2021
9b8f5d5
Merge pull request #16 from Inxton/documentation/tco_core_examples
PTKu Mar 3, 2021
d8f9073
Open Close made internal on TcoSequencer
Mar 3, 2021
d65bd5e
Open Close internal on sequencer 2nd attempt
Mar 3, 2021
871b619
- corleone context example
Mar 3, 2021
a969206
Context docu links
Mar 3, 2021
5c136c3
TcoTask method CheckIfAutoRestoreEnabledByParent made private
Mar 4, 2021
eb9ae5d
some more comments to corleone context/identity example
Mar 4, 2021
97418cd
sequencer example moved to 'Sequencer' folder
Mar 4, 2021
b164c0f
Object tree viewer moved to TcoCore.Wpf library
Mar 4, 2021
b6a790c
Object tree viewer moved to TcoCore.Wpf library
Mar 4, 2021
0e1569d
(examples) sequencers have separate instances of components
Mar 4, 2021
66183d0
(examples) sequencers have not shared instances of components
Mar 4, 2021
1ba1a2c
synched with origin
Mar 4, 2021
0248ddb
Links to code examples research
Mar 5, 2021
dfba692
sync with remote
Mar 5, 2021
a578864
merged with remote
Mar 5, 2021
f2f443b
Merge pull request #14 from Inxton/documenation/doc_reviews
PTKu Mar 5, 2021
6431044
test publish in trx format
Mar 5, 2021
d7d4046
#17 TcoSequencer.Step method protected, OnSequencerError() Sequencer.…
Mar 5, 2021
465b0f4
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 5, 2021
b5ae9a5
TcoTask API docu, eTaskState refactoring, all tests passed, some comm…
Mar 5, 2021
52fc0ec
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 5, 2021
f9bb113
TcoTask._taskState=> Readonly
Mar 8, 2021
e0024ea
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 9, 2021
c1d01b8
TcoTask Enabled property added
Mar 9, 2021
e88aca5
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 9, 2021
dadca91
#12
Mar 9, 2021
4e94faf
TcoMessenger performance tests
Mar 10, 2021
e70a399
packages update 1.9.6-nightly.260
Mar 10, 2021
2a239a0
Time sync research
Mar 11, 2021
a010951
fix after update to 1.9.4-nightly.260, implementation of missing GetK…
Mar 11, 2021
2dd38f7
fixed binding exception on 'TcoContextView'
Mar 11, 2021
85898cc
Time research
Mar 15, 2021
6da41e8
merge
Mar 15, 2021
4f66992
RTC
Mar 16, 2021
e1f7cd5
TcoRTC + tests, Messenger tests timestamp modification
Mar 16, 2021
451f4c2
TcoRtc + tests
Mar 17, 2021
a59a15b
small cleanup in messenger test instance
Mar 18, 2021
0842ec8
Output text logs to xml
Mar 18, 2021
5059ddb
TcoRtc - Clock PRG removed, Update method implementation moved to Tco…
Mar 18, 2021
d06d68e
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 18, 2021
6a42d92
rtc refactoring - start @TomKovac continues
Abcd4321 Mar 18, 2021
63df5b3
task example started, not finished yet
Mar 18, 2021
d1908b7
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 18, 2021
b411855
Sync with mebad/rtc_simplification_attempts
Mar 18, 2021
f6f7731
TcoRtc diff in _messenger.Mime.Timestamp issue
Mar 19, 2021
9d40742
Messanger performence tests commented out due to Rtc issues~
Mar 19, 2021
7b6967a
Rtc my fucking last attempt to solve this fucking issue
Mar 19, 2021
ad245dd
minor clup
Abcd4321 Mar 22, 2021
eca4f8c
before modyfying T801-T812 tests
Mar 22, 2021
75196be
Messenger tests-added cyclicall call of the rtcupdate
Mar 22, 2021
bf4ee2b
test publishing
Abcd4321 Mar 23, 2021
8a34be5
messaging feature and compatibility aligment
Abcd4321 Mar 24, 2021
4f4ed3a
task example
Mar 24, 2021
c49d5bf
sync
Mar 24, 2021
fdbb621
solving compatibility issues VortexCore
Abcd4321 Mar 25, 2021
c905123
before sync
Mar 29, 2021
fd09940
Merge branch 'init-dev' of https://github.com/Inxton/TcOpen into init…
Mar 29, 2021
80b836c
#12 cont. messaging
Abcd4321 Mar 29, 2021
5edd735
sync
Mar 29, 2021
f6ab2df
before restorer added
Mar 31, 2021
f5eae33
restorer added + rtc issues
Apr 1, 2021
f68a084
get ready for nuget publish on TcOpenGroup config
Abcd4321 Apr 6, 2021
dbc97da
Merge pull request #18 from Inxton/init-dev
PTKu Apr 6, 2021
f190c8b
generated meta file removed from tracking
Abcd4321 Apr 6, 2021
8106cc8
removes generate and meta, fixed an issue with TcoCoreExamples slnf (…
Abcd4321 Apr 6, 2021
bb2190d
Merge pull request #21 from Inxton/init-dev
PTKu Apr 6, 2021
aacc4d8
add missing files to nuget TcoCore
Abcd4321 Apr 6, 2021
04ae57e
Merge pull request #22 from Inxton/init-dev
PTKu Apr 6, 2021
be0463a
#23 net5.0 platform added, test projects kept on net48
Abcd4321 Apr 7, 2021
f0653af
Merge pull request #24 from Inxton/init-dev
PTKu Apr 7, 2021
899955b
build script improvements
Abcd4321 Apr 7, 2021
164bf6a
Merge pull request #25 from Inxton/init-dev
PTKu Apr 7, 2021
3ba3b16
Changeable restorer removed
Apr 7, 2021
f3462c0
package updates v1.10.0+
Abcd4321 Apr 8, 2021
492b740
Merge pull request #26 from Inxton/init-dev
PTKu Apr 8, 2021
f332ebf
TcoTaskExample added, also into the documentation
Apr 13, 2021
23df6db
prevent nre on missing context in messenger
Abcd4321 Apr 14, 2021
e0f5320
#36 method EqualsTo added to TcoObject
Abcd4321 Apr 14, 2021
5c16c46
Merge pull request #35 from Inxton/init-dev
PTKu Apr 15, 2021
697c520
removed super^ in TcoObject (some refactoring problem in tc3?)
Abcd4321 Apr 15, 2021
6fb3fe2
minor refac
Abcd4321 Apr 15, 2021
ba8bb22
Merge pull request #38 from Inxton/feature/add_equals_to_method_to_tc…
PTKu Apr 16, 2021
345e748
Fixed wording in documentation
PTKu Apr 17, 2021
5213165
Update TcoObjectTest.TcPOU
PTKu Apr 17, 2021
57e1bc3
remote nuget publishing at this point to prevent build and publish on…
Abcd4321 Apr 17, 2021
a82562a
#38 In addition to A.EqualsTo(B), B.EqualsTo(A) test case added.
Abcd4321 Apr 17, 2021
269fccf
ignore .vscode folder
Abcd4321 Apr 17, 2021
25c68db
#28 sStepforward, stepbackward restore call after reaching done state
Apr 17, 2021
280cb11
readme prior to PR to TcOpenGroup
Abcd4321 Apr 18, 2021
2cb65c3
+ repo structure description start
Abcd4321 Apr 19, 2021
73837e2
#39 Invoke returns new ITcoTaskStatus interface + refactoring
Abcd4321 Apr 19, 2021
462ce55
#41 add implementation and tests for messaging MinLevel, Suspend, Res…
Abcd4321 Apr 19, 2021
a552c87
Merge pull request #45 from Inxton/initial/39_remove_fluent_recursion
PTKu Apr 19, 2021
06dcf37
Merge pull request #43 from Inxton/feature/add_equals_to_method_to_tc…
PTKu Apr 19, 2021
06dbcf0
additions to TcoContex, Messaging, TcoObject API documentation,
Abcd4321 Apr 19, 2021
2dfae77
Merge branch 'dev' into documentation/api_comments
Abcd4321 Apr 19, 2021
185f0c0
Minor additions to TcoObject, TcoTask API documentation
Abcd4321 Apr 19, 2021
6034257
TcoSequencer, unexpected OnStateChange method call after changing fro…
Apr 19, 2021
ae1081c
removed webinar submodule
Abcd4321 Apr 20, 2021
dc69c9a
remove webinar reference from the solution file
Abcd4321 Apr 20, 2021
40335d4
station example
Apr 20, 2021
3d90a5a
fbpiston removed due to duplicate from other example
Abcd4321 Apr 20, 2021
e66c830
Merge pull request #50 from Inxton/issue/28_steppingFromVisu
PTKu Apr 20, 2021
1d53536
Display in the render tree in the order they occur and do not render …
Apr 20, 2021
11b394f
Merge pull request #54 from Inxton/treeview
PTKu Apr 20, 2021
c21e712
Hiding implementation TcoCore.TcoSequencer #32 and TcoCore.TcoState #33
Apr 20, 2021
93185ac
TcoCequencer min max step id number
Apr 20, 2021
559f08e
TcoCore.TcoSequencer RequestStep is already able to jump to very firs…
Apr 20, 2021
76cf37c
Min / max StepId changed to constants, RequestStep change _currentSte…
Apr 21, 2021
6660307
Cleanup tree, and display selected item from tree in renderable conte…
Apr 21, 2021
e72eece
Merge pull request #55 from Inxton/issue/32_hide_implementation
PTKu Apr 21, 2021
bfa7bab
Remove unnecessary code
Apr 21, 2021
3aeda80
Merge pull request #56 from Inxton/treeview
PTKu Apr 21, 2021
35b4407
asp
Apr 21, 2021
f8842c8
Merge branch 'dev' into issue/30_task_icommand_implementation
Apr 21, 2021
fc29ea2
Implemention of UI dispatcher for calls arising from different threads.
Abcd4321 Apr 21, 2021
68adb3a
Merge pull request #57 from Inxton/issue/30_task_icommand_implementation
PTKu Apr 21, 2021
048a51e
- fixing documentation comment
Abcd4321 Apr 21, 2021
4244412
synch with dev
Abcd4321 Apr 21, 2021
bbcc49d
Merge pull request #49 from Inxton/documentation/api_comments
PTKu Apr 21, 2021
d5fac72
docu sequencer
Apr 21, 2021
2c1c698
TcoSequencer Invalid mode tests
Apr 21, 2021
eb03abb
Merge pull request #59 from Inxton/issue/27_ChangingModesFromVisu
PTKu Apr 22, 2021
32fa2f3
asp
Abcd4321 Apr 22, 2021
bda150e
WIP
Apr 22, 2021
07f9670
Merge dev
Apr 22, 2021
f3c76d2
asp
Abcd4321 Apr 22, 2021
d49d5b7
#53 Use enum instead of boolean for sequencer constructor.
Apr 22, 2021
0388a08
An attempt to removed LineIds
Apr 22, 2021
354b4f6
Removed line ids
Apr 22, 2021
bcaf5d2
Leftover lineids
Apr 22, 2021
fe3dad2
Changed the summary for the enum
Apr 22, 2021
37f2bb6
Merge pull request #60 from Inxton/53_enum_for_autorestore
TomKovac Apr 22, 2021
19a90e9
asp
Abcd4321 Apr 22, 2021
e00bc5a
WIP
Apr 22, 2021
ab67813
Make the startup sequence more user friendly
Apr 22, 2021
b55c598
Merge branch 'cyclic_sequencer' into sequencer_view
Apr 22, 2021
01fb228
Merge pull request #61 from Inxton/cyclic_sequencer
TomKovac Apr 22, 2021
12ee28a
Added sequencer view
Apr 22, 2021
2aa8a0e
Merge branch 'dev' into sequencer_view
Apr 22, 2021
1bd4db7
wip
Apr 22, 2021
9090e66
Merge branch 'sequencer_view' into learning_101
Apr 22, 2021
156a804
simple sequence wip
Apr 22, 2021
00fc08e
TcoContext OnEntry OnExit tests added
Apr 22, 2021
e4e87d1
Merge pull request #62 from Inxton/sequencer_view
TomKovac Apr 22, 2021
98e8ebe
Merge pull request #63 from Inxton/issue/46_TcoContextOnEntryOnExit
jozefchmelar Apr 23, 2021
faf9d1e
Solved isssue when on calling Restore() method inside OnStateChange()…
Apr 23, 2021
0fe68a9
Merge pull request #64 from Inxton/issue/CallOfTcoSequencerRestoreInO…
PTKu Apr 23, 2021
975e02c
Initial implementation of ITcoServiceable in TcoComponent. Allows to …
Abcd4321 Apr 23, 2021
9104c47
Merge branch 'initial/component_abstractions' of https://github.com/I…
Apr 23, 2021
d50f9ee
Color examples 101 and Connecting sequences 201
Apr 23, 2021
9d02b50
301 - Invoking tasks to run sequences.
Apr 23, 2021
9100df8
#66 Implementation of public member TcoSequencer.CurrentStep
Abcd4321 Apr 23, 2021
4c2ab96
#66 api documentation comments
Abcd4321 Apr 23, 2021
f8da90f
Merge pull request #67 from Inxton/issue/_66_
jozefchmelar Apr 23, 2021
26d6671
asp
Abcd4321 Apr 23, 2021
d64d2c5
Merge pull request #44 from Inxton/documentation/update_readme
jozefchmelar Apr 23, 2021
820b9c5
Update README.md
PTKu Apr 23, 2021
4bd1202
Update README.md
PTKu Apr 23, 2021
648d8be
Task execution 302
Apr 23, 2021
38fc2a0
TcoCore.TcoComponent ServiceMode implementation added + unit tests #65
Apr 23, 2021
473253c
Merge pull request #65 from Inxton/initial/component_abstractions
TomKovac Apr 23, 2021
c1a53f2
Hiding _restoringSequence ~variable
Apr 23, 2021
42e5b04
Merge pull request #68 from Inxton/learning_101
PTKu Apr 23, 2021
8b81c3c
Merge pull request #69 from Inxton/issue/CallOfTcoSequencerRestoreInO…
jozefchmelar Apr 23, 2021
30742df
wip
Apr 27, 2021
5dd80bb
CurrentStep in not REFERENCE TO StepDetails
Abcd4321 Apr 28, 2021
2163abe
Added code from webinar
Apr 28, 2021
9f16143
Adds auto-renderable TcoObjectDiagnosticsView TcoObjectDiagnosticsVie…
Abcd4321 Apr 28, 2021
a37bddc
Merge pull request #71 from Inxton/init-unstable
PTKu Apr 28, 2021
8a34335
Adds auto-renderable TcoContextDiagnosticsView TcoContextDiagnosticsV…
Abcd4321 Apr 28, 2021
72e58ff
diagnostics view usage
Apr 28, 2021
69bc016
Merge branch 'dev' into tutorial
Apr 28, 2021
f2f631b
++Adds auto-renderable TcoContextDiagnosticsView TcoContextDiagnostic…
Abcd4321 Apr 28, 2021
f247579
Get diagnostics from context
Apr 28, 2021
1c0331f
Merge pull request #72 from Inxton/init-unstable
PTKu Apr 28, 2021
ffe5534
Merge branch 'dev' into tutorial
Apr 28, 2021
065a2da
Autoupdate messages hotfix
Apr 28, 2021
b4f2b5a
Merge pull request #73 from Inxton/tutorial
PTKu Apr 28, 2021
6f6b2d4
Merge pull request #25 from Inxton/dev
PTKu Apr 29, 2021
6a71769
remove MD
Abcd4321 Apr 29, 2021
f9d429d
Update README.md
PTKu Apr 29, 2021
e291435
Update README.md
PTKu Apr 29, 2021
2bf3c9d
Update README.md
PTKu Apr 29, 2021
88813de
Merge pull request #27 from Inxton/dev
PTKu Apr 30, 2021
5b26deb
TcoTaskView, TcoObjectView -> TcoObjectControlView
Abcd4321 Apr 30, 2021
1bf21a7
package update inxton 1.10.0-nightly.436
Abcd4321 Apr 30, 2021
02805c2
Merge branch 'initial-dev' of https://github.com/TcOpenGroup/TcOpen i…
Abcd4321 Apr 30, 2021
233d685
added package material design package
Abcd4321 Apr 30, 2021
8c83ea2
removed mahapp dependencies added noticies for new added depencencies
Abcd4321 Apr 30, 2021
100d59a
Update README.md
PTKu May 2, 2021
8a29274
removed ivc script - replaced with modified behaviour of IVC CLI
Abcd4321 May 3, 2021
e81764e
minor to TaskView
Abcd4321 May 3, 2021
6af71ca
+ library tempate + script
Abcd4321 May 3, 2021
bca32fc
Merge branch 'initial-dev' of https://github.com/TcOpenGroup/TcOpen i…
Abcd4321 May 3, 2021
e802464
Added RelayCommand
May 3, 2021
0f737a7
Swallow an exception in the VisibleTaskStateConverter
May 3, 2021
21b1cf6
Merge pull request #34 from TcOpenGroup/feature/task_gui
PTKu May 3, 2021
41fefd1
library template + script
Abcd4321 May 4, 2021
f865d90
Merge pull request #35 from TcOpenGroup/feature/library_template
PTKu May 4, 2021
341b2d5
Update scaffoldnewlibrary.ps1
PTKu May 4, 2021
df72eb9
Tests runners move to TcoCore + refactoring
Abcd4321 May 4, 2021
8b44ee3
library tempate script fix (not break but continue you silly boy)
Abcd4321 May 4, 2021
8c76619
basic scaffolding of TcoElements... digital sensor
Abcd4321 May 4, 2021
bf4c57e
Merge branch 'dev' into feature/pkml
Abcd4321 May 4, 2021
3e94484
Merge pull request #38 from TcOpenGroup/feature/pkml
PTKu May 5, 2021
33a16ae
Scaffolding TcoDrivesBeckhoff
May 5, 2021
4f6ab1b
DI monitoring propreties attributes
PTKu May 5, 2021
8c5880e
Refactor fbCylinder to Cylinder
May 5, 2021
10d76f2
#40 Add cylinder info messages.
May 5, 2021
7d55ade
synch with TcOpenGroup/feature/TcoBeckhoffDrive
PTKu May 5, 2021
2e936d1
remove beckhof drive testing (missing hw)
PTKu May 5, 2021
2ba76c9
solving merge issues - drive does not build in pipeline
PTKu May 5, 2021
2cc3508
version bump
PTKu May 5, 2021
c4673c0
Merge pull request #43 from TcOpenGroup/PR41
PTKu May 5, 2021
a840c6d
Merge branch 'initial-dev' into feature/pkml
PTKu May 5, 2021
385e80d
Merge pull request #44 from TcOpenGroup/40_cylinder
PTKu May 5, 2021
71cc954
#40 redesigned cylinder view
May 5, 2021
045460a
Merge pull request #45 from TcOpenGroup/40_cylinder
PTKu May 5, 2021
3218805
fixed an issue with duplicate assembly info and missing namespace imp…
May 5, 2021
5b2062f
#39 Simple digital signal UI
May 5, 2021
9971dda
running rabbit
May 5, 2021
9764526
running rabbit killed while running
May 5, 2021
e5feb53
Merge branch 'initial-dev' into feature/TcoDriveBeckhoff
TomKovac May 5, 2021
70df6b1
Merge pull request #47 from TcOpenGroup/feature/TcoDriveBeckhoff
PTKu May 5, 2021
17d5cff
Merge branch 'initial-dev' into feature/pkml
PTKu May 5, 2021
b4bf003
()()()()() - next time ammend ()()()()()
PTKu May 5, 2021
da9672a
Merge branch 'initial-dev' into feature/pkml
PTKu May 5, 2021
5ac248b
+ DigitalActuator + DigitalSensor components + tests
PTKu May 5, 2021
3ca48af
Merge branch 'initial-dev' into digital
PTKu May 5, 2021
c90154c
Merge branch 'digital' into feature/pkml
PTKu May 5, 2021
6980543
Merge pull request #48 from TcOpenGroup/feature/pkml
TomKovac May 5, 2021
9ad7142
various build fixied
PTKu May 5, 2021
d8a618d
Merge branch 'initial-dev' into fix/build_fix
PTKu May 5, 2021
e50ff95
Merge pull request #49 from TcOpenGroup/fix/build_fix
PTKu May 5, 2021
4666120
rebuild the complete solution
May 5, 2021
780c6cc
Use material colors
May 6, 2021
af1cc59
Merge branch 'digital' of https://github.com/TcOpenGroup/TcOpen into …
May 6, 2021
ca03314
Fixed regarding material design dependency.
May 6, 2021
3a3b132
Merge pull request #52 from TcOpenGroup/feature/TcoDrivesBeckhoff
PTKu May 6, 2021
96d8450
Merge pull request #50 from TcOpenGroup/fixes/examples
PTKu May 6, 2021
afb4b3a
Merge branch 'initial-dev' into feature/pkml
PTKu May 6, 2021
fbde28b
Naming refactoring: TcoDi and TcoDo instead of TcoDigitalSignal and T…
PTKu May 6, 2021
b6d428a
- build and test fixies
PTKu May 6, 2021
b002eb4
Merge branch 'digital' into feature/pkml
PTKu May 6, 2021
71d36df
Merge pull request #53 from TcOpenGroup/feature/pkml
PTKu May 6, 2021
48118fe
Merge pull request #74 from TcOpenGroup/initial-dev
PTKu May 9, 2021
a48d453
sync with TcOpenGroup fork (#75)
PTKu May 12, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: Development
about: Suggestion for improvement in development process
title: ''
labels: ''
assignees: ''

---


13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ bld/
*.VisualState.xml
TestResult.xml

# dotnet test results
*.trx

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
Expand Down Expand Up @@ -216,6 +219,12 @@ _Vortex/
CompilerCache.md
log.txt
pal.txt
_meta/
_generated/
*.g.cs
*.lbz
version.info
*.plcproj.version.update

# IVF Tools
_toolz/
Expand All @@ -224,5 +233,7 @@ nugets/
# CodeRush
.cr/

*.TcCD


# VSCode
.vscode/
3 changes: 2 additions & 1 deletion GitVersion.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
mode: ContinuousDelivery
mode: ContinuousDeployment
next-version: 0.4.0
branches: {}
ignore:
sha: []
Expand Down
57 changes: 0 additions & 57 deletions README.MD

This file was deleted.

176 changes: 160 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,194 @@
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/TcOpenGroup/TcOpen/pulls)
[![Open Source? Yes!](https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github)](https://github.com/TcOpenGroup/TcOpen)
[![TcOpen Slack ](https://img.shields.io/badge/Slack-channel-ff69b4.svg)](https://tcopendevelopment.slack.com/)
[![Join the chat at https://gitter.im/dotnet/coreclr](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/TcOpenGroup/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Awesome Badges](https://img.shields.io/badge/badges-awesome-green.svg)](https://github.com/TcOpenGroup/TcOpen#awesome-twincat-3-projects-)
![Azure DevOps builds (branch)](https://img.shields.io/azure-devops/build/petokurhajec0964/tc3/TcOpenGroup.TcOpen/dev)
[![Build Status](https://dev.azure.com/petokurhajec0964/tc3/_apis/build/status/TcOpenGroup.TcOpen?branchName=dev)](https://dev.azure.com/petokurhajec0964/tc3/_build/latest?definitionId=6&branchName=dev)

# TcOpen

**Open Source TwinCAT 3 code by Automation Professionals for Automation Professionals.**

TcOpen aims to provide standard classes to start building any real deployable application. TcOpen will help you by providing well tested components you can use in your project free of charge.
TcOpen aims to provide standard classes to start building any **real deployable application**. TcOpen will help you by providing well-tested components you can use in your project free of charge.

## Why?

Introduce modern software development practices to the PLC world so developers can shift from low-value work to high-value work. OpenSource offers a solid ground upon which many can build and bring ideas from all over the world.
We want to introduce modern software development practices to the PLC world so developers can shift from low-value work to high-value work. Open-source offers a solid ground upon which many can build and bring ideas from all over the world.

## Goals

- Introduce software engineering patterns to PLC development.
- Modular, extensible and observable code.
- Modular, extensible, and observable code and applications.
- Bring the TwinCAT community together.
- Basic components for every project.
- Basic libraries and components for every project.
- Cultivate a place for sharing knowledge.

## What is TwinCAT?

TwinCAT software system turns almost any compatible PC into a real-time controller with a multi-PLC system, NC axis control, programming environment and operating station. TwinCAT replaces conventional PLC and NC/CNC controllers. It runs in Visual Studio with CodeSyS
TwinCAT software system turns almost any compatible PC into a real-time controller with a multi-PLC system, NC axis control, programming environment, and operating station. TwinCAT replaces conventional PLC and NC/CNC controllers. It runs in Visual Studio with CodeSys.

## Docs
# Where are we - Development process

See [Introduction](/docs/Introduction.md)
The initial momentum of ```TcOpen``` project was powerful; however, we have seen a slow decline in activity over the past months. [Inxton](inxton.com), [MTS](www.mts.sk/en) team and some other heroic knights decided to keep the lights on and to carry on this initiative.

## Contributing
We understand that many of you guys have hard times at work, a lot of late hours, endless traveling. Life in industrial automation is very demanding. We see this as one of the reasons for the declined activity. Also, many automation engineers are not that familiar with modern software development tooling and workflows. It may scare some people off. Unfamiliarity should not be the reason not to participate. We want this place to be welcoming to everyone that sees it as a meaningful path to industrial automation. The community is going to learn along the path. There are not that many open-source projects for industrial automation; we got to start somewhere and somehow.

Awesome! See [Conventions](/docs/Conventions.md) for a style guide. Clone the library, and submit a PR.
## Recent developments merging to TcOpenGroup

Consider joining our [![TcOpen Slack](https://img.shields.io/badge/Slack-channel-ff69b4.svg)](https://tcopendevelopment.slack.com/)
There has been much activity without visible tracking in recent times. We are developing a set of base classes to help us craft components and projects in industrial automation. Most of the discussions were in pair-programming and online/in-person meetings. We did it this way to speed up initial development when transferring legacy libraries and concepts to TcOpen.

## Who is using TcOpen
[Here](https://github.com/Inxton/TcOpen.Documentation/blob/dev/articles/TcOpenFramework/application.md) is a conceptual description of the work done so far.

Is your company using TcOpen? Submit a PR or write to our Slack channel and we will mention you here.
[Here](https://github.com/Inxton/TcOpen.Documentation/blob/dev/articles/Conventions/Conventions.md) is the document describing conventions to adhere to.

- example.org
## Workflow (modified GitHub flow)

## Suggestions? Issues?
We adopt a modified version of [**GitHub flow**](https://guides.github.com/introduction/flow/) with proper tracking and discussions under PRs. It is a very simple workflow; we would like to work in a continuous integration/deployment fashion. However, we have to consider the need for the LTS versions for stable and long time support. How do we exactly do it is open to discussion. At this point, we work with the following modification of *GitHub flow*: our default branch is ```dev```, and all PRs must be directed there instead of ```main``` (previously ``` master```). We release in the ```main``` branch once we see the version is stable and battle-tested in production by early adopters.

## Versioning

We adopt [semantic versioning](https://semver.org/). The pipeline uses [GitVersion tool](https://gitversion.net/docs/) for the version calculation.

At this point, we keep the major version at ```0``` (0.x.x) since we do expect changes to the public interfaces, and time is needed before the public contracts are stable.

## Monorepo

We have also decided to work in a [monorepo](https://en.wikipedia.org/wiki/Monorepo) at this point. About the structure later down. Each unit (TcoCore, TcoPneumatics, TcoDrives, etc.) has its filtered solution (*.slnf) for that unit for faster IDE opening and manipulation. Monorepo makes it easier to work with the dependencies and prevent possible dependency hell scenarios, which is a genuine risk at this early stage of the project. Once the framework is stable, we may move to a poly-repository solution with separate maintainers.

## The role of Inxton.Vortex.Framework (IVF)

IVF is a set of tools and libraries for creating industrial .NET applications based on the TwinCAT 3 platform. Some libraries of IVF are commercial. However, there is no need for TcOpen developers to purchase any license for this project. The contributors can acquire the free developer license here [inxton.com/register] or drop an email to team@inxton.com.

All PLC libraries developed in TcOpen are under MIT license. [MIT](https://tldrlegal.com/license/mit-license) gives you the freedom to use, modify, sublicense, redistribute the libraries freely for private and commercial use.

IVF will aid in the development of this project. It provides the infrastructure for testing, debugging, and tooling for the delivery pipeline (library compilation, version number updates, etc.).

Inxton and MTS teams will contribute to the development of PLC libraries. There will also be a transfer of some existing codebases from MTS and Inxton internal repositories (WPF/Blazor UI components, data acquisition libraries); some may require Inxton commercial license when deployed in production.

## Repository structure

Some of the information here might be self-evident for traditional users of GitHub and open source in general. We provide here more details to aid people that are not familiar with similar structures.

### Root

| FOLDER | DESCRIPTION |
|--------------------|----------------------------------------------------------------------------------------------------------------|
| .github | GitHub related files, templates, ... |
| _Vortex | Inxton tools, builder, CLIs, config files, output files, and folders, ... |
| assets | misc files, logo, pictures |
| docs | temporary folder for documentation, notes, etc (about documentain repo later in this document). |
| pipelines | delivery pipeline scripts and configurations |
| src | all sources, tests, UI controls |
| GitVersion.yml | GitVersion configuration file |
| README.md | This file |
| TcoOpen.build.slnf | Filtered solution contains all other projects except for TwinCAT project (NuGet restore/build in the pipeline) |
| TcoOpen.plc.send | Filtered solution, contains only TwinCAT projects (bulk library compilation) |
| TcoOpen.sln | Full solution file |
| notices.MD | Licenses of other open-source projects used in this repository |

### src

| FOLDER | DESCRIPTION |
|------------------------|----------------------------------------------------------------|
| Tc.Prober | Unit testing libraries |
| TcoApplicationExamples | Contains application examples that use TcOpen libraries |
| TcoCore | Core libraries of TcOpen framework (task, coordinations, etc.) |
| TcoIoBeckhoff | Beckhoff hardware (I/O) library |
| TcoPeumatics | Pneumatic components library |
| Others..... | _each group of components will have its separate folder_ |


### Typical structure of library folder

| FOLDER | DESCRIPTION |
|-----------------|-----------------------------------------------------------|
| src | library source files |
| src/..Wpf | Inxton WPF components |
| src/..Connector | Inxton compiler connector |
| src/Xae.. | Plc project/sources |
| tests | unit, and integration tests and sandbox project(s) folder |


## Testing

Testing is vital to this project. We will be using two unit testing frameworks [**TcUnit**](https://github.com/tcunit/TcUnit) and **TcProber**, which is part of this repository. [Here is an article](https://alltwincat.com/2021/02/16/unit-testing-in-the-world-of-industrial-automation/) that briefly explains what those frameworks are and how they differ.

## Documentation

There is a separate documentation repository for this project [here](https://github.com/TcOpenGroup/TcOpen.Documentation). In this moment we use [docfx](https://github.com/dotnet/docfx) to generate documentation. The ```docfx``` uses IVF twin objects of PLC code to generate the API documentation. There is room for improvement in generated documentation; we do plan - in the course of the development of TcOpen - to improve that.

## How to get started with TcOpen

### Prerequisites

1. [Visual Studio 2019 (at least Community Edition)](https://visualstudio.microsoft.com/vs/older-downloads/) v16.8.3+
1. [TwinCAT 3.1 eXtended Automation Engineering (XAE)](https://www.beckhoff.com/english.asp?download/tc3-downloads.htm) TwinCAT 3.1 4024.4+
1. [.NET Framework 4.8 developer pack](https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-developer-pack-offline-installer)
1. [.NET5 developer pack](https://dotnet.microsoft.com/download/dotnet/5.0)
1. [Inxton Vortex Builder extension](https://marketplace.visualstudio.com/items?itemName=Inxton.InxtonVortexBuilderExtensionPre)

**Clone this repository**

~~~bash
git clone https://github.com/TcOpenGroup/TcOpen.git
~~~

**Environment variables**

You should setup Windows environment variable ```Tc3Target``` with the value of AMS ID of you testing target system.

![Environment](assets/pics/environment.png)

**Build project to restore necessary tooling and packages**

_build in Debug profile_
~~~ PowerShell
cd your_tcopen_folder
.\pipelines\runbuild.ps1 -properties @{"buildConfig" = "Debug"}
~~~

_build in Release profile_
~~~ PowerShell
cd your_tcopen_folder
.\pipelines\runbuild.ps1 -properties @{"buildConfig" = "Release"}
~~~

**In the initial part of the build, you may see some errors popping up due to missing g.cs files (untracked by git). You can ignore those messages as long as the build completes like this:**

![build](assets/pics/build.png)


**Open visual studio TcOpen.sln**

Switch profile to Debug|TwinCAT RT (x64)

![Profile set](assets/pics/compile_profile.png)

> The build process might be susceptible to some issues due to configuration and evnironment differences. Should you encounter a problem please report the issue [here](https://github.com/TcOpenGroup/TcOpen/issues)

## Communication channels

Some of you complained you were unable to join the Slack Channel for various reasons. After a discussion with @dhullett08 we are opening a new gitter channel:

[![Join the chat at https://gitter.im/dotnet/coreclr](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/TcOpenGroup/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

## Code of Conduct

We do not adopt any document describing conduct at this point. However, there are few straightforward rules to observe:

1. Treat others as you would like others to treat you
1. Everyone is free to express his/her ideas.
1. Truth is more important than kindness, but be kind.


## Contributions? Suggestions? Issues?

You can submit your ideas in the form of [PullRequests](https://github.com/TcOpenGroup/TcOpen/pulls)

Please submit questions, suggestions, bug reports [here](https://github.com/TcOpenGroup/TcOpen/issues).

Various discussion [here](https://github.com/TcOpenGroup/TcOpen/discussions).

Open an issue here and / or join the slack channel for discussion.

### Awesome TwinCAT 3 projects 🌐

Expand Down
Loading