如何将实时控制的概念从“C”环境转移到“IEC61131(CODESYS)”?

时间:2017-07-24 15:42:02

标签: real-time plc codesys iec61131-3

我们正在尝试对采样数据进行实时测量/计算。我们之前的经验基于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做延迟。但是,有关如何从处理器中获取时间的任何建议都受到高度赞赏。

(本post讨论了编写代码并将其传输到IEC61131的可能性。但是,出于教育目的,首选编写IEC61131内的代码。)

p.s.1:我正在研发SEL-3350设备,该设备配有CODESYS固件,用于编写IEC61131程序。

p.s.2:经过几天的搜索,我理解了基于C编程的实时控制和使用IEC61131(使用CODESYS)的实时控制之间的区别。

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

1 个答案:

答案 0 :(得分:0)

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