From 3404d75b678822283d7d335e5ecaa1b60746ef8a Mon Sep 17 00:00:00 2001 From: Christof Ochs Date: Mon, 29 Jun 2026 15:28:41 +0200 Subject: [PATCH 1/3] docs: refine recommendations and fix typos across guidelines Sharpen recommendation wording (R001-R010), correct typos and grammar in the docs, README, and CONTRIBUTING. --- CONTRIBUTING.md | 4 ++-- README.md | 4 ++-- docs/01_Introduction.md | 4 ++-- docs/R001_TempVariables.md | 4 ++-- docs/R002_Dereferencing.md | 6 +++--- docs/R003_MultipleArrayAccess.md | 4 ++-- docs/R004_ControlVariables.md | 6 +++--- docs/R005_FastMath.md | 6 +++--- docs/R006_ArrayBoundaries.md | 7 +++---- docs/R007_AccessTO.md | 8 ++++---- docs/R009_PassByReference.md | 15 +++++++-------- docs/R010_IfElseExpectation.md | 2 +- 12 files changed, 34 insertions(+), 36 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1aed8f8..24abaec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ There are many ways in which you can contribute, beyond writing code. The goal o ## Thank You -Your contributions to this open source project - large or small - let´s us create better automation solutions - together! Thank you for being an essential part of this journey. +Your contributions to this open source project - large or small - let us create better automation solutions - together! Thank you for being an essential part of this journey. ## Types of contributions @@ -91,6 +91,6 @@ Once all clearings are successful, our admins will create the repository within ### Siemens employees -In case you are a Siemens employee who likes to propose a new repository for the GitHub community, please the [Siemens contribution process](https://code.siemens.com) for a set of follow along instructions. +In case you are a Siemens employee who likes to propose a new repository for the GitHub community, please see the [Siemens contribution process](https://code.siemens.com) for a set of follow along instructions. > For all inquiries, please get in touch via our [Admin Team](https://github.com/orgs/simatic-ax/teams/toa-teamofaxion). diff --git a/README.md b/README.md index 6ceedb4..1aba0cb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Performance Programming Guidelines This repository serves to provide programming guidelines for users of SIMATIC AX. -It's primary goal is to address programming related suggestions that impact the runtime performance. +Its primary goal is to address programming related suggestions that impact the runtime performance. See the [Overview](./docs/01_Introduction.md) to find the different recommendations. @@ -16,4 +16,4 @@ Furthermore, suggestions for other potential targets of SIMATIC AX (e. g. SINUME The [CONTRIBUTING.md](CONTRIBUTING.md) explains how to create an issue in relation to the SIMATIC AX programming guidelines. Feedback or requirements regarding SIMATIC AX are out of scope of the programming guidelines. -The programming guidelines are not meant as as substitute for the official documentation and learnings and therefore do not explain basic technial aspects. +The programming guidelines are not meant as a substitute for the official documentation and learnings and therefore do not explain basic technical aspects. diff --git a/docs/01_Introduction.md b/docs/01_Introduction.md index ce6ccca..bf8ed01 100644 --- a/docs/01_Introduction.md +++ b/docs/01_Introduction.md @@ -5,7 +5,7 @@ It offers an environment to program a PLC using Structured Text (ST). The ST com When programming a PLC system, the achievable runtime performance of the user program is of high importance. -SIMATIC AX offers many programming features in combination with SIMATIC, which are not available in TIA Portal (e. g. object-oriented programming) and uses a different data structure. +SIMATIC AX offers many programming features in combination with SIMATIC, which are not available in TIA Portal (e.g. object-oriented programming) and uses a different data structure. Therefore, comparing the (expected) runtime performance of applications from TIA Portal and SIMATIC AX is not straightforward. ## Objective of the guideline @@ -21,6 +21,6 @@ This guideline provides tips and suggestions regarding the programming in SIMATI 5. [R005_FastMath library](R005_FastMath.md) 6. [R006_Array boundaries](R006_ArrayBoundaries.md) 7. [R007_Accessing Technology Objects](R007_AccessTO.md) -8. [R008_Limit string lenght](R008_LimitStringLength.md) +8. [R008_Limit string length](R008_LimitStringLength.md) 9. [R009_Pass by reference](R009_PassByReference.md) 10. [R010_If-else expectation](R010_IfElseExpectation.md) diff --git a/docs/R001_TempVariables.md b/docs/R001_TempVariables.md index a4e4042..ccdf1af 100644 --- a/docs/R001_TempVariables.md +++ b/docs/R001_TempVariables.md @@ -1,10 +1,10 @@ # Recommendation R001: Use temporary variables -Use temporary variables (`VAR_TEMP`) as intermediate memory in the current cylce if the calculation results are not required over multiple cycles. The access time for temporary variables is shorter than for static variables. +Use temporary variables (`VAR_TEMP`) as intermediate memory in the current cycle if the calculation results are not required over multiple cycles. The access time for temporary variables is shorter than for static or global variables. ## Note -Temporary variables cannot be monitored or modified with the SIMATIC AX online tools. +Temporary variables cannot be monitored or modified with the SIMATIC AX online tools. But their values can be watched during debugging through log points. Temporary variables are initialized by the system in every call, therefore big data structures consume more performance than static variables. diff --git a/docs/R002_Dereferencing.md b/docs/R002_Dereferencing.md index e097113..947a7a8 100644 --- a/docs/R002_Dereferencing.md +++ b/docs/R002_Dereferencing.md @@ -15,8 +15,8 @@ VAR x8, x9, x10, x11, x12, x13, x14, x15 : BOOL; x16, x17, x18, x19, x20, x21, x22, x23 : BOOL; x24, x25, x26, x27, x28, x29, x30, x31 : BOOL; -END_VAR -tempData := data^; +END_VAR +tempData := data^; x0 := tempData.%X0; x1 := tempData.%X1; x2 := tempData.%X2; @@ -30,7 +30,7 @@ x5 := tempData.%X5; ## Note -Temporary variables cannot be monitored or modified with the SIMATIC AX online tools. +Temporary variables cannot be monitored or modified with the SIMATIC AX online tools. Their values can be watched during debugging through log points. Temporary variables are initialized by the system in every call, therefore big data structures consume more performance than static variables. diff --git a/docs/R003_MultipleArrayAccess.md b/docs/R003_MultipleArrayAccess.md index 684ca5d..7051265 100644 --- a/docs/R003_MultipleArrayAccess.md +++ b/docs/R003_MultipleArrayAccess.md @@ -1,6 +1,6 @@ -# Recommendation R003: Avoid multiple acces to same array index +# Recommendation R003: Avoid multiple access to same array index -When accessing an array index with the bracket syntax, internal checks for the validity of the array boundaries are performed. When access to the same index of an array is required (e. g. to access underlying nested elements), use a temporary variable as a cache. Write back the changes to the array (if applicable) once, after the operation is finished. +When accessing an array index with the bracket syntax, internal checks for the validity of the array boundaries are performed. When access to the same index of an array is required (e.g. to access underlying nested elements), use a temporary variable as a cache. Write back the changes to the array (if applicable) once, after the operation is finished. ```iecst VAR diff --git a/docs/R004_ControlVariables.md b/docs/R004_ControlVariables.md index 5d918c8..4387696 100644 --- a/docs/R004_ControlVariables.md +++ b/docs/R004_ControlVariables.md @@ -1,7 +1,7 @@ -# Recommendation R004: Declaring control variables as DINT +# Recommendation R004: Declare control variables as DINT for array index -It is recommended to use the data type `DINT` for control variables used in loops, iterations, and array access. -There is a slight performance advantage as the least amount of (implicit) type conversion occur when using `DINT`. +It is recommended to use the data type `DINT` for control variables of loops, if array elements are accessed using this control variable as index. See the variable "iterator" in the example of [R003](./R003_MultipleArrayAccess.md). +There is a slight performance advantage as the least amount of (implicit) type conversions occur when using `DINT`. ## Note diff --git a/docs/R005_FastMath.md b/docs/R005_FastMath.md index 8979d78..4fc1a9b 100644 --- a/docs/R005_FastMath.md +++ b/docs/R005_FastMath.md @@ -1,13 +1,13 @@ -# Recommendation R005: Using the `System.FastMath` library +# Recommendation R005: Use the `System.FastMath` library The `System.Math` library contains numerical and arithmetic functionality. The internal implementation is based on algorithms with a higher degree of portability. The library `System.FastMath` provides more performant implementations for a number of functions. It is recommended to use the `System.FastMath` library for performance optimization. -Regarding the `SQRT`, `SIN`, `COS`, and `TAN` function, the `System.FastMath` provides a substantial performance improvement. +Regarding the `SQRT`, `SIN`, `COS`, and `TAN` functions, the `System.FastMath` provides a substantial performance improvement. ## Note -Different targets (i. e. the "1500" and "llvm" target) may behave differently in corner cases in the `System.FastMath` library. More information is found in the individual function documentation. +Different targets (i.e. the "1500" and "llvm" target) may behave differently in corner cases in the `System.FastMath` library. More information is found in the individual function documentation. Back to [Overview](./01_Introduction.md) diff --git a/docs/R006_ArrayBoundaries.md b/docs/R006_ArrayBoundaries.md index e7a43dd..99894f6 100644 --- a/docs/R006_ArrayBoundaries.md +++ b/docs/R006_ArrayBoundaries.md @@ -1,8 +1,7 @@ -# Recommendation R006: Passing arrays as formal parameters +# Recommendation R006: Prefer fixed-length array as formal parameter rather than variable-length array -If an array needs to be passed as a formal parameter, there is an performance impact with regard to the _size specification_ of the array. -The concrete size and limits of an array of unspecified size (`ARRAY[*]`) need to be evaluated with the system functions `UPPER_BOUND` and `LOWER_BOUND`. -This creates additional computational demand. Therefore, arrays of specified size (e. g. `ARRAY[0..63]`) are the more performant solution. +If an array needs to be passed as a formal parameter, there is a performance impact with regard to the _length specification_ of the array. +Accessing an element of a variable-length array (`ARRAY[*]`) creates additional computational demand compared to the same operation with a fixed length array (e. g. `ARRAY[0..63]`). ## Note diff --git a/docs/R007_AccessTO.md b/docs/R007_AccessTO.md index 3fef911..a624564 100644 --- a/docs/R007_AccessTO.md +++ b/docs/R007_AccessTO.md @@ -2,7 +2,7 @@ When accessing data from Motion Control Technology Objects (TO) it is recommended to read the data once and store it in temporary or static memory for repeated access. Access to Technology Object data is significantly slower than accessing temporary or static memory in a POU. -This recommendation applies both to the access via the reference to a Technology Object as well as calling the auxiliary functions like `GetStatus`, `Warnings` and `GetWarnings`. +This recommendation applies both to the access via the reference to a Technology Object as well as calling the auxiliary functions like `GetStatus`, `Warnings` and `GetErrors`. ```iecst USING Siemens.Simatic.S71500.MotionControl.Native; @@ -13,7 +13,7 @@ VAR_OUTPUT posBasedCalculation : LREAL; END_VAR VAR_TEMP - tempPosition : LREAL; + tempPos : LREAL; END_VAR @@ -28,9 +28,9 @@ END_IF; It is also recommended to read only the Technology Object data which is required in the user program. -Avoid cyclic evaluation of static configuration data (e. g. the leadscrew pitch of an axis). +Avoid cyclic evaluation of static configuration data (e.g. the leadscrew pitch of an axis). -Do not read Technology Object data in a higher frequency than the values are actually updated (i. e. MC_Servo cylce). +Do not read Technology Object data in a higher frequency than the values are actually updated (i. e. MC_Servo cycle). ## Note diff --git a/docs/R009_PassByReference.md b/docs/R009_PassByReference.md index 5b3ff2f..7abf576 100644 --- a/docs/R009_PassByReference.md +++ b/docs/R009_PassByReference.md @@ -4,7 +4,7 @@ SIMATIC AX and the SIMATIC runtime system offer different mechanisms for passing _Pass by value_ means that the formal parameter is a copy of the argument value provided when calling the POU. _Pass by reference_ means that the formal parameter is a reference to the provided argument. -With some exceptions regarding `ARRAY` and `STRING` parameters, parameter passing in SIMATIC AX follows these general rules: +For elementary data types (with the exception of strings), parameter passing in SIMATIC AX follows these general rules: | Section | Parameter passing | |--------------|---------------------| @@ -12,10 +12,9 @@ With some exceptions regarding `ARRAY` and `STRING` parameters, parameter passin | `VAR_OUTPUT` | _Pass by value_ | | `VAR_IN_OUT` | _Pass by reference_ | -Regarding performance, _pass by reference_ has benefits for larger groups of formal parameters. -The performance advantage increases as the count of elements increases. +For structs, arrays and strings, `VAR_INPUT` parameters of a `FUNCTION`/`METHOD` are compiled as _pass by reference_ to improve performance, while `VAR_INPUT` of `PROGRAM`/`FUNCTION_BLOCK` still requires value copy because the variable is treated as a member of the `PROGRAM`/`FUNCTION_BLOCK`, which shall preserve the status over multiple cycles. -Therefore, it is recommended to group formal parameters into structures and pass these via reference (i. e. in the `VAR_IN_OUT` section of a `FUNCTION_BLOCK`). +Regarding performance, it is recommended to group formal parameters of elementary types into structures and pass these via reference (i.e. `VAR_INPUT` of `FUNCTION`/`METHOD`, or `VAR_IN_OUT` of `FUNCTION`/`METHOD`/`PROGRAM`/`FUNCTION_BLOCK`). The performance advantage increases as the count of elements increases. ## Example @@ -42,9 +41,9 @@ TYPE END_TYPE FUNCTION_BLOCK -VAR_IN_OUT - dynamics : dynamicInfo -END_VAR + VAR_IN_OUT + dynamics : dynamicInfo; + END_VAR . . . @@ -53,6 +52,6 @@ END_FUNCTION_BLOCK ### Note -Using this method, the original data may be modified. +Using `VAR_IN_OUT`, the original data from the caller may be modified by the callee. Back to [Overview](./01_Introduction.md) diff --git a/docs/R010_IfElseExpectation.md b/docs/R010_IfElseExpectation.md index 3b9210a..2d18ee8 100644 --- a/docs/R010_IfElseExpectation.md +++ b/docs/R010_IfElseExpectation.md @@ -2,7 +2,7 @@ It is recommended to order `IF`/`ELSIF` statements by decreasing likelihood. The condition with the highest expectation of being `TRUE` should be placed at the top. -Ordering the conditions in this way reduces the amount of occurences where less likley conditions need to be check, thereby improving the runtime performance. +Ordering the conditions in this way reduces the amount of occurences where less likely conditions need to be checked, thereby improving the runtime performance. ## Example From e9a8561f7cd412fb28db2777997c11cc3d3184ff Mon Sep 17 00:00:00 2001 From: Christof Ochs Date: Mon, 29 Jun 2026 15:29:00 +0200 Subject: [PATCH 2/3] chore: update license --- LICENSE.md | 64 +++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 4e7ae40..a5e0022 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,67 +1,67 @@ -# Royalty-free Software provided by Siemens on sharing platforms for developers/users of Siemens products +# Royalty-free Licensed Material provided by Siemens on sharing platforms for developers/users of Siemens products -## 1. General information: Software in source code and object code +**Version 1.4 – 12.03.2025** -### 1.1 Use of the Software +## 1. General information -Siemens AG and/or a subsidiary of Siemens AG ("Siemens") provides You royalty-free container images, application examples, sample code and software development kits ("Software") through sharing platforms (e.g. GitHub, DockerHub, NuGet, etc.). The Software shall only be used for the development and test of software which can be used with Siemens products ("intended purpose"). The Software is non-binding and makes no claim to completeness or functionality. The Software merely offers help with typical tasks and provides an environment for developing and testing applications and other software. You Yourself are responsible for the proper and safe operation of Your products in accordance with applicable regulations and must also check the function of the results of the Software and customize Your products. Siemens reserves the right to make changes to the Software at any time without notice. Software may be provided in object code and/or source code format. Unless explicitly granted in the open source license according to article 2, You shall not decompile, translate, extract, modify or distribute the Software. +### 1.1 Use of the Licensed Material + +Siemens AG and/or a subsidiary of Siemens AG ("Siemens") provides You royalty-free container images, application examples, documentation, sample code and software development kits ("Licensed Material") through sharing platforms (e.g. GitHub, DockerHub, NuGet, etc.). The Licensed Material shall only be used for the development and test of software which can be used with Siemens products ("intended purpose"). The Licensed Material is non-binding and makes no claim to completeness or functionality. The Licensed Material merely offers help with typical tasks and provides an environment for developing and testing applications and other software. You Yourself are responsible for the proper and safe operation of Your products in accordance with applicable regulations and must also check the function of the results of the Licensed Material and customize Your products. Siemens reserves the right to make changes to the Licensed Material at any time without notice. Software may be provided in object code and/or source code format. ### 1.2 Security information Siemens provides products and solutions with industrial security functions that support the secure operation of plants, systems, machines and networks. In order to protect plants, systems, machines and networks against cyber threats, it is necessary to implement – and continuously maintain – a holistic, state-of-the-art industrial security concept. Siemens' products and solutions constitute one element of such a concept. + Customers are responsible for preventing unauthorized access to their plants, systems, machines and networks. Such systems, machines and components should only be connected to an enterprise network or the internet if and to the extent such a connection is necessary and only when appropriate security measures (e.g. firewalls and/or network segmentation) are in place. -For additional information on industrial security measures that may be implemented, please visit -. +For additional information on industrial security measures that may be implemented, please visit https://www.siemens.com/industrialsecurity. ### 1.3 Compliance with Export Control Regulations -You shall comply with all applicable sanctions, embargoes and (re-)export control regulations, and, in any event, with those of the European Union and the United States of America (collectively "Export Regulations"). In particular, the information, software and documentation provided by Siemens (collectively "Licensed Material") shall not be used, accessed or transferred, unless permitted by the Export Regulations or respective governmental licenses or approvals, (i) in or to any location prohibited by or subject to comprehensive sanctions (currently Russia, Cuba, Iran, North Korea, Syria, and the Crimea region of Ukraine, Donetsk and Luhansk regions of Ukraine) or license requirements according to the Export Regulations; (ii) by or to any individual or entity designated on a sanctioned party list of the Export Regulations; (iii) for any purpose prohibited by the Export Regulations (e.g. use in connection with armaments, nuclear technology or weapons); or (iv) to upload any content unless it is noncontrolled (e .g. in the EU: AL = N; in the U.S.: ECCN = N or EAR99). If required to enable authorities or Siemens to conduct export control checks, You, upon request by Siemens, shall promptly provide Siemens with all information pertaining to You, the intended use and the location of use of the Licensed Material. Siemens shall not be obligated to fulfill this Agreement if such fulfillment is prevented by any impediments arising out of national or international foreign trade or customs requirements or any embargoes or other sanctions. +You shall comply with all applicable sanctions, embargoes and (re-)export control regulations, and, in any event, with those of the European Union and the United States of America (collectively "Export Regulations"). The Licensed Material shall not be used, accessed or transferred, unless permitted by the Export Regulations or respective governmental licenses or approvals, (i) in or to any location prohibited by or subject to comprehensive sanctions (currently Russia, Cuba, Iran, North Korea, Syria, and the Crimea region of Ukraine, Donetsk and Luhansk regions of Ukraine) or license requirements according to the Export Regulations; (ii) by or to any individual or entity designated on a sanctioned party list of the Export Regulations; (iii) for any purpose prohibited by the Export Regulations (e.g. use in connection with armaments, nuclear technology or weapons); or (iv) to upload any content unless it is noncontrolled (e.g. in the EU: AL = N; in the U.S.: ECCN = N or EAR99). Upon request by Siemens, You shall promptly provide Siemens with all information pertaining to You, the intended use and the location of use of the Licensed Material. Siemens shall not be obligated to fulfill its obligation under section 2 if such fulfillment is prevented by any impediments arising out of national or international foreign trade or customs requirements or any embargoes or other sanctions. You acknowledge that Siemens may be obliged under the Export Regulations to limit or suspend access by You to the Licensed Materials. -### 1.4 Hyperlinks and third party content +### 1.4 Hyperlinks and third-party content -The Software and / or the documentation may contain hyperlinks to the web pages of third parties or references to third party content. Siemens shall have no liability for the contents of such web pages and does not make representations about or endorse such web pages or their contents as its own, as Siemens does not control the information on such web pages and is not responsible for the contents and information given thereon. The use of such web pages shall be Your sole risk. +The Licensed Material may contain hyperlinks to the web pages of third parties or references to third-party content, including but not limited to screenshots, explanations for third-party products / websites / manuals (all together "third-party content"). All trademark rights of the referenced websites and of the third-party content are owned by third parties. Siemens shall have no liability for the third-party contents of such web pages or references and does not make representations about or endorse such web pages or their contents as its own, as Siemens does not control the information on such web pages and is not responsible for the contents and information given thereon. The use of such web pages or third-party content shall be Your sole risk. -## 2. Open Source License for Software provided in source code and the generated source code +## 2. License Grant -In case the Software contains or generates source code the following open source license (Open license terms) shall apply for such source code: +Siemens grants You the royalty-free and non-exclusive right to use, have used the Licensed Material by technically trained personnel and for the intended purpose only. - MIT License - - Copyright 2022 Siemens AG +### 2.1 Licensed Material provided in object code and included third-party components - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +All portions of the Licensed Material that are provided in object code format. You shall not decompile, translate, extract, modify or distribute the software, unless explicitly granted in the open source license according to article 2.2. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Insofar as open source software is included in the Licensed Material such open source software is listed in the Readme_OSS file of the Software. You are entitled to use the open source software in accordance with the respective applicable license conditions of the open source software. These open source software license conditions are included with software and shall prevail over these Royalty-Free Siemens Licensed Material Conditions. The open source software license conditions shall have priority also in relation to the proprietary Siemens components insofar as the open source software license conditions grant You certain rights of use on the basis of the connection of open source software components with proprietary Siemens components. -To the extent there is a conflict between this terms and conditions and the Open License Terms, the Open License Terms shall prevail over this terms and conditions with regard to source code. +The Licensed Material may, in addition to open source software, contain other licensed software, i.e. software which was not developed by Siemens itself, but which Siemens has obtained from third parties, e.g. Microsoft Ireland Operations Ltd, under a license. If You shall receive in such case the conditions of the respective licensor of the licensed software in the Readme_OSS file, these shall apply to the liability of the licensor in relation to You. In terms of the liability of Siemens to You, these Royalty-Free Siemens Licensed Material Conditions shall apply in each case. -You acknowledge and agree that Siemens provides no warranties, express or implied, for the open source software itself. Siemens shall have no liability nor shall Siemens provide any indemnification whatsoever in respect of Your distribution or modification of the open source software. +### 2.2 Open Source License for Licensed Material provided in source code and the generated source code -## 3. Software provided in object code +In case the Licensed Material contains or generates source code and there are no Restrictions according to defined in article 2.3 that opposes or restricts this, the following open source license ("Open License Terms") shall apply: -For all portions of the Software that are provided in object code format the following conditions shall apply ("Royalty-Free Siemens Software Conditions"): + MIT License -### 3.1 License Grant + Copyright 2022 Siemens AG -Siemens grants You the royalty-free, non-exclusive, non-sublicensable and non-transferable right to use, have used the Software by technically trained personnel and for the intended purpose only. + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -### 3.2 Included third-party software components + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -Insofar as Open Source Software is included in the Software, such Open Source Software is listed in the Readme_OSS file of the Software. You are entitled to use the Open Source Software in accordance with the respective applicable license conditions of the Open Source Software. These OSS license conditions are included with Software and shall prevail over these Royalty-Free Siemens Software Conditions. The Open Source Software license conditions shall have priority also in relation to the proprietary Siemens components insofar as the Open Source Software license conditions grant You certain rights of use on the basis of the connection of OSS components with proprietary Siemens components. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Siemens shall make available to You, at Your request, the Open Source Software source code in return for payment of a fee to compensate for expenses insofar as the license conditions of the Open Source Software require such release of the source code. +To the extent there is a conflict between this terms and conditions and the Open License Terms, the Open License Terms shall prevail over this terms and conditions with regard to source code. + +You acknowledge and agree that Siemens provides no warranties, express or implied, for the open source software itself. Siemens shall have no liability nor shall Siemens provide any indemnification whatsoever in respect of Your distribution or modification of the open source software. -The Software may, in addition to Open Source Software, contain other licensed software, i.e. software which was not developed by Siemens itself, but which Siemens has obtained from third parties, e.g. Microsoft Ireland Operations Ltd, under a license. If You shall receive in such case the conditions of the respective licensor of the licensed software in the Readme_OSS file, these shall apply to the liability of the licensor in relation to You. In terms of the liability of Siemens to You, these Royalty-Free Siemens Software Conditions shall apply in each case. +### 2.3 Restrictions -### 3.3 Disclaimer of liability +You shall comply with all current restrictions and obligations – if any available – provided in an optional file named "RESTRICTIONS.md" or otherwise associated with the respective part of the Licensed Material ("Restrictions"). -Siemens shall not assume any liability, for any legal reason whatsoever, including, without limitation, liability for the usability, availability, completeness and freedom from defects of the Software as well as for the Licensed Material and any damage caused thereby. This shall not apply in cases of mandatory liability, for example product liability law or in cases of intent, gross negligence, or culpable loss of life, bodily injury or damage to health, non-compliance with a guarantee, fraudulent non-disclosure of a defect, or culpable breach of material contractual obligations. Claims for damages arising from a breach of material contractual obligations shall however be limited to the foreseeable damage typical of the type of agreement, unless liability arises from intent or gross negligence or is based on loss of life, bodily injury or damage to health. The foregoing provisions do not imply any change in the burden of proof to Your detriment. You shall indemnify Siemens against existing or future claims of third parties in this connection except where Siemens is mandatorily liable. +## 3 Disclaimer of liability -By using the Software and the Licensed Material, You acknowledge that Siemens cannot be held liable for any damage beyond the liability provisions described. +Siemens shall not assume any liability, for any legal reason whatsoever, including, without limitation, liability for the usability, availability, completeness and freedom from defects of the Licensed Material and any damage caused thereby. This shall not apply in cases of mandatory liability, for example product liability law or in cases of intent, gross negligence, or culpable loss of life, bodily injury or damage to health, non-compliance with a guarantee, fraudulent non-disclosure of a defect, or culpable breach of material contractual obligations. Claims for damages arising from a breach of material contractual obligations shall however be limited to the foreseeable damage typical of the type of agreement, unless liability arises from intent or gross negligence or is based on loss of life, bodily injury or damage to health. The foregoing provisions do not imply any change in the burden of proof to Your detriment. You shall indemnify Siemens against existing or future claims of third parties in this connection except where Siemens is mandatorily liable. -Royalty-Free Software License Version 1.2 – 26.07.2023 +By using the Licensed Material, You acknowledge that Siemens cannot be held liable for any damage beyond the liability provisions described. From ce799a3e2f4ada31b1530d8482c01d083891f176 Mon Sep 17 00:00:00 2001 From: Christof Ochs Date: Mon, 29 Jun 2026 15:29:50 +0200 Subject: [PATCH 3/3] chore: update codeowners --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 6d9dab6..91c6645 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,4 @@ # These owners will be the default owners for everything in the repo. # Unless a later match takes precedence, the listed user will be # requested for review when someone opens a pull request. -@christof.ochs @KPirmer \ No newline at end of file +* @simatic-ax/pma-maintainer @christof.ochs @KPirmer