当前位置:网站首页>CODESYS读取csv文件的方法(非excel)
CODESYS读取csv文件的方法(非excel)
2022-04-22 00:00:00 【tnt1314】
1、序言
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。 如果你的机器上装了 Microsoft Excel的话,.csv 文件默认是被Excel打开的。
codesys具有文件打开,文件读取,文件写入的功能块和库,那么csv格式的文件能否在codesys中打开呢,答案是显而易见的,接下来我们就来介绍下具体的操作方法。
2、CSV数据格式
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。
我们以一个文件数据为例来说明:用EXCEL打开DATA.CSV文件,看到如下数据:

我们可以用记事本模式打开,可以看到如下内容:

通过对比我们可以发现,本例中的CSV的数据通过“,”隔开,空白的地方没有数据,同时需要注意的是第二行与第一行之间存在换行符,记事本也显示不出来,但总体我们可以把CSV数据看作是一串字符序列。
3、文件读取功能块
3.1、文件读取功能块
codesys读取文件需要添加4个库文件,本例使用codesys软件版本为V3.5.14.10:
a、SysFile, 3.5.15.0(System):该库提供访问文件的功能
b、SysTypes2 Interfaces, 3.5.4.0(System):该库提供访问文件的数据格式
c、Util, 3.5.15.0(System):该库提供数据类型转换
d、StringUtils, 3.5.15.0(System): 该库包含处理字符串的函数
库文件添加方式这里不做介绍。
3.2、功能块指令介绍
文件读取功能主要用到 SysFileOpen,SysFileGetSizeByHandle,SysFileRead,SysFileGetPos,SysFileClose五个指令,功能作用分别如下:





3.3、CSV读取基本流程
CSV文件读取的步骤如下:
a、通过SysFileOpen指令打开文件;
b、通过SysFileGetSizeByHandle获取文件字符序列大小;
c、通过SysFileRead读取一次读取字符序列,并按顺序依次存入预先设好的数组中;
d、通过SysFileGetPos获取文件指针位置,判断是否读取了所有数据;
e、通过SysFileClose关闭CSV文件,若文件不关闭,则下次无法读取。
f、数组数据处理。
4、程序编写
本例通过ST语言编写
4.1、创建变量
变量表创建如下:文件路径根据实际情况设置,路径中不能包含中文,否则无法识别!!。

4.2、程序编写
a、读取文件数据
b、数据处理
通过SysFileRead指令读取出来的CSV字符序列的原始数据为ASCII码值,需要通过转换,再进行合并处理,需要避开"逗号","回车和换行",并需要通过"逗号","回车和换行"来确定对应数据的具体位置,篇幅限制,不做详细解释,数据处理程序如下:

4.3、创建可视化视图
使用多个文本框建立与数据对应的表格,并通过文本变量与数组连接,单按钮控制,视图如下:

变量连接如下:


4.4、运行结果
通过仿真运行我们先查看原始数据,可以通过对应ASCII码表与原数据进行对比,结果如下:


通过ascii对比验证可以得出,读取的数据没有问题。
再来验证数据转换后与表格数据的对应,仿真结果如下:
codesys读取csv文件的视频演示
5、综述
通过以上分析,程序编写及验证,codesys通过文件读取功能块是完全可以实现对CSV文件数据的读取,下一篇文章将对写入功能进行探讨。
需要注意的是:
1、读取CSV时,我们发现需要将所有数据读取出来,通过"逗号"、"换行"、"回车"等符号才能确定所有数据的对应位置,因此即使我们仅仅需要其中的一个数据,也需要将所有数据读出。
2、而当数据量大的时候,我们建立的读取数组也需要有对应的容量来存储,否则就会丢失数据。本例中数据量较小,不超过50个,所以并无影响。
本文所采用的codesys版本为V3.5.14.10,所涉及的程序可通过以下地址下载:
https://download.csdn.net/download/qq_19979629/85196575
版权声明
本文为[tnt1314]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_19979629/article/details/124309153
边栏推荐
- Gartner announces emerging technology research: insight into the meta universe
- Kubernetes deployment: offline deployment of highly available kubernetes clusters using kubespreay (scheme 1)
- B. Vlad and Candies
- 犯二的程度
- Blender mmd 导出FBX模型 和 烘焙动画
- How do pinduoduo stores choose resource slots, how to sign up for activities, and what activities are most beneficial to the store?
- 可替换MPS MP2451的高压DCDC芯片FS2451助力智能电表设计40V0.5A降压IC
- vmware-vmx. Exe could not end the process
- SolidWorks怎么设置运动行程和角度
- [fundamentals of interface testing] Part V - detailed explanation of interface use case design
猜你喜欢

1.2V镍氢电池灯太阳能草坪灯升压驱动IC丝印AaTLB封装SOT23-6和SOP8单片机IC

Sp4522b is a mobile power IC with integrated output for 2A charging and boosting

msf --攻击MySQL 和简单实用

redis源码之链表(adlist.h和adlist.c)(篇一)

Iotdb permission management

旷世研究院|暗视觉网络:利用深度不一致先验的 RGB IR 融合低照度成像方法

Use of database connection pool and Druid

How to set the motion stroke and angle in SolidWorks

《数字电子技术基础》3.3 CMOS门电路(下)

JDBC method parameter details drivermanager, statement, connection, resultset, Preparedstatement
随机推荐
selenium自动登录QQ空间(无头、规避)
DW07D 二合一锂电池保护 IC
可替换MPS MP2451的高压DCDC芯片FS2451助力智能电表设计40V0.5A降压IC
Browser principle learning notes 1 - browser process
Use of database connection pool and Druid
Dw07d two in one lithium battery protection IC
How to make dynamic drawing with PS
Storage group physical quantity entity path
L2-016 wish all lovers in the world are brothers and sisters who have been separated for many years (25 points)
14 custom XML
TCP的三次握手详解
7.3 创建线程
C Mandelbrot and Julia fractal image generation program updated to version 2010-9-14, supporting multi-threaded computing and multi-core processor
7.5 线程等待终止
【网络协议】DHCP和PXE
已拿offer,面试必备知识点
Sp4522b is a mobile power IC with integrated output for 2A charging and boosting
Tp4582b / tp4584b Bluetooth charging base lithium battery charging and discharging chip
09. 树莓派ASP.NET环境配置
App optimization and advanced scoreboard Part 2 [Mui + flask + mongodb]