EcoStruxure Geo SCADA Expert Forum
Schneider Electric support forum about installation, configuration, integration and troubleshooting of EcoStruxure Geo SCADA Expert (ClearSCADA, ViewX, WebX).
Link copied. Please paste this link to share this article on your social media post.
Posted: 2024-03-26 01:46 AM
I apologise is this is a simple question. But I cant seem to find a programming manual/database for the functions and and keywords available in logic modules specifically structured text.
For my we have some logic blocks that we only want executed on specific (and slightly complex) conditions.
Is it possible to call this logic block from another logic block eg something like below. I know I could nest this into the existing code. But this would require me to manual edit hundreds of already cluttered function blocks. Where as with this I could do some simple copy pasting and set the execution interval to 0s.
PROGRAM NewStructuredTextProgram
VAR
wOldValue: REAL;
END_VAR
VAR
wCurValue AT %I(...Mapping.VARS.Control.xxx) : WORD;
xLostComms AT %I(.LostComms): BOOL;
END_VAR
METHOD
Exec AT %M(.MySecondayLogic.Execute): BOOL;
END_METHOD
(*If value changed and not lost comms call other logic module*)
IF(Not(xLostComms) AND (wOldValue <> wCurValue )THEN
%M(.MySecondayLogic.Execute)
wOldValue:= wCurValue;
END_IF
END_PROGRAM
For reference Geo SCADA Expert 2021 (Build 84.8650)
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2024-03-26 07:08 AM
You can declare a METHOD that references a logic program.Execute and then execute it.
You can also pass parameters if you declare them in the logic program you are executing.
This one just checks comm status to decide if it should execute the next logic.
PROGRAM NewStructuredTextProgram
METHOD
Exec_Next_Logic RL AT %M(.My Next ST.Execute);
END_METHOD
VAR
DNP_OSState AT %I(....Comms.Outstation.DNP Outstation.State) : REAL;
END_VAR
IF DNP_OSState <> 0 AND DNP_OSState <> 1 AND DNP_OSState <> 2 AND DNP_OSState <> 3 AND DNP_OSState <> 4 THEN
Exec_Next_Logic();
END_IF;
END_PROGRAM
This one passes a path to the next logic which has
VAR_INPUT
ParentFolderInput : STRING;
END_VAR
defined in it.
PROGRAM NewStructuredTextProgram
METHOD
MyExec AT %M(.My Logic ST.Execute):STRING;
END_METHOD
VAR
ParentFolder AT %M(..FullName) : STRING;
END_VAR
VAR_INPUT
ParentFolderInput : STRING;
END_VAR
ParentFolderInput := CONCAT(ParentFolder, '.DI.%');
MyExec(ParentFolderInput);
END_PROGRAM
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2024-03-26 07:08 AM
You can declare a METHOD that references a logic program.Execute and then execute it.
You can also pass parameters if you declare them in the logic program you are executing.
This one just checks comm status to decide if it should execute the next logic.
PROGRAM NewStructuredTextProgram
METHOD
Exec_Next_Logic RL AT %M(.My Next ST.Execute);
END_METHOD
VAR
DNP_OSState AT %I(....Comms.Outstation.DNP Outstation.State) : REAL;
END_VAR
IF DNP_OSState <> 0 AND DNP_OSState <> 1 AND DNP_OSState <> 2 AND DNP_OSState <> 3 AND DNP_OSState <> 4 THEN
Exec_Next_Logic();
END_IF;
END_PROGRAM
This one passes a path to the next logic which has
VAR_INPUT
ParentFolderInput : STRING;
END_VAR
defined in it.
PROGRAM NewStructuredTextProgram
METHOD
MyExec AT %M(.My Logic ST.Execute):STRING;
END_METHOD
VAR
ParentFolder AT %M(..FullName) : STRING;
END_VAR
VAR_INPUT
ParentFolderInput : STRING;
END_VAR
ParentFolderInput := CONCAT(ParentFolder, '.DI.%');
MyExec(ParentFolderInput);
END_PROGRAM
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2024-03-26 12:24 PM
The Help has references to functions and Function blocks. FBD and ST are covered in the same sections. Sometimes it is easier to create your basic logic in a FBD, then "Compile it with Diagnostics", highlight and copy the generated program, that is displayed at the bottom of the FBD window, to a ST program.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2024-03-27 12:19 AM
Thanks so much. Nice and simple
Link copied. Please paste this link to share this article on your social media post.
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.