FB_CreateDir

FB_CreateDir 1:

Mit diesem Funktionsbaustein können neue Verzeichnisse auf dem Datenträger erstellt werden.

VAR_INPUT

VAR_INPUT
    sNetId      : T_AmsNetId;
    sPathName   : T_MaxString;
    ePath       : E_OpenPath := PATH_GENERIC; (* Default: generic file path*)
 bExecute       : BOOL;     
    tTimeout    : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR

sNetId    : Ist ein String, der die AMS-Netzwerkkennung des Zielgerätes enthält, an das der ADS-Befehl gerichtet wird.

sPathName : Der Name des neuen Verzeichnisses als String. Es kann nur ein neuer Verzeichniss beim einmaligen Aufruf des Bausteins erstellt werden.

ePath : Über diesen Eingang kann ein TwinCAT - Systempfad für das neue Verzeichnis auf dem Zielgerät angewählt werden.

bExecute    : Durch eine steigende Flanke an diesem Eingang wird der Funktionsbaustein aktiviert.

tTimeout    : Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.

VAR_OUTPUT

VAR_OUTPUT
    bBusy       : BOOL;
    bError      : BOOL;
    nErrId      : UDINT;
END_VAR

bBusy:    Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError:    Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

nErrId:    Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer.

 

Function specific ADS error code

Possible reason

0x70C

Folder is already existing or invalid sPathName or ePath parameter.

 

Beispiel in ST:

Bei einer steigenden Flanke am bCreate wird ein neues Verzeichnis mit dem Namen: 'PRJDATA' im Hauptverzeichnis 'C:\' erstellt und bei steigender Flanke am bRemove kann ein Verzeichnis mit dem gleichen Namen gelöscht werden.

Bei bBootFolder = TRUE kann ein Verzeichnis im ..\TwinCAT\Boot-Verzeichnis erstellt oder gelöscht werden.

PROGRAM MAIN
VAR
    sFolderName : STRING := 'PRJDATA'; (* folder name *)
    bBootFolder : BOOL;

    ePath : E_OpenPath; (* folders root path *)
    sPathName : STRING;

    fbCreateDir : FB_CreateDir;
    bCreate : BOOL;
    bCreate_Busy : BOOL;
    bCreate_Error : BOOL;
    nCreate_ErrID : UDINT;

    fbRemoveDir : FB_RemoveDir;
    bRemove : BOOL;
    bRemove_Busy : BOOL;
    bRemove_Error : BOOL;
    nRemove_ErrID : UDINT;
END_VAR
ePath := SEL( bBootFolder, PATH_GENERIC, PATH_BOOTPATH );
sPathName := SEL( bBootFolder, CONCAT('C:\', sFolderName), sFolderName );

IF bCreate THEN
    bCreate := FALSE;
    fbCreateDir( bExecute := FALSE );
    fbCreateDir(sNetId:= '',
        sPathName:= sPathName,
        ePath:= ePath,
        bExecute:= TRUE,
        tTimeout:= DEFAULT_ADS_TIMEOUT,
        bBusy=>bCreate_Busy, bError=>bCreate_Error, nErrId=>nCreate_ErrID );
ELSE
    fbCreateDir( bExecute := FALSE, bBusy=>bCreate_Busy, bError=>bCreate_Error, nErrId=>nCreate_ErrID );
END_IF



IF bRemove THEN
    bRemove := FALSE;
    fbRemoveDir( bExecute := FALSE );
    fbRemoveDir(sNetId:= '',
        sPathName:= sPathName,
        ePath:= ePath,
        bExecute:= TRUE,
        tTimeout:= DEFAULT_ADS_TIMEOUT,
        bBusy=>bRemove_Busy, bError=>bRemove_Error, nErrId=>nRemove_ErrID );
ELSE
    fbRemoveDir( bExecute := FALSE, bBusy=>bRemove_Busy, bError=>bRemove_Error, nErrId=>nRemove_ErrID );
END_IF

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.10.0 Build > 1310 (CE image v2.17d or higher)

PC oder CX (x86, ARM)

TcSystem.Lib