Skip to content

Inxton/AXOpen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AXOpen Banner

dev preview master semver GitHub license

AXOpen (AXO) is an application framework for industrial automation applications. This project leverages the capabilities of SIMATIC AX and AX#, amalgamating their unique strengths to deliver a high level of OT IT convergence.

AXOpen is developed primarily as an application framework for and within MTS. We opened this repository to share our knowledge and experience with the community of like-minded automation engineers, who see the potential in using software engineering approaches and workflows for industrial automation.

AXOpen is capitalizing on previous experiences in the development of TcOpen, an application framework based on the TwinCAT3 platform and Inxton technology that provided us with tooling that reduced the effort and development time for our industrial application by 70%.

AXOpen is engineered with an object-oriented architecture, bridging the real-time operations of a PLC controller and the extensive possibilities of the .NET ecosystem. This integration ensures unparalleled performance in automation tasks and forms an interface with the IT domain.

AXOpen is also highly modular, leveraging the apax package and dependency management system provided by SIMATIC-AX. In addition to controller packages, there are companion NuGet packages that can be used to extend SIMATIC-AX libraries in the .NET ecosystem.

Guiding Principles

Single Point of Change - SPOC(K)

The guiding principle in AXOpen is Single Point Of Change. The idea is that the tools and underlying framework should provide means to reflect any change in the controller program into higher applications. So for instance, any addition, removal, or modification of a component should be automatically reflected in the HMI/UI.

Component Addition

In the same way, any modification of a structure destined to be a source of data for an arbitrary target storage system should reflect automatically through multiple layers up to the target structure.

To achieve this level of scalability, AXOpen uses AX# which provides a transpiler that creates a .NET twin library for an ax-based project. The .NET twin reflects all types and project structures to allow for easy two-way structured access to the controller. The library can be regenerated on the fly with each change of the source project. These twin objects are then used by presentation libraries to generate HMI/UI or allow for mapping objects directly to the database.

DEclarative COntrol Programming - DeCoP

Another leading principle is DEclarative COntrol Programming. This approach leverages OOP in ST. The main idea is to provide components where methods have declarative functions and encapsulate the imperatives to execute specific tasks. When the task cannot succeed or fails, the component reports information about the problem to the alarm handler.

The program composed with this principle provides a highly readable textual representation of expected actions while hiding implementation complexities for high-level readers like maintenance personnel.

A simple example could be a component of a pneumatic cylinder where the call of method MoveToWork will extend the piston into the working position; if the component does not reach the extremity sensor, the component itself provides the information that the operation could not successfully execute.

Brief Content Overview

AXOpen is designed to simplify the development of industrial automation by covering a broad spectrum of areas. These include coordination (e.g., sequential control), alarm/messaging, components (pneumatics, vision, robotics, etc.), data acquisition, and various utility libraries.

Moreover, AXOpen comprises powerful tools that expedite the development of HMI/UI applications. It builds upon web technologies (Blazor) and the incredibly powerful AX# library for the automated generation of user interfaces. Each library/component within AXOpen comes equipped with ready-to-use visual components, enabling swift deployment in any human-machine interface scenario. Though we develop HMI/UI controls based on Blazor technology, we keep the design open to other UI technologies from the .NET ecosystem.

Library Overview

AXOpen provides a comprehensive set of libraries and components for industrial automation. Here's a detailed overview of the main libraries:

Core Libraries

  • Core: Contains fundamental components and base functionality for the AXOpen framework
  • Abstractions: Provides interfaces and abstract classes that define the framework's architecture
  • Utils: Utility functions and helper classes for common operations
  • Timers: Time-related functionality and timing operations
  • Data: Data management and handling subsystem for controller data
  • IO: Input/Output operations and communications

Component Libraries

Robotics

  • components.robotics: Base robotics functionality and common interfaces
  • components.abb.robotics: Integration with ABB robots
  • components.kuka.robotics: Integration with KUKA robots
  • components.ur.robotics: Integration with Universal Robots
  • components.mitsubishi.robotics: Integration with Mitsubishi robots

Vision and Identification

  • components.cognex.vision: Integration with Cognex vision systems
  • components.keyence.vision: Integration with Keyence vision systems
  • components.balluff.identification: Balluff identification systems integration
  • components.siem.identification: Siemens identification systems integration

Motion and Control

  • components.drives: Base functionality for drive systems
  • components.festo.drives: Integration with Festo drive systems
  • components.rexroth.drives: Integration with Rexroth drive systems
  • components.rexroth.press: Specialized integration for Rexroth press systems
  • components.desoutter.tightening: Integration with Desoutter tightening systems
  • components.pneumatics: Pneumatic system controls and operations

Base Components

  • components.abstractions: Base abstractions for all components
  • components.elements: Basic control elements and building blocks

Testing and Development

  • inspectors: Tools for system inspection and diagnostics
  • probers: Testing and probing functionality
  • toolbox: Collection of development tools and utilities
  • tools: Additional development tools and helpers

Integration and Platform

  • simatic1500: Specific integration for Siemens SIMATIC S7-1500 controllers
  • sdk-ax: Software Development Kit for AX integration
  • traversals: System traversal and navigation utilities
  • Security: Security-related functionality and access control

Each library is designed with modularity in mind, allowing you to use only the components you need for your specific automation project. All components come with built-in support for:

  • Automated UI generation
  • Integrated alarm handling
  • Diagnostic capabilities
  • Documentation
  • Example implementations

Tasks

The task provides a simple coordination primitive to execute actions. Tasks provide additional benefits regarding handling and observability of executed actions.

IF _myTask.Invoke().IsDone() THEN
    MoveToNextStep();
END_IF;

Remote Tasks

In addition to tasks that are executed within the controller, AXOpen provides a mechanism for executing complex tasks that do not require the determinism of an industrial controller such as database access, extensive calculations, etc. A remote task is invoked from the controller, but the actual action is performed in a .NET application.

IF(_remoteTask.Invoke('hello').IsDone()) THEN
    _doneCounter := _doneCounter + 1; 
END_IF; 
Entry.Plc.AxoRemoteTasks._remoteTask.Initialize(() => Console.WriteLine($"Remote task executed PLC sent this string: '{Entry.Plc.AxoRemoteTasks._remoteTask.Message.GetAsync().Result}'"));

Remote Task

Controlling Sequences

Sequencers provide coordination patterns to orchestrate tasks into linear sequences.

Sequencer

Components

Within AXOpen, we develop ready-to-use components for a variety of generic and vendor-specific hardware components (pneumatics, drives, sensors, etc.). Each component includes a ready-to-use visual element allowing control of the component manually. Each component has built-in alarms that will report when a component encounters a problem.

Components

Data

AXOpen provides a powerful subsystem for managing data from the controller. AXOpen data management can be used in multiple scenarios like product traceability, customization of process control, etc.

Data View


As we continue to make headway in our developmental journey, we request your patience. Stay tuned for updates regarding the upcoming releases of AXOpen.

To remain updated about our progress, consider staring and subscribing to this repository.

We are planning the first pilot project using AXOpen in the coming months. Once we verify the framework on the battlefield, we will release a production-ready version.

Documentation

In parallel with the project's advancement, we are incrementally building the documentation. We invite you to visit the link if you wish to learn more about AXOpen.

About the Repository

More about how the repository is organized and structured, see here.

About

[This repository is for active development.] Application framework based on SIMATIC-AX and AX# technology.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 9