简介
从CSV文件(用“,”分隔单元格内容而建立)中以单元格为单位读取数据并将其写入字地址。
格式
_CF_read_csv/_SD_read_csv/_USB_read_csv (文件夹名称, 文件名, 目标地址, 起始行, 行数)
参数1:文本(最多32个单字节字符)
参数2:固定字符串(最大长度:32个单字节字符)、内部寄存器(最大长度:14个单字节字符)、用偏移量指定的内部寄存器(内部寄存器 +临时地址,最大长度:14个单字节字符)
参数3:内部寄存器、用偏移量指定的内部寄存器
参数4:数值(1至65535)、内部寄存器、临时变量
参数5:数值(1至65535)、内部寄存器、临时变量
表达式示例:
_CF_read_csv ("\CSV", "SAMPLE.CSV", [w:[#INTERNAL]LS1000], 1, 2)
(当读取两行数据时,使用“_CF_read_csv ( )”函数从CF存储卡中的[\CSV\SAMPLE.CSV]文件的第一行开始)
SAMPLE.CSV
读取两行数据,从CSV文件的第一行开始。如果第一个字符是数值(“0”至“9”或“-”),会将数据作为数值保存。如果第一个字符是["],会将数据作为一个字符处理,并将“00h”保存在文本字符串的末尾。例如,当保存“DAT01-01”时,数据大小是8字符,这是一个偶数,总共将使用5个字:4个字用于保存文本字符串,一个字用于在结尾保存“00h”。
例如,当保存“DAT01-2”时,数据大小是7字符,这是一个奇数,总共将使用4个字来保存该文本,在结尾保存“00h”。
如果单元格中的第一个字符是数值(“0”至“9”或“-”),会将值转换成数字数据,然后将数据写入LS寄存器。允许范围在-32768至32767之间。
如果单元格中的第一个字符是["],会连同["]一起将其作为文本字符串数据写入LS寄存器。当文本字符串数据的大小是奇数字节时,会在其末尾添加“0x00”。当文本数据的大小是偶数字节时,会将“0x0000”写入紧跟最后一个地址的地址中。
当CSV文件拥有两行以上数据时,可以从指定行开始读出所需行数。一行中最多可以输入200个单字节字符,一个CSV文件中最多可以输入65535个行。
当发生错误时,错误状态写入LS9137中(对USB存储器来说是LS9143)。
错误状态
编辑器函数名称 |
LS区 |
错误状态 |
原因 |
---|---|---|---|
_CF_read_csv( ) / _SD_read_csv( ) / _USB_read_csv( ) |
LS9137/ |
0000h |
成功完成 |
0001h |
参数错误 | ||
0002h |
外部存储器错误 无外部存储器/文件打开错误/文件读取错误 | ||
0003h |
写入/读取错误 |
在将CSV文件文本数据写入LS寄存器时,数据存储顺序取决于数据存储模式。关于数据存储顺序的信息,请参阅以下内容。
22.10.7 数据存储模式
如果将“*”指定为文件夹名,则可以为文件名指定完整路径。
文件名只能使用8.3格式(最大12个字符,其中8个字符用于文件名、点号,3个字符用于扩展名)。不能使用长度大于12个字符的文件名。
要指定根文件夹,请将“ ”(空字符串)指定为文件夹名称。
参数1文件夹名称的最大长度是32个单字节字符。
文件夹名称可以附加到参数2文件名。参数2文件夹名称+文件名的最大长度是32个单字节字符。
例如,\DATA\01\DATA.bin
可以为第二个参数(文件名)指定内部寄存器。指定内部寄存器可允许文件名间接地址指定。此外,使用内部寄存器时,最长文件夹名称+文件名长度为14个单字节字符。
如果指定内部寄存器来保存文件名,文件名的存储顺序将以文本数据模式的定义为依据。
7.9.1 [系统设置] - [控制器/PLC]设置指南
用于保存从CSV文件导入的数据的有效LS寄存器区限定为指定用户区(LS20至LS2031和LS2096至LS8191)。
导入数据所需的处理时间与要读取的CSV文件的数据量成正例。在处理完成前部件不会更新。(从总共100行、每行40个字符的CSV文件的第1行一直到第100行中读取数据大概需要10秒钟的时间。)
和“_CF_read()/_SD_read( )/_USB_read()”函数不同,函数执行后不会立刻将状态保存到[s:CF_ERR_STAT]/[s:SD_ERR_STAT]/[s:USB_ERR_STAT]。(在有些情况下,可能会保存一些未定义的值。)
请务必在以数字开始的文本字符串的开始和结束处插入["]。
例如,
[ 123, 2-D4EA ] |
[ 123, "2-D4EA" ] |
× |
○ |