BECKHOFF BC8000 Benutzerhandbuch
Seite 31

Anhang
BC8000
29
Empfangen
IF Starten THEN
(*-------------------------CHECKSUMME ermitteln ----------------------------------*)
Summe:=0;
FOR i3:=0 TO 5 DO
Summe:=Summe+ Senden[i3];
END_FOR
(*-------------------------ARRAY SENDEN ----------------------------------------------*)
FOR J0:=0 TO 6 DO
IF J0<4 THEN
Sb := senden[J0];(* Werte aus dem ARRAY *)
ELSIF J0=4 THEN
Sb:=senden[J0];(* D0 als Counter von 0 bis 255 *)
ELSIF J0=5 THEN
Sb:= Senden[J0];
(* D1 hier &HFF *)
ELSIF J0=6 THEN
sb:=Summe;
(* Checksumme *)
END_IF
Send(SendByte:=Sb , TxBuffer:=TxBuffer );
END_FOR
(*-------------------------COUNTER-----------------------------------------------------*)
i2:=i2+1;
IF i2>255 THEN
i2:=0;
END_IF
senden[4]:=i2;
Starten:=FALSE;
END_IF
(*------------------------EMPFANG-------------------------------------------------*)
REPEAT
Receive(RxBuffer:= RxBuffer);
IF Receive.ByteReceived THEN
(* Wartet bis Daten ange-
kommen sind *)
byAusgang1[t1]:= Receive.ReceivedByte;
byausgang1[t1];
IF byAusgang1[0]<>16#70 THEN
(* Beim nicht erkennen des
Startzeichen wird die Schleife verlassen *)
EXIT;
END_IF
EingWorte:=byAusgang1[1];
t1:=t1+1;
END_IF
UNTIL rxBuffer.count = 0
END_REPEAT
IF (T1>5+2*EingWorte) THEN
T1:=0;
END_IF
byAusgang0:=ROL(ByAusgang1[5],byEingang0);
Globale Variablen
VAR_GLOBAL
(* Adresse 500 ist die Emulation der Klemme *)
(* wobei %500-Status, %501-D0, %502-D1, %503-D2, %504-D3, %505-D4
*)
Kl6InData
AT %IB500
: KL6inData5B;
Kl6OutData
AT %QB500 : KL6outData5B;
RxBuffer
: ComBuffer;
TxBuffer
: ComBuffer;
byAusgang0 AT %QB6: BYTE; (* 2 x KL2114 *)
byEingang0 AT %IB6:BYTE; (* 1 x KL1104 *)
END_VAR