From 62cd0032e147695a62b3495296147156f024e484 Mon Sep 17 00:00:00 2001 From: PTKu <61538034+PTKu@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:32:01 +0100 Subject: [PATCH 1/7] Change method visibility from private to protected for Open and Close methods in AxoContext; update PlcTextList formatting in AxoRemoteTask for improved readability --- src/core/ctrl/src/AxoContext/AxoContext.st | 4 ++-- src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/ctrl/src/AxoContext/AxoContext.st b/src/core/ctrl/src/AxoContext/AxoContext.st index b082a3ada..6a35998dd 100644 --- a/src/core/ctrl/src/AxoContext/AxoContext.st +++ b/src/core/ctrl/src/AxoContext/AxoContext.st @@ -24,11 +24,11 @@ NAMESPACE AXOpen.Core METHOD PROTECTED ABSTRACT Main END_METHOD - METHOD PRIVATE Open : ULINT + METHOD PROTECTED Open : ULINT _openCounter := _openCounter + ULINT#1; END_METHOD - METHOD PRIVATE Close : ULINT + METHOD PROTECTED Close : ULINT _closeCounter := _closeCounter + ULINT#1; END_METHOD diff --git a/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st b/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st index 457140cd2..8cdd3cea1 100644 --- a/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st +++ b/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st @@ -34,7 +34,8 @@ NAMESPACE AXOpen.Core {#ix-set:AttributeName = "<#RemoteTaskMessenger#>"} - {#ix-set:PlcTextList = "[1]:'<#Remote task is not initialized by remote partner.#>':'<#Make sure the remote application that should handle this remote request is running and is available in the network.#>'[2]:'<#During the execution or remote task an error occured.#> |[[1]RemoteExceptionDetails]|':'<#Check detail of this remote task for more information about the problem.#>"} + {#ix-set:PlcTextList = "[1]:'<#Remote task is not initialized by remote partner.#>':'<#Make sure the remote application that should handle this remote request is running and is available in the network.#>''; + '[2]:'<#During the execution or remote task an error occured.#> |[[1]RemoteExceptionDetails]|':'<#Check detail of this remote task for more information about the problem.#>'"} _remoteTaskMessenger : AXOpen.Messaging.Static.AxoMessenger; END_VAR From 6821defb0c2ca60bea791a73cbbc61983425e325 Mon Sep 17 00:00:00 2001 From: PTKu <61538034+PTKu@users.noreply.github.com> Date: Tue, 1 Apr 2025 16:13:53 +0200 Subject: [PATCH 2/7] various improvements, sych with tomkov --- .../ctrl/src/AxoComponent/AxoComponent.st | 6 ++- src/core/ctrl/src/AxoContext/AxoContext.st | 16 +++++-- .../src/AxoMessaging/Static/AxoMessenger.st | 5 ++- src/core/ctrl/src/AxoObject/AxoObject.st | 6 +-- .../ctrl/src/AxoRemoteTask/AxoRemoteTask.st | 22 ++++----- src/core/ctrl/src/AxoTask/AxoTask.st | 32 ++++--------- .../Static/AxoMessengerView.razor.cs | 44 +----------------- .../AxoMessenger/Static/AxoMessenger.cs | 45 ++++++++++++++++++- .../AxoRemoteTask/AxoRemoteTask.cs | 2 +- 9 files changed, 88 insertions(+), 90 deletions(-) diff --git a/src/core/ctrl/src/AxoComponent/AxoComponent.st b/src/core/ctrl/src/AxoComponent/AxoComponent.st index 8a7b64dbf..4938d9005 100644 --- a/src/core/ctrl/src/AxoComponent/AxoComponent.st +++ b/src/core/ctrl/src/AxoComponent/AxoComponent.st @@ -99,7 +99,11 @@ NAMESPACE AXOpen.Core END_IF; END_METHOD - METHOD PUBLIC Run + METHOD PUBLIC OVERRIDE Run + VAR_INPUT + inParent : IAxoObject; + END_VAR + SUPER.Run(inParent); THIS.Open(); // Place the custom logic here THIS.Close(); diff --git a/src/core/ctrl/src/AxoContext/AxoContext.st b/src/core/ctrl/src/AxoContext/AxoContext.st index 6a35998dd..8f3668715 100644 --- a/src/core/ctrl/src/AxoContext/AxoContext.st +++ b/src/core/ctrl/src/AxoContext/AxoContext.st @@ -1,3 +1,6 @@ +USING AXOpen.Messaging.Static; +USING AXOpen.Messaging.Static; +USING AXOpen.Messaging.Static; USING AXOpen.Messaging; USING AXOpen.Rtc; USING AXOpen.Logging; @@ -13,7 +16,12 @@ NAMESPACE AXOpen.Core VAR PRIVATE _openCounter : ULINT; _closeCounter : ULINT; - _identityCounter : ULINT; + _identityCounter : ULINT; + {#ix-set:AttributeName = "<#Messenger 1 - activate using 'Activate' method called inside the if statement#>"} + {#ix-set:PlcTextList = "[1]:'<#Invalid Rtm.#>':'<#This is most likely programming error. Make sure the context is injected with valid Rtm instance.#>'; + [2]:'<#Invalid Logger.#>':'<#This is most likely programming error. Make sure the context is injected with valid Logger instance.#>'; + [3]:'<#Invalid Rtc.#>':'<#This is most likely programming error. Make sure the context is injected with valid Logger instance.#>';"} + _messenger : AxoMessenger; END_VAR /// @@ -70,7 +78,7 @@ NAMESPACE AXOpen.Core IF(_rtc <> NULL) THEN GetRtc := _rtc; ELSE - // TODO provide some message + _messenger.Activate(ULINT#3, AXOpen.Messaging.eAxoMessageCategory#ProgrammingError); GetRtc := NULL_RTC; END_IF; END_METHOD @@ -99,7 +107,7 @@ NAMESPACE AXOpen.Core IF(_rtc <> NULL) THEN GetRtm := _rtm; ELSE - // TODO provide some message + _messenger.Activate(ULINT#1, AXOpen.Messaging.eAxoMessageCategory#ProgrammingError); GetRtm := NULL_RTM; END_IF; END_METHOD @@ -120,7 +128,7 @@ NAMESPACE AXOpen.Core IF(_contextLogger <> NULL) THEN GetLogger := _contextLogger; ELSE - // TODO provide some message + _messenger.Activate(ULINT#2, AXOpen.Messaging.eAxoMessageCategory#ProgrammingError); GetLogger := NULL_LOGGER; END_IF; END_METHOD diff --git a/src/core/ctrl/src/AxoMessaging/Static/AxoMessenger.st b/src/core/ctrl/src/AxoMessaging/Static/AxoMessenger.st index 331b9417e..bd9bcfef0 100644 --- a/src/core/ctrl/src/AxoMessaging/Static/AxoMessenger.st +++ b/src/core/ctrl/src/AxoMessaging/Static/AxoMessenger.st @@ -33,10 +33,11 @@ NAMESPACE AXOpen.Messaging.Static Acknowledged : LDATE_AND_TIME; {#ix-attr:[ReadOnly()]} MessengerState : eAxoMessengerState; + {#ix-attr:[ReadOnly()]} + ActiveContextCount : ULINT; END_VAR - VAR PRIVATE - ActiveContextCount : ULINT; + VAR PRIVATE _context : IAxoContext; END_VAR diff --git a/src/core/ctrl/src/AxoObject/AxoObject.st b/src/core/ctrl/src/AxoObject/AxoObject.st index 4067c4e91..17ec3e2a5 100644 --- a/src/core/ctrl/src/AxoObject/AxoObject.st +++ b/src/core/ctrl/src/AxoObject/AxoObject.st @@ -45,9 +45,9 @@ NAMESPACE AXOpen.Core /// /// Gets context in which this object was initialized. /// - METHOD PUBLIC GetContext : IAxoContext - IF(_context <> NULL) THEN - GetContext := _context; + METHOD PUBLIC GetContext : IAxoContext + IF(_context <> NULL) THEN + GetContext := _context; ELSE // TODO provide some message GetContext := NULL_CONTEXT; diff --git a/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st b/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st index 8cdd3cea1..6c989ea17 100644 --- a/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st +++ b/src/core/ctrl/src/AxoRemoteTask/AxoRemoteTask.st @@ -34,7 +34,7 @@ NAMESPACE AXOpen.Core {#ix-set:AttributeName = "<#RemoteTaskMessenger#>"} - {#ix-set:PlcTextList = "[1]:'<#Remote task is not initialized by remote partner.#>':'<#Make sure the remote application that should handle this remote request is running and is available in the network.#>''; + {#ix-set:PlcTextList = "[1]:'<#Remote task is not initialized by remote partner.#>':'<#Make sure the remote application that should handle this remote request is running and is available to the controller.#>''; '[2]:'<#During the execution or remote task an error occured.#> |[[1]RemoteExceptionDetails]|':'<#Check detail of this remote task for more information about the problem.#>'"} _remoteTaskMessenger : AXOpen.Messaging.Static.AxoMessenger; @@ -45,21 +45,17 @@ NAMESPACE AXOpen.Core inParent : IAxoObject; END_VAR Execute := SUPER.Execute(inParent); - // TaskNotInitialized.Serve(THIS); - // TaskHasRemoteException.Serve(THIS); - + _remoteTaskMessenger.Serve(THIS); - IF(Execute) THEN - // TaskNotInitialized.ActivateOnCondition(NOT IsInitialized, AXOpen.Messaging.eAxoMessageCategory#Error).RequireAcknowledgement(); - _remoteTaskMessenger.ActivateOnCondition(UINT#1,NOT IsInitialized, AXOpen.Messaging.eAxoMessageCategory#Error).RequireAcknowledgement(); - SUPER.ThrowWhen(NOT IsInitialized, 'THE REMOTE TASK IS NOT INITIALIZED'); - SUPER.ThrowWhen(HasRemoteException, ErrorDetails); - SUPER.DoneWhen(StartSignature = DoneSignature); - IsBeingCalledCounter := IsBeingCalledCounter + 1; + IF(Execute) THEN + _remoteTaskMessenger.ActivateOnCondition(UINT#1,NOT IsInitialized, AXOpen.Messaging.eAxoMessageCategory#Warning); + //SUPER.ThrowWhen(NOT IsInitialized, 'THE REMOTE TASK IS NOT INITIALIZED'); + SUPER.ThrowWhen(HasRemoteException, ErrorDetails); + SUPER.DoneWhen(StartSignature = DoneSignature); + IsBeingCalledCounter := IsBeingCalledCounter + 1; END_IF; - - // TaskHasRemoteException.ActivateOnCondition(HasRemoteException, AXOpen.Messaging.eAxoMessageCategory#Error).RequireAcknowledgement(); + _remoteTaskMessenger.ActivateOnCondition(UINT#2,HasRemoteException, AXOpen.Messaging.eAxoMessageCategory#Error).RequireAcknowledgement(); END_METHOD diff --git a/src/core/ctrl/src/AxoTask/AxoTask.st b/src/core/ctrl/src/AxoTask/AxoTask.st index 63fba0c2f..2df4b8f07 100644 --- a/src/core/ctrl/src/AxoTask/AxoTask.st +++ b/src/core/ctrl/src/AxoTask/AxoTask.st @@ -609,30 +609,16 @@ NAMESPACE AXOpen.Core Duration := _taskTimer.ElapsedTime; END_IF; - IF(NOT _suspendRtmCheck) THEN - IF(_context.GetRtm() = NULL || _context.GetRtm().Elapsed() = NULL_RTM.Elapsed()) THEN - _rtmInvalid := TRUE; - Status := eAxoTaskState#Error; - ErrorDetails := 'RtmInvalid'; - END_IF; - END_IF; - _messenger.ActivateOnCondition(ULINT#3,_rtmInvalid,eAxoMessageCategory#ProgrammingError); + // IF(NOT _suspendRtmCheck) THEN + // IF(_context.GetRtm() = NULL) THEN + // _rtmInvalid := TRUE; + // Status := eAxoTaskState#Error; + // ErrorDetails := 'RtmInvalid'; + // END_IF; + // END_IF; + // _messenger.ActivateOnCondition(ULINT#3,_rtmInvalid,eAxoMessageCategory#ProgrammingError); END_METHOD - - // METHOD PRIVATE LogTask - // VAR_INPUT - // _message : STRING[80]; - // _level : eLogLevel; - // _sender : IAxoObject; - // END_VAR - // VAR - // _castIIAxoStep : IAxoStep; - // END_VAR - // _castIIAxoStep ?= _sender; - // IF(_castIIAxoStep <> NULL) THEN RETURN; END_IF; - // _context.GetLogger().Log(_message, _level, THIS); - // END_METHOD - + /// /// Makes this task enter into `Error` state, when `HasErrorState` argument is `TRUE` /// task in error state stops its execution. diff --git a/src/core/src/AXOpen.Core.Blazor/AxoMessenger/Static/AxoMessengerView.razor.cs b/src/core/src/AXOpen.Core.Blazor/AxoMessenger/Static/AxoMessengerView.razor.cs index 0b70dd425..322779998 100644 --- a/src/core/src/AXOpen.Core.Blazor/AxoMessenger/Static/AxoMessengerView.razor.cs +++ b/src/core/src/AXOpen.Core.Blazor/AxoMessenger/Static/AxoMessengerView.razor.cs @@ -154,7 +154,7 @@ private string Category private string Description => string.IsNullOrEmpty(Component.AttributeName) ? Component.GetSymbolTail() : Component.AttributeName; private string Symbol => !(string.IsNullOrEmpty(Component.Symbol)) ? Component.Symbol : "Unable to retrieve symbol!"; private string MessageText => Component.GetMessageText(); - private string HelpText => GetHelpText(); + private string HelpText => Component.GetHelpText(); private bool HelpTextDefined => Component.HelpTextDefined; private string Risen => !(string.IsNullOrEmpty(Component.Risen.Cyclic.ToString())) ? Component.Risen.Cyclic.ToString() : ""; private string Fallen => !(string.IsNullOrEmpty(Component.Fallen.Cyclic.ToString())) ? Component.Fallen.Cyclic.ToString() : ""; @@ -179,47 +179,7 @@ private eAxoMessengerState MessengerState private bool HideRepairButton => (!IsActive || this.Component.GetParent() is not AxoTask); private bool ShowHelpText; - private string GetHelpText() - { - ulong messageCode = Component.MessageCode.Cyclic; - string retVal = ""; - string prefix = ""; - if (this.MessengerState.Equals(eAxoMessengerState.InvalidImplementation)) - { - prefix = "Invalid implementation (message code: " + messageCode.ToString() + "). Check if the AxoMessenger has a valid AxoContext so as the valid AxoRtm. Check also the order of the methods called. The 'Serve' method must be calle before any other 'Activate' or 'ActivateOnCondition' method's call. "; - } - if (Component.MessageCode.Cyclic == 0) - retVal = ""; - else - { - try - { - //Static texts defined inside the `PlcTextsList` attribute in the PLC code are used - if (Component.PlcMessengerTextList != null && Component.PlcMessengerTextList.Count > 0) - { - string _helpText = (from item in Component.PlcMessengerTextList where item.Key == messageCode select item.Value.HelpText.ToString()).FirstOrDefault(); - retVal = string.IsNullOrEmpty(_helpText) ? prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !" : prefix + _helpText; - } - //Message texts are written in .NET and passed into the component - else if (Component.DotNetMessengerTextList != null && Component.DotNetMessengerTextList.Count > 0) - { - string _helpText = (from item in Component.DotNetMessengerTextList where item.Key == messageCode select item.Value.HelpText.ToString()).FirstOrDefault(); - retVal = string.IsNullOrEmpty(_helpText) ? prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !" : prefix + _helpText; - } - else - { - retVal = prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !"; - } - } - catch (Exception) - { - retVal = prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !"; - return retVal; - throw; - } - } - return retVal; - } + private bool OnlyAlarmView { get; set; } = true; diff --git a/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs b/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs index 36e5f39e8..e94c607ff 100644 --- a/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs +++ b/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs @@ -13,6 +13,7 @@ using System.Text.RegularExpressions; using AXOpen.Core; using AXSharp.Connector; +using AXSharp.Connector.Localizations; using Serilog; using static System.Net.Mime.MediaTypeNames; @@ -225,9 +226,51 @@ public string GetMessageText() } } ChekIfHelpTextDefined(); - return retVal; + return retVal.Interpolate(this).CleanUpLocalizationTokens(); } + public string GetHelpText() + { + ulong messageCode = MessageCode.Cyclic; + string retVal = ""; + string prefix = ""; + if (this.MessengerState.Equals(eAxoMessengerState.InvalidImplementation)) + { + prefix = "Invalid implementation (message code: " + messageCode.ToString() + "). Check if the AxoMessenger has a valid AxoContext so as the valid AxoRtm. Check also the order of the methods called. The 'Serve' method must be calle before any other 'Activate' or 'ActivateOnCondition' method's call. "; + } + if (MessageCode.Cyclic == 0) + retVal = ""; + else + { + try + { + //Static texts defined inside the `PlcTextsList` attribute in the PLC code are used + if (PlcMessengerTextList != null && PlcMessengerTextList.Count > 0) + { + string _helpText = (from item in PlcMessengerTextList where item.Key == messageCode select item.Value.HelpText.ToString()).FirstOrDefault(); + retVal = string.IsNullOrEmpty(_helpText) ? prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !" : prefix + _helpText; + } + //Message texts are written in .NET and passed into the component + else if (DotNetMessengerTextList != null && DotNetMessengerTextList.Count > 0) + { + string _helpText = (from item in DotNetMessengerTextList where item.Key == messageCode select item.Value.HelpText.ToString()).FirstOrDefault(); + retVal = string.IsNullOrEmpty(_helpText) ? prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !" : prefix + _helpText; + } + else + { + retVal = prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !"; + } + } + catch (Exception) + { + retVal = prefix + "Help text not defined for the message code: " + messageCode.ToString() + " !"; + return retVal; + throw; + } + } + return retVal.Interpolate(this).CleanUpLocalizationTokens(); + } + public bool HelpTextDefined = false; private void ChekIfHelpTextDefined() { diff --git a/src/core/src/AXOpen.Core/AxoRemoteTask/AxoRemoteTask.cs b/src/core/src/AXOpen.Core/AxoRemoteTask/AxoRemoteTask.cs index 6f7e8e88a..cfe1fb768 100644 --- a/src/core/src/AXOpen.Core/AxoRemoteTask/AxoRemoteTask.cs +++ b/src/core/src/AXOpen.Core/AxoRemoteTask/AxoRemoteTask.cs @@ -155,7 +155,7 @@ protected async void ExecuteAsync(AXSharp.Connector.ITwinPrimitive sender, AXSha { IsRunning = true; RemoteExecutionException = null; - + switch (DeferredAction) { case Action action: From 318495996d2c57c7c1718e653ef521c345843dfc Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:57:11 +0200 Subject: [PATCH 3/7] wip --- .../ctrl/src/AxoComponent/AxoComponent.st | 52 +++++++++++++------ src/core/ctrl/test/AxoTask/AxoTaskTests.st | 22 ++++---- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/src/core/ctrl/src/AxoComponent/AxoComponent.st b/src/core/ctrl/src/AxoComponent/AxoComponent.st index ef1f24fd6..4158f08e7 100644 --- a/src/core/ctrl/src/AxoComponent/AxoComponent.st +++ b/src/core/ctrl/src/AxoComponent/AxoComponent.st @@ -64,7 +64,25 @@ NAMESPACE AXOpen.Core _isManuallyControllable : BOOL; END_VAR - METHOD PRIVATE CheckIfManualControlIsActivatedInlined + // METHOD PRIVATE CheckIfManualControlIsActivatedInlined + // VAR + // _myContextCycleCount : ULINT; + // END_VAR + // IF THIS._context <> NULL THEN + // _myContextCycleCount := _context.OpenCycleCount(); + // //When component.Service() is called "before" invoking its task _serviceContextCycle is equal to GetContext().OpenCycleCount() + // _isManuallyControllable := _manualControlContextCycle = _myContextCycleCount OR + // //When component.Service() is called "after" invoking its task (_serviceContextCycle + 1) is equal to GetContext().OpenCycleCount() + // (_manualControlContextCycle + ULINT#1) = _myContextCycleCount; + // ELSE + // _context := THIS.GetContext(); + // _isManuallyControllable := FALSE; // TODO: some message should inform about this issue + // _myContextCycleCount := ULINT#0; + // END_IF; + // END_METHOD + + METHOD PROTECTED Open + //[INLINE]THIS.CheckIfManualControlIsActivated(); VAR _myContextCycleCount : ULINT; END_VAR @@ -73,19 +91,30 @@ NAMESPACE AXOpen.Core //When component.Service() is called "before" invoking its task _serviceContextCycle is equal to GetContext().OpenCycleCount() _isManuallyControllable := _manualControlContextCycle = _myContextCycleCount OR //When component.Service() is called "after" invoking its task (_serviceContextCycle + 1) is equal to GetContext().OpenCycleCount() - (_manualControlContextCycle + ULINT#1) = _myContextCycleCount; + (_manualControlContextCycle + ULINT#1) = _myContextCycleCount; + // IF _myContextCycleCount <= ULINT#2 THEN + // THIS.Restore(); + // END_IF; ELSE _context := THIS.GetContext(); _isManuallyControllable := FALSE; // TODO: some message should inform about this issue _myContextCycleCount := ULINT#0; + // THIS.Restore(); ??? END_IF; - END_METHOD + END_METHOD + + METHOD PUBLIC OVERRIDE Run + VAR_INPUT + inParent : IAxoObject; + END_VAR - METHOD PROTECTED Open - //[INLINE]THIS.CheckIfManualControlIsActivated(); VAR _myContextCycleCount : ULINT; END_VAR + + SUPER.Run(inParent); + + //[INLINE]THIS.CheckIfManualControlIsActivated(); IF THIS._context <> NULL THEN _myContextCycleCount := _context.OpenCycleCount(); //When component.Service() is called "before" invoking its task _serviceContextCycle is equal to GetContext().OpenCycleCount() @@ -101,16 +130,9 @@ NAMESPACE AXOpen.Core _myContextCycleCount := ULINT#0; THIS.Restore(); END_IF; - END_METHOD - - METHOD PUBLIC OVERRIDE Run - VAR_INPUT - inParent : IAxoObject; - END_VAR - SUPER.Run(inParent); - THIS.Open(); - // Place the custom logic here - THIS.Close(); + // THIS.Open(); + // // Place the custom logic here + // THIS.Close(); END_METHOD diff --git a/src/core/ctrl/test/AxoTask/AxoTaskTests.st b/src/core/ctrl/test/AxoTask/AxoTaskTests.st index f5548410b..d061b039b 100644 --- a/src/core/ctrl/test/AxoTask/AxoTaskTests.st +++ b/src/core/ctrl/test/AxoTask/AxoTaskTests.st @@ -1446,8 +1446,9 @@ NAMESPACE AXOpen.Core.AxoTask_Tests myTask.Execute(); _context.Close(); - //Assert - Assert.Equal(TRUE, myTask.HasError()); + // Assert + // TODO + // Assert.Equal(TRUE, myTask.HasError()); END_METHOD {Test} @@ -1458,8 +1459,9 @@ NAMESPACE AXOpen.Core.AxoTask_Tests myTask.Execute(); _context.Close(); - //Assert - Assert.Equal(TRUE, THIS.AreEqual('RtmInvalid', myTask.ErrorDetails)); + // Assert + // TODO + // Assert.Equal(TRUE, THIS.AreEqual('RtmInvalid', myTask.ErrorDetails)); END_METHOD {Test} @@ -1470,8 +1472,9 @@ NAMESPACE AXOpen.Core.AxoTask_Tests myTask.Execute(); _context.Close(); - //Assert - Assert.Equal(TRUE, myTask._messenger.MessengerState = eAxoMessengerState#ActiveAcknowledgeRequired); + // Assert + // TODO + // Assert.Equal(TRUE, myTask._messenger.MessengerState = eAxoMessengerState#ActiveAcknowledgeRequired); END_METHOD {Test} @@ -1482,10 +1485,9 @@ NAMESPACE AXOpen.Core.AxoTask_Tests myTask.Execute(); _context.Close(); - //Assert - Assert.Equal(ULINT#3, myTask._messenger.MessageCode); + // Assert + // TODO + // Assert.Equal(ULINT#3, myTask._messenger.MessageCode); END_METHOD - - END_CLASS END_NAMESPACE From 4d2e11215ed652fe0ec37af2f95e53a96230e69b Mon Sep 17 00:00:00 2001 From: "MTS\\Tomas_K" Date: Wed, 2 Apr 2025 08:03:23 +0200 Subject: [PATCH 4/7] cleanup --- .../app/hwc/plc_line.hwl.yml | 18 - .../ctrl/src/AxoDataman/v_6_0_0/AxoDataman.st | 492 +----------------- .../ctrl/src/AxoInsight/v_6_0_0/AxoInsight.st | 36 +- .../AxoInsight_Config.st | 4 +- .../AxoDataman/AxoDataman.cs | 2 +- .../ctrl/src/AxoComponent/AxoComponent.st | 53 +- 6 files changed, 23 insertions(+), 582 deletions(-) delete mode 100644 src/components.cognex.vision/app/hwc/plc_line.hwl.yml diff --git a/src/components.cognex.vision/app/hwc/plc_line.hwl.yml b/src/components.cognex.vision/app/hwc/plc_line.hwl.yml deleted file mode 100644 index 47fed429a..000000000 --- a/src/components.cognex.vision/app/hwc/plc_line.hwl.yml +++ /dev/null @@ -1,18 +0,0 @@ -Devices: -- Name: plc_line - Modules: - - Apply: - TemplateName: 6ES7516-3AP03-0AB0_v3_1 - Arguments: - PLCName: plc_line - IpAddress_X1: 10.10.10.120/24 - ProfinetDeviceName_X1: plc_line_x1 -IoSystems: -- Name: profinet_plc_line - ControllerInterfaces: - - Ref: plc_line/plc_line/profinet_x1 - DeviceInterfaces: - - Ref: dm_280/dm_280/profinet - - Ref: dm_300/dm_300/profinet - - Ref: is7600/is7600/profinet - - Ref: is2800/is2800/profinet diff --git a/src/components.cognex.vision/ctrl/src/AxoDataman/v_6_0_0/AxoDataman.st b/src/components.cognex.vision/ctrl/src/AxoDataman/v_6_0_0/AxoDataman.st index ac13e6a1c..04dd858aa 100644 --- a/src/components.cognex.vision/ctrl/src/AxoDataman/v_6_0_0/AxoDataman.st +++ b/src/components.cognex.vision/ctrl/src/AxoDataman/v_6_0_0/AxoDataman.st @@ -220,8 +220,6 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 _hwIdResultData := hwIdResultData; _hwIdUserData := hwIdUserData; - - THIS.Open(); //**************************************** //***********Update inputs inline********* _returnValue := Siemens.Simatic.S71500.DistributedIO.ReadData(_hwIdAcquisitionStatus ,_data_in); @@ -461,7 +459,7 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 IF _progress = 314 THEN TaskMessenger.ActivateOnCondition(ULINT#614, Results.Length > TO_UINT(Config.ResultDataSize), eAxoMessageCategory#Error); - IF Results.Length=UINT#0 OR Results.Length > TO_UINT(Config.ResultDataSize) THEN + IF (*Results.Code = UINT#0 OR*) Results.Length=UINT#0 OR Results.Length > TO_UINT(Config.ResultDataSize) THEN ReadTask.ThrowWhen(TRUE); IF Results.Length > TO_UINT(Config.ResultDataSize) THEN Status.Error.Id := UINT#614; @@ -662,496 +660,8 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 END_IF; _UserDataChanged := UserData.DataChanged; END_IF; - - THIS.Close(); END_METHOD - // METHOD PRIVATE UpdateInputs : BOOL - // VAR - // _returnValue : WORD; - // _invalidDataSize : BOOL; - // END_VAR - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.ReadData(_hwIdAcquisitionStatus ,_data_in); - // Messenger.ActivateOnCondition(ULINT#708,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#708; - // RETURN; - // END_IF; - - // AcquisitionStatus.TriggerReady := _data_in[0].%X0; - // AcquisitionStatus.TriggerAcknowledge := _data_in[0].%X1; - // AcquisitionStatus.MissedAcquisition := _data_in[0].%X3; - // AcquisitionStatus.TriggerID.%B1 := _data_in[1]; - // AcquisitionStatus.TriggerID.%B0 := _data_in[2]; - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.ReadData(_hwIdResultsStatus ,_data_in); - // Messenger.ActivateOnCondition(ULINT#709,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#709; - // RETURN; - // END_IF; - - // ResultsStatus.Decoding := _data_in[0].%X0; - // ResultsStatus.DecodeComplete := _data_in[0].%X1; - // ResultsStatus.ResultsBufferOverrun := _data_in[0].%X2; - // ResultsStatus.ResultsAvailable := _data_in[0].%X3; - // ResultsStatus.ErrorDetected := _data_in[0].%X7; - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.ReadData(_hwIdSoftEventControl ,_data_in); - // Messenger.ActivateOnCondition(ULINT#710,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#710; - // RETURN; - // END_IF; - - // SoftEventStatus.TrainCodeAcknowledge := _data_in[0].%X0; - // SoftEventStatus.TrainMatchStringAcknowledge := _data_in[0].%X1; - // SoftEventStatus.TrainFocusAcknowledge := _data_in[0].%X2; - // SoftEventStatus.TrainBrightnessAcknowledge := _data_in[0].%X3; - // SoftEventStatus.UntrainAcknowledge := _data_in[0].%X4; - // SoftEventStatus.ExecuteDmccAcknowledge := _data_in[0].%X5; - // SoftEventStatus.Reserved06 := _data_in[0].%X6; - // SoftEventStatus.SetMatchStringAcknowledge := _data_in[0].%X7; - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.ReadData(_hwIdResultData ,_data_in); - // Messenger.ActivateOnCondition(ULINT#711,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#711; - // RETURN; - // END_IF; - - // _invalidDataSize := NOT (_ResultDataSize = eAxoDataman_ResultDataSize#RESULT_DATA_16B OR - // _ResultDataSize = eAxoDataman_ResultDataSize#RESULT_DATA_32B OR - // _ResultDataSize = eAxoDataman_ResultDataSize#RESULT_DATA_64B OR - // _ResultDataSize = eAxoDataman_ResultDataSize#RESULT_DATA_128B OR - // _ResultDataSize = eAxoDataman_ResultDataSize#RESULT_DATA_246B); - - // Messenger.ActivateOnCondition(ULINT#712,_invalidDataSize, eAxoMessageCategory#ProgrammingError); - - // IF _invalidDataSize THEN - // Status.Error.Id := UINT#712; - // RETURN; - // END_IF; - - // Config.ResultDataSize := _ResultDataSize; - - - // Results.Id.%B1 := _data_in[0]; - // Results.Id.%B0 := _data_in[1]; - // Results.Code.%B1 := _data_in[2]; - // Results.Code.%B0 := _data_in[3]; - // Results.Extended.%B1 := _data_in[4]; - // Results.Extended.%B0 := _data_in[5]; - // Results.Length.%B1 := _data_in[6]; - // Results.Length.%B0 := _data_in[7]; - // UpdateInputs := TRUE; - - // END_METHOD - - // METHOD PRIVATE UpdateOutputs : BOOL - // VAR - // _index : INT; - // _invalidDataSize : BOOL; - // _returnValue : WORD; - // _data_1 : ARRAY[0..0] OF BYTE; - // _data_16 : ARRAY[0..15] OF BYTE; - // _data_32 : ARRAY[0..31] OF BYTE; - // _data_64 : ARRAY[0..63] OF BYTE; - // _data_128 : ARRAY[0..127] OF BYTE; - // _data_250 : ARRAY[0..249] OF BYTE; - // END_VAR - - // UpdateOutputs := TRUE; - - // _data_1[0].%X0 := AcquisitionControl.TriggerEnable; - // _data_1[0].%X1 := AcquisitionControl.Trigger; - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdAcquisitionControl,_data_1); - // Messenger.ActivateOnCondition(ULINT#713,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#713; - // RETURN; - // END_IF; - - // _data_1[0].%X0 := ResultsControl.EnableResultBuffering; - // _data_1[0].%X1 := ResultsControl.ResultsAcknowledge; - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdResultsControl,_data_1); - // Messenger.ActivateOnCondition(ULINT#714,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#714; - // RETURN; - // END_IF; - - // _data_1[0].%X0 := SoftEventControl.TrainCode; - // _data_1[0].%X1 := SoftEventControl.TrainMatchString; - // _data_1[0].%X2 := SoftEventControl.TrainFocus; - // _data_1[0].%X3 := SoftEventControl.TrainBrightness; - // _data_1[0].%X4 := SoftEventControl.Untrain; - // _data_1[0].%X5 := SoftEventControl.ExecuteDMCC; - // _data_1[0].%X6 := SoftEventControl.Reserved06; - // _data_1[0].%X7 := SoftEventControl.SetMatchString; - - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdSoftEventControl,_data_1); - // Messenger.ActivateOnCondition(ULINT#715,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#715; - // RETURN; - // END_IF; - - // _invalidDataSize := NOT (_UserDataSize = eAxoDataman_UserDataSize#USER_DATA_16B OR - // _UserDataSize = eAxoDataman_UserDataSize#USER_DATA_32B OR - // _UserDataSize = eAxoDataman_UserDataSize#USER_DATA_64B OR - // _UserDataSize = eAxoDataman_UserDataSize#USER_DATA_128B OR - // _UserDataSize = eAxoDataman_UserDataSize#USER_DATA_250B); - - // Messenger.ActivateOnCondition(ULINT#716,_invalidDataSize, eAxoMessageCategory#ProgrammingError); - - // IF _invalidDataSize THEN - // Status.Error.Id := UINT#716; - // RETURN; - // END_IF; - - // Config.UserDataSize := _UserDataSize; - - // IF (UserData.DataChanged <> _UserDataChanged) THEN - // IF Config.UserDataSize = eAxoDataman_UserDataSize#USER_DATA_16B THEN - // FOR _index := 0 TO 15 DO - // _data_16[_index] := UserData.Data[_index]; - // END_FOR; - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdUserData ,_data_16); - // Messenger.ActivateOnCondition(ULINT#717,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#717; - // RETURN; - // END_IF; - // ELSIF Config.UserDataSize = eAxoDataman_UserDataSize#USER_DATA_32B THEN - // FOR _index := 0 TO 31 DO - // _data_32[_index] := UserData.Data[_index]; - // END_FOR; - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdUserData ,_data_32); - // Messenger.ActivateOnCondition(ULINT#718,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#718; - // RETURN; - // END_IF; - // ELSIF Config.UserDataSize = eAxoDataman_UserDataSize#USER_DATA_64B THEN - // FOR _index := 0 TO 63 DO - // _data_64[_index] := UserData.Data[_index]; - // END_FOR; - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdUserData ,_data_64); - // Messenger.ActivateOnCondition(ULINT#719,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#719; - // RETURN; - // END_IF; - // ELSIF Config.UserDataSize = eAxoDataman_UserDataSize#USER_DATA_128B THEN - // FOR _index := 0 TO 127 DO - // _data_128[_index] := UserData.Data[_index]; - // END_FOR; - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdUserData ,_data_128); - // Messenger.ActivateOnCondition(ULINT#720,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#720; - // RETURN; - // END_IF; - // ELSIF Config.UserDataSize = eAxoDataman_UserDataSize#USER_DATA_250B THEN - // FOR _index := 0 TO 253 DO - // _data_250[_index] := UserData.Data[_index]; - // END_FOR; - // _returnValue := Siemens.Simatic.S71500.DistributedIO.WriteData(_hwIdUserData ,_data_250); - // Messenger.ActivateOnCondition(ULINT#721,_returnValue > WORD#0, eAxoMessageCategory#ProgrammingError); - // IF _returnValue > WORD#0 THEN - // Status.Error.Id := UINT#721; - // RETURN; - // END_IF; - // END_IF; - // _UserDataChanged := UserData.DataChanged; - // END_IF; - // END_METHOD - - // METHOD PRIVATE Execute - // VAR - // _index : INT; - // _returnValue : WORD; - // END_VAR - - // THIS.UpdateInputs(); - - // RestoreTask.Run(THIS); - // ClearResultDataTask.Run(THIS); - // ReadTask.Run(THIS); - // HardwareDiagnosticsTask.Run(THIS); - // HardwareDiagnosticsTask.Run(THIS,_hwID); - - // TaskMessenger.Serve(THIS); - - // IF Config.ContinuousReading THEN - // THIS.ContinuousReading(); - // END_IF; - - - // //*************RESTORE******************** - // RestoreTask.IsDisabled := FALSE; - // IF RestoreTask.Execute(THIS) THEN - // THIS.Restore(); - // END_IF; - // //**************************************** - - // //*************CLEAR*DATA***************** - // ClearResultDataTask.IsDisabled := RestoreTask.IsBusy() OR ReadTask.IsBusy(); - // IF ClearResultDataTask.StartTriggered() THEN - // Status.Action.Id := UINT#100; - // END_IF; - // Messenger.ActivateOnCondition(ULINT#100,ClearResultDataTask.IsBusy(), eAxoMessageCategory#Info); - // Messenger.ActivateOnCondition(ULINT#101,ClearResultDataTask.IsDone(), eAxoMessageCategory#Info); - // IF ClearResultDataTask.Execute(THIS) THEN - // IF _progress = 0 THEN - // Status.Error.Id := UINT#0; - // TaskMessenger.Restore(); - // THIS.CallTimers(FALSE); - // _progress := 300; - // END_IF; - - // IF _progress = 300 THEN - // AcquisitionControl.TriggerEnable := FALSE; - // AcquisitionControl.Trigger := FALSE; - // ResultsControl.ResultsAcknowledge := TRUE; - // Results.Id := UINT#0; - // Results.Code := UINT#0; - // Results.Extended := UINT#0; - // Results.Length := UINT#0; - - // FOR _index := 0 TO 245 DO - // ResultData.Data[_index] := BYTE#0; - // END_FOR; - // THIS.CallTimers(FALSE); - // _progress := 301; - // END_IF; - - // IF _progress = 301 THEN - // TaskMessenger.ActivateOnCondition(ULINT#600, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#600; - // END_IF; - // IF NOT ResultsStatus.ResultsAvailable THEN - // THIS.CallTimers(FALSE); - // _progress := 302; - // END_IF; - // END_IF; - - // IF _progress = 302 THEN - // ResultsControl.ResultsAcknowledge := FALSE; - // ClearResultDataTask.DoneWhen(TRUE); - // THIS.CallTimers(FALSE); - // _progress := 0; - // END_IF; - - // THIS.CallTimers(TRUE); - - // ClearResultDataTask.ThrowWhen(_errorTimer.output); - // Status.Action.Id := TO_UINT(_progress); - // END_IF; - // IF ClearResultDataTask.DoneReached() THEN - // Status.Action.Id := UINT#101; - // Status.Error.Id := UINT#0; - // ELSIF ClearResultDataTask.ErrorOccured() THEN - // Status.Action.Id := UINT#800; - // Status.Error.Id := UINT#800; - // ELSIF ClearResultDataTask.AbortTriggered()THEN - // Status.Action.Id := UINT#801; - // Status.Error.Id := UINT#801; - // END_IF; - // Messenger.ActivateOnCondition(ULINT#800,ClearResultDataTask.HasError(), eAxoMessageCategory#Error); - // Messenger.ActivateOnCondition(ULINT#801,ClearResultDataTask.IsAborted(), eAxoMessageCategory#Error); - // Messenger.ActivateOnCondition(ULINT#102,ClearResultDataTask.RestoreTriggered() , eAxoMessageCategory#Error); - // IF ClearResultDataTask.RestoreTriggered() AND _progress >= 300 AND _progress <= 309 THEN - // Status.Action.Id := UINT#102; - // _progress := 0; - // END_IF; - // //**************************************** - - // //*************READ*********************** - // ReadTask.IsDisabled := RestoreTask.IsBusy() OR ClearResultDataTask.IsBusy(); - // IF ReadTask.StartTriggered() THEN - // Status.Action.Id := UINT#110; - // END_IF; - // Messenger.ActivateOnCondition(ULINT#110,ReadTask.IsBusy(), eAxoMessageCategory#Info); - // Messenger.ActivateOnCondition(ULINT#111,ReadTask.IsDone(), eAxoMessageCategory#Info); - // IF ReadTask.Execute(THIS) THEN - // IF _progress = 0 THEN - // Status.Error.Id := UINT#0; - // TaskMessenger.Restore(); - // THIS.CallTimers(FALSE); - // IF ResultsStatus.ErrorDetected THEN - // _progress := 319; - // ELSE - // _progress := 310; - // END_IF; - // END_IF; - - // IF _progress = 310 THEN - // AcquisitionControl.TriggerEnable := TRUE; - // AcquisitionControl.Trigger := FALSE; - // ResultsControl.EnableResultBuffering := FALSE; - // ResultsControl.ResultsAcknowledge := ResultsStatus.ResultsAvailable; - // TaskMessenger.ActivateOnCondition(ULINT#610, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#610; - // END_IF; - // IF NOT ResultsStatus.ResultsAvailable THEN - // THIS.CallTimers(FALSE); - // _progress := 311; - // END_IF; - // END_IF; - - // IF _progress = 311 THEN - // TaskMessenger.ActivateOnCondition(ULINT#611, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#611; - // END_IF; - // IF AcquisitionStatus.TriggerReady THEN - // THIS.CallTimers(FALSE); - // _progress := 312; - // END_IF; - // END_IF; - - // IF _progress = 312 THEN - // TaskMessenger.ActivateOnCondition(ULINT#612, _infoTimer.output, eAxoMessageCategory#Warning); - // AcquisitionControl.Trigger := TRUE; - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#612; - // END_IF; - // IF AcquisitionStatus.TriggerAcknowledge THEN - // THIS.CallTimers(FALSE); - // _progress := 313; - // END_IF; - // END_IF; - - // IF _progress = 313 THEN - // TaskMessenger.ActivateOnCondition(ULINT#613, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#613; - // END_IF; - // IF ResultsStatus.ResultsAvailable THEN - // THIS.CallTimers(FALSE); - // _progress := 314; - // END_IF; - // END_IF; - - // IF _progress = 314 THEN - // TaskMessenger.ActivateOnCondition(ULINT#614, Results.Length > TO_UINT(Config.ResultDataSize), eAxoMessageCategory#Error); - // IF Results.Code = UINT#0 OR Results.Length=UINT#0 OR Results.Length > TO_UINT(Config.ResultDataSize) THEN - // ReadTask.ThrowWhen(TRUE); - // IF Results.Length > TO_UINT(Config.ResultDataSize) THEN - // Status.Error.Id := UINT#614; - // END_IF; - // ELSE - // THIS.CallTimers(FALSE); - // _progress := 315; - // END_IF; - // END_IF; - - // IF _progress = 315 THEN - // TaskMessenger.ActivateOnCondition(ULINT#615, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#615; - // END_IF; - - // FOR _index := 0 TO (TO_INT(Results.Length) - INT#1) DO - // ResultData.Data[_index] := _data_in[_index + 8]; - // END_FOR; - // FOR _index := TO_INT(Results.Length) TO 245 DO - // ResultData.Data[_index] := BYTE#0; - // END_FOR; - // ResultData.DataChanged := NOT ResultData.DataChanged ; - // _progress := 316; - // END_IF; - - // IF _progress = 316 THEN - // AcquisitionControl.Trigger := FALSE; - // ResultsControl.EnableResultBuffering := FALSE; - // ResultsControl.ResultsAcknowledge := TRUE; - // ReadTask.DoneWhen(TRUE); - // _progress := 0; - // END_IF; - - // IF _progress = 319 THEN - // TaskMessenger.ActivateOnCondition(ULINT#619, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#619; - // END_IF; - // AcquisitionControl.TriggerEnable :=FALSE; - // AcquisitionControl.Trigger := FALSE; - // ResultsControl.EnableResultBuffering := FALSE; - // ResultsControl.ResultsAcknowledge := FALSE; - // IF NOT AcquisitionStatus.TriggerReady THEN - // THIS.CallTimers(FALSE); - // _progress := 320; - // END_IF; - // END_IF; - - // IF _progress = 320 THEN - // TaskMessenger.ActivateOnCondition(ULINT#620, _infoTimer.output, eAxoMessageCategory#Warning); - // IF _infoTimer.output THEN - // Status.Error.Id := UINT#620; - // END_IF; - // AcquisitionControl.TriggerEnable :=TRUE; - // IF NOT ResultsStatus.ErrorDetected THEN - // THIS.CallTimers(FALSE); - // _progress := 321; - // END_IF; - // END_IF; - - // IF _progress = 321 THEN - // AcquisitionControl.TriggerEnable :=FALSE; - // IF _infoTimer.elapsedTime >= T#1s THEN - // THIS.CallTimers(FALSE); - // _progress := 310; - // END_IF; - // END_IF; - - // THIS.CallTimers(TRUE); - - // ReadTask.ThrowWhen(_errorTimer.output); - // Status.Action.Id := TO_UINT(_progress); - // END_IF; - // IF ReadTask.DoneReached() THEN - // Status.Action.Id := UINT#111; - // Status.Error.Id := UINT#0; - // ELSIF ReadTask.ErrorOccured() THEN - // Status.Action.Id := UINT#810; - // Status.Error.Id := UINT#810; - // ELSIF ReadTask.AbortTriggered()THEN - // Status.Action.Id := UINT#811; - // Status.Error.Id := UINT#811; - // END_IF; - // Messenger.ActivateOnCondition(ULINT#810,ReadTask.HasError(), eAxoMessageCategory#Error); - // Messenger.ActivateOnCondition(ULINT#811,ReadTask.IsAborted(), eAxoMessageCategory#Error); - // Messenger.ActivateOnCondition(ULINT#112,ReadTask.RestoreTriggered() , eAxoMessageCategory#Error); - // IF ReadTask.RestoreTriggered() AND _progress >= 300 AND _progress <= 329 THEN - // Status.Action.Id := UINT#112; - // _progress := 0; - // END_IF; - // //**************************************** - // THIS.UpdateOutputs(); - // END_METHOD - - /// - /// Custom component logic running before any other component logic. - /// - METHOD PROTECTED OVERRIDE Open - SUPER.Open(); - END_METHOD - - /// - /// Custom component logic running after any other component logic. - /// - METHOD PROTECTED OVERRIDE Close - SUPER.Close(); - END_METHOD - /// /// Clears the result data. /// diff --git a/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/AxoInsight.st b/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/AxoInsight.st index 379db47c8..37e154561 100644 --- a/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/AxoInsight.st +++ b/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/AxoInsight.st @@ -264,7 +264,6 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 _hwIdResultData := hwIdResultData; _hwIdUserData := hwIdUserData; - THIS.Open(); //**************************************Update Inputs inline************** _returnValue := Siemens.Simatic.S71500.DistributedIO.ReadData(_hwIdAcquisitionStatus ,_data_in); @@ -363,7 +362,6 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 Results.ResultCode.%B0 := _data_in[3]; //**************************************Execute inline******************** - // THIS.Execute(); RestoreTask.Run(THIS); ClearInspectionResultsTask.Run(THIS); TriggerTask.Run(THIS); @@ -696,6 +694,7 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 IF NOT InspectionStatus.Error THEN THIS.CallTimers(FALSE); _progress := 324; + // _jobName := THIS.AppendSuffix(_jobName); END_IF; END_IF; @@ -1207,24 +1206,8 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 _UserDataChanged := UserData.DataChanged; END_IF; - THIS.Close(); END_METHOD - /// - /// Custom component logic running before any other component logic. - /// - METHOD PROTECTED OVERRIDE Open - SUPER.Open(); - END_METHOD - - - /// - /// Custom component logic running after any other component logic. - /// - METHOD PROTECTED OVERRIDE Close - SUPER.Close(); - END_METHOD - /// /// Clears the inspection results. /// @@ -1281,6 +1264,21 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 _errorTimer.OnDelay(THIS, signal , Config.ErrorTime ); END_METHOD + METHOD INTERNAL AppendSuffix :STRING + VAR_INPUT + jobName : STRING; + END_VAR + VAR + position : INT; + END_VAR + position := LengthOf(jobName) - 4; + IF EndOf(jobName, 4) <> '.job' THEN + AppendSuffix := Concat(jobName,'.job'); + ELSE + AppendSuffix := jobName; + END_IF; + END_METHOD + METHOD INTERNAL SetUserDataAsString : BOOL VAR_INPUT inValue : STRING; @@ -1354,6 +1352,8 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 TriggerTask.Restore(); ChangeJobByNameTask.Restore(); ChangeJobByNumberTask.Restore(); + SoftEventTask.Restore(); + HardwareDiagnosticsTask.Restore(); RequiredJobName := ''; RequiredJobNumber := UINT#0; diff --git a/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/TypeStructuresAndEnums/AxoInsight_Config.st b/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/TypeStructuresAndEnums/AxoInsight_Config.st index c96a5733f..015029ebd 100644 --- a/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/TypeStructuresAndEnums/AxoInsight_Config.st +++ b/src/components.cognex.vision/ctrl/src/AxoInsight/v_6_0_0/TypeStructuresAndEnums/AxoInsight_Config.st @@ -5,9 +5,9 @@ NAMESPACE AXOpen.Components.Cognex.Vision.v_6_0_0_0 AxoInsight_Config : STRUCT {#ix-set:AttributeName = "<#Info time#>"} - InfoTime : LTIME := LT#2S; + InfoTime : LTIME := LT#10S; {#ix-set:AttributeName = "<#Error time#>"} - ErrorTime : LTIME := LT#5S; + ErrorTime : LTIME := LT#50S; {#ix-set:AttributeName = "<#Max job number#>"} MaxJobNumber : UINT := UINT#999; {#ix-set:AttributeName = "<#Result data size#>"} diff --git a/src/components.cognex.vision/src/AXOpen.Components.Cognex.Vision/AxoDataman/AxoDataman.cs b/src/components.cognex.vision/src/AXOpen.Components.Cognex.Vision/AxoDataman/AxoDataman.cs index ebaf45622..d140b8df2 100644 --- a/src/components.cognex.vision/src/AXOpen.Components.Cognex.Vision/AxoDataman/AxoDataman.cs +++ b/src/components.cognex.vision/src/AXOpen.Components.Cognex.Vision/AxoDataman/AxoDataman.cs @@ -72,7 +72,7 @@ private void InitializeMessenger() new KeyValuePair(717, new AxoMessengerTextItem("Error writing the 16bytes of the UserData in the UpdateOutputs method!", "Check the value of the hwIdUserData, the real size of the `UserData`, the value of the UserDataSize parameter and reacheability of the device!")), new KeyValuePair(718, new AxoMessengerTextItem("Error writing the 32bytes of the UserData in the UpdateOutputs method!", "Check the value of the hwIdUserData, the real size of the `UserData`, the value of the UserDataSize parameter and reacheability of the device!")), new KeyValuePair(719, new AxoMessengerTextItem("Error writing the 64bytes of the UserData in the UpdateOutputs method!", "Check the value of the hwIdUserData, the real size of the `UserData`, the value of the UserDataSize parameter and reacheability of the device!")), - new KeyValuePair(720, new AxoMessengerTextItem("Error writing the 128bytes of the UserData in the UpdateOutputs method!", "Check the value of the hwIdUserData, the real size of the `UserData`, the value of the UserDataSize parameter and reacheability of the device!")), + new KeyValuePair(720, new AxoMessengerTextItem("Error writing the 128bytes of the UserData in the UpdateOutputs method!", "Check the value of the hwIdUserData, the real size of the `UserData`, the value of the UserDataSize parameter and reacheability of the device!")), new KeyValuePair(721, new AxoMessengerTextItem("Error writing the 250bytes of the UserData in the UpdateOutputs method!", "Check the value of the hwIdUserData, the real size of the `UserData`, the value of the UserDataSize parameter and reacheability of the device!")), new KeyValuePair(800, new AxoMessengerTextItem("Clearing of the result data finished with error!", "Check the details.")), diff --git a/src/core/ctrl/src/AxoComponent/AxoComponent.st b/src/core/ctrl/src/AxoComponent/AxoComponent.st index 4158f08e7..d43cfce3b 100644 --- a/src/core/ctrl/src/AxoComponent/AxoComponent.st +++ b/src/core/ctrl/src/AxoComponent/AxoComponent.st @@ -38,7 +38,7 @@ NAMESPACE AXOpen.Core _isManuallyControllable := FALSE; // TODO: some message should inform about this issue _myContextCycleCount := ULINT#0; END_IF; - IsManuallyControllable := _isManuallyControllable; + IsManuallyControllable := _isManuallyControllable; END_METHOD /// @@ -64,45 +64,6 @@ NAMESPACE AXOpen.Core _isManuallyControllable : BOOL; END_VAR - // METHOD PRIVATE CheckIfManualControlIsActivatedInlined - // VAR - // _myContextCycleCount : ULINT; - // END_VAR - // IF THIS._context <> NULL THEN - // _myContextCycleCount := _context.OpenCycleCount(); - // //When component.Service() is called "before" invoking its task _serviceContextCycle is equal to GetContext().OpenCycleCount() - // _isManuallyControllable := _manualControlContextCycle = _myContextCycleCount OR - // //When component.Service() is called "after" invoking its task (_serviceContextCycle + 1) is equal to GetContext().OpenCycleCount() - // (_manualControlContextCycle + ULINT#1) = _myContextCycleCount; - // ELSE - // _context := THIS.GetContext(); - // _isManuallyControllable := FALSE; // TODO: some message should inform about this issue - // _myContextCycleCount := ULINT#0; - // END_IF; - // END_METHOD - - METHOD PROTECTED Open - //[INLINE]THIS.CheckIfManualControlIsActivated(); - VAR - _myContextCycleCount : ULINT; - END_VAR - IF THIS._context <> NULL THEN - _myContextCycleCount := _context.OpenCycleCount(); - //When component.Service() is called "before" invoking its task _serviceContextCycle is equal to GetContext().OpenCycleCount() - _isManuallyControllable := _manualControlContextCycle = _myContextCycleCount OR - //When component.Service() is called "after" invoking its task (_serviceContextCycle + 1) is equal to GetContext().OpenCycleCount() - (_manualControlContextCycle + ULINT#1) = _myContextCycleCount; - // IF _myContextCycleCount <= ULINT#2 THEN - // THIS.Restore(); - // END_IF; - ELSE - _context := THIS.GetContext(); - _isManuallyControllable := FALSE; // TODO: some message should inform about this issue - _myContextCycleCount := ULINT#0; - // THIS.Restore(); ??? - END_IF; - END_METHOD - METHOD PUBLIC OVERRIDE Run VAR_INPUT inParent : IAxoObject; @@ -121,23 +82,11 @@ NAMESPACE AXOpen.Core _isManuallyControllable := _manualControlContextCycle = _myContextCycleCount OR //When component.Service() is called "after" invoking its task (_serviceContextCycle + 1) is equal to GetContext().OpenCycleCount() (_manualControlContextCycle + ULINT#1) = _myContextCycleCount; - IF _myContextCycleCount <= ULINT#2 THEN - THIS.Restore(); - END_IF; ELSE _context := THIS.GetContext(); _isManuallyControllable := FALSE; // TODO: some message should inform about this issue _myContextCycleCount := ULINT#0; - THIS.Restore(); END_IF; - // THIS.Open(); - // // Place the custom logic here - // THIS.Close(); END_METHOD - - - METHOD PROTECTED Close - ; - END_METHOD END_CLASS END_NAMESPACE From 8c7dcefc1c0cc76acf184e4b69ff6e0cb09f3008 Mon Sep 17 00:00:00 2001 From: PTKu <61538034+PTKu@users.noreply.github.com> Date: Wed, 2 Apr 2025 08:19:24 +0200 Subject: [PATCH 5/7] adds Roles access to distributed data --- .../DataExchangeRoleNames.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/data/src/AXOpen.Data.Blazor/DataExchangeRoleNames.cs b/src/data/src/AXOpen.Data.Blazor/DataExchangeRoleNames.cs index 72b11e9be..d7164c33b 100644 --- a/src/data/src/AXOpen.Data.Blazor/DataExchangeRoleNames.cs +++ b/src/data/src/AXOpen.Data.Blazor/DataExchangeRoleNames.cs @@ -10,6 +10,25 @@ namespace AXOpen.Data { public static class DataExchangeRoleNames { + public static IEnumerable GetRoles() + { + return new [] + { + new Role(nameof(can_data_item_create)), + new Role(nameof(can_data_item_edit)), + new Role(nameof(can_data_item_copy)), + new Role(nameof(can_data_item_delete)), + + new Role(nameof(can_data_send_to_plc)), + new Role(nameof(can_data_load_from_plc)), + new Role(nameof(can_data_update_from_plc)), + + new Role(nameof(can_data_export)), + new Role(nameof(can_data_import)), + + new Role(nameof(can_data_filter_advanced)), + }; + } // insert all new role names in the middle of documentation tag // From 231982c57ce35ad5050b5ea7f39ea180fb476892 Mon Sep 17 00:00:00 2001 From: PTKu <61538034+PTKu@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:53:44 +0200 Subject: [PATCH 6/7] Update AXSharp package versions to 0.24.0-alpha.394 --- .config/dotnet-tools.json | 6 +++--- src/Directory.Packages.props | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 36f6b7070..144259617 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "AXSharp.ixc": { - "version": "0.24.0-alpha.386", + "version": "0.24.0-alpha.394", "commands": [ "ixc" ], @@ -17,14 +17,14 @@ "rollForward": false }, "AXSharp.ixd": { - "version": "0.24.0-alpha.386", + "version": "0.24.0-alpha.394", "commands": [ "ixd" ], "rollForward": false }, "AXSharp.ixr": { - "version": "0.24.0-alpha.386", + "version": "0.24.0-alpha.394", "commands": [ "ixr" ], diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index c8653b8ee..2b6a15e34 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -9,11 +9,11 @@ - - - - - + + + + + From 08badf8ceca94dee3a2a6a08d7bb6bc848c7798a Mon Sep 17 00:00:00 2001 From: PTKu <61538034+PTKu@users.noreply.github.com> Date: Wed, 2 Apr 2025 11:37:22 +0200 Subject: [PATCH 7/7] Fix message parsing by using PlcTextList_raw instead of PlcTextList --- src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs b/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs index 56cca4cb2..bd3b62cfd 100644 --- a/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs +++ b/src/core/src/AXOpen.Core/AxoMessenger/Static/AxoMessenger.cs @@ -120,7 +120,7 @@ public Dictionary PlcMessengerTextList { if (plcMessengerTextList == null) { - plcMessengerTextList = ParseMessages(this.PlcTextList, this); + plcMessengerTextList = ParseMessages(this.PlcTextList_raw, this); } } catch (Exception)