技术论坛

 【征文】通过一个小案例加深理解Temp参数的用法

返回主题列表
作者 主题
HITIAR
奇侠

经验值: 7335
发帖数: 817
精华帖: 5
楼主    2019-08-09 08:12:45
主题:【征文】通过一个小案例加深理解Temp参数的用法

在PL编程时,我们经常会忽略语句中临时参数重复使用的的问题,在调试程序时,分析当前语句好似没有问题,只有放到整个程序中检查才能发现,这是由于PLC循环扫描的工作机制导致的。这种现象的处理可以按下示方法解决。

问题程序

         现有示例程序如下:

 




 

在分析上述语句时,当”start”变量被置为”1”时,”on delay”接受能流,变量被置位,能够实现自锁。但在仿真时,程序段1中的”on delay”变量并没有被置位,而只有程序段2上的”on delay”变量被置位。仿真结果如下图所示。



可以看出,以上程序由于程序段1中的”on delay”变量无法被置位而不能实现自锁。

问题分析

         PLC的工作方式是从上到下、由左至右地循环扫描,而”on delay”变量属于Temp—临时变量,只有在PLC的一个循环周期内,”on delay”变量能够保持,一个循环周期结束后,分配给”on delay”变量的存储空间被释放。

在上述程序的第一个循环周期中,程序段1左边的变量”start”被置位,而”on delay”变量没有被置位,程序段1右边的变量”on delay”由于”start”被置位而接受能流;程序段2左边的变量”on delay”由于接受能流而被置位;一个循环周期结束后,”on delay”的存储空间被释放,”on delay”变量又被复位,在第二个循环周期中,程序段1左边的”on delay”变量依然不能被置位。

解决方案

         采用FB程序块对上述程序进行编程,并将”on delay”变量设为Static——静态变量,程序如下所示。




         实验结果如下所示。



         可见,程序段1中左侧的”on delay”变量被成功置位,改程序能够实现自锁。

总结

         临时变量可以用于所有块中 (OB, FC, FB)。当块执行的时候它们被用来临时存储数据,当退出该块时这些数据将丢失。因此, 在PLC扫描运行时, FC块中的临时变量Temp不能自锁。

如果FC块,可以使用全局变量(标志位和数据块)来存储数据,实现自锁。

如果FB块,除了全局变量之外,也可以使用静态变量来存储数据,实现自锁。

 


办法总比困难多
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。