ADSRDWRTEX
Der Baustein erlaubt die Ausführung eines kombinierten ADS-Schreib-Lesebefehls. 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 man mit dem ADR - Operator ermitteln 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 man mit dem ADR - Operator ermitteln kann.
WRTRD : Durch eine steigende Flanke an diesem Eingang wird der ADS-Befehl ausgelöst.
TMOUT : Gibt die Zeit bis zum Abbrechen der Funktion an.
VAR_OUTPUT
VAR_OUTPUT
BUSY : BOOL;
ERR : BOOL;
ERRID : UDINT;
COUNT_R : UDINT;
END_VAR
BUSY : Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.
ERR : Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der BUSY-Ausgang zurückgesetzt wurde.
ERRID : Liefert bei einem gesetzten ERR-Ausgang die ADS- oder die Gerätespezifische-Fehlernummer.
COUNT_R: Anzahl der erfolgreich gelesenen Datenbytes.
Beispiel für einen Aufruf in FUP:
PROGRAM MAIN
VAR
fbAdsRdWrtEx : ADSRDWRTEX;
sSymName : STRING:='MAIN.VARCOUNTER';
iSymHandle : UDINT;
bWriteRead : BOOL;
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
cbRealReadLen: UDINT;
END_VAR
In dem Beispiel wird ein ADS-Kommando an ein ADS-Gerät mit der Netzwerkadresse: '172.16.2.209.1.1' und der Portnummer 801 gesendet. Über die Portnummer 801 kann z.B. das erste Laufzeitsystem der SPS angesprochen werden. Im Index-Group und Index-Offset wird der ADS-Dienst verschlüsselt. Hier soll das Handle einer SPS-Variablen mit dem Symbolnamen: 'MAIN.VARCOUNTER' gelesen und an den Aufrufer zurückgeliefert werden. Der WRITELEN-Eingangsparameter enthält die Stringlänge des Symbolnamens + 1 Byte für die Abschließende NULL. Beim Erfolg werden 4 Byte Daten an die Adresse der iSymHandle-Variablen hineinkopiert.
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.7.0 & TwinCAT v2.8.0 |
BC9xxx (165) firmware version >= 0xB6 |
TcAdsBC.Lb6 |