【问题标题】:How to perform file I/O in CODESYS (IEC 61131-3 )?如何在 CODESYS (IEC 61131-3 ) 中执行文件 I/O?
【发布时间】:2017-08-10 20:25:28
【问题描述】:

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

为了报告这个比较的结果,我们希望将上面提到的两个值绘制成图表。因此,我们需要有这两个数据的时间字符串(csv 或任何其他格式)。我做了一些谷歌研究,也看看这个question。关于如何使用 CODESYS 进行文件 I/O 的信息似乎并不多。

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

高度赞赏任何想法。 谢谢。

【问题讨论】:

    标签: file-io automation codesys iec61131-3


    【解决方案1】:

    查看文件库:https://help.codesys.com/webapp/Examples;product=CAA_FILE;version=3.5.11.0

    基本上你要做的是:

    1. 为您的 CSV 行创建一个数据缓冲区,例如
      LineArray : ARRAY[1..100] OF STRING[255].
    2. 以一定的间隔将测量值保存到字符串缓冲区。使用 CONCATREAL_TO_STRING 创建有效的 CSV 行。

    3. 同时用FILE.Open功能块打开文件

    4. 使用打开的文件句柄将数据从缓冲区写入文件 (FILE.Write)。记住在使用 MemCpy 写入后移动缓冲区。

    5. 写完所有行后,使用FILE.Close

    【讨论】:

    • 感谢 Quirzo。想知道你有没有类似的例子。
    • 我只用 TwinCAT 块编写了类似的代码。 TwinCAT 文件块有一些示例,但它们的工作方式非常相似(打开、写入、关闭等)。 Link to Beckhoff's page
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-04-30
      • 1970-01-01
      • 2010-10-19
      • 2017-12-27
      • 2012-03-01
      • 2011-08-26
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      相关资源
      最近更新 更多