下面是CF卡/USB存储器状态的可能状态值。
列出的文件
当执行了文件列表输出函数“_CF_dir ( )”或“_USB _dir ( )”时,会将在LS区实际写入的文件列表数保存在“列出的文件[s:CF_FILELIST_NUM]/[s:USB_FILELIST_NUM]”中。
使用示例
_CF_dir ("\DATA\*.*", [w:[#INTERNAL]LS0100], 10, 0)
[w:LS0200] = [s:CF_FILELIST_NUM]
当获取10个文件的文件列表而指定文件夹只包含5个文件时,在[s:CF_FILELIST_NUM]中会保存“5”。
当未写入文件时,会将指定文件夹中包含的总文件数写入[s:CF_FILELIST_NUM]中。
已读取字节数
当执行文件读取函数“_CF_read ()”或“_USB _dir ()”时,在“读出字节[s:CF_READ_NUM] / [s:USB_READ_NUM]中保存实际读出的字节数。
使用示例
_CF_read ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100],16, 16)
[w:[#INTERNAL]LS0200]= [s:CF_READ_NUM]
当试图读取16个字节但只成功读出12个字节时,在 [s:CF_READ_NUM] 中会保存“12”。
CF卡或USB存储器访问错误状态被保存在[s:CF_ERR_STAT]或[s:USB_ERR_STAT]中。
位位置 |
错误名称 |
描述 |
---|---|---|
15 |
保留 |
保留 |
14 |
||
13 |
||
12 |
||
11 |
||
10 |
||
9 |
||
8 |
||
7 |
||
6 |
文件重命名错误 |
|
5 |
文件删除错误 |
|
4 |
文件写入错误 |
|
3 |
文件读取错误 |
|
2 |
文件列表错误 |
|
1 |
CF卡/USB存储器错误 |
|
0 |
无CF卡/USB存储器 |
|
即使在发生CF卡/USB存储器错误时,处理仍继续。务必编写脚本,令其在您使用CF卡/USB存储器的文件操作功能时进行错误检查。
例如:
_CF_dir ("\DATA\*.*", [w:[#INTERNAL]LS0100], 2, 1) // 输出文件列表
if ([s:CF_ERR_STAT02] <> 0) // 检查错误状态。
{
set ([b:[#INTERNAL]LS005000]) // 设置错误显示位地址。
}
endif
CF卡/USB存储器错误详细状态保存区
当发生错误时将对每个位进行置位。您可以通过设置详细状态查看到底是什么原因导致错误。在每个函数中,详细状态保存在扩展系统区的LS9132至LS9137(对USB存储器来说是LS9138至LS9143)。这些区是只读的。
每个函数的错误列表
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_CF_dir ( ) |
LS9132 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称时发生的错误) |
0012h |
文件名(路径名)错误 | ||
0018h |
LS区写入范围错误 | ||
0020h |
无CF卡 | ||
0021h |
CF卡无效 | ||
0100h |
目录打开错误 |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_CF_read ( ) |
LS9133 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0018h |
LS区写入范围错误 | ||
0020h |
无CF卡 | ||
0021h |
CF卡无效 | ||
0101h |
文件查找错误(偏移错误) | ||
0102h |
已读取字节数错误 | ||
0110h |
文件创建(打开)错误 |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_CF_write ( ) |
LS9134 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0020h |
无CF卡 | ||
0021h |
CF卡无效 | ||
0101h |
文件查找错误(偏移错误) | ||
0104h |
文件夹创建错误 | ||
0108h |
写入模式错误 | ||
0110h |
文件创建(打开)错误 | ||
0111h |
文件写入错误(例如,CF卡上的空间不足) |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_CF_delete ( ) |
LS9135 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0020h |
无CF卡 | ||
0021h |
CF卡无效 | ||
0112h |
文件删除错误(例如,指定的文件不存在。指定文件是只读文件。) |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_CF_rename ( ) |
LS9136 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0020h |
无CF卡 | ||
0021h |
CF卡无效 | ||
0114h |
文件重命名错误(例如,指定的文件不存在。文件名已经存在。) |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_CF_read_csv ( ) |
LS9137 |
0001h |
参数错误 |
0002h |
CF卡错误(无CF卡、打开文件错误、文件读取错误) | ||
0003h |
写入错误 |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_USB_dir ( ) |
LS9138 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称时发生的错误) |
0012h |
文件名(路径名)错误 | ||
0018h |
LS区写入范围错误 | ||
0020h |
无USB存储器 | ||
0021h |
USB存储器无效 | ||
0100h |
目录打开错误 |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_USB_read ( ) |
LS9139 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0018h |
LS区写入范围错误 | ||
0020h |
无USB存储器 | ||
0021h |
USB存储器无效 | ||
0101h |
文件查找错误(偏移错误) | ||
0102h |
已读取字节数错误 | ||
0110h |
文件创建(打开)错误 |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_USB_write ( ) |
LS9140 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0020h |
无USB存储器 | ||
0021h |
USB存储器无效 | ||
0101h |
文件查找错误(偏移错误) | ||
0104h |
文件夹创建错误 | ||
0108h |
写入模式错误 | ||
0110h |
文件创建(打开)错误 | ||
0111h |
文件写入错误(例如:USB存储器上的空间不足) |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_USB_delete ( ) |
LS9141 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0020h |
无USB存储器 | ||
0021h |
USB存储器无效 | ||
0112h |
文件删除错误(例如,指定的文件不存在。指定文件是只读文件。) |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_USB_rename ( ) |
LS9142 |
0010h |
无效的D脚本数据(检索用固定字符串指定的文件夹名称/文件名时发生的错误) |
0011h |
LS区读取范围错误 | ||
0012h |
文件名(路径名)错误 | ||
0020h |
无USB存储器 | ||
0021h |
USB存储器无效 | ||
0114h |
文件重命名错误(例如,指定的文件不存在。文件名已经存在。) |
编辑器函数名称 |
|
错误状态 |
原因 |
---|---|---|---|
_USB_read_csv ( ) |
LS9143 |
0001h |
参数错误 |
0002h |
USB存储器错误(无USB存储器、文件打开错误、文件读取错误) | ||
0003h |
写入错误 |
当执行文件读取/文件写入函数,从/向寄存器地址读取/写入数据时,可以指定已写入(读取)数据的存储顺序。
在LS9130中设置数据存储模式可以更改存储顺序。可以从如下四种模式中任意选择一种:0, 1, 2或3。
使用以下命令来引用LS9130。
_CF_write()CF文件操作:写入文件
_CF_read()CF文件操作:读取文件
_CF_read_csv()CF文件操作:读CSV文件
_USB_write()USB文件操作:写入文件
_USB_read()USB文件操作:读取文件
_USB_read_csv()USB文件操作:读CSV文件
IO_WRITE([p:PRN],...)打印操作:发送
当写入或读取寄存器地址时,可以使用以下函数而不是LS9130存储模式,与[系统设置]窗口的[控制器/PLC]页中的[文本数据模式]属性进行交互。
_CF_dir()CF文件操作:输出文件列表
_USB_dir()USB文件操作:输出文件列表
模式0
例如,当使用文件读取函数向寄存器地址中写入字符串“ABCDEFG”时
[w:[#INTERNAL]LS9130] = 0
_CF_read ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], 0, 7)
当寄存器地址长度为16位时
当寄存器地址长度为32位时
模式1
例如,当使用文件读取函数向寄存器地址中写入字符串“ABCDEFG”时
[w:[#INTERNAL]LS9130] = 1
_CF_read ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], 0, 7)
当寄存器地址长度为16位时
当寄存器地址长度为32位时
模式2
例如,当使用文件读取函数向寄存器地址中写入字符串“ABCDEFG”时
[w:[#INTERNAL]LS9130] = 2
_CF_read ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], 0, 7)
当寄存器地址长度为16位时
当寄存器地址长度为32位时
模式3
例如,当使用文件读取函数向寄存器地址中写入字符串“ABCDEFG”时
[w:[#INTERNAL]LS9130] = 3
_CF_read ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], 0, 7)
当寄存器地址长度为16位时
当寄存器地址长度为32位时
数据存储模式与[系统设置]窗口中[控制器/PLC]页面的字符串数据模式不同。数据存储模式与字符串数据模式的比较如下所示。
寄存器地址中的数据 |
LH/HL存储 |
双字字节LH/HL存储顺序 |
D脚本数据存储模式 |
文本数据模式 |
---|---|---|---|---|
从起始数据保存 |
HL顺序 |
HL顺序 |
0 |
1 |
LH顺序 |
1 |
2 | ||
HL顺序 |
LH顺序 |
2 |
5 | |
LH顺序 |
3 |
4 | ||
从尾部数据开始保存 |
HL顺序 |
HL顺序 |
— |
3 |
LH顺序 |
— |
7 | ||
HL顺序 |
LH顺序 |
— |
8 | |
LH顺序 |
— |
6 |
将数据重写至CF卡的频率有限制。因此,务必向另外一个存储介质定期备份所有CF卡数据。假定要重写500KB的DOS格式数据,限制次数是10万次。
如果在CF卡/USB存储器处理过程中发生错误,会将错误写至CF卡错误/USB存储器错误状态[s:CF_ERR_STAT]/[s:USB_ERR_STAT]中。更多信息,请参阅CF卡/USB存储器错误状态。
不能将如下符号和字符用于文件夹名称或文件名。在文件夹名称或文件名中使用这些符号和字符将发生错误。
:, = + / " [ ] | < > ? [空格]
要指定根文件夹,请将“ ”(空字符串)指定为文件夹名称。