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

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

基本上你要做的是:

    为您的 CSV 行创建一个数据缓冲区,例如LineArray : ARRAY[1..100] OF STRING[255].

    以一定的间隔将测量值保存到字符串缓冲区。使用 CONCATREAL_TO_STRING 创建有效的 CSV 行。

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

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

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

【讨论】:

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

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

【讨论】:

以上是关于如何在 CODESYS (IEC 61131-3 ) 中执行文件 I/O?的主要内容,如果未能解决你的问题,请参考以下文章

RK3568+Codesys ARM+LINUX硬件平台的软PLC解决方案

IEC 61131-3 中的分层状态机

codesys 如何用C语言进行编程?我在创建程序的时候没有C语言的选项,是在哪个地方选择啊?

PLC OPC 信息模型(DI,PLCopen NodeSets)简介

PLC OPC 信息模型(DI,PLCopen NodeSets)简介

高观点下的IEC61499 功能块