AX#

Search Results for

    Show / Hide Table of Contents

    AX# is an open-source project developed by a group of automation engineers. It provides easy access from .NET-based applications to SIMATIC-AX based PLC programs.

    Open source repository is here.

    Note

    This project is under development. We periodically release versions that can be used for testing and in non-production environments.

    Disclaimer

    Important

    It is necessary to have a valid license for SIMATIC AX in order to use AX#!
    SIMATIC AX is currently in a limited sales release in selected European countries only. You will need to request access from the AX team which will check if your use case is suitable for the current state of the product. The first step to getting the approval is contacting your local SIEMENS sales representative or writing an email to simatic-ax@siemens.com.

    What's in

    AXSharp.ixc compiler

    Transpiles the structured text program data to .NET twin objects. These objects provide different methods of accessing the PLC data. Twin objects are suitable to use for HMI (with any .NET UI framework like WPF, Blazor, MAUI or WinForms). Twins implement value change notifications which makes it easy for the UI framework to react to changes in the PLC.

    Mirroring the PLC program in a .NET object gives any solution consistency and scalability on a scale hard to achieve with traditional approaches.

    AXSharp.Connectors

    The connectors provide a communication layer for twin objects generated by the compiler (ixc).

    AXSharp.Blazor

    The presentations provide a mechanism for automated UI generation from PLC code. The UI layout and properties are malleable with the directives in the PLC code.

    Prerequisites

    • axcode
    • dotnet 6
    • dotnet 7
    • dotnet 7
    • vscode or vs2022

    Make sure you have installed both .NET6 and .NET7.

    Getting started

    Make sure you meet all prerequisites.

    Add package source

    To get early access to the packages from AX# you will need to get access to a dedicated package feed hosted on GitHub. If you do not have a GitHub account please consider creating one by signing up at https://github.com.

    dotnet nuget add source --username GITHUBUSERNAME --password PAT  --store-password-in-clear-text --name gh-packages-inxton "https://nuget.pkg.github.com/inxton/index.json"
    

    Replace GITHUBUSERNAME with your github name Replace PAT with your Personal Access Token (how to create your PAT)

    Creating new project

    There are different ways you can use to create new project. At this point we support some basic application templates, but you can create your solution also from scratch.

    IMPORTANT! Prepare your PLC and AX project

    Before you start using any of the method below yoiu will need to set up your PLC. Using TIA portal you need to enable WebAPI interface see here and here is a very informative youtube video.

    [!Video https://youtu.be/d9EX2FixY1A?t=151]

    Creating new project using templates

    Install AX# template package

    When using .NET7

    dotnet new install AXSharp.templates
    

    When using .NET6 and earlier

    dotnet new --install AXSharp.templates
    
    Note

    Make sure all nuget feed sources are available at the time of installation of packages. If you are not sure run dotnet nuget list source and check that the sources listed are reachable. The installation may fail if some of the source is not available.

    List available templates

    dotnet new list --tag AX#
    
    Template Name                   Short Name  Language  Tags
    ------------------------------  ----------  --------  -----------------
    AX# Blazor application           axeblazor    [C#]      AX#/Blazor
    AX# Simmple console application  axeconsole   [C#]      AX#/Console-Simple
    .
    .
    .
    

    Create new project from template

    dotnet new [shortname] -n YOUR_PROJECT_NAME
    #e.g. dotnet new axeblazor -n MyFristAXSharpBlazorProject
    

    When prompted about script execution allow the script to run (answer (Y)es) in order to finish the scaffolding of the project. If you're creating the project using Visual Studion you will need to run the script manually.

    Consult README.md file located in your new project for additional information.

    NOTE! Templates contain some of settings that differ from the defaults. The AX# twin project might be located in different location that apax's ix folder.



    Creating new project from scratch

    If you don't want to use application template you can create AX# project from scratch.

    Install ixc AX# compiler CLI

    ixc is CLI implementation of AX# Compiler.

    Open the terminal in the directory of your AX project (the one where the apax.yml file lives), and run the following commands:

    dotnet new tool-manifest 
    dotnet tool install --local AXSharp.ixc --prerelease
    

    This will install the ixc compiler tool for your project.

    Run ixc tool in your project directory

    To run ixc do in your ax project directory:

    dotnet ixc
    

    ixc will create a new folder (defaults to ix in your ax project folder) where you can find the C# Twin project of your AX program.

    The ixc help can be displayed running.

    dotnet ixc --help
    
    ixc 0.5.0-1.8+Branch.wip-webapiconnector-1.Sha.7b12285dc7e7aa72995e9e47bbcf7f4cf386f170
    Copyright (C) 2022 author
    
      -x, --source-project-folder    Simatic-ax project folder
    
      -o, --output-project-folder    Output folder.
    
      --help                         Display this help screen.
    
      --version                      Display version information.
    

    Before usage apax commanad ensure that you are logged in

    apax login 
    

    Run apax install to install dependencies of your AX project

    apax install 
    

    You will need to load your PLC with --default-server-interface in render your PLC program data accessible via WebAPI interface.

    apax build
    apax sld -t YOUR-SYSTEM-IP -i .\bin\1500\ --accept-security-disclaimer -r --default-server-interface
    

    Connecting PLC.NET Twin to the PLC

    using AXSharp.Connector;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using AXSharp.Connector.Sax.WebApi;
    
    namespace your_project_name
    {
        public static class Entry
        {
            // Connecting to read PLC using WebAPI
            public static my_plcTwinController Plc { get; } = new (ConnectorAdapterBuilder.Build().CreateWebApi("10.10.101.1", "Everybody", "", true));
            // Connecting to dummy
            public static my_plcTwinController PlcDummy { get; } = new (ConnectorAdapterBuilder.Build().CreateDummy());
        }
    }
    

    Start PLC twin operations

    // This start cyclical operation on PLCTwin at 10ms rate
    your_project_name.Entry.Plc.Connector.BuildAndStart().ReadWriteCycleDelay = 10;
    
    • Edit this page
    In this article
    Back to top Generated by DocFx. © MTS spol. s r.o., MTS spol. s r.o., and awesome contributors