ADSRDWRT
Der Baustein führt einen kombinierten ADS-Schreib-Lesebefehl aus. Mit einem Aufruf werden Daten zu einem ADS-Gerät übermittelt (Write) und dessen Antwortdaten gelesen (Read).
VAR_INPUT
VAR_INPUT
NETID : T_AmsNetId;
PORT : T_AmsPort;
IDXGRP : UDINT;
IDXOFFS : UDINT;
WRITELEN : UDINT;
READLEN : UDINT;
SRCADDR : DWORD;
DESTADDR : DWORD;
WRTRD : BOOL;
TMOUT : TIME;
END_VAR
NETID : Ist ein String, der die AMS-Netzwerkkennung des Zielgerätes enthält, an das der ADS-Befehl gerichtet wird.
PORT : Enthält die Portnummer des ADS-Gerätes.
IDXGRP : Enthält die Index-Gruppennummer (32bit, unsigned) des angeforderten ADS-Dienstes. Dieser Wert ist der ADS-Tabelle des angesprochenen Gerätes zu entnehmen.
IDXOFFS : Enthält die Index-Offsetnummer (32bit, unsigned) des angeforderten ADS-Dienstes. Dieser Wert ist der ADS-Tabelle des angesprochenen Gerätes zu entnehmen.
WRITELEN : Enthält die Anzahl der zu schreibenden Daten in Bytes.
READLEN : Enthält die Anzahl der zu lesenden Daten in Bytes.
SRCADDR : Enthält die Adresse des Puffers, aus dem die zu schreibenden Daten geholt werden sollen. Der Programmierer ist selbst dafür verantwortlich, den Puffer in der Größe so zu dimensionieren, dass ‚WRITELEN'- Bytes daraus entnommen werden können. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR - Operator ermittelt werden kann.
DESTADDR : Enthält die Adresse des Puffers, der die gelesenen Daten aufnehmen soll. Der Programmierer ist selbst dafür verantwortlich den Puffer in der Größe so zu dimensionieren, dass er ‚READLEN' Bytes aufnehmen kann. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse mit dem ADR - Operator ermittelt werden kann.
WRTRD : Durch eine steigende Flanke an diesem Eingang wird der ADS-Befehl ausgelöst.
TMOUT : Gibt die Zeit bis zum Abbruch der Funktion an.
VAR_OUTPUT
VAR_OUTPUT
BUSY : BOOL;
ERR : BOOL;
ERRID : UDINT;
END_VAR
BUSY : Dieser Ausgang bleibt solange auf TRUE, bis der Baustein eine Befehlsanforderung ausführt, längstens aber für die Dauer der, an dem 'Timeout'-Eingang angelegten, Zeit. Während Busy = TRUE wird an den Eingängen kein neuer Befehl angenommen. Bitte beachten Sie, dass nicht die Ausführung des Dienstes, sondern nur dessen Annahme zeitlich überwacht wird.
ERR : Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in 'ErrorId' enthalten. Wenn der Baustein ein Timeout-Fehler hat, so ist 'Error' = TRUE und 'ErrorId' = 1861 (Hexadezimal 0x745). Wird durch das Ausführen eines Befehls an den Eingängen auf FALSE zurückgesetzt.
ERRID : Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das Ausführen eines Befehls an den Eingängen auf 0 zurückgesetzt.
Beispiel für den Aufruf des Bausteins in FBD:

Hierbei soll der Wert der Variablen mit dem Namen ‚aLRealVar' aus der SPS, die auf dem Rechner mit der Net-Id ‚1.1.1.2.7.1' läuft, gelesen werden. Dazu wird die erwähnte Rechneradresse sowie die Portnummer des ersten Laufzeitsystems der SPS, der Index-Group, Index-Offset für namentliches Variablen lesen (F004 hex,0) angegeben. Der Name der Variablen soll zum PLC-Server übertragen werden; dazu wird er in einen Puffer abgelegt . Da die Variable global ist, erhält sie einen führenden Punkt. Die Länge der zu schreibenden Daten sind somit 10 (1 Punkt sowie 9 Buchstaben). Da die zu lesende Variable ein LREAL-Typ ist, beträgt die Anzahl der zu lesenden Bytes 8. Als Adresse für die zu schreibenden Daten wird die Adresse des Namenspuffers angegeben, als Adresse für die Empfangsdaten wird die Adresse einer LREAL-Variablen (‚resultVar') angegeben. Die Abbildung zeigt den Zustand des Bausteins in Ablaufkontrolle nach Ausführung des WriteRead-Befehls: der Wert 1234.567 der vorher in aLRealVar enthalten war, ist jetzt auch in resultVar enthalten.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.7.0 | PC or CX (x86) | PLCSystem.Lib |
TwinCAT v2.8.0 | PC or CX (x86) | TcSystem.Lib |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) | TcSystem.Lib |