我们正在尝试对采样数据进行实时测量/计算。我们之前的经验基于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代码。
答案 0 :(得分:0)
CoDeSys提供了库CmplecTask
,它为您提供有关当前任务的详细信息。让您的代码在一个循环触发的专用任务中运行,并以编程方式从任务信息中读取信息来控制所有内容。所有时间,紧张等都可以在那里访问。