Sie sind auf Seite 1von 2

SIMATIC

MATRIX_V3\SIMATIC
314 C-2DP\CPU 314C-2 DP\...\Write_Bit_Matrix

13.12.2016 21:42:26

FUNCTION FC 4 : VOID
TITLE =Bit-nderungs-Funktion / Change Bit Function
//Funktion, welche innerhalb eines Ausgangsbyte ein Bit fr die direkte
//Peripherieadressierung entweder auf NULL oder auf EINS setzt. Dabei wird nur
//das einzelne Bit verndert. Die restlichen Bits bleiben unberhrt.
//
//HINWEISE:
//Die Eingangs-Parameter werden nicht berprft. Bei falscher Parametereingabe
//kann die CPU in den Zustand STOPP wechseln oder es besteht die Gefahr, dass
//andere Ausgnge als gewnscht verndert werden.
//
//-----------------------------------------------------------------------------//
//Function set or reset one bit - peripherical directly addressed - inside of one
//output byte. Only one bit of the byte will be changed. The other bits will not be
//changed.
//
//NOTE:
//No check of the input-parameters. If parameters are wrong it is possible that the
//CPU will change to STOPP or other outputs will be set which is not desired.
VERSION : 0.1
VAR_INPUT
iInRow : INT ; //Ausgangs-Byte-Adresse / Output byte address
iInColumn : INT ; //Bit-Nummer, welches gesetzt werden soll / Bit number which should be set (x.0 - x.7 > 0-7)
iBoVal : BOOL ; //Wert des zu verndernden Bits / Value of changing bit (0=false, 1=true)
END_VAR
VAR_OUTPUT
oBoFlt : BOOL ;
//Fault
END_VAR
VAR_TEMP
tDwAdr : DWORD ;
tByBitMaskSet : WORD ;
tByBitMaskReset : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =Eingnge auf Grenzen prfen
//Check for limits
L
#iInRow;
L 16;
>=I
;
O( ;
L
#iInColumn;
L 16;
>=I
;
) ;
=
#oBoFlt; // Grenzen berschritten / Limits reached
U
#oBoFlt;
BEB ;
NETWORK
TITLE =Ausgangsadresse generieren
//Generate Output-Address
L
#iInRow;
SLD
4;
T
#tDwAdr;
NETWORK
TITLE =Bitmaske zum Bit setzen generieren
//Generate bitmask in order to set one bit
L
#iInColumn;
L
W#16#1;
SLW
;
T
#tByBitMaskSet;
NETWORK
TITLE =Bitmaske zum Bit rcksetzen generieren
//Generate bitmask in order to reset one bit
L
#iInColumn;
L
DW#16#FFFFFFFE;
RLD
;
T
#tByBitMaskReset;
NETWORK
TITLE =Bit setzen / zurcksetzen
//Set / reset one bit
SET
;
U
#iBoVal;
SPBN RES; // RESet
// Bit setzen / Set bit
AUF
DB 1000;
L
DBW [#tDwAdr];
L
#tByBitMaskSet; // Ausgang / Output : x.x (iWoAdr.iInBit)
OW
;
T
DBW [#tDwAdr];
SPA
WEI;
RES: NOP
0;
// Bit zurcksetzen / reset bit

Seite 1 von 2

SIMATIC

WEI:

MATRIX_V3\SIMATIC
314 C-2DP\CPU 314C-2 DP\...\Write_Bit_Matrix

AUF
L
L
UW
T

DB 1000;
DBW [#tDwAdr];
#tByBitMaskReset; // Ausgang / Output : x.x (iWoAdr.iInBit)
;
DBW [#tDwAdr];

NOP

0;

13.12.2016 21:42:27

NETWORK
TITLE =Bausteinende
//The End
BE
;
END_FUNCTION

Seite 2 von 2

Das könnte Ihnen auch gefallen