如何在 TwinCat3 中保存整型变量的值?

How to save value of integer variable in TwinCat3?

我在 TwinCat 中有一个程序,其中每 10 秒更新 5 个整数变量以表示 5 个泵的状态。我想将生成的这些值保存到文本文件或 CSV 文件中,我以后可以从 PLC 中提取这些值。代码如下:

IF toninPumpPulse.Q THEN
    rinPump1RPM := (inPump1Count/6)*6; //Pulse sample for 10 seconds. 6 pulses = 1 round.
    inPump1Count := 0; //Reset counter for next 10 second sample
    rinPump2RPM := (inPump2Count/6)*6; //Pulse sample for 10 seconds. 6 pulses = 1 round.
    inPump2Count := 0; //Reset counter for next 10 second sample
    rinPump3RPM := (inPump3Count/6)*6; //Pulse sample for 10 seconds. 6 pulses = 1 round.
    inPump3Count := 0; //Reset counter for next 10 second sample
    rinPump4RPM := (inPump4Count/6)*6; //Pulse sample for 10 seconds. 6 pulses = 1 round.
    inPump4Count := 0; //Reset counter for next 10 second sample
    rinPump5RPM := (inPump5Count/6)*6; //Pulse sample for 10 seconds. 6 pulses = 1 round.
    inPump5Count := 0; //Reset counter for next 10 second sample

我希望创建一个新的 CSV 文件,然后用变量值填充。我对 TwinCat 缺乏经验,阅读 Beckhoff 网站也没有什么帮助。

您想组合使用几个功能块:

  • FB_FileOpen
  • FB_FilePuts
  • FB_FileClose

Beckhoff infosys 上已提供您需要的所有文档和示例代码:

https://infosys.beckhoff.com/english.php?content=../content/1033/tcplclibutilities/html/tcplclibutilities_csv_sample.htm&id=

另请参阅有关一般如何写入文件的信息:

开源日志库TcLog 可能对您有所帮助。它为文件系统提供扩展的日志记录功能。

我写了一个blog post介绍,你也可以在那里下载一个预编译库

这就是您在您的案例中的使用方式:

首先,定义一个 TcLogCore 类型的静态记录器实例,其中包含配置:

VAR
  CoreLogger : TcLogCore;
END_VAR

CoreLogger
 .MinimumLevel(E_LogLevel.Warning)
 .WriteToFile('c:\logs\', 'pumpValues.csv')
 .RunLogger();

接下来,定义一个实际记录消息的记录器TcLog

VAR
  Logger : TcLog;
END_VAR

您可以使用该记录器生成如下日志消息:

Logger
.OnCondition(toninPumpPulse.Q)
.AppendAny(rinPump1RPM)
.AppendString(',')
.AppendAny(rinPump2RPM)
.AppendString(',')
.AppendAny(rinPump3RPM)
.AppendString(',')
.AppendAny(rinPump4RPM)
.AppendString(',')
.AppendAny(rinPump5RPM)
.ToCustomFormat('');

确保toninPumpPulse.Q只有一个周期true,否则会产生大量消息。也看看 logging on rising/falling edges

由于记录器是作为单例实现的,你可以在程序的任何地方使用它,它会自动使用TcLogCore的配置。

库中还有更多选项,例如设置日志文件的滚动间隔或自动删除可能对您有用的旧文件。