2017-08-10 38 views
0

我正在使用自动化设备(配备CODESYS)来计算功能块的输出值。为了确保函数能够正常工作,我们希望将该输出值与另一个功能块的输出结果进行比较,我们没有编写它。如何在CODESYS(IEC 61131-3)中执行文件I/O?

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

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

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

回答

0

这个问题最近在有关Codesys的Dr. Alizadeh教程系列中提出。 这是一个link它。 它基本上比使用Codesys跟踪功能缩小。

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

+0

感谢Quirzo。想知道你是否有类似的例子。 –

+0

我只编写了类似于TwinCAT块的代码。 TwinCAT文件块有一些示例,但它们的工作方式非常相似(打开,写入,关闭等)。 [链接到Beckhoff的页面](https://infosys.beckhoff.com/english.php?content=../content/1033/tcplclibsystem/html/tcplclibsys_fileio_example.htm&id=) – Quirzo

+0

太棒了!谢谢! –