├── .gitattributes ├── .gitignore ├── 00_introduction ├── .tours │ └── 00_codetour_introduction.tour ├── apax.yml └── slides │ ├── img │ ├── codetour_explorer.png │ ├── open_folder.png │ └── path.svg │ ├── reveal.json │ ├── slides.md │ └── theme │ ├── .DS_Store │ ├── siemens.svg │ └── simatic-ax.css ├── 01_introduction_to_ax_code ├── apax.yml └── slides │ ├── img │ ├── apax-build.png │ ├── autosave.png │ ├── ax-extensions.png │ ├── axcode.png │ ├── built-in-extensions.png │ ├── f1command.png │ ├── marketplace.png │ ├── output.png │ └── window-customization.PNG │ ├── slides.md │ └── theme │ ├── siemens.svg │ └── simatic-ax.css ├── 03_loading_and_debugging ├── apax.yml ├── assets │ ├── ax │ │ ├── HwConfiguration.hwdat │ │ ├── HwConfiguration.hwdat.hash │ │ ├── Meta.json │ │ ├── PkiContainer.hwdat │ │ └── PkiContainer.hwdat.hash │ ├── certificateForConnection.crt │ ├── plcsim_advanced_v6_image.7z │ └── tia │ │ └── AxHwTemplate.zap19 ├── exercises │ └── 0_first_exercise │ │ ├── README.md │ │ └── apax.yml └── slides │ ├── img │ ├── DownloadHardwareTia.gif │ ├── ExportCertificate.gif │ ├── PGPCInterface.gif │ ├── sdb_logpoint.gif │ ├── sdb_start.png │ ├── tiaxDirectLoading.png │ └── watchtable.gif │ ├── slides.md │ └── theme │ ├── .DS_Store │ ├── siemens.svg │ └── simatic-ax.css ├── 04_introduction_to_st ├── .gitignore ├── .tours │ ├── additional_information.tour │ ├── learning_path_st.tour │ └── monitoring.PNG ├── .vscode │ ├── extensions.json │ └── launch.json ├── apax-lock.json ├── apax.yml ├── exercises │ ├── 1_implement_valve │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── img │ │ │ ├── Valve.png │ │ │ └── ValveBehav.png │ │ └── src │ │ │ ├── configuration.st │ │ │ └── program.st │ ├── 2_implement_tank │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── img │ │ │ ├── Tank.png │ │ │ └── TankBehav.png │ │ ├── src │ │ │ ├── configuration.st │ │ │ ├── fluidProgram.st │ │ │ └── valve.st │ │ └── watchTable.mon │ ├── 3_extend_tank_functionality │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── img │ │ │ ├── TankBehav.png │ │ │ ├── TankBehavState.png │ │ │ └── TankModify.png │ │ ├── src │ │ │ ├── configuration.st │ │ │ ├── fluidProgram.st │ │ │ ├── tank.st │ │ │ └── valve.st │ │ └── watchTable.mon │ ├── 4_timer_for_tank │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── img │ │ │ ├── TankModify.png │ │ │ └── ValveFbClosedBehav.png │ │ ├── src │ │ │ ├── configuration.st │ │ │ ├── fluidProgram.st │ │ │ ├── tank.st │ │ │ ├── types.st │ │ │ └── valve.st │ │ └── watchTable.mon │ └── 5_solution_exercise_4 │ │ ├── .vscode │ │ └── launch.json │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── src │ │ ├── configuration.st │ │ ├── fluidProgram.st │ │ ├── tank.st │ │ ├── types.st │ │ └── valve.st │ │ └── watchTable.mon ├── slides │ ├── slides.md │ └── theme │ │ ├── .DS_Store │ │ ├── siemens.svg │ │ └── simatic-ax.css └── src │ ├── ExampleProgram.st │ ├── Namespace │ ├── NamespaceExample.st │ └── UsageOfNameSpace.st │ ├── TankFb.st │ ├── Valve.st │ └── configuration.st ├── 05_oop_in_st ├── .gitignore ├── apax.yml ├── exercises │ ├── 0_basic_valve_class │ │ ├── .gitignore │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── README.md │ │ ├── apax.yml │ │ ├── src │ │ │ ├── Tank.st │ │ │ ├── TankBase.st │ │ │ ├── Valve.st │ │ │ ├── ValveBase.st │ │ │ └── ValveStates.st │ │ └── test │ │ │ └── test.st │ ├── 1_interfaces │ │ ├── README.md │ │ ├── apax.yml │ │ └── src │ │ │ ├── ItfTank.st │ │ │ ├── ItfValve.st │ │ │ ├── TankBase.st │ │ │ ├── ValveBase.st │ │ │ └── ValveStates.st │ ├── 3_calculator_current_volume │ │ ├── README.md │ │ ├── apax.yml │ │ └── src │ │ │ ├── ItfTank.st │ │ │ ├── ItfValve.st │ │ │ ├── TankBase.st │ │ │ ├── ValveBase.st │ │ │ └── ValveStates.st │ ├── 4_inheritance_complex_valve │ │ ├── README.md │ │ ├── apax.yml │ │ └── src │ │ │ ├── ItfTank.st │ │ │ ├── ItfValve.st │ │ │ ├── TankBase.st │ │ │ ├── TankStates.st │ │ │ ├── TankWithVolume.st │ │ │ ├── ValveBase.st │ │ │ ├── ValveStates.st │ │ │ ├── configuration.st │ │ │ └── program.st │ └── solution │ │ ├── README.md │ │ ├── apax.yml │ │ └── src │ │ ├── CalculatorWithRegulation.st │ │ ├── ITank.st │ │ ├── IValve.st │ │ ├── TankStates.st │ │ ├── TankWithShape.st │ │ ├── TankWithVolume.st │ │ ├── ValveStates.st │ │ ├── basicValve.st │ │ ├── complexValve.st │ │ └── configuration.st ├── new.md └── slides │ ├── img │ ├── valvescheme.png │ └── valveuml.svg │ ├── new_structure.md │ ├── reveal-md.json │ ├── slides.md │ └── theme │ ├── .DS_Store │ ├── siemens.css │ ├── siemens.svg │ └── simatic-ax.css ├── 06_unit_testing ├── apax.yml ├── exercises │ ├── 1_starting_tests │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── src │ │ │ └── NumberIsEven.st │ │ └── test │ │ │ └── test.st │ ├── 2_testing_classes │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── src │ │ │ └── SimpleCounter.st │ │ └── test │ │ │ └── test.st │ ├── 3_parametrized_test │ │ ├── README.md │ │ ├── apax-lock.json │ │ ├── apax.yml │ │ ├── src │ │ │ └── SimpleCounter.st │ │ └── test │ │ │ └── test.st │ └── solutions │ │ ├── 1_starting_tests_solution │ │ └── test.st │ │ ├── 2_testing_classes_solution │ │ └── test.st │ │ └── 3_parametrized_test_solution │ │ └── test.st └── slides │ ├── img │ ├── Target.png │ ├── TestExplorer.png │ ├── apaxyml.png │ ├── debugging.png │ └── ui_buttons.png │ ├── slides.md │ └── theme │ ├── .DS_Store │ ├── siemens.css │ ├── siemens.svg │ └── simatic-ax.css ├── 07_tools_for_commissioning ├── apax.yml ├── exercises │ └── 0_first_exercise │ │ ├── README.md │ │ └── apax.yml └── slides │ ├── img │ ├── DiagBuffPanelWeb.png │ ├── PerformanceInfo.png │ ├── PlcOnlineHub.png │ └── plc-browser.gif │ ├── slides.md │ └── theme │ ├── .DS_Store │ ├── siemens.svg │ └── simatic-ax.css ├── 08_package_management ├── apax.yml ├── exercises │ ├── 1_creating_and_testing_a_library │ │ └── README.md │ ├── 2_publishing_a_library │ │ ├── README.md │ │ └── solution.md │ └── 3_consuming_a_library │ │ ├── README.md │ │ └── solution.md └── slides │ ├── img │ ├── box.png │ ├── cake.jpg │ ├── create_lib_project.PNG │ ├── key.jpg │ ├── library.jpg │ └── target.png │ ├── slides.md │ └── theme │ ├── .DS_Store │ ├── siemens.svg │ └── simatic-ax.css ├── CODEOWNERS ├── README.md ├── assets └── img │ ├── download_archive.png │ └── new_issue.png └── renovate.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # `.gitattributes` reclassify `.st` files as iec-st: 2 | ** linguist-vendored 3 | # *.ppjs linguist-language=ST -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/.apax 2 | /.vs 3 | **/node_modules 4 | -------------------------------------------------------------------------------- /00_introduction/.tours/00_codetour_introduction.tour: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://aka.ms/codetour-schema", 3 | "title": "00_codetour_introduction", 4 | "steps": [] 5 | } -------------------------------------------------------------------------------- /00_introduction/apax.yml: -------------------------------------------------------------------------------- 1 | name: 00_introduction 2 | 3 | version: 0.0.0 4 | type: generic 5 | 6 | scripts: 7 | setup-training-environment: npm install -g reveal-md 8 | present: reveal-md ./slides/slides.md --theme ./slides/theme/simatic-ax.css --watch -------------------------------------------------------------------------------- /00_introduction/slides/img/codetour_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simatic-ax/learning-path/a99702a568085ac08a54aa0ac7cbc0c1f7791dec/00_introduction/slides/img/codetour_explorer.png -------------------------------------------------------------------------------- /00_introduction/slides/img/open_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simatic-ax/learning-path/a99702a568085ac08a54aa0ac7cbc0c1f7791dec/00_introduction/slides/img/open_folder.png -------------------------------------------------------------------------------- /00_introduction/slides/reveal.json: -------------------------------------------------------------------------------- 1 | { 2 | "controls": true, 3 | "progress": false 4 | } -------------------------------------------------------------------------------- /00_introduction/slides/slides.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction to SIMATIC AX 3 | progress: true 4 | revealOptions: 5 | transition: 'fade' 6 | mouseWheel: true, 7 | --- 8 | 9 | 10 |
20 | In this introductory course you will learn everything required to get started with the new engineering environment SIMATIC AX. Regardless if you are coming from TIA Portal or are starting new in the SIMATIC environment this learning path will guide you through the journey. 21 |
22 | 23 |24 | To navigate between chapters (pages), please use the left/right arrows. To see more chapter content, use the up/down arrows when available. For a detailed overview of the controls, press F1 at any time of the presenation. 25 |
26 | 27 |28 | To exit apax present in the terminal, please use "ctrl" + "c". 29 |
30 |
60 | The learning path is split into submodules for each specific topic.
61 |
62 |
63 | Each submodule contains a description in form of a slide deck as well as an interactive CodeTour about a specific topic.
64 |
78 | Each learning module is contained in a subfolder of the repository
79 |
80 | It is made up of these components:
81 |
101 | The slides can be interactively hosted locally on your PC. You need to install the tool reveal-md
by typing this in your commandline:
104 |
105 | npm install reveal-md --global
106 |
107 |
108 | Note that this will install "third-party" software and is done at your own risk110 |
You can then start the presentation by navigating to the module directory (e.g. 00_introduction) in the commandline and entering:
112 |
114 | apax present
115 |
116 | CodeTour is a Visual Studio Code extension, that can be used to create interactive tours in a VS Code project. To use the tours, please install the extension provided by Microsoft in the marketplace.
130 |You will then find an additional drawer section in your explorer view:
131 |Some modules contain additional training materials, that allow you to apply the skills you've learned through hands-on exercises.
149 |You can start the exercise by opening the folder in AX Code and following the README.md
150 |To get started, you need to have SIMATIC AX, apax and all its prerequisites installed. To get access to the software you need a SiemensID account and a license for SIMATIC AX.
33 | 37 |With this you are set up to continue with this learning path.
39 |After you completed this training section you will
53 |SIMATIC AX Code is an IDE based on Visual Studio Code, an immensly popular open source IDE created by Microsoft.
77 |The IDE has been enriched with Siemens specific functionality to support the user while engineering a PLC.
78 |SIMATIC AX Code comes with a prefabricated set of extensions. Those extensions are available natively inside the IDE, e.g. GIT source control.
93 |Furthermore you have access to the Open VSIX marketplace and may add your favorite extensions like GitLens.
108 |Besides third-party extensions, there are also SIMATIC AX specific extensions. Those extensions are installed via the extension manager, which is integrated into SIMATIC AX Code. The extension manager can also update the installed extensions automatically (optionally).
123 |Some examples for SIMATIC AX specific extensions:
124 |While some of the functionalities of the extensions are accessible via the UI, you may access a more extended set of the functionalities via the command palette. To access them press F1
or Ctrl + Shift + P
Here you can search for the functionality you require.
146 |The IDE provides a built-in terminal that lets you access the file system and execute CLI commands and scripts inside. You can open a new terminal via the top bar: "Terminal" > "New Terminal".
161 |To support the user in debugging extension specific behavior and errors, an output panel is available. In the output panel you can take a look at outputs of various integrated extensions.
176 |Note that the output panel is always specific to the extension selected and can be switched using the drop down menu on the right.
177 |You may change the current layout of the IDE to your liking. On the top right inside of SIMATIC AX Code you have the possibility to fully customize the layout of the windows.
192 |You can also drag and drop the tab of the current editor and move it to the desired location
193 |When editing files inside the IDE, changes are not immediately mirrored back to your file system. Unsaved changes in a file won't be considered while executing any of the functionalities inside the IDE.
208 |Hence, we recommend to always enable auto save
209 |You learned about...
224 |To get started, you need to have SIMATIC AX, apax and all its prerequisites installed.
32 |In addition you should know the basics on how to use AX Code as well as have a starting project, that has been created in the previous section 33 |
34 |With this you are set up to continue with this learning path.
36 |After you completed this training section you will
47 |In this section you learned about...
195 |