Programmbeispiel – BECKHOFF BC8000 Benutzerhandbuch
Seite 30

Anhang
28
BC8000
Programmbeispiel
Lokale Variablen im Pro-
gramm MAIN
PROGRAM MAIN
(* Programm Erläuterung
*)
(* Der BC8000 sendet ein Wort Ausgangsdaten alle 500ms zu einem
BK8000 *)
(* dabei wird das low Byte immer um eins erhöht
*)
(* Der BK8000 sendet daraufhin ein Wort Eingangsdaten zurück
*)
(* Der BC8000 wertet diese aus, schiebt das Byte um eins nach links und
*)
(* gibt es wieder aus auf seine Ausgangsklemmen. Benötigte Hard-
/Software:
*)
(* 1 x BC8000,1 x KL1104, 2 x KL2114, 1x 9010, 1 x BK8000, 2 x KL1104,
2 x KL2112, 1 x KL9010*)
(* Kommunikations Lib, Serielles Kabel mit zwei Sub-D Steckern
*)
VAR
ComControl : KL6Control5B;
(* FB zur automatischen Kommu-
nikation *)
Receive: ReceiveByte; (* FB für das Empfangen von Daten *)
Send: SendByte
(* FB für das Senden von Daten *)
Sb: BYTE;
Senden:ARRAY[0..6] OF BYTE;
start: BOOL;(* Hilfvariable ist nur den ersten Zyklus auf FALSE *)
i2: USINT;
i3: USINT;
Summe: BYTE;
(* Checksumme *)
Timer1: TON;
(* Startet die Übertragung alle 500 ms *)
Starten: BOOL;
(* Alle 500 ms auf TRUE bis alle Daten
gesendet worden sind *)
J0: UINT;
t1: INT;
byAusgang1:ARRAY[0..20] OF BYTE;
EingWorte: USINT;
END_VAR
Programm MAIN
ComControl
Senden
IF NOT start THEN(*Initialisierung des Arrays für das Protokoll des
BK8000*)
senden[0]:=16#50;
(*Starterkennung*)
senden[1]:=16#01;
(*Anzahl der zu sendenen Worte *)
senden[2]:=16#11;
(*Message Ident*)
senden[3]:=16#0B;
(*Adresse des Kopplers *)
senden[4]:=16#FF;
(*DO*)
senden[5]:=16#FF;
(*D1*)
senden[6]:=16#6B;
(*Checksumme*)
Start:=TRUE;
END_IF
(*++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
(* Handshake mit der Klemme oder der Emulation der Klemme *)
ComControl(
COMin:=KL6InData ,
COMout:=KL6OutData ,
TxBuffer:=TxBuffer ,
RxBuffer:=RxBuffer );
(*-------------------------SENDEN-------------------------------------------------*)
Timer1(IN:=NOT Timer1.Q,PT:=t#100ms);
(*Alle 0,5 sec wird ein Pro-
tokoll gesendet*)
IF Timer1.Q THEN
Starten:=TRUE;
END_IF