首页 > 解决方案 > TwinCAT 无法将数据保存到 CSV

问题描述

我是拖拉机牵引团队的一员,我们有基于 Bechoff CX8190 的 PLC 用于数据记录。系统大部分时间都在工作,但时不时地将传感器值(每 10 毫秒收集一次)保存到 CSV 失败(主要在 csv 行的中间)。编写代码的人是 TwinCAT 的新手,不知道如何找出导致该问题的原因。任何想法在哪里寻找原因。

标签: twincat

解决方案


在 TwinCAT 中,写入文件始终是一个异步操作。也就是说,这不是实时动作,写过程在 10ms 的任务周期内完成是不安全的。因此,这些功能块总是有一个BUSY输出,必须对其进行评估,并且必须连续调用功能块,直到BUSY输出返回FALSE。只有这样才能执行新的写入命令。

我通常用一个双边缓冲算法来处理这个任务。假设缓冲区数组有 2x100 个条目。所以用样本值填写前 100 个条目。然后将它们与一个命令一起写入文件。完成后,清理缓冲区。与此同时,缓冲区的另一半​​可以填充样本值。如果第二面已满,请将它们全部一起写入文件......等等。所以你有更多的时间来访问文件系统(在上面的例子中 100x10ms=1s)作为 10ms 的任务循环时间。

但这只是根据我的经验提出的建议。我同意其他人的观点,一些代码真的很有帮助。


推荐阅读