NORD Drivesystems BU0000 Benutzerhandbuch

Seite 145

Advertising
background image

PLC

145

BU 0000 DE

übernommen, aber noch nicht gesendet. Das eigentliche Senden läuft parallel im Hintergrund.
Sollen jetzt über einen FB mehrere Botschaften direkt hintereinander gesendet werden, dann
kann es zu passieren, dass bei dem neuen Aufruf die vorherige Botschaft noch nicht gesendet
wurde. Dies kann daran erkannt werden, dass weder das DONE noch das ERROR Signal
nach den CAL Aufruf auf 1 gesetzt wurde. Der CAL Aufruf kann jetzt einfach so oft wiederholt
werden, bis eines der beiden Signale auf 1 geht. Sollen über einen einzigen FB mehrere
verschiedene CAN-ID’s beschrieben werden, so ist dies über eine Neukonfiguration des FB‘s
möglich. Diese darf jedoch nicht im selben PLC Zyklus wie das Senden erfolgen. Da sonst die
Gefahr besteht, dass die zu sendende Botschaft bei der Konfiguration über den FB_PDOConfig
gelöscht wird.

Beispiel in ST:

IF bFirstTime THEN

(* Geräte in den Status Pre-Operational setzen *)

NMT(Execute := TRUE, OPE := TRUE);

IF not NMT.Done THEN

RETURN;

END_IF;

(* PDO Konfigurieren*)

PDOConfig(

Execute := TRUE,

(* Messagebox 1 konfigurieren *)

Number := 1,

(* CAN Knotennummer setzen *)

TargetID := 50,

(* PDO wählen (Standard für PDO1 Steuerwort, Sollwert1, Sollwert2, Sollwert3) *)

PDO := 1,

(* Länge der Daten festlegen (Standard für PDO1 gleich 8 *)

LENGTH := 8,

(* Senden *)

Dir := 1);

IF not PDOConfig.Done THEN

RETURN;

END_IF;

(* PDO Senden - Geräte in den Status betriebsbereit setzen *)

PDOSend(Execute := TRUE, Number := 1, Word1 := 1150, Word2 := 0, Word3 := 0, Word4 :=

0);

IF NOT PDOSend.Done THEN

RETURN;

END_IF;

PDOSend(Execute := FALSE);

bFirstTime := FALSE;

END_IF;

CASE State OF

0:

(* Ist der Digitaleingang 1 gesetzt *)

IF _5_State_digital_input.0 THEN

(* PDO Senden - Geräte in den Status betriebsbereit setzen *)

PDOSend(Execute := TRUE, Number := 1, Word1 := 1150, Word2 := 0, Word3 := 0,

Advertising