SIEMENS西门子 S120 伺服电机 1FK7022-5AK71-1LH5-Z
FileWriteC:在存储卡上写入文件 (S7-1200, S7-1500) 说明 “FileWriteC”指令用于将 CPU 上源区域中的数据写入存储卡上“UserFiles”文件夹中的文件内。 通过输入文件名和完整路径即可指定该文件。如果该文件不存在,则会由 CPU 在“UserFiles” 文件夹中创建。在这种情况下,“Offset”参数中必须填充零,否则会在“Status”参数中输出 W#16#8093。如果“UserFiles”文件夹也不存在,它也会由 CPU 创建;但这种情况下不会创 建子文件夹,“Status”参数中将输出 W#16#8091。 可使用“REQ”控制参数写入文件。输出参数“Done”、“Busy”、“Error”和“Status”用于指示作业 状态。 以下规则适用于文件名和路径规范: • 文件名长度不得超过 55 个字符。 • 文件夹名和文件名可以使用以下字符:“0”至“9”、“a”至“z”、“A”至“Z”、“-”、“_” • 文件名称中只能包含一个句点(“.”);句点用于分隔文件名和文件扩展名。文件名中必 须包含至少一个字符。文件扩展名并必需。 • 路径名不得以“/”、“\”或“.”开头。 • 路径名不得包含任何“..”。 有效路径和文件名示例:“UserFiles/Lift16_DataBase.txt”、“UserFiles/ 2017-04-13_ErrorLog.bin” 通过执行“FileWriteC”,用户Zui多可写入 16 MB 数据(16,777,216 字节),这些数据逐段写 入。数据段大小由具体设备而定,例如,S7-1500-CPU 使用 32 KB(32,768 字节)的块。如 果要写入的数据条目数量大于数据段大小,用户需要在程序中多次调用该指令。因此,为确 保一致性,用户在Zui后调用该指令之前不得访问写入的数据。如果可用的文件过小,则将其 扩展到所需的大小。 参数“Offset”和“Length”指定文件中要写入数据的位置。一旦写入过程完成,就可再次释放占 用的资源。 “FileWriteC”指令只有在满足以下条件时才会开始写操作:"Offset" + "Length" <= 16 MB 功能描述 “FileWriteC”为异步执行指令,可以跨多个调用执行。在参数“REQ”出现上升沿时开始进行处 理。 参数“Busy”和“Done ”用于指示作业状态。
下表列出了“FileReadC”指令的参数: 参数 声明 数据类型 说明 REQ Input BOOL 控制参数 Request 通过上升沿启用从存储卡读取文件的操作。 Name Input STRING 要读取的文件的名称,包括完整路径 Offset Input UDINT 读取文件前的字节偏移 Length Input UDINT 要读取的区域的长度(单位为字节) Length = 0 表示每次调用可读取数据条目的Zui大数量(对于 S7-1500-CPU,为 32 KB 或“Data”参数指定的大小) Done Output BOOL 1:指令已成功执行。 所读取的信息已传送到“Data”参数中。 Busy Output BOOL 状态参数 • 0:指令已执行完成或尚未开始执行。 • 1:指令的执行尚未完成。 Error Output BOOL 状态参数 • 0:无错误。 • 1:指令执行过程中发生错误。详细信息将在“Status”参数 中输出。 Status Output WORD 错误代码 ResultLength Output UDINT 读取的数据的长度(单位为字节) Data InOut VARIANT 所读取数据的目标区域 允许的数据类型:BYTE 和 BYTE 数组 有关有效数据类型的更多信息,请参见有效数据类型概述。如果执行期间出错,参数“Error”和“Status”将发出信号加以指示。 另请参见“同步指令和异步指令之间的不同之处 (页 715)” 参数 下表列出了“FileWriteC”指令的参数: 参数 声明 数据类型 说明 REQ Input BOOL 控制参数 Request 通过上升沿启用在存储卡上写入文件的操作。 Name Input STRING 要写入的文件的名称,包括完整路径 Offset Input UDINT 写入文件前的字节偏移 Length Input UDINT 要写入的区域的长度(单位为字节) “Length”= 0 表示写入用“Data”参数指定的整个源区域。 Done Output BOOL 1:指令已成功执行。 Busy Output BOOL 状态参数 • 0:指令已执行完成或尚未开始执行。 • 1:指令的执行尚未完成。 Error Output BOOL 状态参数 • 0:无错误。 • 1:指令执行过程中发生错误。详细信息将在“Status”参数 中输出。 Status Output WORD 错误代码 ResultLength Output UDINT 已写入数据的长度(单位为字节) Data InOut VARIANT 源区域 允许的数据类型:BYTE 和 BYTE 数组 有关有效数据类型的更多信息,请参见有效数据类型概述。FileDelete:删除存储卡上的文件 (S7-1500) 有效性 固件版本为 V2.8 及以上版本的 S7-1500 CPU 中包含“FileDelete”指令。 说明 使用“FileDelete”指令,可以删除存储卡上的现有文件。 不得打开相关文件。“Name”参数中的通配符不受支持,这意味着不允许使用诸如“UserFiles/ *.txt”和“UserFiles/?.txt”之类的名称。 只允许在“配方”(Recipes) 和“UserFiles”文件夹中使用“FileDelete”指令。这些文件夹中可能包 含子文件夹,例如“UserFiles/Test/file1.txt”。 说明 删除数据日志 不允许使用“FileDelete”指令删除“DataLog”文件夹中的文件。必须使用“DataLogDelete”指令 删除数据日志。 功能描述 “FileDelete”为异步执行指令,进行处理时可能会多次调用指令。在参数“REQ”出现上升沿时 开始进行处理。 参数“Busy”和“Done ”用于指示作业状态。 如果执行期间出错,参数“Error”和“Status”将发出信号加以指示。 另请参见“同步指令和异步指令之间的不同之处 (页 715)” 参数 下表列出了“FileDelete”指令的参数。 参数 声明 数据类型 说明 REQ Input BOOL 控制参数 Request 在 REQ 的上升沿启动处理操作。 Name Input STRING 待删除文件的路径和名称。文件处理程序示例 (S7-1500) 下例中,会在 S7-1500 CPU 的存储卡上创建一个文件,并将数据写入到该文件中。然后读 取该文件中的数据。之后删除文件。 数据的存储 要存储数据,可以在全局数据块中创建一个变量,并为“FileWriteC”、“FileReadC”和 “FileDelete”创建两个结构。程序段 1 (FileWriteC) 的运行结果 如果常开触点(“fileWrite.start”)的信号状态为“TRUE”,且常闭触点(“fileRead.busy”和 “fileDelete.busy”)的信号状态为“FALSE”,则执行“FileWriteC”指令。 要写入的包含完整路径的文件在输入参数 NAME(“name”)中命名。由于存储卡中尚不存在 采用该名称和路径的文件,因此会由 CPU 创建文件。随后会根据输入参数 OFFSET (“fileWrite.offset”)的值“0”从第一个字节写入文件。通过输入参数 LENGTH(“fileWrite.length”)的值 0,所有通过 DATA 参数(“fileWrite.data”)存储的源区域数据都会 写入到存储卡中的文件。 “FileWriteC”指令的处理成功状态通过输出参数 DONE(“#writeDone”)输出。写入数据长度 (16 字节)会在输出参数 RESULTLENGTH(“#writeResultLength”)中输出。FileWriteC 成功 执行后,还会存储“#writeDone”变量(“fileWrite.done”变量中)的值以及 “#writeResultLength”变量(“fileWrite.resultLength”中)的值。此外,“fileWrite.start”变量将 复位为值“FALSE”。程序段 2 (FileWriteC) 的运行结果 如果“FileWriteC”指令出错(“#writeError”为 TRUE),则状态(“fileWrite.status”)会存储在 “fileWrite.memErrStatus”变量中。 输出参数 STATUS(“fileWrite.status”)可用于指示本示例中的执行过程是否出错。 程序段 3 (FileReadC) 的运行结果 如果常开触点(“fileRead.start”)的信号状态为“TRUE”,且常闭触点(“fileDelete.done”、 “fileDelete.busy”和“fileWrite.busy”)的信号状态为“FALSE”,则执行“FileReadC”指令。 要读取的包含完整路径的文件在输入参数 NAME(“name”)中命名。随后会根据输入参数 OFFSET(“fileRead.offset”)的值“0”从第一个字节读取存储卡中的文件。通过输入参数 LENGTH(“fileRead.length”)的值“0”,可读取每次可调用的Zui大数据数。 读取的数据随后会通过参数 DATA(“fileRead.data”)读取。