FP_FTP_GET_DATA_FORMAT

生成FTP协议的数据格式字符串

此FP指令将根据输入Var的数据类型生成指定数据格式的字符串(FP地址及长度)。此指令会将字符串写入适用于指令FP_FTP_SET_MODE中的输入sPLCFullFileNameOrDataFormat的输出变量sDataFormat

参数

输入

Var (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

简单的数据类型或简单的数据类型的数组,例如BOOL, INT, UINT, STRING等。

限制:不允许ARRAY..OF..STRING

nSize (WORD, INT, UINT)

字中的数据大小,或字节单元中的字符串大小。

nColumns (WORD, INT, UINT)

应在转换为CSV的文件中添加新行的项目数量

输出

sDataFormat (STRING)

用于FP_FTP_SET_MODEsPLCFullFileNameOrDataFormat输入的指定数据格式的字符串

标注

  • 执行此指令前,需使用FP_FTP_SET_MODE或FTP客户端的设置对话框指定传输设置。

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

  • 仅当指定传输设置的传输请求标志为“FALSE: No transfer request”时,可以执行该指令。当传输请求标志为“TRUE: Transfer requested”时,将出现操作错误。

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

  • 本指令不会永久覆盖PLC中存储的以太网配置数据。当PLC关闭并再次打开时,存储在PLC中的以太网配置数据将再次被使用。

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

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

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)
  • 如果超过连接超时

  • 如果 IP 地址无效

sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果超过连接超时

  • 如果 IP 地址无效

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

示例

POU头

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

	VAR
		bSetModePlcData: BOOL:=FALSE;
		bSetModePlcDataError: BOOL:=FALSE;
		arrayValues: ARRAY[0..15] OF REAL:=[16(0.0)];
		iID10: INT:=10;
	END_VAR

POU本体

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

LD本体

注释
当数值为0的常量应用到输入nColumns时,生成的数据格式字符串中的换行位置被省略。如果在操作模式GETDATA中随后使用指令FP_FTP_SET_MODE,则此项必需。
BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,bSetModePlcData,5,1,7,3,R);
B(B_VARIN,,'SV0~GETDATA~NON',40,3,42,5,);
B(B_VAROUT,,bSetModePlcDataError,60,2,62,4,);
B(B_VARIN,,'\B:\LOG\MyData.csv~END',40,5,42,7,);
B(B_VARIN,,iID10,40,2,42,4,);
B(B_CONTACT,,sys_bIsEthernetInitializing,16,1,18,3,N);
B(B_VARIN,,arrayValues,6,4,8,6,);
B(B_VARIN,,0,13,6,15,8,);
B(B_F,Size_Of_Var!,,8,5,15,7,,?D?C);
B(B_F,FP_FTP_SET_MODE!,,42,0,58,7,,?DEN?DnTransferID?DsOperation?DsPLCFullFileNameOrDataFormat?DsFTPServerFullFileName?AENO?CbError);
B(B_F,FP_FTP_GET_DATA_FORMAT!,,15,3,29,8,,?D@'Var'?DnSize?DnColumns?CsDataFormat);
L(1,2,5,2);
L(7,2,16,2);
L(8,5,8,6);
L(18,2,42,2);
L(58,3,60,3);
L(8,5,15,5);
L(29,5,42,5);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

If DF(bSetModePlcData) And not sys_bIsEthernetInitializing then
    FP_FTP_SET_MODE(nTransferID := iID10,
                    sOperation := 'SV0,GETDATA,NON',
                    sPLCFullFileNameOrDataFormat := FP_FTP_GET_DATA_FORMAT(Var := arrayValues,
                                                                           nSize := Size_Of_Var(arrayValues),
                                                                           nColumns := 0), 
                    sFTPServerFullFileName := '\B:\LOG\MyData.csv,END',
                    bError => bSetModePlcDataError);
End_if;

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