蓝色港湾 发表于 2023-4-12 22:23:01

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]
查看完整版本: Codesys用ST语言实现对CSV文件的读写操作的代码案例