ADSREADEX

ADSREADEX 1:

Der Funktionsbaustein erlaubt die Ausführung eines ADS-Lesebefehls, um Daten von einem ADS-Gerät anzufordern.

VAR_INPUT

VAR_INPUT
    NETID       : T_AmsNetId;
    PORT        : T_AmsPort;
    IDXGRP      : UDINT;
    IDXOFFS     : UDINT;
    LEN         : UDINT;
    DESTADDR    : DWORD;
    READ        : BOOL;
    TMOUT       : TIME;
END_VAR

T_AmsNetId

T_AmsPort

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.

LEN : Enthält die Anzahl der zu lesenden Daten in Bytes.

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 ‚LEN' Bytes aufnehmen kann. Der Puffer kann eine Einzelvariable, ein Array oder eine Struktur sein, dessen Adresse man mit dem ADR - Operator ermitteln kann.

READ : 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
    fbAdsReadEx : ADSREADEX;
    bRead       : BOOL;
    bBusy       : BOOL;
    bError      : BOOL;
    nErrId      : UDINT;
    cbRead      : UDINT;
    Buffer      : ARRAY[1..10] OF BYTE;
END_VAR

ADSREADEX 2:

Im Beispiel wird ein ADS-Lesekommando an ein ADS-Gerät mit der Netzwerkadresse: '172.16.2.209.1.1' und der Portnummer 801 gesendet. Über diese Portnummer wird z.B. das erste Laufzeitsystem der SPS angesprochen. In dem Index-Group und Index-Offset Parameter wird der auszuführende Dienst verschlüsselt. Hier sollen 10 Byte Daten einer SPS-Variablen im Merkerbereich ab dem Byte-Offset 100 gelesen werden. Beim Erfolg werden 10 Byte Daten an die Adresse der Buffer-Variablen hineinkopiert.

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.7.0 & TwinCAT v2.8.0

BC9xxx (165) firmware version >= 0xB6

TcAdsBC.Lb6