西门子 PLC程序设计过程中 Temp变量的应用研究
摘 要:西门子S7-400、S7-300系列PLC的STEP7编程软件在程序设计过程中经常用到STAT变量和TEMP变量,本文通过对这两种变量编制相同控制程序研究,并应用仿真软件对运行结果进行测试和分析,详细阐述了应用TEMP变量进行程序设计时出现错误运行结果的过程和原理。
关键词:西门子PLC;仿真;TEMP变量
一、概述
PLC即可编程逻辑控制器,是一种专门为在工业环境下应用而设计的数字运算操作电子系统,其中西门子S7-400、S7-300系列PLC在我国的应用范围较广,其使用的编程软件为STEP7软件,在工程程序设计过程中,经常会遇到一个工程项目中同时存在大量同种类型的被控设备的情况。
二、应用分析
实现FB功能块的特定逻辑控制功能,常常需要使用大量的中间变量,中间变量可以选用STAT变量或TEMP变量,很多时候技术人员可能误以为以上两种变量在程序设计过程中可以互换使用,同时考虑到TEMP变量不占据CPU装载存储区的空间,更多时候选择使用TEMP变量,而实际应用过程中,不慎重选择很有可能造成严重后果。
1、PLC程序设计中常用的2个基本功能介绍
功能1,实现对上升沿输入信号的检测并输出指令信号持续5秒后自动断开功能。该功能应用于设备的启动按钮为自复位式,而设备启动需要持续4秒以上指令信号的工况,这时可以通过程序设计,实现当某一输入信号产生一个上升沿时,将输出指令信号置为1保持5秒再复位为0。
功能2,实现对时钟脉冲信号输入信号的累加并输出功能,同时具备累加值清零功能。该功能常用于对现场物料的流量或重量等数据统计的工况,这时可以通过程序设计,实现当某一输入的脉冲信号产生时,将累加中间变量自加1,并赋值给输出端显示当前累加值,当操作人员给出“清零”信号时,该累加值自动清零。
2、测试程序编制
2.1 FB功能块建立
在STEP7程序中插入名称为“FB2”的功能块,符号名为“FB_TEST_TEMP”,同时在该功能块中添加相关参数,并编制程序分别运用STAT变量和TEMP变量作为中间变量实现功能1和功能2所述功能,如图一所示。
图 1 FB2功能块
功能块的IN_SATE、OUT_STAT_POS管脚为FB功能块内部程序使用STAT变量作为中间变量实现该功能的输入参数接口和输出参数接口,设计实现功能是当IN_SATE链接的外部变量被设置为1时,OUT_STAT_POS链接的外部变量被设置为1并保持5秒后变为0;类似的,功能块的IN_TEMP、OUT_TEMP_POS管脚为FB功能块内部程序使用TEMP变量作为中间变量实现该功能的输入参数接口和输出参数接口,设计实现功能是当IN_TEMP链接的外部变量被设置为1时,OUT_TEMP_POS链接的外部变量被设置为1并保持5秒后变为0。
功能块的IN_CLOCK管脚为FB功能块时钟脉冲输入参数接口,设计实现的功能是所连接外部变量每隔1秒被设置为1并持续一个扫描周期,为FB功能块提供时钟脉冲信号;OUT_STAT_ADD管脚为FB功能块内部程序使用STAT变量作为中间变量实现对时钟脉冲信号累加功能的输出参数接口,设计实现的功能是当IN_CLOCK链接外部变量产生一个脉冲信号时OUT_STAT_ADD链接的外部变量自动加1;类似的,OUT_TEMP_ADD管脚为FB功能块内部程序使用TEMP变量作为中间变量实现对时钟脉冲信号累加功能的输出参数接口,IN_QL管脚对累加值清零的输入参数接口。
2.2 FB功能块调用元斌
在STEP7中插入名称为“FB4”的功能块,符号名为“TEST_TEMP”,在该功能块中插入2个程序段,每个程序段中调用FB2并更改为多重背景调用,同时定义多重背景名称分别为“TEST1”和“TEST2”,并在OB1主程序中调用FB4并生成其背景数据块DB4,模拟实现2个该类设备的控制工况。
3、程序功能测试
在STEP7软件中打开仿真器,将测试程序下载并将仿真器调至运行状态,在功能块FB4中调至“监视”状态时进行测试。
3.1 功能1测试:将TEST1的IN_STAT和IN_TEMP链接外部变量同时置为1,观测执行结果:OUT_STAT_POS所链接变量按照预想情况先被置1,5秒后被置0;而OUT_TEMP_POS所链接变量先被置1,5秒后并未被置0,而是一直保持为1。
3.2 功能2测试:设置TEST1和TEST2的IN_CLOCK链接外部变量连续产生10个脉冲信号后,观测执行结果:TEST1和TEST2的OUT_STAT_ADD所链接变量显示的执行结果正常,显示为10;TEST1的OUT_TEMP_ADD所链接变量显示的执行结果为19,TEST2的OUT_TEMP_ADD所链接变量显示的执行结果为20;当IN_QL链接外部变量被置1时,清零功能正常实现。
4、测试结果分析
(1)功能1测试中执行结果错误原因分析:程序执行TEST1时调用FB2功能块,其IN_TEMP接口链接外部变量被置为1,该接口对应内部使用的TEMP中间变量将被赋值为1;随后程序
执行TEST2再次调用FB2功能块,其IN_TEMP接口链接外部变量未被设置为1,该接口对应的TEMP中间变量将被赋值为0。当程序进入下一个扫描周期时将再次执行TEST1、TEST2,但是由于TEMP中间变量在没有分配装载存储区区域,因此每个扫描周期执行TEST1、TEST2时改变的IN_TEMP接口对应的TEMP中间变量为同一堆栈存储区变量,就会出现每次执行到TEST1时,IN_TEMP接口对应的TEMP中间变量都会检测到一个上升沿,导致其每个扫描周期都会重新开始一次5秒的倒计时,也就一直无法到达5秒计时结束的时间,最终导致TEST1输出接口OUT_TEMP_POS执行结果一直为1的情况。
(2)功能2测试中执行结果错误原因分析:TEST1和TEST2的IN_CLOCK接口链接时钟脉冲信号,当第一个时钟脉冲信号发生时,程序先执行TEST1,其IN_CLOCK接口关联的内部TEMP中间变量执行自加1功能,此时该TEMP变量的初始值默认为0,因此程序执行后,该变量执行结果为1,并将数值赋值给OUT_TEMP_ADD链接的外部变量显示为1;随后,继续执行TEST2程序段,其IN_CLOCK接口关联内部TEMP中间变量执行自加1功能,而此时该TEMP变量的初始值不是0,而是TEST1执行后的结果1,因此执行自加1功能后其实际值变为2,并赋值给OUT_TEMP_ADD链接的外部变量显示为2。当IN_CLOCK接口链接的时钟脉冲信号连续产生10个时钟脉冲后,即产生了功能2测试中所述的执行结果。
三、结语
本文介绍了西门子S7-400、S7-300系列PLC程序设计中常用的2个基本功能,分别通过使用STAT变量和TEMP变量作为中间变量编程实现,并应用仿真软件对程序进行测试,研究了TEMP变量对于上升沿信号检测、时钟脉冲信号检测可能出现的执行结果错误的问题,并介绍了错误产生的过程和原理,建议在此类程序设计过程中,为避免不可预测的结果发生,应慎重选用TEMP变量。
参考文献
1.
竺志超,陈元斌,韩豫编著.非标自动化设备设计与实践 毕业设计、课程设计训练:国防工业出版社,2015.12
2.
梁瑞初.浅析PLC在电力系统自动化工程中的应用[J].电源技术应用,2017(02).