当前位置: 首页 > news >正文

CODESYS使用CAA File库进行文件操作的详细讲解

一、前言

在讲解CODESYS的文件操作前,我们要了解做本节的意义和作用,以及What?Why?When?Where?How?这涉及到在项目的疑难处理中,可以作为突破点的方法。

1.什么是文件操作?

文件操作是指程序对计算机文件系统中的文件进行创建、读取、写入、修改、删除等操作的过程。这是程序与外部存储设备(如硬盘、U盘等)进行数据交互的基本方式。

2.为何要文件操作?

  1. 数据持久化:程序运行时的数据存储在内存中,程序关闭后会丢失。通过文件操作可以将数据永久保存。
  2. 数据共享:不同程序之间可以通过文件共享数据。
  3. 配置存储:保存程序的设置和配置信息。
  4. 日志记录:记录程序运行状态和错误信息。 大数据处理:处理超出内存容量的数据。

3.文件操作的思考?

在工控领域,设备机台使用PLC的环境下,文件操作的功能或功能块往往不是很友好。当然对于触摸屏来说,可以通过FTP服务器的方式进行上传和下载文件等处理,在之前的博文中有详细讲过,如果使用上位机调用函数更为简单就可以做文件处理。
今天我们所讲的,是关于使用PLC,以CODESYS软件为案例,汇川Inoproshop为参考,使用库文件进行文件操作。事实上,关于此方面的内容,有些博文感觉写的不是很清楚,没有申根刨底的讲明白这个用法,而官网的案例也不是很符。因此经过我两三天的研究,总算搞精通了(也许是冰山一角吧)。如果别的PLC基于CODESYS开发的,那么基本原理是相通的,看这篇也足够了。

关于如何操作,我们下面详细讲解。

CODESYS使用CAA File库进行文件操作的详细讲解

二、关于库

1.库说明

CODESYS官方提供了两种库文件,Sysfile和CAA file,从类型上,Sysfile属于函数(功能),CAA file属于函数块(功能块)。而CAA file的底层实际上是根据Sysfile编写的,因此每调用一个CAA file都会有一个背景数据区。

2.库版本

