FP_FTP_SET_MODE

设置FTP传输模式

此FP指令将sOperation的FTP客户端传输设置、sPLCFullFileNameOrDataFormatsFTPServerFullFileName存储在由nTransferID指定的传输设置区域中。

参数

输入

nTransferID (WORD, INT, UINT)

设置传输设置ID。

值:0–15(值必须按升序输入)

sOperation (STRING)

设置传输方法参数。

  • 服务器地址(须输入参数)

    关键字: SV

    语法:“SVx”

    值:SV0–SV3(服务器0–服务器3)

  • 传输目标及方法(须输入参数)

    参数字符串

    目标

    传输方法

    PUTFILE

    文件

    发送至服务器(覆盖方法

    PUTFILE-OVW

    发送至服务器(覆盖方法

    PUTFILE-REN

    发送至服务器(重命名方法

    GETFILE

    获取自服务器

    PUTDATA

    内存区

    发送至服务器(覆盖方法

    PUTDATA-OVW

    发送至服务器(覆盖方法

    PUTDATA-REN

    发送至服务器(重命名方法

    GETDATA

    获取自服务器

  • 传输后的文件处理(须输入参数)

    • DEL:删除文件

    • NON:不要删除文件

示例:
  1. 使用覆盖方法将文件发送到FTP服务器1,不要在传输后删除文件:'SV1,PUTFILE-OVW,NON'

  2. 使用重命名方法将文件发送到FTP服务器0,传输后删除文件:'SV0,PUTFILE-REN,DEL'

  3. 从FTP服务器2获取文件,传输后删除文件:'SV2,GETFILE,DEL'

sPLCFullFileNameOrDataFormat (STRING)

根据您的传输目标(来自内存区的文件或数据)和传输方法(PUTGET)进行设置。

可通过指令FP_FTP_GET_DATA_FORMAT完成变量数据的传输。该指令的输出将连接到sPLCFullFileNameOrDataFormat以读取指定变量(内存区、大小和数据类型)数据格式字符串的字符串。根据变量的数据类型,传输的数据将被写入csv文件或从csv文件读取。

  • 传输目标:文件

    设置源文件名。

    • 对于PUTFILE:通过相对路径指定存储在SD卡上文件的文件名。示例'\LOG\MyData.csv'

    • 对于GETFILE:从通过相对路径登录FTP服务器的用户的原点目录中指定文件名。示例'\LOG\MyData.csv'

  • 传输目标:内存区的数据

    • 对于PUTDATA:存储在连接到FP_FTP_GET_DATA_FORMAT输出的变量中的数据被写入由sFTPServerFullFileName指定的csv文件。对于此传输方法,可以将格式为yymmdd_hhmmss的时间戳添加到文件名。使用关键字'TOP''END'指定是在文件名之前还是之后添加时间戳。

    • 对于GETDATA:由sFTPServerFullFileName指定的csv文件的数据被写入连接到FP_FTP_GET_DATA_FORMAT输入Var的变量。

sFTPServerFullFileName (STRING)

根据您的传输目标(来自内存区的文件或数据)和传输方法(PUTGET)进行设置。

  • 传输目标:文件

    • 对于PUTFILE:从用户登录到FTP服务器的原点目录中通过其相对路径指定文件夹名称。对于指定原点目录,请仅指定"/"或"\"。

    • 对于GETFILE:通过相对路径指定SD卡中的存储文件夹名。

  • 传输目标:内存区的数据

    • 对于PUTDATA:指定写入数据的目标csv文件名。对于此传输方法,可以将格式为yymmdd_hhmmss的时间戳添加到文件名。使用关键字'TOP''END'指定是在文件名之前还是之后添加时间戳。

      示例:

      1. 将数据传输到位于目录“\FTP”中的目标文件“PutData1.bin”,请勿添加时间戳:'\FTP\PutData1.bin'

      2. 将数据传输到位于目录“\FTP”中的目标文件“PutData2.bin”,在文件名的开头添加时间戳:'\FTP\PutData2.bin,TOP'

      3. 将数据传输到位于目录“\FTP”中的目标文件“PutData3.bin”,在文件名的末尾添加时间戳:'\FTP\PutData3.bin,END'

    • 对于GETDATA:指定要从中读取数据的源csv文件名。从用户登录到FTP服务器的原点目录中通过其相对路径指定文件名和文件夹名称。

输出

bError (BOOL)

在以下情况下将变为TRUE

  • 如果超过连接超时

  • 如果 IP 地址无效

当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode

标注

  • 字符串数据的字符数不得超过256。

  • 此指令不可用于中断程序。

  • 执行此指令前,需使用FP_FTP_SET_CONNECTION或FTP客户端的设置对话框指定FTP服务器。

  • 执行此指令前,确保sys_bIsEthernetInitializingFALSEsys_bIsEthernetInitializing在执行指令后将变为TRUEsys_bIsEthernetInitializingTRUE时,执行指令将发生错误。

  • 仅当指定传输设置的传输请求标志或指定的nLogID编号为FALSE时,才能执行该指令。当传输请求标志为TRUE时,将发生运算错误。

  • 成功执行此指令后,会重置系统变量sys_bIsCarrysys_iEthernetConnectionErrorCode

  • 完成FTP客户端传输设置后,数据将发送到文件中,或者在执行FP_FTP_TRANSFER_REQUEST时从文件中获取。

  • 当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)
  • 如果为参数指定的值超出允许的范围。

  • 如果未按升序指定传输ID。

  • 如果指令是在中断程序中执行的。

  • 如果字符串数据的字符数超过256。

  • 如果未使用指令FP_FTP_SET_CONNECTION或FTP客户端的设置对话框配置FTP服务器。

  • 在执行指令后,如果指定传输设置的传输请求标志为“TRUE:请求传输”。

  • 如果指定nLogID编号的传输请求标志为TRUE,例如,如果sys_blsLog0DataRecordingActiveTRUE

sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果为参数指定的值超出允许的范围。

  • 如果未按升序指定传输ID。

  • 如果指令是在中断程序中执行的。

  • 如果字符串数据的字符数超过256。

  • 如果未使用指令FP_FTP_SET_CONNECTION或FTP客户端的设置对话框配置FTP服务器。

  • 在执行指令后,如果指定传输设置的传输请求标志为“TRUE:请求传输”。

  • 如果指定nLogID编号的传输请求标志为TRUE,例如,如果sys_blsLog0DataRecordingActiveTRUE

sys_bIsCarry(对于一次扫描变为TRUE)
  • 如果指令是在以太网初始化期间执行的,则sys_iEthernetConnectionErrorCode设置为“11:以太网正在初始化”。

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。

	VAR
		bSetModeFileError: BOOL:=FALSE;
		bSetModeFileOK: BOOL:=FALSE;
		iID10: INT:=10;
		bSetModeFile: BOOL:=FALSE;
		wErrorCode: WORD:=0;
	END_VAR

POU本体

如果bSetModeFileFALSE更改为TRUEsys_bIsEthernetInitializingFALSE,则执行指令。

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_COMMENT,, ^Set mode to transfer file located on SD card of FP7 PLC,4,1,34,4,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModeFile,5,1,7,3,R);
B(B_VARIN,,'SV0~PUTDATA-OVW~NON',23,3,25,5,);
B(B_VARIN,,'\CSV_FILES\Data1.csv',23,4,25,6,);
B(B_VAROUT,,bSetModeFileError,43,2,45,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',23,5,25,7,);
B(B_VARIN,,iID10,23,2,25,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_F,FP_FTP_SET_MODE!,,25,0,41,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
L(1,2,5,2);
L(7,2,16,2);
L(18,2,25,2);
L(1,0,1,7);
L(41,3,43,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,);
B(B_F,E_MOVE!,,25,0,31,4,,?DEN?D?AENO?C);
B(B_VARIN,,sys_iEthernetConnectionErrorCode,23,2,25,4,);
B(B_VAROUT,,wErrorCode,31,2,33,4,);
L(7,2,25,2);
L(1,2,5,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModeFileError,5,1,7,3,N);
B(B_COIL,,bSetModeFileOK,28,1,30,3,);
L(7,2,28,2);
L(1,2,5,2);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

If DF(bSetModeFile) AND NOT sys_bIsEthernetInitializing then
    FP_FTP_SET_MODE(nTransferID := iID10,
                    sOperation := 'SV0,PUTDATA-OVW,NON',
                    sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
                                                    nSize := Size_Of_Var(arrayValues),
                                                    nColumns := 8), 
                                                    sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
                                                    bError => bSetModePlcDataError);
End_if;
If (bSetModePlcDataError) then
    wErrorCode := sys_iEthernetConnectionErrorCode;
Else
    bSetModePlcDataOK := True;
End_If;

最后更新日期: 2024-03-07此页面上的反馈松下热线