生成FTP协议的数据格式字符串
此FP指令将根据输入Var的数据类型生成指定数据格式的字符串(FP地址及长度)。此指令会将字符串写入适用于指令FP_FTP_SET_MODE中的输入sPLCFullFileNameOrDataFormat的输出变量sDataFormat。
输入
简单的数据类型或简单的数据类型的数组,例如BOOL, INT, UINT, STRING等。
限制:不允许ARRAY..OF..STRING
字中的数据大小,或字节单元中的字符串大小。
应在转换为CSV的文件中添加新行的项目数量
输出
用于FP_FTP_SET_MODE的sPLCFullFileNameOrDataFormat输入的指定数据格式的字符串
执行此指令前,需使用FP_FTP_SET_MODE或FTP客户端的设置对话框指定传输设置。
执行此指令前,确保sys_bIsEthernetInitializing为FALSE。sys_bIsEthernetInitializing在执行指令后将变为TRUE。sys_bIsEthernetInitializing为TRUE时,执行指令将发生错误。
仅当指定传输设置的传输请求标志为“FALSE: No transfer request”时,可以执行该指令。当传输请求标志为“TRUE: Transfer requested”时,将出现操作错误。
成功执行此指令后,会重置系统变量sys_bIsCarry和sys_iEthernetConnectionErrorCode。
本指令不会永久覆盖PLC中存储的以太网配置数据。当PLC关闭并再次打开时,存储在PLC中的以太网配置数据将再次被使用。
完成FTP客户端传输设置后,数据将发送到文件中,或者在执行FP_FTP_TRANSFER_REQUEST时从文件中获取。
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
如果超过连接超时
如果 IP 地址无效
如果超过连接超时
如果 IP 地址无效
如果指令是在以太网初始化期间执行的,则sys_iEthernetConnectionErrorCode设置为“11:以太网正在初始化”。
所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。
VAR
bSetModePlcData: BOOL:=FALSE;
bSetModePlcDataError: BOOL:=FALSE;
arrayValues: ARRAY[0..15] OF REAL:=[16(0.0)];
iID10: INT:=10;
END_VAR
如果bSetModePlcData从FALSE更改为TRUE且sys_bIsEthernetInitializing为FALSE,则执行指令。
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
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;