4. Configuration
156
Output Module
If the variable mapped to the IEC 60870-5-104 output point is associated to an output card (e.g.
HX2320) from Xtorm Series, the command will be redirected and executed by the card itself. In case
of pulsed commands, this redirection will work only if the variable is the of DBP type. If a variable
of type BOOL is used, the IEC 60870-5-104 server returns a negative confirmation message (failure)
for pulsed commands, as well as when a persistent command is directed to a BPD variable mapped in
the output card. With the interception and treatment of these commands by application it can be
avoided the return of negative messages (failure).
ATTENTION:
Commands destined to variables mapped in a Nexto Series output card (e.g. a module NX2020) are
treated as commands to Internal Points
DNP3 Client Driver
If the variable is associated to an IED point in a DNP3 Client driver, the command is redirected and
sent to be executed by the IED itself and the value of the variable stored in the CPU memory is not
updated. Important to note that the DNP3 client does not support persistent commands for double
points, in this case a negative confirmation message is returned.
Notice that due to protocol features, the DNP3 client driver is able to execute only one command at a
time. That is, while a command to a particular point is not finalized (response or time-out), you
cannot trigger a new command, even to a different point. Thus, if a command is redirected from the
IEC 60870-5-104 Server, or DNP3 Server, to an IED associated to a busy DNP3 Client driver, it
returns a negative confirmation message.
Commands Interception
The interception of commands received by the IEC 60870-5-104 Server driver is accomplished
through the
CommandReceiver
function block as described in section Interception of Commands
from Control Center. This feature allows the interception of selection and execution.
Below is shown an example of an application in ST. It shows the interception of a command for a
IEC 60870-5-104 point mapped to the variable “Singlepoint”.
PROGRAM UserPrg
VAR
bSetup: BOOL:= TRUE;
CRReceive: CommandReceiver;
CComamnd: COMMAND_T;
CRResult: COMMAND_RESULT:= COMMAND_RESULT.SUCCESS;
END_VAR
IF bSetup THEN // It executes the function Setup in the first cycle
CRReceive.dwVariableAddr:=ADR(GVLData.SinglePoint);
CRReceive.bExec:= TRUE;
CRReceive.eCommandResult:= COMMAND_RESULT.NONE;
CRReceive.dwTimeout:= 500;
bSetup:= FALSE;
RETURN;
END_IF
IF CRReceive.bCommandAvailable THEN // Case the command is intercepted:
CComamnd:= CRReceive.sCommand; // It saves the command data
CRReceive.eCommandResult:= CRResult; // It sends the “SUCCESS” answer
CRReceive.bDone:= TRUE;
END_IF
CRReceive();
IF CRReceive.bDone THEN