一、开发环境说明
- 编程软件: Codesys V3.5 SP17
- 运行设备:PC电脑
- 编程语言: ST
二、配置操作
1、新建Codesys工程,依次点击【文件】—【新建工程】—【标准工程】— 输入名称,如下图所示
2、添加依赖库文件,依次点击【库管理器】—【添加库】–【高级】— 输入库名称 —【确定】,如下图所示
需要添加的库:
- SysFile
- StringUtils
- SysTypes2 Interfaces
- Util
3、编写读写CSV文件的函数:
- ReadCSVData
- WriteCSVData
用到的主要库函数
函数名 | 说明 |
---|---|
SysFileOpen | 打开或创建文件,并返回文件句柄。 |
SysFileClose | 关闭句柄指定的文件 |
SysFileRead | 从文件中读取字节 |
SysFileWrite | 往文件中写入字节 |
SysFileGetPos | 获取当前文件指针的位置 |
4、在PLC_PRG中编写代码,调用函数实现CSV文件操作
//声明部分
PROGRAM PLC_PRG
VAR
pbyteFileHandle : RTS_IEC_HANDLE;//文件句柄
strFileName : STRING := 'D:\File.csv';//csv文件路径
astrCsvData : ARRAY[0..20] OF STRING(20) ;//读写的数据
udiResult : ARRAY[1..2] OF RTS_IEC_RESULT;//返回操作的结果 0 --成功
END_VAR
VAR
bRead : BOOL;//读操作
bWrite : BOOL;//写操作
iCount : INT; //临时值 for循环用
END_VAR
IF bRead = TRUE THEN //读操作
bRead := FALSE;//只读一次 上升沿触发
pbyteFileHandle:= SysFileOpen(szFile:= strFileName, am:= ACCESS_MODE.AM_READ_PLUS, pResult:= ADR(udiResult[1]));//打开文件,获取文件句柄
FOR iCount := 0 TO 10 BY 1 DO //读10个值
astrCsvData[iCount] := ReadCSVData(hFileHandle := pbyteFileHandle);//调用读函数
IF astrCsvData[iCount] = '' THEN //如果读到的字符为空,表示读完,返回
SysFileClose(hFile := pbyteFileHandle);//释放文件句柄
RETURN;
END_IF
END_FOR
SysFileClose(hFile:= pbyteFileHandle);//释放文件句柄
END_IF
IF bWrite = TRUE THEN //写操作
bWrite := FALSE; //只写一次 上升沿触发
pbyteFileHandle:= SysFileOpen(szFile:= strFileName, am:= ACCESS_MODE.AM_WRITE_PLUS, pResult:= ADR(udiResult[2]));//打开文件,获取文件句柄
FOR iCount := 0 TO 10 BY 1 DO //写10个值
WriteCsvData(hFileHandle := pbyteFileHandle, strWriteData := astrCsvData[iCount]);//调用写函数
END_FOR
SysFileClose(hFile:= pbyteFileHandle);//释放文件句柄
END_IF