File io 如何在CODESYS(IEC 61131-3)中执行文件I/O?

File io 如何在CODESYS(IEC 61131-3)中执行文件I/O?,file-io,automation,codesys,iec61131-3,File Io,Automation,Codesys,Iec61131 3,我使用自动化设备(配备CODESYS)计算功能块的输出值。为了确保函数正常工作,我们想将这个输出值与另一个函数块的输出结果进行比较,我们没有编写这个函数块 为了报告比较结果,我们希望以图表的形式绘制上述两个值。因此,我们需要这两个数据的时间字符串(csv或任何其他格式)。我做了一些谷歌调查,也看了一下这个。关于如何使用CODESYS进行文件I/O,似乎没有太多的信息 我想知道是否有人有过类似的经验(执行同步文件I/O以生成CSV数据) 任何想法都将受到高度赞赏。 谢谢。最近在Codesys的Al

我使用自动化设备(配备CODESYS)计算功能块的输出值。为了确保函数正常工作,我们想将这个输出值与另一个函数块的输出结果进行比较,我们没有编写这个函数块

为了报告比较结果,我们希望以图表的形式绘制上述两个值。因此,我们需要这两个数据的时间字符串(csv或任何其他格式)。我做了一些谷歌调查,也看了一下这个。关于如何使用CODESYS进行文件I/O,似乎没有太多的信息

我想知道是否有人有过类似的经验(执行同步文件I/O以生成CSV数据)

任何想法都将受到高度赞赏。
谢谢。

最近在Codesys的Alizadeh博士系列教程中提出了这个问题。 下面是一个例子。 它基本上比使用Codesys跟踪功能更窄。

请参阅文件库:

基本上你要做的是:

  • 为CSV行创建数据缓冲区,例如
    LineArray:STRING[255]的数组[1..100]。
  • 以一定间隔将测量值保存到字符串缓冲区。使用
    CONCAT
    REAL\u TO\u STRING
    创建有效的CSV行

  • 同时,用
    文件打开文件。打开
    功能块

  • 使用打开的文件句柄将数据从缓冲区写入文件(
    file.write
    )。请记住,在使用例如MemCpy写入后,要移动缓冲区

  • 写入所有行后,使用
    文件。关闭


  • 谢谢你,基尔佐。不知道你们是否有类似的例子。我只用TwinCAT块编写了类似的代码。TwinCAT文件块有一些例子,但它们的工作原理非常相似(打开、写入、关闭等)。