NORD Drivesystems BU0000 Benutzerhandbuch
Seite 145

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,