将二进制数据写入SD卡
此FP指令从s_Start和n_Words指定的内存区读取二进制数据,并将其写入SD卡上由d_FIleNumber指定的二进制格式文件。目录名称为\data,文件名为dtxxx.bin,其中"xxx"为文件编号。
输入
起始地址
字数
输出
文件编号(0–999)
也请参阅有关SD卡访问的注意事项。
在SD存储卡指令的触发器EN变为TRUE后,SD存储访问活动标志(sys_bIsSDMemoryAccessActive)变为TRUE,并保持为TRUE直到执行完成。在此期间,无法执行其他SD存储卡指令。
确保sys_bIsSDMemoryAccessDone为FALSE。
执行指令时,SD存储访问完成标志(sys_blsSDMemoryAccessDone)为FALSE,指令完成后变为TRUE并保持TRUE。
如果指定的文件夹不存在,则创建新文件夹。
如果文件已存在,则将被覆盖。
FALSE:指令完成且没有错误时
TRUE:指令完成但有错误时
使用sys_iSDMemoryAccessErrorCode评估错误代码。
如果使用索引寄存器指定的区域超出限制。
如果使用索引寄存器指定的区域超出限制。
使用数据单元类型(DUT),可以定义由其他数据类型组成的数据单元类型。DUT首先在DUT池中定义,然后像全局变量列表或POU头中的标准数据类型(BOOL、INT等)一样进行处理。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
bStart: BOOL:=FALSE;
(*activates the instruction*)
dutValuesWrite: DUT_VALUES:=iValue := -32768,uiValue := 65535,diValue := -2157492,udiValue := 2333422234,rValue := 27.02,arrValue := [16#0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],sStringValue := 'Test String 25 characters';
iFileNumberDut: INT:=2;
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 := 11 ;
NETWORK_BODY
B(B_CONTACT,,sys_bIsSDMemoryAccessActive,10,2,12,4,N);
B(B_CONTACT,,bStart,2,2,4,4,R);
B(B_F,FP_SD_WRITE_BIN!,,16,3,27,8,,?DEN?Ds_Start?Dn_Words?AENO?Cd_FileNumber);
B(B_VAROUT,,iFileNumberDut,27,5,29,7,);
B(B_F,Adr_Of_Var_I!,,9,5,16,7,,?D?C);
B(B_VARIN,,dutValuesWrite,7,5,9,7,);
B(B_F,Size_Of_Var!,,9,6,16,8,,?D?C);
L(9,6,9,7);
L(1,3,2,3);
L(4,3,10,3);
L(12,3,12,5);
L(12,5,16,5);
L(1,0,1,11);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bStart)AND not sys_bIsSDMemoryAccessActive then
FP_SD_WRITE_BIN(s_Start := Adr_Of_Var(dutValuesWrite),
n_Words := Size_Of_Var(dutValuesWrite),
d_FileNumber => iFileNumberDut);
END_IF;