本次讲解的库文件版本号:3.5.19.0,官方在线帮助版本:3.5.15.0,由于库的版本在不断迭代,因此不能全看在线帮助的内容,可能会误导大家,仅个人看法。
官方在线帮助网站:[https://content.helpme-codesys.com/en/libs/CAA%20File/Current/index.html]

注意:查找此类文件库,尽量在官网界面选EN(英文)。
关于官方的库的原文描述我就不照搬了,建议自行浏览一遍,知道大概就行,需要说明的是,有些功能块的数据类型是枚举类型,这些会令小白比较疑惑,所以创建数据变量一定要注意。

三、使用库

对于一个简单的文件,要显示创建,打开,写入,读取,关闭等,首先要添加库文件CAA File,见下图:
在这里插入图片描述

其次,调用File.Open,File.Write,File.SetPos,File.Read,File.Close等即可,见下代码:

//打开文件
Open_0(xExecute := openExecute,xDone => ,xBusy => ,xError => ,sFileName := 'Record2.csv',eFileMode := FILE.MODE.MAPPENDPLUS,xExclusive := ,eError => ,hFile => );
//写入文件
Write_0(xExecute := writeExecute,xAbort := ,udiTimeOut := 100000,xDone => ,xBusy => ,xError => ,xAborted => ,hFile := open_0.hFile,pBuffer := ADR(writeBuff[0]),szSize := writeSzie,eError => );
//指示文件
SetPos_0(xExecute:=setPosExecute , xDone=> , xBusy=> , xError=> , hFile:=open_0.hFile , udiPos:=udipos , eError=> );	//读取文件
Read_0(xExecute := SetPos_0.xDone,xAbort := ,udiTimeOut := 100000,xDone => ,xBusy => ,xError => ,xAborted => ,hFile := open_0.hFile,pBuffer := ADR(readBuff[0]),szBuffer := readSzie,eError => ,szSize => );
// IF 	Read_0.xDone THEN
// 	setPosExecute:=FALSE;
// END_IF//关闭文件
Close_0(xExecute:=closeExecute , xDone=> , xBusy=> , xError=> , hFile:=open_0.hFile , eError=> );

1.打开文件File.Open

功能块图。
(1)xExecute:可以是上升沿,每次上升沿会创建一个句柄(无报错下),即创建或打开一个文件的标识符。下降沿后,此标识符为0。因此必须要记录此标识符,或保持接通状态,直到文件操作结束。
除了File.Open外,其它功能块沿触发一次即可,没有其它注意事项。
(2)sFileName:字符串格式(STRING),无目录下,如’test.txt’,默认保存在PlcLogic下,或上一级目录,应该跟安装情况有关。具体可以通过Everything搜索。也可以通过DirCreate创建目录,如目录名’Dirtest’,在该目录下’DIRTEST\Record.csv’,见下图:
在这里插入图片描述

(3)eFileMode:此枚举类型包括以下几种(简化版):M0-可写(覆盖或新建),M1-只读,M2-读写(覆盖或新建),M3-附加写,M4-读写(必须存在且可修改),M5-读写(内容清除或新建),M6-读写(内容追加或新建)。
该数据类型举例:FILE.MODE.MREADPLUS,即MODE值:MREADPLUS,也可以直接配WORD等类型,WORD值:4;
以上几种模式为实际测试后的简要版解释(每次沿触发后的效果),详细的说,
①没有的文件,想要创建,必须使用M0,M2,M5,M6;
②文件可读,M1,M2,M4,M5,M6;
③文件可写,M0,M2,M3,M4,M5,M6;
④文件读及写,M2,M4,M5,M6。
⑤文件重新打开时,本身被覆盖或内容被清除,即文件数据清除,M2,M5;
⑥文件重新打开时,在文件基础上继续编写,即数据在末尾,不断叠加,M6;
⑦文件重新打开时,文件本身不受影响,可指定在文件的指示符处变更,如替换,新增等,M4;
这样的解释比较通俗易懂,而官方的解释文本,如果不去测试,根本不明白怎么回事。
(4)xDone,xBusy,xError,eError:状态的输出信号,将此引脚做逻辑处理即可,如xDone触发下一个功能块的运行等等。
(5)hFile:句柄(标识),当打开一个文件的时候,会输出一个标识符,用于指定这个文件,以及用于后续的读写操作等,如果标识符被清零,那么后续的操作肯定是无效的,数据类型:LWORD;

2.文件写入File.Write

(1)udiTimeOut:单位是微秒,如100000代表100ms,用于操作超时的设定。
(2)hFile:与File.Open的标识符保持一致即可,代表打开的文件可以被操作。
(3)pBuffer:数据的缓冲区,需要用ADR()取地址中的数据,否则会报错,其本身的数据类型是:LWORD;关于取地址中的数据类型,可以是任何数组或非数组的数据类型,如BYTE,INT,STRING,WSTRING等;
(4)szSize:写入的数据字节大小,数据类型:ULINT,官网推荐用SIZEOF确定,个人建议,根据项目内容,是多少写多少。本人测试下来,如果写空字符,再读取的时候可能会存在问题,尽量不要写空;

3.文件读取File.Read

具体引脚跟Write一样,对于读取的字节大小,没有严格

http://www.dtcms.com/a/463402.html

相关文章:

  • 南京seo网站标题优化技巧
  • 怎么开个人网站赚钱华夏建筑工程网
  • 江苏省电力建设一公司网站网络营销设计公司
  • 做网站能赚钱吗 知乎京东云擎 wordpress 二级域名
  • [xboard] 28 busybox最小根文件系统
  • 做细胞激活的母液网站推广渠道包括哪些
  • 山东大学青岛校区建设指挥部网站什么是网站建设策划书
  • Agentic RL in Agent——Search-R1 与Memory-R1详解
  • 重庆专业网站推广时间wordpress之外的博客软件
  • 北京 工业网站建设公司医院网站建设具体内容
  • 网站好友邀请链接生成 php做网页跳转网站
  • 济南做平台网站的做珠宝商城网站
  • 建设银行打印回单网站电子商务网站建设与管理试卷
  • 网站建设工程设计图网站标题的关键字怎么写
  • 设计模式--适配器模式:优雅解决接口不兼容问题
  • 哈尔滨专业建设网站设计手写字体在线生成器
  • 外贸工厂的网站建设成品网站代理
  • 电商网站开发公司哪家好wordpress修改固定链接打不开
  • C#基础17-C#10-C#13新特性
  • 协会秘书处工作建设 网站wordpress安装虚拟主机
  • 百度做网站电话多少网站建设+管理系统开发
  • 深圳外贸网站外贸网站建设做电子商城网站注意事项
  • 湖南省建设信息网站网页制作培训学院
  • 在线做c 题的网站无锡开发网站建设
  • 网站片头怎么做学生个人作品集如何制作
  • 网站用什么框架企业型网站建设制作平台
  • wordpress跨站脚本攻击漏洞便宜网站建设哪家好
  • 网站搭建语言装修广告牌设计图片
  • 专业的网站建设与优化天台网站建设
  • 广东企业网站建设多少钱来宾网站建设公司