电工学习网

 找回密码
 立即注册
查看: 2366|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-8-10 07:57:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在PL编程时,我们经常会忽略语句中临时参数重复使用的的问题,在调试程序时,分析当前语句好似没有问题,只有放到整个程序中检查才能发现,这是由于plc循环扫描的工作机制导致的。这种现象的处理可以按下示方法解决。
问题程序
         现有示例程序如下:
通过一个小案例加深理解Temp参数的用法
在分析上述语句时,当”start”变量被置为”1”时,”on delay”接受能流,变量被置位,能够实现自锁。但在仿真时,程序段1中的”on delay”变量并没有被置位,而只有程序段2上的”on delay”变量被置位。仿真结果如下图所示。
通过一个小案例加深理解Temp参数的用法
可以看出,以上程序由于程序段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——静态变量,程序如下所示。
通过一个小案例加深理解Temp参数的用法
         实验结果如下所示。
通过一个小案例加深理解Temp参数的用法
         可见,程序段1中左侧的”on delay”变量被成功置位,改程序能够实现自锁。
总结
         临时变量可以用于所有块中 (OB, FC, FB)。当块执行的时候它们被用来临时存储数据,当退出该块时这些数据将丢失。因此, 在PLC扫描运行时, FC块中的临时变量Temp不能自锁。
如果FC块,可以使用全局变量(标志位和数据块)来存储数据,实现自锁。
如果FB块,除了全局变量之外,也可以使用静态变量来存储数据,实现自锁。
来源:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-5-14 00:13

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表