BECKHOFF BC8000 Benutzerhandbuch

Seite 31

Advertising
background image

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

Advertising
Dieses Handbuch ist für die folgenden Produkte bezogen werden: