Codesys用ST语言实现对CSV文件的读写操作的代码案例
一、开发环境说明编程软件: Codesys V3.5 SP17运行设备:PC电脑编程语言: ST
二、配置操作
1、新建Codesys工程,依次点击【文件】—【新建工程】—【标准工程】— 输入名称,如下图所示
2、添加依赖库文件,依次点击【库管理器】—【添加库】–【高级】— 输入库名称 —【确定】,如下图所示
需要添加的库:
SysFileStringUtilsSysTypes2 InterfacesUtil
3、编写读写CSV文件的函数:
ReadCSVDataWriteCSVData
用到的主要库函数
函数名说明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 OF STRING(20);//读写的数据
udiResult : ARRAY OFRTS_IEC_RESULT;//返回操作的结果0 --成功
END_VAR
VAR
bRead: BOOL;//读操作
bWrite : BOOL;//写操作
iCount : INT;//临时值 for循环用
END_VARIF bRead= TRUE THEN //读操作
bRead := FALSE;//只读一次 上升沿触发
pbyteFileHandle:=SysFileOpen(szFile:= strFileName, am:= ACCESS_MODE.AM_READ_PLUS, pResult:=ADR(udiResult));//打开文件,获取文件句柄
FOR iCount :=0 TO10 BY 1 DO //读10个值
astrCsvData:=ReadCSVData(hFileHandle := pbyteFileHandle);//调用读函数
IF astrCsvData='' 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));//打开文件,获取文件句柄
FOR iCount :=0 TO10 BY 1 DO //写10个值WriteCsvData(hFileHandle := pbyteFileHandle, strWriteData := astrCsvData);//调用写函数
END_FOR
SysFileClose(hFile:= pbyteFileHandle);//释放文件句柄
END_IF三、编写codesys界面,进行效果展示
四、代码下载
页:
[1]