diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..8f2b060 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,179 @@ +// Settings for Copilot usage in this project + +// 1. Code Generation Guidelines: +// - Always generate code in IEC61131-3 Structured Text (ST) format. +// - All functions, function blocks, classes, methods and types must include inline documentation in the following format: +// /// +// /// Input: +// /// Returns: +// Example: +// /// Converts a subset of a CHAR array to a string. +// /// Input: arr - Input CHAR array to convert. +// /// startIdx - Start index of the subset. +// /// endIdx - End index of the subset. +// /// Returns: A string representation of the specified subset of the CHAR array. +// FUNCTION ToString : STRING +// VAR_INPUT +// arr : ARRAY[*] OF CHAR; // Input CHAR array to convert +// startIdx : INT; // Start index of the subset +// endIdx : INT; // End index of the subset +// END_VAR +// ; +// END_FUNCTION + +// 2. Unit Test Guidelines: +// Test-Files shall be stored in the folder `test`. +// - Use AxUnit for unit testing. +// - Tests should follow the structure below: +// - {TestFixture} to define a test class. +// - {Test} for individual test methods. +// - Support parameterized tests using {Test(...)} annotations. +// Example: +// USING AxUnit.Assert; +// NAMESPACE AnyNamespace +// {TestFixture} +// CLASS TestClass +// VAR +// val : LINT; +// val2 : ULINT; +// res : BOOL; +// END_VAR +// +// {Test} +// METHOD PUBLIC Convert_STRING_0_TO_LINT_0 +// res := StringToAnyInt(str := '0', value => val); +// Equal(expected := 0, actual := val); +// Equal(expected := TRUE, actual := res); +// END_METHOD +// +// {Test(str := STRING#'18446744073709551746', value := ULINT#0, success := FALSE)} +// {Test(str := STRING#'18446744073709551800', value := ULINT#0, success := FALSE)} +// METHOD PUBLIC Convert_STRING_TO_ULINT +// VAR_INPUT +// str : STRING; +// value : ULINT; +// success : BOOL; +// END_VAR +// VAR_TEMP +// resVal : ULINT; +// END_VAR +// res := StringToULint(str := str, value => resVal); +// Equal(expected := value, actual := resVal); +// Equal(expected := success, actual := res); +// END_METHOD +// END_CLASS +// END_NAMESPACE + +// 3. Documentation Rules: +// - All types, functions, and methods must include inline documentation. +// - Use the following format for documentation: +// /// +// /// Input: +// /// Returns: +// - Ensure that all parameters and return values are clearly described. +// - Documentation must be placed directly above the method or function it describes. + +// 4. File Organization Rules: +// - Place all source files in the `src` folder. +// - Place all test files in the `test` folder. +// - Use descriptive filenames that reflect the functionality of the file. + +// 5. Naming Conventions: +// - Use PascalCase for function and type names (e.g., `ToString`, `SimotionDateTime`). + +// 6. Code Format Rules: +// - Always generate code in IEC61131-3 Structured Text (ST) format. + +// 7. Constant Declaration Rules: +// - Constants, like 1.0 or 23 except for `INT`, `BOOL` and `LREAL`, must always include explicit type annotations. +// Examples: +// - REAL#1.0 +// - ULINT#1 +// - SINT#23 + +// 8. Return Statement Rules: +// - `RETURN` cannot take a return value. +// - Return values must always be assigned to the function or method name before using `RETURN`. +// Example: +// FunctionName := ReturnValue; +// RETURN; + +// 9. Method and Function Rules: +// - All methods and functions must contain at least one statement or a semicolon (`;`). + +// 10. Unit Tests +// - Unit Tests must be declared in a namespace + +// 11. Structured Text +// 11.1 Initialization of arrays +// - array must initialized in the declaration +// 11.1.1 One dimensional arrays +// - arr : ARRAY[1..100] OF INT := [50(2), 50(3)]; +// - A: ARRAY[1..2, 1..3] of INT := [1, 2, 3, 4, 5, 6]; +// 11.1.2 Two dimensional arrays +// two_dim_array : ARRAY[0..2, 0..2] OF INT := [1, 2, 3, 4, 5, 6, 7, 8, 9]; +// // [0, 0] := 1, [0, 1] := 2, [0, 2] := 3 +// // [1, 0] := 4, [1, 1] := 5, [1, 2] := 6 +// // [2, 0] := 7, [2, 1] := 8, [2, 2] := 9 +// 11.2.0 Types +// 11.2.1 Enumerations +// TYPE +// Colours : (RED, GREEN, BLUE) := RED; +// END_TYPE +// Usage: t : Colours := Colours#RED; +// 11.3.0 Control structures +// 11.3.1 If statement +// IF (valueofBool) THEN +// ; +// ELSE +// ; +// END_IF; + +// 12. Function Block and Class Guidelines: +// - Function blocks and classes must include inline documentation in the following format: +// /// +// /// Input: +// /// Returns: +// - Documentation must be placed directly above the method or function block it describes. +// Example for a function block: +// /// A function block for controlling a motor. +// FUNCTION_BLOCK MotorControl +// VAR_INPUT +// speed : REAL; // Desired motor speed +// direction : BOOL; // Motor direction (TRUE = forward, FALSE = reverse) +// END_VAR +// VAR_OUTPUT +// status : BOOL; // Motor status (TRUE = running, FALSE = stopped) +// END_VAR +// ; +// END_FUNCTION_BLOCK +// +// Example for a class: +// /// A class representing a 3D point. +// CLASS Point3D +// VAR +// x : REAL; // X-coordinate +// y : REAL; // Y-coordinate +// z : REAL; // Z-coordinate +// END_VAR +// /// Calculates the distance to another 3D point. +// /// Input: other - Another 3D point. +// /// Returns: The distance to the other point as a REAL value. +// METHOD PUBLIC GetDistance : REAL +// VAR_INPUT +// other : Point3D; // Another 3D point +// END_VAR +// ; +// END_METHOD +// /// Converts the 3D point to a string representation. +// /// Input: None. +// /// Returns: A string representation of the 3D point in the format "(x, y, z)". +// METHOD PUBLIC ToString : STRING +// ; +// END_METHOD +// END_CLASS +// 14. Interfaces +// /// Interface for calculation classes. +// INTERFACE ICalculation +// METHOD Calculate : REAL END_METHOD // Calculates something +// END_INTERFACE diff --git a/apax-lock.json b/apax-lock.json index 5727b0b..0401b06 100644 --- a/apax-lock.json +++ b/apax-lock.json @@ -12,65 +12,14 @@ }, "devDependencies": { "@ax/sdk": "^2504.0.0", - "@simatic-ax/snippetscollection": "^1.0.0" + "@simatic-ax/snippetscollection": "^1.0.0", + "@ax/axunit-mocking": "8.0.33" }, "catalogs": { "@ax/simatic-ax": "^2504.0.0" } }, "packages": { - "@ax/sdk": { - "name": "@ax/sdk", - "version": "2504.0.0", - "integrity": "sha512-N/EKc3cmIEtfuHaz1q7sz4Rg3VA3xnS+hBXvtrT1kz9Aslm0In+v3lehzJoKtjhM5/RwX3yqjuIYtPKOY0nNqQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdk/-/sdk-2504.0.0.tgz", - "dependencies": { - "@ax/apax-build": "2.0.20", - "@ax/axunitst": "8.0.33", - "@ax/axunitst-ls-contrib": "8.0.33", - "@ax/certificate-management": "1.2.0", - "@ax/diagnostic-buffer": "1.3.2", - "@ax/hw-s7-1500": "3.0.0", - "@ax/hwc": "3.0.0", - "@ax/hwld": "3.0.0", - "@ax/mod": "1.7.6", - "@ax/mon": "1.7.6", - "@ax/performance-info": "1.1.2", - "@ax/plc-control": "1.2.50", - "@ax/plc-info": "3.1.0", - "@ax/sdb": "1.7.6", - "@ax/simatic-package-tool": "2.0.15", - "@ax/sld": "3.2.4", - "@ax/st-ls": "10.0.85", - "@ax/st-opcua.stc-plugin": "1.0.0", - "@ax/st-resources.stc-plugin": "3.0.23", - "@ax/stc": "10.0.85", - "@ax/target-llvm": "10.0.85", - "@ax/target-mc7plus": "10.0.85", - "@ax/trace": "2.9.0" - } - }, - "@ax/system-timer": { - "name": "@ax/system-timer", - "version": "10.0.24", - "integrity": "sha512-n2ZW2Mbh+f5IHW7+yWgHGR8ddFtq7Px73rGZg/Iypvl2sfP8QZ4fz++M7rQGW+Jvk2w4NPjY1JqieLrpas27Lw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-timer/-/system-timer-10.0.24.tgz", - "dependencies": {} - }, - "@ax/system-math": { - "name": "@ax/system-math", - "version": "10.0.24", - "integrity": "sha512-bdyToqd9eFG89/Xp/LjaCBC/6yNmy3Z2ynXb/KLsO0avJtgszWtVDW/0yLpB9RgGmzh9vh9feAS7AKgVv1cSPQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-math/-/system-math-10.0.24.tgz", - "dependencies": {} - }, - "@simatic-ax/snippetscollection": { - "name": "@simatic-ax/snippetscollection", - "version": "1.0.0", - "integrity": "sha512-8BNldIIGZuuLSiMjJxcBmHt7sL7kSlc0dss88BcrfnL/7iXPmHwhlnh4XobcVoOHXaz5f8cbMbXCUrffBIwecQ==", - "resolved": "https://npm.pkg.github.com/download/@simatic-ax/snippetscollection/1.0.0/60302d7e0da15a914ce0126503398063a42e1917", - "dependencies": {} - }, "@ax/apax-build": { "name": "@ax/apax-build", "version": "2.0.20", @@ -78,6 +27,17 @@ "resolved": "https://registry.simatic-ax.siemens.io/@ax/apax-build/-/apax-build-2.0.20.tgz", "dependencies": {} }, + "@ax/axunit-mocking": { + "name": "@ax/axunit-mocking", + "version": "8.0.33", + "integrity": "sha512-lv5kR6zmh1kBaAoeDwhx2/WiXkenf8QTRY04xVTv1vbM55V1eLq/B4L2Zp7muPGBmyhlck1rJ12IGiv0LuBi6Q==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunit-mocking/-/axunit-mocking-8.0.33.tgz", + "dependencies": { + "@ax/target-mocking": "8.0.33", + "@ax/mocking-library": "8.0.33", + "@ax/mocking-ls-contrib": "8.0.33" + } + }, "@ax/axunitst": { "name": "@ax/axunitst", "version": "8.0.33", @@ -89,6 +49,15 @@ "@ax/build-native": "^16.0.3" } }, + "@ax/axunitst-library": { + "name": "@ax/axunitst-library", + "version": "8.0.33", + "integrity": "sha512-foVDUnQqjUmHiHGhf7Ty0K+HhlXEXM5r0SjnZgJlPFZtgnAI5yvGspGRq+/0zZjMrmEg8xnRDhWZLVtJsoxEIg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-library/-/axunitst-library-8.0.33.tgz", + "dependencies": { + "@ax/system-strings": "^10.0.24" + } + }, "@ax/axunitst-ls-contrib": { "name": "@ax/axunitst-ls-contrib", "version": "8.0.33", @@ -96,13 +65,22 @@ "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-ls-contrib/-/axunitst-ls-contrib-8.0.33.tgz", "dependencies": {} }, - "@ax/certificate-management": { - "name": "@ax/certificate-management", - "version": "1.2.0", - "integrity": "sha512-k3iKoFTK51yR84+wje0Flaj8o3vid4+KkUOSjCBwcNXXAmIzMmbklPxbEwxF4mG4v0LrpbAjTgq6fHBP+DEKGg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/certificate-management/-/certificate-management-1.2.0.tgz", + "@ax/axunitst-test-director": { + "name": "@ax/axunitst-test-director", + "version": "8.0.33", + "integrity": "sha512-rH51qi/29Tz5Q5ZFTwtpKskpdg/M68ml+CEuhUYfzrQhUcEyGeJQSKBNXFcNrXyxcekD5aA1TwxPU2sPN9hMuA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-test-director/-/axunitst-test-director-8.0.33.tgz", + "dependencies": { + "@ax/axunitst-test-director-linux-x64": "8.0.33", + "@ax/axunitst-test-director-win-x64": "8.0.33" + } + }, + "@ax/axunitst-test-director-linux-x64": { + "name": "@ax/axunitst-test-director-linux-x64", + "version": "8.0.33", + "integrity": "sha512-07ywM1OZiA2giHDXiGkVjNrgKI0TTasZo7tdpyg8mpkuAO7Tu8nXSBUFN/wGg3hVkmS81vh1cLnHHMIa3kkr9A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-test-director-linux-x64/-/axunitst-test-director-linux-x64-8.0.33.tgz", "os": [ - "win32", "linux" ], "cpu": [ @@ -110,88 +88,60 @@ ], "dependencies": {} }, - "@ax/diagnostic-buffer": { - "name": "@ax/diagnostic-buffer", - "version": "1.3.2", - "integrity": "sha512-MQQMB81qRyd8vq72obalo7zvITscULbQwLwdCKE9z8hvlZBtpwxat7fuDiy3VkRc9UYUgFFO/hNAKjRGk4dK5Q==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/diagnostic-buffer/-/diagnostic-buffer-1.3.2.tgz", - "dependencies": { - "@ax/diagnostic-buffer-win-x64": "1.3.2", - "@ax/diagnostic-buffer-linux-x64": "1.3.2" - } - }, - "@ax/hw-s7-1500": { - "name": "@ax/hw-s7-1500", - "version": "3.0.0", - "integrity": "sha512-iAyTgiwcjdkb25ofPz0UNtMAtTBXOfoaTq/60gjGAV9LeJQ+Dx4v5JkRNcMSCz1bX2TyKYfhTJSxtqdgJj5Xhg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/hw-s7-1500/-/hw-s7-1500-3.0.0.tgz", + "@ax/axunitst-test-director-win-x64": { + "name": "@ax/axunitst-test-director-win-x64", + "version": "8.0.33", + "integrity": "sha512-dGWVs5AqvedaUN52V8e+7KUq/UQju/ZXxP/W+vly9bG60sNIqLiLvtoNiBt32me4nWRDdKzhn+/uKCw5ITDJxA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-test-director-win-x64/-/axunitst-test-director-win-x64-8.0.33.tgz", + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], "dependencies": {} }, - "@ax/hwc": { - "name": "@ax/hwc", - "version": "3.0.0", - "integrity": "sha512-kMgipV3XWLt3VpP8G5EDu+Vv3ki2eQLpBwUtt49CBuWXGYs4Rajeb37kML/k4gs/i9TQBRcSBQZHBZti8us1xQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/hwc/-/hwc-3.0.0.tgz", + "@ax/build-native": { + "name": "@ax/build-native", + "version": "16.1.17", + "integrity": "sha512-MxzhTXI425dwQgqmhDmVVM885GPT39e6NPRegUZnXHtMUNlxR82F4oifc5rr9JmBwAM2XZ/TDKi/TBHNCaNhpg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/build-native/-/build-native-16.1.17.tgz", "dependencies": { - "@ax/hwc-win-x64": "3.0.0", - "@ax/hwc-linux-x64": "3.0.0" + "@ax/build-native-winx64": "16.1.17", + "@ax/build-native-linux": "16.1.17" } }, - "@ax/hwld": { - "name": "@ax/hwld", - "version": "3.0.0", - "integrity": "sha512-l84LaJJUY6/ztD9ikFFZNbqv8Z6+KnNaoqWkZqtzHRjS+W/wU9NBkoTu9dR4leQsoSgSWKa9cFtSHyzdfTPuCg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/hwld/-/hwld-3.0.0.tgz", + "@ax/build-native-linux": { + "name": "@ax/build-native-linux", + "version": "16.1.17", + "integrity": "sha512-45mKw828x0akm1CENzNefVhggMApddltdCgocM/n6snMWxPRJCmhazFmVxTSomOnOsEMuZDsl0eHUl4IvO/oZQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/build-native-linux/-/build-native-linux-16.1.17.tgz", + "os": [ + "linux" + ], "cpu": [ "x64" ], "dependencies": {} }, - "@ax/mod": { - "name": "@ax/mod", - "version": "1.7.6", - "integrity": "sha512-+8eeLUJGyImq4YmgavJqPA9yMFt+/ASy5NiuHjK1xOJ84LoHQ6piGr3Yd0UbEHcieh9FirYmAKHwjMn3ftJl+A==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/mod/-/mod-1.7.6.tgz", - "dependencies": { - "@ax/mod-win-x64": "1.7.6", - "@ax/mod-linux-x64": "1.7.6" - } - }, - "@ax/mon": { - "name": "@ax/mon", - "version": "1.7.6", - "integrity": "sha512-LCz+0VKgEgdBGLQt7H/VCsEIu+rbFXkFPvfjry3/aBif8r5GE2hOTUmujnSiBgNDujpnoRQtbO7eqKCbwjb41A==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/mon/-/mon-1.7.6.tgz", - "dependencies": { - "@ax/mon-win-x64": "1.7.6", - "@ax/mon-linux-x64": "1.7.6" - } - }, - "@ax/performance-info": { - "name": "@ax/performance-info", - "version": "1.1.2", - "integrity": "sha512-CIgPtJrAUL/akDShp7fUvH9x+AxrI2QDkbH6zJ3sCFs25Auo8sLXWx+h60fG6m11Z+hNVDqe11VY6u0r7a9I5Q==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/performance-info/-/performance-info-1.1.2.tgz", - "dependencies": { - "@ax/performance-info-win-x64": "1.1.2", - "@ax/performance-info-linux-x64": "1.1.2" - } - }, - "@ax/plc-control": { - "name": "@ax/plc-control", - "version": "1.2.50", - "integrity": "sha512-BH06GYbQc3Y9fkXU25VafYAnWUC89WtcvBxXUQ2Np0lqMip30QRCE3kzET7v7iMNz1zpvVZnnh2Wnngkyu0bqw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/plc-control/-/plc-control-1.2.50.tgz", + "@ax/build-native-winx64": { + "name": "@ax/build-native-winx64", + "version": "16.1.17", + "integrity": "sha512-qv8r2ahouOQivHCWveGX/ktNTYvosf/aiHvZ6w1h7wAjAOgTjf7zhFZs07AquFmQ9rcUP0ZNPRBFziSvEmOmpA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/build-native-winx64/-/build-native-winx64-16.1.17.tgz", + "os": [ + "win32" + ], "cpu": [ "x64" ], "dependencies": {} }, - "@ax/plc-info": { - "name": "@ax/plc-info", - "version": "3.1.0", - "integrity": "sha512-BvmreWSiWO/h2deSP0hty6kwzZRobQ3bkvKmq3ejsjYtrQtf8QcC+BzHevRxyLxVYCllVmLNuynPvISYSaFQbw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/plc-info/-/plc-info-3.1.0.tgz", + "@ax/certificate-management": { + "name": "@ax/certificate-management", + "version": "1.2.0", + "integrity": "sha512-k3iKoFTK51yR84+wje0Flaj8o3vid4+KkUOSjCBwcNXXAmIzMmbklPxbEwxF4mG4v0LrpbAjTgq6fHBP+DEKGg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/certificate-management/-/certificate-management-1.2.0.tgz", "os": [ "win32", "linux" @@ -201,126 +151,29 @@ ], "dependencies": {} }, - "@ax/sdb": { - "name": "@ax/sdb", - "version": "1.7.6", - "integrity": "sha512-94lnXmuoPezjPbqq/YT+XXI7rzu0zKeac8smULI00p1H2bsTFsHYwsW/rHc1LAsKSxKAhsUTLme56ahpyck2zw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdb/-/sdb-1.7.6.tgz", + "@ax/diagnostic-buffer": { + "name": "@ax/diagnostic-buffer", + "version": "1.3.2", + "integrity": "sha512-MQQMB81qRyd8vq72obalo7zvITscULbQwLwdCKE9z8hvlZBtpwxat7fuDiy3VkRc9UYUgFFO/hNAKjRGk4dK5Q==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/diagnostic-buffer/-/diagnostic-buffer-1.3.2.tgz", "dependencies": { - "@ax/sdb-win-x64": "1.7.6", - "@ax/sdb-linux-x64": "1.7.6" + "@ax/diagnostic-buffer-win-x64": "1.3.2", + "@ax/diagnostic-buffer-linux-x64": "1.3.2" } }, - "@ax/simatic-package-tool": { - "name": "@ax/simatic-package-tool", - "version": "2.0.15", - "integrity": "sha512-oUZiRl32M2IXYxhZaHrHmwOopdhK1Pq92F+uGV0u9AI4MFsw+GKTBCygp2SNqwPckEjPxgy1RwKgHgEI88yyrA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/simatic-package-tool/-/simatic-package-tool-2.0.15.tgz", - "dependencies": {} - }, - "@ax/sld": { - "name": "@ax/sld", - "version": "3.2.4", - "integrity": "sha512-KRGKm2dCl9alOcOc8Kty7NTHwVsyT19HBDP8k5Sv3L8Dj+S5Y4GinHoFNrlXv2wQVGNXV93ESMYFvjxdsqrOvw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/sld/-/sld-3.2.4.tgz", + "@ax/diagnostic-buffer-linux-x64": { + "name": "@ax/diagnostic-buffer-linux-x64", + "version": "1.3.2", + "integrity": "sha512-pnJWcBxVR9bfuNEcoxSVoVSfkcy2EaOo/mLUAL0yxcZqVyVxk29mQ+NOL6cflUwsMk8xdV5z2/TT1LUPN6Hw7Q==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/diagnostic-buffer-linux-x64/-/diagnostic-buffer-linux-x64-1.3.2.tgz", + "os": [ + "linux" + ], "cpu": [ "x64" ], "dependencies": {} }, - "@ax/st-ls": { - "name": "@ax/st-ls", - "version": "10.0.85", - "integrity": "sha512-dBi/eQm7ImAIW3vBHrF0vTIq3ZD5IkElMfBQ/ep3WHQzs9uT3K5kYgTX5tuXj6epGGsvs52JCCxJSuyavDL8tg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-ls/-/st-ls-10.0.85.tgz", - "dependencies": { - "@ax/st-ls-win-x64": "10.0.85", - "@ax/st-ls-linux-x64": "10.0.85" - } - }, - "@ax/st-opcua.stc-plugin": { - "name": "@ax/st-opcua.stc-plugin", - "version": "1.0.0", - "integrity": "sha512-vrcGgmscXJYea+j8fL4iq+MPNBzvK1ObAzcuZ9NYNFx8IfO94z2Vo8eiNBVAOH8tqycgKIfwzf1KRsqXsimgUg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-opcua.stc-plugin/-/st-opcua.stc-plugin-1.0.0.tgz", - "dependencies": {} - }, - "@ax/st-resources.stc-plugin": { - "name": "@ax/st-resources.stc-plugin", - "version": "3.0.23", - "integrity": "sha512-lWYWtrrWnd+keI4sw+RcBjEz9oTVgV6wvTAnb2AcE3PHemiirvY52vl6w2OqIFbUMqfhVqpD7KDd83o/HEsAhg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-resources.stc-plugin/-/st-resources.stc-plugin-3.0.23.tgz", - "dependencies": {} - }, - "@ax/stc": { - "name": "@ax/stc", - "version": "10.0.85", - "integrity": "sha512-2zgkFaQmYp9E6Twv/C05zJn37Ym+7UGFUs9aunabp+opWqlYioIToegXLzSlH5gEZ8wRZoIIJQ1YzH+9fxY65g==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/stc/-/stc-10.0.85.tgz", - "dependencies": { - "@ax/stc-win-x64": "10.0.85", - "@ax/stc-linux-x64": "10.0.85" - } - }, - "@ax/target-llvm": { - "name": "@ax/target-llvm", - "version": "10.0.85", - "integrity": "sha512-3pWLWB/CaJHeJgRZDxoWi8WIx1Nipk5c4rkyhjrdUhx2nMFU0Ijb7RoeMVvcDHeQJOi37YoHWz4k7ZlrRJRpNw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-llvm/-/target-llvm-10.0.85.tgz", - "dependencies": { - "@ax/target-llvm-win-x64": "10.0.85", - "@ax/target-llvm-linux-x64": "10.0.85" - } - }, - "@ax/target-mc7plus": { - "name": "@ax/target-mc7plus", - "version": "10.0.85", - "integrity": "sha512-b2hto1AUqCWCn3n7DS6XmBRc7XGASyLKLcRB8OEvIIgRPUCujpeKFY6Q0qwt3cbtdp9l1ticQF6/4RvmWcWGOg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mc7plus/-/target-mc7plus-10.0.85.tgz", - "dependencies": { - "@ax/target-mc7plus-win-x64": "10.0.85", - "@ax/target-mc7plus-linux-x64": "10.0.85" - } - }, - "@ax/trace": { - "name": "@ax/trace", - "version": "2.9.0", - "integrity": "sha512-ZTNI6hF+U6184d9hcZEMN+A/cTu8JhAG4N5NrlmoEudvgq+iWl++LYZwr5oVNCxZ+0tdOphOKmoQEYJTZGE2/A==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/trace/-/trace-2.9.0.tgz", - "dependencies": { - "@ax/trace-win-x64": "2.9.0", - "@ax/trace-linux-x64": "2.9.0" - } - }, - "@ax/axunitst-library": { - "name": "@ax/axunitst-library", - "version": "8.0.33", - "integrity": "sha512-foVDUnQqjUmHiHGhf7Ty0K+HhlXEXM5r0SjnZgJlPFZtgnAI5yvGspGRq+/0zZjMrmEg8xnRDhWZLVtJsoxEIg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-library/-/axunitst-library-8.0.33.tgz", - "dependencies": { - "@ax/system-strings": "^10.0.24" - } - }, - "@ax/axunitst-test-director": { - "name": "@ax/axunitst-test-director", - "version": "8.0.33", - "integrity": "sha512-rH51qi/29Tz5Q5ZFTwtpKskpdg/M68ml+CEuhUYfzrQhUcEyGeJQSKBNXFcNrXyxcekD5aA1TwxPU2sPN9hMuA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-test-director/-/axunitst-test-director-8.0.33.tgz", - "dependencies": { - "@ax/axunitst-test-director-linux-x64": "8.0.33", - "@ax/axunitst-test-director-win-x64": "8.0.33" - } - }, - "@ax/build-native": { - "name": "@ax/build-native", - "version": "16.1.17", - "integrity": "sha512-MxzhTXI425dwQgqmhDmVVM885GPT39e6NPRegUZnXHtMUNlxR82F4oifc5rr9JmBwAM2XZ/TDKi/TBHNCaNhpg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/build-native/-/build-native-16.1.17.tgz", - "dependencies": { - "@ax/build-native-winx64": "16.1.17", - "@ax/build-native-linux": "16.1.17" - } - }, "@ax/diagnostic-buffer-win-x64": { "name": "@ax/diagnostic-buffer-win-x64", "version": "1.3.2", @@ -334,11 +187,28 @@ ], "dependencies": {} }, - "@ax/diagnostic-buffer-linux-x64": { - "name": "@ax/diagnostic-buffer-linux-x64", - "version": "1.3.2", - "integrity": "sha512-pnJWcBxVR9bfuNEcoxSVoVSfkcy2EaOo/mLUAL0yxcZqVyVxk29mQ+NOL6cflUwsMk8xdV5z2/TT1LUPN6Hw7Q==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/diagnostic-buffer-linux-x64/-/diagnostic-buffer-linux-x64-1.3.2.tgz", + "@ax/hw-s7-1500": { + "name": "@ax/hw-s7-1500", + "version": "3.0.0", + "integrity": "sha512-iAyTgiwcjdkb25ofPz0UNtMAtTBXOfoaTq/60gjGAV9LeJQ+Dx4v5JkRNcMSCz1bX2TyKYfhTJSxtqdgJj5Xhg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/hw-s7-1500/-/hw-s7-1500-3.0.0.tgz", + "dependencies": {} + }, + "@ax/hwc": { + "name": "@ax/hwc", + "version": "3.0.0", + "integrity": "sha512-kMgipV3XWLt3VpP8G5EDu+Vv3ki2eQLpBwUtt49CBuWXGYs4Rajeb37kML/k4gs/i9TQBRcSBQZHBZti8us1xQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/hwc/-/hwc-3.0.0.tgz", + "dependencies": { + "@ax/hwc-win-x64": "3.0.0", + "@ax/hwc-linux-x64": "3.0.0" + } + }, + "@ax/hwc-linux-x64": { + "name": "@ax/hwc-linux-x64", + "version": "3.0.0", + "integrity": "sha512-apyeDcxX0XD3q/9Oc0SfPIO9GLn60owsDg/xlu4WNVVjP20OhMnoc5l1f+p1nOJMf0I/tMfe4UIPxKQ6LxSTVQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/hwc-linux-x64/-/hwc-linux-x64-3.0.0.tgz", "os": [ "linux" ], @@ -360,11 +230,45 @@ ], "dependencies": {} }, - "@ax/hwc-linux-x64": { - "name": "@ax/hwc-linux-x64", + "@ax/hwld": { + "name": "@ax/hwld", "version": "3.0.0", - "integrity": "sha512-apyeDcxX0XD3q/9Oc0SfPIO9GLn60owsDg/xlu4WNVVjP20OhMnoc5l1f+p1nOJMf0I/tMfe4UIPxKQ6LxSTVQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/hwc-linux-x64/-/hwc-linux-x64-3.0.0.tgz", + "integrity": "sha512-l84LaJJUY6/ztD9ikFFZNbqv8Z6+KnNaoqWkZqtzHRjS+W/wU9NBkoTu9dR4leQsoSgSWKa9cFtSHyzdfTPuCg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/hwld/-/hwld-3.0.0.tgz", + "cpu": [ + "x64" + ], + "dependencies": {} + }, + "@ax/mocking-library": { + "name": "@ax/mocking-library", + "version": "8.0.33", + "integrity": "sha512-QO3YsqI4JTrYSmWaGC8Rl/X7ks97EVT9++Y3h4rTO3ZFp7GATKyN6KokQoq1QDwKdODIR7TLtqGymsBdwL0tzQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/mocking-library/-/mocking-library-8.0.33.tgz", + "dependencies": {} + }, + "@ax/mocking-ls-contrib": { + "name": "@ax/mocking-ls-contrib", + "version": "8.0.33", + "integrity": "sha512-Rhd89jqT/yPic9eCydHF/1F66xNNc+r+84aaoiSsx3Fyvey402ML0jsYcxwfx7SFoNJ8uOMCk1NPzljQd8Aqeg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/mocking-ls-contrib/-/mocking-ls-contrib-8.0.33.tgz", + "dependencies": {} + }, + "@ax/mod": { + "name": "@ax/mod", + "version": "1.7.6", + "integrity": "sha512-+8eeLUJGyImq4YmgavJqPA9yMFt+/ASy5NiuHjK1xOJ84LoHQ6piGr3Yd0UbEHcieh9FirYmAKHwjMn3ftJl+A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/mod/-/mod-1.7.6.tgz", + "dependencies": { + "@ax/mod-win-x64": "1.7.6", + "@ax/mod-linux-x64": "1.7.6" + } + }, + "@ax/mod-linux-x64": { + "name": "@ax/mod-linux-x64", + "version": "1.7.6", + "integrity": "sha512-BhncasF8atzlWgQJsU5JgH2kbrUk9bVyk8ftrCY0md/XY5xQBqXFtk3CicljxWs8pEZWEk2/vCfevOnSyTj2/A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/mod-linux-x64/-/mod-linux-x64-1.7.6.tgz", "os": [ "linux" ], @@ -386,11 +290,21 @@ ], "dependencies": {} }, - "@ax/mod-linux-x64": { - "name": "@ax/mod-linux-x64", + "@ax/mon": { + "name": "@ax/mon", "version": "1.7.6", - "integrity": "sha512-BhncasF8atzlWgQJsU5JgH2kbrUk9bVyk8ftrCY0md/XY5xQBqXFtk3CicljxWs8pEZWEk2/vCfevOnSyTj2/A==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/mod-linux-x64/-/mod-linux-x64-1.7.6.tgz", + "integrity": "sha512-LCz+0VKgEgdBGLQt7H/VCsEIu+rbFXkFPvfjry3/aBif8r5GE2hOTUmujnSiBgNDujpnoRQtbO7eqKCbwjb41A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/mon/-/mon-1.7.6.tgz", + "dependencies": { + "@ax/mon-win-x64": "1.7.6", + "@ax/mon-linux-x64": "1.7.6" + } + }, + "@ax/mon-linux-x64": { + "name": "@ax/mon-linux-x64", + "version": "1.7.6", + "integrity": "sha512-cWbb8nQV+rmKf+Hle7r51a5IpHGpFP6FpgeBZyWxqhVCNkDRsUxjH29DkiIFIgmraTRybIHiatyKq/DveoceWA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/mon-linux-x64/-/mon-linux-x64-1.7.6.tgz", "os": [ "linux" ], @@ -412,11 +326,21 @@ ], "dependencies": {} }, - "@ax/mon-linux-x64": { - "name": "@ax/mon-linux-x64", - "version": "1.7.6", - "integrity": "sha512-cWbb8nQV+rmKf+Hle7r51a5IpHGpFP6FpgeBZyWxqhVCNkDRsUxjH29DkiIFIgmraTRybIHiatyKq/DveoceWA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/mon-linux-x64/-/mon-linux-x64-1.7.6.tgz", + "@ax/performance-info": { + "name": "@ax/performance-info", + "version": "1.1.2", + "integrity": "sha512-CIgPtJrAUL/akDShp7fUvH9x+AxrI2QDkbH6zJ3sCFs25Auo8sLXWx+h60fG6m11Z+hNVDqe11VY6u0r7a9I5Q==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/performance-info/-/performance-info-1.1.2.tgz", + "dependencies": { + "@ax/performance-info-win-x64": "1.1.2", + "@ax/performance-info-linux-x64": "1.1.2" + } + }, + "@ax/performance-info-linux-x64": { + "name": "@ax/performance-info-linux-x64", + "version": "1.1.2", + "integrity": "sha512-LkJkE7oYvsHsWz7OujiQcSldE18BbLhJ4478HtMMoU+76dtI8we2boB/EHPr3jSdIS5FztG8l7hZRA3/7GrOrQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/performance-info-linux-x64/-/performance-info-linux-x64-1.1.2.tgz", "os": [ "linux" ], @@ -438,11 +362,45 @@ ], "dependencies": {} }, - "@ax/performance-info-linux-x64": { - "name": "@ax/performance-info-linux-x64", - "version": "1.1.2", - "integrity": "sha512-LkJkE7oYvsHsWz7OujiQcSldE18BbLhJ4478HtMMoU+76dtI8we2boB/EHPr3jSdIS5FztG8l7hZRA3/7GrOrQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/performance-info-linux-x64/-/performance-info-linux-x64-1.1.2.tgz", + "@ax/plc-control": { + "name": "@ax/plc-control", + "version": "1.2.50", + "integrity": "sha512-BH06GYbQc3Y9fkXU25VafYAnWUC89WtcvBxXUQ2Np0lqMip30QRCE3kzET7v7iMNz1zpvVZnnh2Wnngkyu0bqw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/plc-control/-/plc-control-1.2.50.tgz", + "cpu": [ + "x64" + ], + "dependencies": {} + }, + "@ax/plc-info": { + "name": "@ax/plc-info", + "version": "3.1.0", + "integrity": "sha512-BvmreWSiWO/h2deSP0hty6kwzZRobQ3bkvKmq3ejsjYtrQtf8QcC+BzHevRxyLxVYCllVmLNuynPvISYSaFQbw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/plc-info/-/plc-info-3.1.0.tgz", + "os": [ + "win32", + "linux" + ], + "cpu": [ + "x64" + ], + "dependencies": {} + }, + "@ax/sdb": { + "name": "@ax/sdb", + "version": "1.7.6", + "integrity": "sha512-94lnXmuoPezjPbqq/YT+XXI7rzu0zKeac8smULI00p1H2bsTFsHYwsW/rHc1LAsKSxKAhsUTLme56ahpyck2zw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdb/-/sdb-1.7.6.tgz", + "dependencies": { + "@ax/sdb-win-x64": "1.7.6", + "@ax/sdb-linux-x64": "1.7.6" + } + }, + "@ax/sdb-linux-x64": { + "name": "@ax/sdb-linux-x64", + "version": "1.7.6", + "integrity": "sha512-3bbzAYc939iCdzWoIZwKA5j9//mQUOd4XX3659MvQispcABv5vz3zZ8dwyf+nhLXmgTm6IHRwleI57ZsYAI0nA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdb-linux-x64/-/sdb-linux-x64-1.7.6.tgz", "os": [ "linux" ], @@ -451,44 +409,83 @@ ], "dependencies": {} }, - "@ax/sdb-win-x64": { - "name": "@ax/sdb-win-x64", - "version": "1.7.6", - "integrity": "sha512-bx105Qsv0MaK6sOUl7EpX5+KprSpiAer2RWTxn7PKR/7R60eAwU7jwKQOZsq+nDO9KeErhMMNlUeNk6p3FF5hA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdb-win-x64/-/sdb-win-x64-1.7.6.tgz", - "os": [ - "win32" - ], + "@ax/sdb-win-x64": { + "name": "@ax/sdb-win-x64", + "version": "1.7.6", + "integrity": "sha512-bx105Qsv0MaK6sOUl7EpX5+KprSpiAer2RWTxn7PKR/7R60eAwU7jwKQOZsq+nDO9KeErhMMNlUeNk6p3FF5hA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdb-win-x64/-/sdb-win-x64-1.7.6.tgz", + "os": [ + "win32" + ], + "cpu": [ + "x64" + ], + "dependencies": {} + }, + "@ax/sdk": { + "name": "@ax/sdk", + "version": "2504.0.0", + "integrity": "sha512-N/EKc3cmIEtfuHaz1q7sz4Rg3VA3xnS+hBXvtrT1kz9Aslm0In+v3lehzJoKtjhM5/RwX3yqjuIYtPKOY0nNqQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdk/-/sdk-2504.0.0.tgz", + "dependencies": { + "@ax/apax-build": "2.0.20", + "@ax/axunitst": "8.0.33", + "@ax/axunitst-ls-contrib": "8.0.33", + "@ax/certificate-management": "1.2.0", + "@ax/diagnostic-buffer": "1.3.2", + "@ax/hw-s7-1500": "3.0.0", + "@ax/hwc": "3.0.0", + "@ax/hwld": "3.0.0", + "@ax/mod": "1.7.6", + "@ax/mon": "1.7.6", + "@ax/performance-info": "1.1.2", + "@ax/plc-control": "1.2.50", + "@ax/plc-info": "3.1.0", + "@ax/sdb": "1.7.6", + "@ax/simatic-package-tool": "2.0.15", + "@ax/sld": "3.2.4", + "@ax/st-ls": "10.0.85", + "@ax/st-opcua.stc-plugin": "1.0.0", + "@ax/st-resources.stc-plugin": "3.0.23", + "@ax/stc": "10.0.85", + "@ax/target-llvm": "10.0.85", + "@ax/target-mc7plus": "10.0.85", + "@ax/trace": "2.9.0" + } + }, + "@ax/simatic-package-tool": { + "name": "@ax/simatic-package-tool", + "version": "2.0.15", + "integrity": "sha512-oUZiRl32M2IXYxhZaHrHmwOopdhK1Pq92F+uGV0u9AI4MFsw+GKTBCygp2SNqwPckEjPxgy1RwKgHgEI88yyrA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/simatic-package-tool/-/simatic-package-tool-2.0.15.tgz", + "dependencies": {} + }, + "@ax/sld": { + "name": "@ax/sld", + "version": "3.2.4", + "integrity": "sha512-KRGKm2dCl9alOcOc8Kty7NTHwVsyT19HBDP8k5Sv3L8Dj+S5Y4GinHoFNrlXv2wQVGNXV93ESMYFvjxdsqrOvw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/sld/-/sld-3.2.4.tgz", "cpu": [ "x64" ], "dependencies": {} }, - "@ax/sdb-linux-x64": { - "name": "@ax/sdb-linux-x64", - "version": "1.7.6", - "integrity": "sha512-3bbzAYc939iCdzWoIZwKA5j9//mQUOd4XX3659MvQispcABv5vz3zZ8dwyf+nhLXmgTm6IHRwleI57ZsYAI0nA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/sdb-linux-x64/-/sdb-linux-x64-1.7.6.tgz", - "os": [ - "linux" - ], - "cpu": [ - "x64" - ], + "@ax/st-docs": { + "name": "@ax/st-docs", + "version": "10.0.85", + "integrity": "sha512-AWnR0yWP7cO+Ep97VWDPPr0hT/y9SJYNtj81PZdmML60fa6OM6hdVGqKgEzgUz/jwfkNTdE7yHnyUewjmx3ehA==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-docs/-/st-docs-10.0.85.tgz", "dependencies": {} }, - "@ax/st-ls-win-x64": { - "name": "@ax/st-ls-win-x64", + "@ax/st-ls": { + "name": "@ax/st-ls", "version": "10.0.85", - "integrity": "sha512-CPwfQ0F9exIjGOkbSAfFNY/Msbs8U+ED2nVT68hqk6X3tRQGOn5Trs4qfc+x9WLAXAeXUCUrkv+5CGElURaM5A==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-ls-win-x64/-/st-ls-win-x64-10.0.85.tgz", - "os": [ - "win32" - ], - "cpu": [ - "x64" - ], - "dependencies": {} + "integrity": "sha512-dBi/eQm7ImAIW3vBHrF0vTIq3ZD5IkElMfBQ/ep3WHQzs9uT3K5kYgTX5tuXj6epGGsvs52JCCxJSuyavDL8tg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-ls/-/st-ls-10.0.85.tgz", + "dependencies": { + "@ax/st-ls-win-x64": "10.0.85", + "@ax/st-ls-linux-x64": "10.0.85" + } }, "@ax/st-ls-linux-x64": { "name": "@ax/st-ls-linux-x64", @@ -503,19 +500,41 @@ ], "dependencies": {} }, - "@ax/stc-win-x64": { - "name": "@ax/stc-win-x64", + "@ax/st-ls-win-x64": { + "name": "@ax/st-ls-win-x64", "version": "10.0.85", - "integrity": "sha512-oQO4gqnQECgFeJgFQ9NpBp6823E+LaGN/7EptAQiXcOmxP7rLWx+k61x26ckjHOk/2gV6/FOz6Dqa6fYUumsjg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/stc-win-x64/-/stc-win-x64-10.0.85.tgz", + "integrity": "sha512-CPwfQ0F9exIjGOkbSAfFNY/Msbs8U+ED2nVT68hqk6X3tRQGOn5Trs4qfc+x9WLAXAeXUCUrkv+5CGElURaM5A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-ls-win-x64/-/st-ls-win-x64-10.0.85.tgz", "os": [ "win32" ], "cpu": [ "x64" ], + "dependencies": {} + }, + "@ax/st-opcua.stc-plugin": { + "name": "@ax/st-opcua.stc-plugin", + "version": "1.0.0", + "integrity": "sha512-vrcGgmscXJYea+j8fL4iq+MPNBzvK1ObAzcuZ9NYNFx8IfO94z2Vo8eiNBVAOH8tqycgKIfwzf1KRsqXsimgUg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-opcua.stc-plugin/-/st-opcua.stc-plugin-1.0.0.tgz", + "dependencies": {} + }, + "@ax/st-resources.stc-plugin": { + "name": "@ax/st-resources.stc-plugin", + "version": "3.0.23", + "integrity": "sha512-lWYWtrrWnd+keI4sw+RcBjEz9oTVgV6wvTAnb2AcE3PHemiirvY52vl6w2OqIFbUMqfhVqpD7KDd83o/HEsAhg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-resources.stc-plugin/-/st-resources.stc-plugin-3.0.23.tgz", + "dependencies": {} + }, + "@ax/stc": { + "name": "@ax/stc", + "version": "10.0.85", + "integrity": "sha512-2zgkFaQmYp9E6Twv/C05zJn37Ym+7UGFUs9aunabp+opWqlYioIToegXLzSlH5gEZ8wRZoIIJQ1YzH+9fxY65g==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/stc/-/stc-10.0.85.tgz", "dependencies": { - "@ax/st-docs": "10.0.85" + "@ax/stc-win-x64": "10.0.85", + "@ax/stc-linux-x64": "10.0.85" } }, "@ax/stc-linux-x64": { @@ -533,19 +552,70 @@ "@ax/st-docs": "10.0.85" } }, - "@ax/target-llvm-win-x64": { - "name": "@ax/target-llvm-win-x64", + "@ax/stc-win-x64": { + "name": "@ax/stc-win-x64", "version": "10.0.85", - "integrity": "sha512-VnD2ZkrwFM+DntZwVpVSwnQw6fNP7XPmhJFmuFMvzb+In82W6x8Rt9xpefh8Gin+qi9Ab3mrFP7wJSU36zNbxQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-llvm-win-x64/-/target-llvm-win-x64-10.0.85.tgz", + "integrity": "sha512-oQO4gqnQECgFeJgFQ9NpBp6823E+LaGN/7EptAQiXcOmxP7rLWx+k61x26ckjHOk/2gV6/FOz6Dqa6fYUumsjg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/stc-win-x64/-/stc-win-x64-10.0.85.tgz", "os": [ "win32" ], "cpu": [ "x64" ], + "dependencies": { + "@ax/st-docs": "10.0.85" + } + }, + "@ax/system-conversion": { + "name": "@ax/system-conversion", + "version": "10.0.24", + "integrity": "sha512-vHK3X8HnmZsGh/5KEeBmkJ9oZBPEFwxKx2Juu1HU9BN/er6cIQCRJpJOr3JehERxqaIT+s0+/V5rfTeWe1hkPQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-conversion/-/system-conversion-10.0.24.tgz", + "dependencies": {} + }, + "@ax/system-datetime": { + "name": "@ax/system-datetime", + "version": "10.0.24", + "integrity": "sha512-L4IoFzmAoeLXR3g0ThGJM30iIDDnXNhCNVKnEF4+eKjED6GlLozohpvm+UjdTW4H0+5zplqbe82T1DSpgN7LZg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-datetime/-/system-datetime-10.0.24.tgz", + "dependencies": {} + }, + "@ax/system-math": { + "name": "@ax/system-math", + "version": "10.0.24", + "integrity": "sha512-bdyToqd9eFG89/Xp/LjaCBC/6yNmy3Z2ynXb/KLsO0avJtgszWtVDW/0yLpB9RgGmzh9vh9feAS7AKgVv1cSPQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-math/-/system-math-10.0.24.tgz", + "dependencies": {} + }, + "@ax/system-strings": { + "name": "@ax/system-strings", + "version": "10.0.24", + "integrity": "sha512-ujMjximtgfbifxVXG+a71oQWmtF2+cj3bR7GILTkbgRFNvg5/r5lBAWVnbCUtW+o1/3tPiLUj7yUqsqfqDXX2g==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-strings/-/system-strings-10.0.24.tgz", + "dependencies": { + "@ax/system-math": "^10.0.24", + "@ax/system-datetime": "^10.0.24", + "@ax/system-conversion": "^10.0.24" + } + }, + "@ax/system-timer": { + "name": "@ax/system-timer", + "version": "10.0.24", + "integrity": "sha512-n2ZW2Mbh+f5IHW7+yWgHGR8ddFtq7Px73rGZg/Iypvl2sfP8QZ4fz++M7rQGW+Jvk2w4NPjY1JqieLrpas27Lw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-timer/-/system-timer-10.0.24.tgz", "dependencies": {} }, + "@ax/target-llvm": { + "name": "@ax/target-llvm", + "version": "10.0.85", + "integrity": "sha512-3pWLWB/CaJHeJgRZDxoWi8WIx1Nipk5c4rkyhjrdUhx2nMFU0Ijb7RoeMVvcDHeQJOi37YoHWz4k7ZlrRJRpNw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-llvm/-/target-llvm-10.0.85.tgz", + "dependencies": { + "@ax/target-llvm-win-x64": "10.0.85", + "@ax/target-llvm-linux-x64": "10.0.85" + } + }, "@ax/target-llvm-linux-x64": { "name": "@ax/target-llvm-linux-x64", "version": "10.0.85", @@ -559,11 +629,11 @@ ], "dependencies": {} }, - "@ax/target-mc7plus-win-x64": { - "name": "@ax/target-mc7plus-win-x64", + "@ax/target-llvm-win-x64": { + "name": "@ax/target-llvm-win-x64", "version": "10.0.85", - "integrity": "sha512-mF4e3chyTBhdG+/YKVBFt/qLRzq4rQbP/H8N8Je084GxYG8bz9XUKkMy3vrIs5Kf8PG3BO+kmCEsjqqircPkYw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mc7plus-win-x64/-/target-mc7plus-win-x64-10.0.85.tgz", + "integrity": "sha512-VnD2ZkrwFM+DntZwVpVSwnQw6fNP7XPmhJFmuFMvzb+In82W6x8Rt9xpefh8Gin+qi9Ab3mrFP7wJSU36zNbxQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-llvm-win-x64/-/target-llvm-win-x64-10.0.85.tgz", "os": [ "win32" ], @@ -572,6 +642,16 @@ ], "dependencies": {} }, + "@ax/target-mc7plus": { + "name": "@ax/target-mc7plus", + "version": "10.0.85", + "integrity": "sha512-b2hto1AUqCWCn3n7DS6XmBRc7XGASyLKLcRB8OEvIIgRPUCujpeKFY6Q0qwt3cbtdp9l1ticQF6/4RvmWcWGOg==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mc7plus/-/target-mc7plus-10.0.85.tgz", + "dependencies": { + "@ax/target-mc7plus-win-x64": "10.0.85", + "@ax/target-mc7plus-linux-x64": "10.0.85" + } + }, "@ax/target-mc7plus-linux-x64": { "name": "@ax/target-mc7plus-linux-x64", "version": "10.0.85", @@ -585,11 +665,11 @@ ], "dependencies": {} }, - "@ax/trace-win-x64": { - "name": "@ax/trace-win-x64", - "version": "2.9.0", - "integrity": "sha512-cWSDUbc8v1FNiIBq1Wk2ZMtuTbWNfGdbVRVVmq1XgxvwKncAsPgRMvUXM1Tv42sF9tI8ioIH0dRWel7U/PUGRw==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/trace-win-x64/-/trace-win-x64-2.9.0.tgz", + "@ax/target-mc7plus-win-x64": { + "name": "@ax/target-mc7plus-win-x64", + "version": "10.0.85", + "integrity": "sha512-mF4e3chyTBhdG+/YKVBFt/qLRzq4rQbP/H8N8Je084GxYG8bz9XUKkMy3vrIs5Kf8PG3BO+kmCEsjqqircPkYw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mc7plus-win-x64/-/target-mc7plus-win-x64-10.0.85.tgz", "os": [ "win32" ], @@ -598,42 +678,21 @@ ], "dependencies": {} }, - "@ax/trace-linux-x64": { - "name": "@ax/trace-linux-x64", - "version": "2.9.0", - "integrity": "sha512-MJkRCJuKTX6DzpG30B+C0VuYeuQbjFbx5qAE5mJxij10WEAaf4MEylfBc394Tlsjcc9eJ99aSmIhxtI3SD3amQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/trace-linux-x64/-/trace-linux-x64-2.9.0.tgz", - "os": [ - "linux" - ], - "cpu": [ - "x64" - ], - "dependencies": {} - }, - "@ax/st-docs": { - "name": "@ax/st-docs", - "version": "10.0.85", - "integrity": "sha512-AWnR0yWP7cO+Ep97VWDPPr0hT/y9SJYNtj81PZdmML60fa6OM6hdVGqKgEzgUz/jwfkNTdE7yHnyUewjmx3ehA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/st-docs/-/st-docs-10.0.85.tgz", - "dependencies": {} - }, - "@ax/system-strings": { - "name": "@ax/system-strings", - "version": "10.0.24", - "integrity": "sha512-ujMjximtgfbifxVXG+a71oQWmtF2+cj3bR7GILTkbgRFNvg5/r5lBAWVnbCUtW+o1/3tPiLUj7yUqsqfqDXX2g==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-strings/-/system-strings-10.0.24.tgz", + "@ax/target-mocking": { + "name": "@ax/target-mocking", + "version": "8.0.33", + "integrity": "sha512-2lFVgj16QNoFgDVMoa+9vL4+i8+D47VIP73ENEChMfea+5UOBZ/zAcy4VGQiJ5wqLOirkk3NHLjyJCrp0e45iQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mocking/-/target-mocking-8.0.33.tgz", "dependencies": { - "@ax/system-math": "^10.0.24", - "@ax/system-datetime": "^10.0.24", - "@ax/system-conversion": "^10.0.24" + "@ax/target-mocking-linux-x64": "8.0.33", + "@ax/target-mocking-win-x64": "8.0.33" } }, - "@ax/axunitst-test-director-linux-x64": { - "name": "@ax/axunitst-test-director-linux-x64", + "@ax/target-mocking-linux-x64": { + "name": "@ax/target-mocking-linux-x64", "version": "8.0.33", - "integrity": "sha512-07ywM1OZiA2giHDXiGkVjNrgKI0TTasZo7tdpyg8mpkuAO7Tu8nXSBUFN/wGg3hVkmS81vh1cLnHHMIa3kkr9A==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-test-director-linux-x64/-/axunitst-test-director-linux-x64-8.0.33.tgz", + "integrity": "sha512-q+q0t7I0dpNGQIaEPJaAws4L5IbXfPGed3y08vbVYT7I6TEvGW0Pu40ZOJikvRCQ8SgBwiLycKgYzpFgkwB+VQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mocking-linux-x64/-/target-mocking-linux-x64-8.0.33.tgz", "os": [ "linux" ], @@ -642,11 +701,11 @@ ], "dependencies": {} }, - "@ax/axunitst-test-director-win-x64": { - "name": "@ax/axunitst-test-director-win-x64", + "@ax/target-mocking-win-x64": { + "name": "@ax/target-mocking-win-x64", "version": "8.0.33", - "integrity": "sha512-dGWVs5AqvedaUN52V8e+7KUq/UQju/ZXxP/W+vly9bG60sNIqLiLvtoNiBt32me4nWRDdKzhn+/uKCw5ITDJxA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/axunitst-test-director-win-x64/-/axunitst-test-director-win-x64-8.0.33.tgz", + "integrity": "sha512-7UZ7LKBq4Pbw/PkbQ0C4+lwH1KKcsyUmOcYP7quXypJB7lbZpdkiuF+xF1osHs07iIJl1wAg3dQ1iuMsE0D66A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/target-mocking-win-x64/-/target-mocking-win-x64-8.0.33.tgz", "os": [ "win32" ], @@ -655,44 +714,47 @@ ], "dependencies": {} }, - "@ax/build-native-winx64": { - "name": "@ax/build-native-winx64", - "version": "16.1.17", - "integrity": "sha512-qv8r2ahouOQivHCWveGX/ktNTYvosf/aiHvZ6w1h7wAjAOgTjf7zhFZs07AquFmQ9rcUP0ZNPRBFziSvEmOmpA==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/build-native-winx64/-/build-native-winx64-16.1.17.tgz", + "@ax/trace": { + "name": "@ax/trace", + "version": "2.9.0", + "integrity": "sha512-ZTNI6hF+U6184d9hcZEMN+A/cTu8JhAG4N5NrlmoEudvgq+iWl++LYZwr5oVNCxZ+0tdOphOKmoQEYJTZGE2/A==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/trace/-/trace-2.9.0.tgz", + "dependencies": { + "@ax/trace-win-x64": "2.9.0", + "@ax/trace-linux-x64": "2.9.0" + } + }, + "@ax/trace-linux-x64": { + "name": "@ax/trace-linux-x64", + "version": "2.9.0", + "integrity": "sha512-MJkRCJuKTX6DzpG30B+C0VuYeuQbjFbx5qAE5mJxij10WEAaf4MEylfBc394Tlsjcc9eJ99aSmIhxtI3SD3amQ==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/trace-linux-x64/-/trace-linux-x64-2.9.0.tgz", "os": [ - "win32" + "linux" ], "cpu": [ "x64" ], "dependencies": {} }, - "@ax/build-native-linux": { - "name": "@ax/build-native-linux", - "version": "16.1.17", - "integrity": "sha512-45mKw828x0akm1CENzNefVhggMApddltdCgocM/n6snMWxPRJCmhazFmVxTSomOnOsEMuZDsl0eHUl4IvO/oZQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/build-native-linux/-/build-native-linux-16.1.17.tgz", + "@ax/trace-win-x64": { + "name": "@ax/trace-win-x64", + "version": "2.9.0", + "integrity": "sha512-cWSDUbc8v1FNiIBq1Wk2ZMtuTbWNfGdbVRVVmq1XgxvwKncAsPgRMvUXM1Tv42sF9tI8ioIH0dRWel7U/PUGRw==", + "resolved": "https://registry.simatic-ax.siemens.io/@ax/trace-win-x64/-/trace-win-x64-2.9.0.tgz", "os": [ - "linux" + "win32" ], "cpu": [ "x64" ], "dependencies": {} }, - "@ax/system-datetime": { - "name": "@ax/system-datetime", - "version": "10.0.24", - "integrity": "sha512-L4IoFzmAoeLXR3g0ThGJM30iIDDnXNhCNVKnEF4+eKjED6GlLozohpvm+UjdTW4H0+5zplqbe82T1DSpgN7LZg==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-datetime/-/system-datetime-10.0.24.tgz", - "dependencies": {} - }, - "@ax/system-conversion": { - "name": "@ax/system-conversion", - "version": "10.0.24", - "integrity": "sha512-vHK3X8HnmZsGh/5KEeBmkJ9oZBPEFwxKx2Juu1HU9BN/er6cIQCRJpJOr3JehERxqaIT+s0+/V5rfTeWe1hkPQ==", - "resolved": "https://registry.simatic-ax.siemens.io/@ax/system-conversion/-/system-conversion-10.0.24.tgz", + "@simatic-ax/snippetscollection": { + "name": "@simatic-ax/snippetscollection", + "version": "1.0.0", + "integrity": "sha512-8BNldIIGZuuLSiMjJxcBmHt7sL7kSlc0dss88BcrfnL/7iXPmHwhlnh4XobcVoOHXaz5f8cbMbXCUrffBIwecQ==", + "resolved": "https://npm.pkg.github.com/download/@simatic-ax/snippetscollection/1.0.0/60302d7e0da15a914ce0126503398063a42e1917", "dependencies": {} } }, diff --git a/apax.yml b/apax.yml index 237fd97..ba2139d 100644 --- a/apax.yml +++ b/apax.yml @@ -27,6 +27,7 @@ catalogs: devDependencies: '@ax/sdk': ^2504.0.0 "@simatic-ax/snippetscollection": ^1.0.0 + "@ax/axunit-mocking": 8.0.33 dependencies: "@ax/system-timer": ^10.0.24 "@ax/system-math": ^10.0.24 diff --git a/test/Input/BinSignalExtTest_TimeBehavior.st b/test/Input/BinSignalExtTest_TimeBehavior.st index 3b2d3c0..937b069 100644 --- a/test/Input/BinSignalExtTest_TimeBehavior.st +++ b/test/Input/BinSignalExtTest_TimeBehavior.st @@ -1,56 +1,78 @@ -// ****************** TEMPORARY DIABLED BEACUSE OF DISABLED MOCKING FUNCTIONALITY ********************** -// USING AxUnit; -// USING Simatic.Ax.IO.Input; -// USING System.Timer; -// //USING AxUnit; - -// NAMESPACE Simatic.Ax.IO.Input.Test - -// {TestFixture} -// CLASS BinSignalExt_TimingTest -// VAR -// o : BinSignalExt; -// END_VAR - -// {Test} -// METHOD PUBLIC TestOnDelay_After_signal_true_expect_false -// o.ondelay := T#10ms; -// o.ReadCyclic(signal := TRUE); -// Assert.Equal(expected := FALSE, actual := o.Q()); -// END_METHOD - -// {Test} -// METHOD PUBLIC TestOnDelay_10ms_After_signal_true_expect_true -// AxUnit.Mocking.Mock('System.Timer.OnDelay', 'Simatic.Ax.Mocks.OnDelayMock_true'); -// o.ondelay := T#10ms; -// o.ReadCyclic(signal := TRUE); -// Assert.Equal(expected := TRUE, actual := o.Q()); -// END_METHOD - -// {Test} -// METHOD PUBLIC TestOnDelay_10ms_signal_goes_to_False_expect_false -// //this.TestOnDelay_10ms_After_signal_true_expect_true(); -// AxUnit.Mocking.Mock('System.Timer.OnDelay', 'Simatic.Ax.Mocks.OnDelayMock_true'); -// o.ondelay := T#10ms; -// o.ReadCyclic(signal := TRUE); -// Assert.Equal(expected := TRUE, actual := o.Q()); -// AxUnit.Mocking.Mock('System.Timer.OnDelay', 'Simatic.Ax.Mocks.OnDelayMock_false'); -// o.ReadCyclic(signal := FALSE); -// Assert.Equal(expected := FALSE, actual := o.Q()); -// END_METHOD - - -// {Test} -// METHOD PUBLIC TestOffDelay_10ms_After_signal_true_expect_true -// AxUnit.Mocking.Mock('System.Timer.OffDelay', 'Simatic.Ax.Mocks.OffDelayMock_true'); -// o.offdelay := T#10ms; -// o.ReadCyclic(signal := TRUE); -// o.ReadCyclic(signal := FALSE); -// Assert.Equal(expected := TRUE, actual := o.Q()); - -// AxUnit.Mocking.Mock('System.Timer.OffDelay', 'Simatic.Ax.Mocks.OffDelayMock_false'); -// o.ReadCyclic(signal := FALSE); -// Assert.Equal(expected := FALSE, actual := o.Q()); -// END_METHOD -// END_CLASS -// END_NAMESPACE \ No newline at end of file +USING AxUnit; +USING Simatic.Ax.IO.Input; +USING System.Timer; +USING Simatic.Ax.Mocks; + +NAMESPACE Simatic.Ax.IO.Input.Test + + /// Test fixture for timing behavior of BinSignalExt. + /// Tests the correct handling of on-delay and off-delay logic in BinSignalExt. + /// Input: None. + /// Returns: None. + {TestFixture} + CLASS BinSignalExt_TimingTest + VAR + o, oStateLess : BinSignalExt; + END_VAR + + /// Sets up the test environment for each test. + /// Input: None. + /// Returns: None. + {TestSetup} + METHOD PUBLIC TestSetup + o := oStateLess; + END_METHOD + + /// Verifies that Q() is FALSE immediately after signal becomes TRUE with on-delay active. + /// Input: None. + /// Returns: None. + {Test} + METHOD PUBLIC TestOnDelay_After_signal_true_expect_false + AxUnit.Mocking.Mock(NAME_OF(OnDelay), NAME_OF(OnDelayMock_false)); + o.ondelay := T#10ms; + o.ReadCyclic(signal := TRUE); + Assert.Equal(expected := FALSE, actual := o.Q()); + END_METHOD + + /// Verifies that Q() is TRUE after signal is TRUE and on-delay has elapsed. + /// Input: None. + /// Returns: None. + {Test} + METHOD PUBLIC TestOnDelay_10ms_After_signal_true_expect_true + AxUnit.Mocking.Mock(NAME_OF(OnDelay), NAME_OF(OnDelayMock_true)); + o.ondelay := T#10ms; + o.ReadCyclic(signal := TRUE); + Assert.Equal(expected := TRUE, actual := o.Q()); + END_METHOD + + /// Verifies that Q() is TRUE after on-delay, and becomes FALSE when signal goes to FALSE. + /// Input: None. + /// Returns: None. + {Test} + METHOD PUBLIC TestOnDelay_10ms_signal_goes_to_False_expect_false + AxUnit.Mocking.Mock(NAME_OF(OnDelay), NAME_OF(OnDelayMock_true)); + o.ondelay := T#10ms; + o.ReadCyclic(signal := TRUE); + Assert.Equal(expected := TRUE, actual := o.Q()); + AxUnit.Mocking.Mock(NAME_OF(OnDelay), NAME_OF(OnDelayMock_false)); + o.ReadCyclic(signal := FALSE); + Assert.Equal(expected := FALSE, actual := o.Q()); + END_METHOD + + /// Verifies that Q() remains TRUE after signal goes FALSE if off-delay is active, then becomes FALSE after off-delay. + /// Input: None. + /// Returns: None. + {Test} + METHOD PUBLIC TestOffDelay_10ms_After_signal_true_expect_true + AxUnit.Mocking.Mock(NAME_OF(OffDelay), NAME_OF(OffDelayMock_true)); + o.offdelay := T#10ms; + o.ReadCyclic(signal := TRUE); + o.ReadCyclic(signal := FALSE); + Assert.Equal(expected := TRUE, actual := o.Q()); + + AxUnit.Mocking.Mock('System.Timer.OffDelay', 'Simatic.Ax.Mocks.OffDelayMock_false'); + o.ReadCyclic(signal := FALSE); + Assert.Equal(expected := FALSE, actual := o.Q()); + END_METHOD + END_CLASS +END_NAMESPACE \ No newline at end of file diff --git a/test/src/OffDelayMock_false.st b/test/src/OffDelayMock_false.st new file mode 100644 index 0000000..cb495fe --- /dev/null +++ b/test/src/OffDelayMock_false.st @@ -0,0 +1,16 @@ +NAMESPACE Simatic.Ax.Mocks + FUNCTION_BLOCK OffDelayMock_false + VAR + iecTimer : ARRAY[0..27] of BYTE; + END_VAR + VAR_INPUT + duration : LTIME; + signal : BOOL; + END_VAR + VAR_OUTPUT + output : BOOL; + elapsedTime : LTIME; + END_VAR + output := FALSE; + END_FUNCTION_BLOCK +END_NAMESPACE \ No newline at end of file diff --git a/test/src/OffDelayMock_true.st b/test/src/OffDelayMock_true.st new file mode 100644 index 0000000..37551ce --- /dev/null +++ b/test/src/OffDelayMock_true.st @@ -0,0 +1,16 @@ +NAMESPACE Simatic.Ax.Mocks + FUNCTION_BLOCK OffDelayMock_true + VAR + iecTimer : ARRAY[0..27] of BYTE; + END_VAR + VAR_INPUT + duration : LTIME; + signal : BOOL; + END_VAR + VAR_OUTPUT + output : BOOL; + elapsedTime : LTIME; + END_VAR + output := TRUE; + END_FUNCTION_BLOCK +END_NAMESPACE \ No newline at end of file diff --git a/test/src/OnDelayMockWithTwoTimers.st b/test/src/OnDelayMockWithTwoTimers.st new file mode 100644 index 0000000..eba770c --- /dev/null +++ b/test/src/OnDelayMockWithTwoTimers.st @@ -0,0 +1,48 @@ +NAMESPACE Simatic.Ax.Mocks + /// This Mock can be used in Classes/FunctionBlocks where are two OnDelay instances are used + {axcode:docs-v0:@simatic-ax/generators:OnDelayMockWithTwoTimers.md} + FUNCTION_BLOCK OnDelayMock2Timer + VAR + iecTimer : ARRAY[0..27] of BYTE; + END_VAR + VAR_INPUT + duration : LTIME; + signal : BOOL; + END_VAR + VAR_OUTPUT + output : BOOL; + elapsedTime : LTIME; + END_VAR + VAR_TEMP + state : REF_TO OnDelayMockState; + END_VAR + + state ?= AxUnit.Mocking.GetPayload(); + output := TRUE; + return; + IF (signal = FALSE) THEN + output := FALSE; + ELSE + IF duration = T#1s THEN + output := state^.StatusTimer1; + END_IF; + IF duration = T#2s THEN + output := state^.StatusTimer2 ; + END_IF; + END_IF; + + END_FUNCTION_BLOCK + + /// The returned states for the Timer1 and Timer2 + {axcode:docs-v0:@simatic-ax/generators:OnDelayMockWithTwoTimers.md} + CLASS OnDelayMockState IMPLEMENTS AxUnit.Mocking.IPayload + VAR PUBLIC + StatusTimer1 : BOOL; + StatusTimer2 : BOOL; + END_VAR + END_CLASS +END_NAMESPACE + + + + diff --git a/test/src/OnDelayMock_false.st b/test/src/OnDelayMock_false.st new file mode 100644 index 0000000..2e9b0f5 --- /dev/null +++ b/test/src/OnDelayMock_false.st @@ -0,0 +1,16 @@ +NAMESPACE Simatic.Ax.Mocks + FUNCTION_BLOCK OnDelayMock_false + VAR + iecTimer : ARRAY[0..27] of BYTE; + END_VAR + VAR_INPUT + duration : LTIME; + signal : BOOL; + END_VAR + VAR_OUTPUT + output : BOOL; + elapsedTime : LTIME; + END_VAR + output := FALSE; + END_FUNCTION_BLOCK +END_NAMESPACE \ No newline at end of file diff --git a/test/src/OnDelayMock_true.st b/test/src/OnDelayMock_true.st new file mode 100644 index 0000000..f684b2a --- /dev/null +++ b/test/src/OnDelayMock_true.st @@ -0,0 +1,16 @@ +NAMESPACE Simatic.Ax.Mocks + FUNCTION_BLOCK OnDelayMock_true + VAR + iecTimer : ARRAY[0..27] of BYTE; + END_VAR + VAR_INPUT + duration : LTIME; + signal : BOOL; + END_VAR + VAR_OUTPUT + output : BOOL; + elapsedTime : LTIME; + END_VAR + output := TRUE; + END_FUNCTION_BLOCK +END_NAMESPACE \ No newline at end of file