1

我们正在尝试对采样数据进行实时测量/计算。我们之前的经验是基于C编程的。我想知道是否有人可以帮助我将实时c编程结构转换为 PLC IEC61131 结构化文本?

对于实时控制循环(具有恒定循环周期),我们需要一个开始计时器、一个结束计时器和一个等待函数,其工作方式如下:

while(1) {

    t_start=timems();  /* a variable gets the current processor time in ms*/

    /*... here the function performs the calculation...*/

    t_stop=timems(); /* a variable gets the current processor time in ms*/

    deltaT=t_stop-t_start; /* time difference between the start of the loop and end of the loop is calculated*/;

    waitms(loop_constant-deltaT); /* the loop waits for the remainder of the constant loop time before the next iteration*/
}

具体来说,我想知道我们如何在 IEC61131 中实现这些时序结构?我认为我们可以使用 TON 进行延迟。但是,非常感谢任何有关如何从处理器获取时间的建议。

(这篇文章讨论了可以编写代码并将其传输到 IEC61131。但是,出于教育目的,最好在 IEC61131 中编写代码。)

ps1:我正在开发一个 SEL-3350 设备,该设备配备了用于编写 IEC61131 程序的 CODESYS 固件。

ps2:经过几天的搜索,我明白了基于C编程的实时控制和IEC61131(使用CODESYS)的实时控制之间的区别。

基本上,当您使用 PLC 设备进行编码时,您可以在任务管理器中选择设置控制器处理周期的属性。因此,与“C”不同,不需要执行无限循环(while (1)),软件会处理它。例如,在 CODESYS 环境中,将程序类型选择为“循环”,将间隔时间选择为“循环常数”,这将类似于上面提到的 C 代码。

4

1 回答 1

0

CoDeSys 提供的库CmplecTask为您提供有关当前任务的详细信息。让您的代码在循环触发的专用任务中运行,并使用从任务信息中以编程方式读取的信息来控制一切。在那里可以访问所有时间、抖动等。

于 2017-11-18T11:26:05.410 回答