简介
在指定偏移后读取文件中指定字节数的数据并将它写入目标地址。
格式
_CF_read/_SD_read/_USB_read (文件夹名称, 文件名, 目标地址, 偏移量, 字节数)
参数1
文件夹名称:固定字符串(最大长度:32个单字节字符)
参数2
文件名称:固定字符串(最大长度:32个单字节字符)、内部寄存器(最大长度:14个单字节字符)、用偏移量指定的内部寄存器(内部寄存器 +临时地址,最大长度:14个单字节字符)
参数3
写入地址:寄存器地址、用偏移量指定的内部寄存器
参数4
偏移量:数值、寄存器地址、临时地址(可以指定的最大数量:16位长度为65,535,32位长度为4,294,967,295)
参数5
字节数:数值、寄存器地址、临时地址(最大长度:1280)
表达式示例:
定义文件名的文本,从偏移16读取16字节
_CF_read ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], 16, 16)
在上面的例子中,将“\DATA\DATA0001.BIN”文件中从第17个字节开始的16字节数据写入从LS0100开始的区。
定义文件名的内部寄存器,从偏移0读取10字节
_CF_read ("\DATA", [w:LS0100], [w:LS0200], 0, 10)
通过将文件名保存在LS0100中,可间接指定文件名。在本例中,按如下方式将文件名保存在LS0100至LS0106中。
例如,文本数据模式 = 1
在上例中“\DATA\DATA0001.BIN”文件开始处的10字节数据被读取并写入从LS0200开始的区域。
保存访问外部存储器或文件操作过程中发生的任何错误状态。即使发生了错误,处理也会继续。因此,使用文件操作功能时,请务必写一个用于检查错误的脚本。
22.11.7.7 标签设置
关于数据存储顺序的信息,请参阅以下内容。
22.10.7 数据存储模式
文件名只能使用8.3格式(最大12个字符,其中8个字符用于文件名、点号,3个字符用于扩展名)。不能使用长度大于12个字符的文件名。
要指定根文件夹,请将“ ”(空字符串)指定为文件夹名称。
参数1文件夹名称的最大长度是32个单字节字符。
文件夹名称可以附加到参数2文件名。参数2文件夹名称+文件名的最大长度是32个单字节字符。
例如,\DATA\01\DATA.bin
可以为第二个参数(文件名)指定内部寄存器。指定内部寄存器可允许文件名间接地址指定。此外,使用内部寄存器时,文件夹名称+文件名的最大长度为14个单字节字符。
如果指定内部寄存器来保存文件名,文件名的存储顺序将以文本数据模式的定义为依据。
7.9.1 [系统设置] - [控制器/PLC]设置指南
会将成功读取的字节数写入已读取字节[s:CF_READ_NUM]/[s:SD_READ_NUM]/[s:USB_READ_NUM]。更多信息,请参阅22.11.7.7 标签设置。
“文件名”和“写入地址”中指定的内部寄存器不作为D脚本地址。
如果将PLC指定为写入地址,当字(字节)数增加时,向PLC写入数据需要更多时间。根据字数的多少,可能需要几秒钟的时间。
如果从文件中读取的数据超出了PLC的指定地址范围,就会发生通讯错误。在这种情况下,您必须关闭PLC的电源然后再次打开,将PLC从错误中复位。
如果将PLC寄存器指定为目标,由于人机界面与PLC的通讯需要一定时间,值不会被立即写入。
例如,
在以下脚本中,语句(1)从文件中读取10字节的数据并将数据写入[w:D0100]。但由于通讯时间的原因,在执行语句(2)时,数据还未被写入[w:[PLC1]D0100]。
_CF_read ("\DATA", "DATA0001.BIN", [w:[PLC1]D0100], 0, 10) // (1)
[w:[PLC1]D0200] = [w:[PLC1]D0100] + 1 // (2)
在这种情况下,请先保存到内部寄存器,然后再执行,如下所示。
_CF_read ("\DATA", "DATA0001.BIN", [w:[PLC1]D0100], 0, 10)
memcpy ([w:[#INTERNAL]LS0100], [w:[PLC1]D0100], 10)
[w:[PLC1]D0200] = [w:[#INTERNAL]LS0100] + 1