将数据写入SD卡
此FP指令读取存储在以s_Start开头的地址的n_NumberOfDataToWrite指定的数据数量,并将数据写入SD卡上由d1_FullFileName指定的文件。d2_dutWrite处的DUT FP_SD_WRITE_DUT指定写入参数。
输入
起始地址
由DUT成员udiNumberOfDataWritten指定的要写入的数据数量
对于wFormat=1–8:16位/32位逗号分隔数据数
对于wFormat=10:8位字符数
对于wFormat=11:16位数据数
带有扩展名的文件名,例如'\Test.csv'
输入/输出
写入格式、写入模式、指针位置等
如果已在s2_dutWrite处的FP_SD_WRITE_DUT中选择了指针模式(wMode=2或wMode=3),则写入从指针的位置开始。写入后,指针移动到写入完成的位置。下一次的写入操作将从该位置开始。指针位置也可由DUT中的udiBytePosition指定。在下例中,针对不同的数据格式指示文件指针位置。
也请参阅有关SD卡访问的注意事项。
在SD存储卡指令的触发器EN变为TRUE后,SD存储访问活动标志(sys_bIsSDMemoryAccessActive)变为TRUE,并保持为TRUE直到执行完成。在此期间,无法执行其他SD存储卡指令。
执行指令时,SD存储访问完成标志(sys_blsSDMemoryAccessDone)为FALSE,指令完成后变为TRUE并保持TRUE。
当文件属性为只读时,无法写入任何数据。
保存ASCII数据时,写入的字符串用双引号括起来。
字符串中的双引号(")转换为两个双引号("")。
FALSE:指令完成且没有错误时
TRUE:指令完成但有错误时
使用sys_iSDMemoryAccessErrorCode评估错误代码。
如果使用索引寄存器指定的区域超出限制。
如果使用索引寄存器指定的区域超出限制。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
bStart: BOOL:=FALSE;
(*activates the instruction*)
sStringWrite1: STRING[32]:='Test String1';
END_VAR
当变量bStart从FALSE变为 TRUE且系统变量sys_bIsSDMemoryAccessActive不是TRUE时,执行此函数。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_COMMENT,,ø^Write string ASCII data into SD card memory - ASCII value,3,0,58,3,);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,E_MOVE!,,18,0,24,4,,?DEN?D?AENO?C);
B(B_VARIN,,10,16,2,18,4,);
B(B_VAROUT,,dutFpWriteTest_csv.wFormat,24,2,26,4,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_VARIN,,sStringWrite,16,2,18,4,);
B(B_CONTACT,,bStart,2,1,4,3,R);
B(B_VARIN,,sFile_Test_Csv,16,4,18,6,);
B(B_VARIN,,dutFpWriteTest_csv,16,5,18,7,);
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,1,12,3,N);
B(B_F,FP_SD_WRITE!,,18,0,31,7,,?DEN?Ds_Start?Dn_NumberOfDataToWrite?Dd1_FullFileName?Dd2_dutWrite?Ad2_dutWrite?AENO);
B(B_VARIN,,iStringLength,16,3,18,5,);
L(1,2,2,2);
L(4,2,10,2);
L(12,2,18,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
dutFpWriteTest_csv.wFormat:=10;
FP_SD_WRITE(s_Start := sStringWrite,
n_NumberOfDataToWrite := iStringLength,
d1_FullFileName := sFile_Test_Csv,
d2_dutWrite := dutFpWriteTest_csv);
END_IF;