TcOpen Framework
TcOpen framework provides blocks for building industrial applications and creating reusable software components for various devices like Pistons, Drives, Robots, Vision systems, etc.
Part of the framework is a series of classes/blocks for crafting applications using techniques known from software engineering. TcOpen is created in the OOP paradigm and takes full advantage of object-oriented design allowed by CoDeSys/TwinCAT 3 implementation of IEC-61131-3.
The ultimate goal of this initiative is to provide automation engineers with well-designed, testable, scalable, and reusable blocks to facilitate the development, commissioning, and maintainability of the industrial application software.
TcOpen application dissection
The following diagram shows schematics of a simple TcOpen application. The station contains a manipulator with a single drive for a horizontal axis movement, a pneumatic piston for vertical axis movement, and a pneumatic gripper.
The blocks of an TcOpen application require to be nested into a root block called Context that derives from TcoContext
or implements ITcoContext
interface. In our case, it is AppContext
block.
The next level is Station001
that derives from TcoObject (about TcoObject later). It suffices to say the TcoObject
is the base block of each other block in the TcOpen framework.
The components (drive, pistons) are encapsulated into a single structure, Station001_Components
(HorizontalDrive, VerticalPiston, Gripper) and it that also derives from TcoObject
.
Besides components, the station contains two Sequences, Station001_GroundMode
that brings the manipulator to the ground state (home positioning), and Station001_AutomatMode
that performs the manipulator's activities in automatic mode.
The components (Drive, Piston) have a set of tasks (MoveHome, MoveAbsolute, etc.). All tasks are or derive from TcoTask within which the actions are running. The TcoTask work with two methods in tandem: Invoke
fires the execution (in our case, this occurs in the sequences) and Execute
with an implementation in the components block, that run the required action.
TcoCore library
TcoCore
library contains basic classes for building TcOpen applications (components, tasks management, coordination primitives). The default namespace for this library is TcoCore
. All types in this library have Tco
prefix for classes and ITco
and for interfaces.