Programmbeispiel – BECKHOFF BC8000 Benutzerhandbuch

Seite 30

Advertising
background image

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

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