Test der Kommunikation

Durch das Setzen der bChangeIO-Variable auf TRUE wird eine einfache Simulation der Datenpunkte in Überwachungsrichtung aktiviert und mit FALSE deaktiviert. Bei einer aktiven Verbindung werden die Werte Zyklisch alle 3 Sekunden zur Leitstation übertragen.

PROGRAM MAIN 
VAR
...

bChangeIO : BOOL; (* TRUE => simulate/modify plc process data *)
timer : TON;
i : INT;

...
END_VAR

...


(*modify plc process data *)
timer( IN := bChangeIO, PT := T#3s );
IF timer.Q THEN
timer( IN := FALSE );

msgSingle_0 := NOT msgSingle_0;
msgSingle_1 := NOT msgSingle_1;
msgSingle_2 := NOT msgSingle_2;

FOR i:= 0 TO 3 DO
IF F_iecGetDPI(msgDouble_0, i) = eIEC870_DPI_ON THEN (* the value of double point allready ON? *)
msgDouble_0 := F_iecSetDPI( msgDouble_0, i, eIEC870_DPI_OFF ); (* change ON => OFF *)
ELSE
msgDouble_0 := F_iecSetDPI( msgDouble_0, i, eIEC870_DPI_ON );(* change OFF => ON *)
END_IF
END_FOR

F_iecIncVTI( msgStep_0 );
F_iecDecVTI( msgStep_1 );

msgBitStr_0 := ROL( msgBitStr_0, 1 );
msgBitStr_1 := ROR( msgBitStr_1, 1 );

msgNormalized_0 := msgNormalized_0 + 1;
msgNormalized_1 := msgNormalized_1 + 2;

msgScaled_0 := msgScaled_0 + 3;
msgScaled_1 := msgScaled_1 - 3;

msgFloating_0 := msgFloating_0 + 0.1;
msgFloating_1 := msgFloating_1 + 1.5;

msgTotal_0 := msgTotal_0 + 1;
msgTotal_1 := msgTotal_1 + 2;
END_IF


...

Das zugehörige Tutorial SPS-Beispiel kann hier heruntergeladen werden.