diff --git a/TcCommando/TcCommando/TcCommando/DUTs/PLCOpenCommandInternal.TcDUT b/TcCommando/TcCommando/TcCommando/DUTs/PLCOpenCommandInternal.TcDUT index 43b3273..382ae95 100644 --- a/TcCommando/TcCommando/TcCommando/DUTs/PLCOpenCommandInternal.TcDUT +++ b/TcCommando/TcCommando/TcCommando/DUTs/PLCOpenCommandInternal.TcDUT @@ -9,7 +9,7 @@ _status : PLCopenStatusBase; _remote : IPLCopenCall; _nullRemote : PLCopenNullRemote; - _commandGroups : ARRAY[0..GVL.MAX_RELATED_GROUPS] OF IPLCopenGroup; + _commandGroups : ARRAY[0..GVLTcCommando.MAX_RELATED_GROUPS] OF IPLCopenGroup; END_STRUCT END_TYPE ]]> diff --git a/TcCommando/TcCommando/TcCommando/DUTs/PLCopenCallGroupType.TcDUT b/TcCommando/TcCommando/TcCommando/DUTs/PLCopenCallGroupType.TcDUT index 343b521..ade769c 100644 --- a/TcCommando/TcCommando/TcCommando/DUTs/PLCopenCallGroupType.TcDUT +++ b/TcCommando/TcCommando/TcCommando/DUTs/PLCopenCallGroupType.TcDUT @@ -14,7 +14,7 @@ _isError : BOOL; _statusChecked : BOOL; _numberActiveCommands : INT; - _commands : ARRAY[0..GVL.MAX_RELATED_GROUPS] OF PLCopenCall; + _commands : ARRAY[0..GVLTcCommando.MAX_RELATED_GROUPS] OF PLCopenCall; _syncAbort : BOOL; _syncError : BOOL; _syncDone : BOOL; diff --git a/TcCommando/TcCommando/TcCommando/GVLs/GVL.TcGVL b/TcCommando/TcCommando/TcCommando/GVLs/GVLTcCommando.TcGVL similarity index 77% rename from TcCommando/TcCommando/TcCommando/GVLs/GVL.TcGVL rename to TcCommando/TcCommando/TcCommando/GVLs/GVLTcCommando.TcGVL index 097bf8f..f0fa7dc 100644 --- a/TcCommando/TcCommando/TcCommando/GVLs/GVL.TcGVL +++ b/TcCommando/TcCommando/TcCommando/GVLs/GVLTcCommando.TcGVL @@ -1,6 +1,6 @@  - + @@ -34,7 +31,7 @@ Call();]]> +_PLCopenCallInternal._abort := true;]]> @@ -47,29 +44,29 @@ END_VAR]]> //Capture edges IF NOT Execute THEN - i_PLCopenCallInternal._execute := FALSE; + _PLCopenCallInternal._execute := FALSE; END_IF // Start a new command on edge -IF (Execute AND NOT i_PLCopenCallInternal._execute) THEN - i_PLCopenCallInternal._execute := TRUE; - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_NEW_COMMAND; +IF (Execute AND NOT _PLCopenCallInternal._execute) THEN + _PLCopenCallInternal._execute := TRUE; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_NEW_COMMAND; END_IF // If this call get aborted, handle it -IF (i_PLCopenCallInternal._abort) THEN - i_PLCopenCallInternal._abort := 0; - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_ABORTED; +IF (_PLCopenCallInternal._abort) THEN + _PLCopenCallInternal._abort := 0; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_ABORTED; END_IF -i_PLCopenCallInternal._self := THIS^; +_PLCopenCallInternal._self := THIS^; // Use a "while not break" to enable multiple passes on the state machine, // to do as much as possible in a single call _break := FALSE; WHILE _break = FALSE DO - CASE (i_PLCopenCallInternal._state) OF + CASE (_PLCopenCallInternal._state) OF // IDLE PLCopenCallState.PLCOPEN_FUB_IDLE: @@ -83,7 +80,7 @@ WHILE _break = FALSE DO // Start a new command PLCopenCallState.PLCOPEN_FUB_NEW_COMMAND: Status := PLCopenStatusBase.BUSY; - i_PLCopenCallInternal._RemoteStatus := PLCopenStatusBase.BUSY; + _PLCopenCallInternal._RemoteStatus := PLCopenStatusBase.BUSY; Busy := TRUE; Done := FALSE; Error := FALSE; @@ -93,39 +90,39 @@ WHILE _break = FALSE DO // 1. don't need feedback (TODO why? because it is being aborted?) // 2. this call doesn't get the abort // so remove this FUB before calling abort previous - IF i_PLCopenCallInternal._Command <> 0 THEN - IF i_PLCopenCallInternal._Command.Remote = i_PLCopenCallInternal._self THEN - i_PLCopenCallInternal._Command.Remote := 0; + IF _PLCopenCallInternal._Command <> 0 THEN + IF _PLCopenCallInternal._Command.Remote = _PLCopenCallInternal._self THEN + _PLCopenCallInternal._Command.Remote := 0; END_IF END_IF // Get the new command - i_PLCopenCallInternal._command := Command; + _PLCopenCallInternal._command := Command; - IF i_PLCopenCallInternal._Command <> 0 THEN - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_ABORT_OLD; + IF _PLCopenCallInternal._Command <> 0 THEN + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_ABORT_OLD; // No _break ELSE - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_WORKING; - i_PLCopenCallInternal._RemoteStatus := Fallback; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_WORKING; + _PLCopenCallInternal._RemoteStatus := Fallback; _break := TRUE; END_IF // No _break // Abort any commands that were active using the same PLCopen state PLCopenCallState.PLCOPEN_FUB_ABORT_OLD: - i_PLCopenCallInternal._Command.AbortPreviousCommands(i_PLCopenCallInternal._Command); + _PLCopenCallInternal._Command.AbortPreviousCommands(_PLCopenCallInternal._Command); - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_SET_COMMAND; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_SET_COMMAND; //no break; // Start the command PLCopenCallState.PLCOPEN_FUB_SET_COMMAND: - i_PLCopenCallInternal._Command.Execute := TRUE; - i_PLCopenCallInternal._Command.Remote := THIS^; + _PLCopenCallInternal._Command.Execute := TRUE; + _PLCopenCallInternal._Command.Remote := THIS^; Busy := TRUE; - i_PLCOpenCallInternal._state := PLCOpenCallState.PLCOPEN_FUB_WORKING; + _PLCopenCallInternal._state := PLCOpenCallState.PLCOPEN_FUB_WORKING; // No _break //Wait for the command to be finished @@ -133,9 +130,9 @@ WHILE _break = FALSE DO Busy := TRUE; // No _break - IF (i_PLCopenCallInternal._RemoteStatus <> PLCopenStatusBase.BUSY AND - i_PLCopenCallInternal._RemoteStatus <> PLCopenStatusBase.ENABLED_WAITING) THEN - Status := i_PLCopenCallInternal._RemoteStatus; + IF (_PLCopenCallInternal._RemoteStatus <> PLCopenStatusBase.BUSY AND + _PLCopenCallInternal._RemoteStatus <> PLCopenStatusBase.ENABLED_WAITING) THEN + Status := _PLCopenCallInternal._RemoteStatus; Busy := FALSE; IF (Status = 0) THEN @@ -145,7 +142,7 @@ WHILE _break = FALSE DO Error := TRUE; END_IF - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_CLEANUP; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_CLEANUP; // No _break ELSE _break := TRUE; @@ -153,19 +150,19 @@ WHILE _break = FALSE DO PLCopenCallState.PLCOPEN_FUB_CLEANUP: // Remove self from the source command - IF i_PLCopenCallInternal._Command <> 0 THEN - i_PLCopenCallInternal._Command.Remote := 0; - i_PLCopenCallInternal._Command := 0; + IF _PLCopenCallInternal._Command <> 0 THEN + _PLCopenCallInternal._Command.Remote := 0; + _PLCopenCallInternal._Command := 0; END_IF - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_DONE; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_DONE; // Break to force at least 1 cycle with statuses _break := TRUE; PLCopenCallState.PLCOPEN_FUB_DONE: IF (NOT Execute) THEN - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_IDLE; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_IDLE; Status := PLCopenStatusBase.NOT_ENABLED; Busy := FALSE; Done := FALSE; @@ -181,8 +178,8 @@ WHILE _break = FALSE DO Done := FALSE; Error := FALSE; CommandAborted := TRUE; - i_PLCopenCallInternal._command := 0; - i_PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_DONE; + _PLCopenCallInternal._command := 0; + _PLCopenCallInternal._state := PLCopenCallState.PLCOPEN_FUB_DONE; _break := TRUE; END_CASE @@ -196,7 +193,7 @@ END_WHILE]]> @@ -253,7 +250,7 @@ Exec := THIS^.Status;]]> diff --git a/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCallGroup.TcPOU b/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCallGroup.TcPOU index 1d33230..7e8b000 100644 --- a/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCallGroup.TcPOU +++ b/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCallGroup.TcPOU @@ -7,7 +7,7 @@ END_VAR VAR_OUTPUT END_VAR VAR - i_callgroup : PLCopenCallGroupType; + _callGroup : PLCopenCallGroupType; END_VAR ]]> @@ -22,7 +22,7 @@ END_VAR +_callGroup._syncAbort := TRUE;]]> @@ -37,32 +37,32 @@ END_VAR]]> 0 THEN - i_callgroup._commands[_commandIndex](); +FOR _commandIndex := 0 TO GVLTcCommando.MAX_RELATED_GROUPS DO + IF _callGroup._commands[_commandIndex].Command <> 0 THEN + _callGroup._commands[_commandIndex](); - IF i_callgroup._commands[_commandIndex].CommandAborted THEN + IF _callGroup._commands[_commandIndex].CommandAborted THEN _anyAbort := TRUE; - ELSIF i_callgroup._commands[_commandIndex].Error THEN + ELSIF _callGroup._commands[_commandIndex].Error THEN _anyError := TRUE; - ELSIF i_callgroup._commands[_commandIndex].Busy THEN + ELSIF _callGroup._commands[_commandIndex].Busy THEN _anyBusy := TRUE; ELSE - i_callgroup._commands[_commandIndex].Command := 0; + _callGroup._commands[_commandIndex].Command := 0; END_IF END_IF END_FOR -i_callgroup._isError := FALSE; -i_callgroup._isAbort := FALSE; -i_callgroup._isDone := FALSE; +_callGroup._isError := FALSE; +_callGroup._isAbort := FALSE; +_callGroup._isDone := FALSE; -IF _anyError OR i_callgroup._syncError THEN - i_callgroup._isError := TRUE; -ELSIF _anyAbort OR i_callgroup._syncAbort THEN - i_callgroup._isAbort := TRUE; +IF _anyError OR _callGroup._syncError THEN + _callGroup._isError := TRUE; +ELSIF _anyAbort OR _callGroup._syncAbort THEN + _callGroup._isAbort := TRUE; ELSIF NOT _anyBusy THEN - i_callgroup._isDone := TRUE; + _callGroup._isDone := TRUE; END_IF ]]> @@ -76,7 +76,7 @@ END_VAR +_callGroup._syncError := TRUE;]]> @@ -85,7 +85,7 @@ i_callgroup._syncError := TRUE;]]> +_callGroup._syncDone := TRUE;]]> @@ -98,7 +98,7 @@ END_VAR +IsAbort := _callGroup._isAbort;]]> @@ -112,7 +112,7 @@ IsAbort := i_callgroup._isAbort;]]> CheckStatus(); //Check if we are done -IsDone := i_callgroup._isDone;]]> +IsDone := _callGroup._isDone;]]> @@ -127,7 +127,7 @@ END_VAR CheckStatus(); -IsError := i_callgroup._isError;]]> +IsError := _callGroup._isError;]]> @@ -153,8 +153,8 @@ END_VAR]]> @@ -170,19 +170,19 @@ END_VAR]]> PLCopenStatusBase.BUSY AND NOT Execute THEN - i_PLCopenCommand._status := PLCopenStatusBase.NOT_ENABLED; +IF _PLCopenCommand._status <> PLCopenStatusBase.BUSY AND NOT Execute THEN + _PLCopenCommand._status := PLCopenStatusBase.NOT_ENABLED; END_IF ]]> @@ -24,7 +24,7 @@ END_VAR @@ -47,9 +47,9 @@ Remote.Aborted(); Remote := 0; //Abort any related commands -FOR i := 0 TO GVL.MAX_RELATED_GROUPS DO - IF i_PLCopenCommand._commandGroups[i] <> 0 THEN - i_PLCopenCommand._commandGroups[i].AbortPreviousCommands(newCommand); +FOR i := 0 TO GVLTcCommando.MAX_RELATED_GROUPS DO + IF _PLCopenCommand._commandGroups[i] <> 0 THEN + _PLCopenCommand._commandGroups[i].AbortPreviousCommands(newCommand); END_IF END_FOR ]]> @@ -73,14 +73,14 @@ END_VAR @@ -99,10 +99,10 @@ CASE ID OF PLCopenStatusBase.BUSY, PLCopenStatusBase.ENABLED_WAITING, PLCopenStatusBase.ERR_OK: - i_PLCopenCommand._status := PLCopenStatusBase.ERROR; + _PLCopenCommand._status := PLCopenStatusBase.ERROR; ELSE //Any other status can be passed through - i_PLCopenCommand._status := ID; + _PLCopenCommand._status := ID; END_CASE Remote.Errored(ID); @@ -120,7 +120,7 @@ END_VAR +Execute := _PLCopenCommand._Execute;]]> @@ -131,20 +131,20 @@ END_VAR @@ -160,7 +160,7 @@ END_VAR @@ -172,8 +172,8 @@ END_VAR]]> @@ -229,10 +229,10 @@ END_VAR 0 THEN - Remote := i_PLCopenCommand._remote; +IF _PLCopenCommand._remote <> 0 THEN + Remote := _PLCopenCommand._remote; ELSE - Remote := i_PLCopenCommand._nullRemote; + Remote := _PLCopenCommand._nullRemote; END_IF]]> @@ -243,7 +243,7 @@ END_VAR +_PLCopenCommand._remote := Remote;]]> @@ -257,7 +257,7 @@ END_VAR +status := _PLCopenCommand._status;]]> diff --git a/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCommandGroup.TcPOU b/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCommandGroup.TcPOU index 8dae6c4..252fa74 100644 --- a/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCommandGroup.TcPOU +++ b/TcCommando/TcCommando/TcCommando/POUs/PLCOpenCommandGroup.TcPOU @@ -4,7 +4,7 @@ 0 AND commands[i] <> newCommand THEN @@ -47,7 +47,7 @@ ADSLOGSTR(msgCtrlMask := ADSLOG_MSGTYPE_ERROR, msgFmtStr := 'Initing command group', strArg := ''); -FOR i := 0 TO GVL.MAX_RELATED_GROUPS DO +FOR i := 0 TO GVLTcCommando.MAX_RELATED_GROUPS DO IF commands[i] <> 0 THEN diff --git a/TcCommando/TcCommando/TcCommando/TcCommando.plcproj b/TcCommando/TcCommando/TcCommando/TcCommando.plcproj index 751b1ee..5975564 100644 --- a/TcCommando/TcCommando/TcCommando/TcCommando.plcproj +++ b/TcCommando/TcCommando/TcCommando/TcCommando.plcproj @@ -49,7 +49,7 @@ Code - + Code true @@ -83,13 +83,13 @@ Code - + Code Code - + Code diff --git a/TcCommando/TcCommando/TcCommando/Test/FB_PLCOpenCall_Test.TcPOU b/TcCommando/TcCommando/TcCommando/Test/PLCopenCall_Test.TcPOU similarity index 95% rename from TcCommando/TcCommando/TcCommando/Test/FB_PLCOpenCall_Test.TcPOU rename to TcCommando/TcCommando/TcCommando/Test/PLCopenCall_Test.TcPOU index 56351e9..a361a9d 100644 --- a/TcCommando/TcCommando/TcCommando/Test/FB_PLCOpenCall_Test.TcPOU +++ b/TcCommando/TcCommando/TcCommando/Test/PLCopenCall_Test.TcPOU @@ -1,7 +1,7 @@  - - + - - +