AB PLC | Studio 5000之详解计时器指令
来源:AB PLC工作室前言:关于Studio 5000编程指令的用法,我原本计划是少写的,原因很简单,因为在指令集里面都有非常详细的说明和举例,只要静下心来好好看看就能明白的,但最近一些朋友也会问及指令的用法,比如计时器指令,说根据找不到T1、T2,怎么编程啊?一时,想起十年前,当初的我,不也是有这样的疑问吗。接触AB PLC之前,很多朋友搞的不是三菱,就是西门子,所以才有了上面的故事。那么,今天,我也重温一下看似简单、却常用的计时器指令,献给当初我,以及现在刚接触AB PLC的你。
01测试环境1. 操作系统:Windows7 旗舰版 SP1 64位2. 编程软件:Studio 5000 V32.00.00中文版
3. 仿真软件:Studio 5000 Logix Emulate 32.00
02计时器指令1. LOGIX5000控制器编程软件RSLogix/Studio 5000计时器指令,一共6个,可使用梯形图、功能块图、结构化文本编程语言进行编程,详见下图.http://p2.qhimg.com/t01b58b616a461d5412.jpg?size=715x303
2. 从上面图表可以看出,TON和TONR、TOF和TOFR、RTO和RTOR功能完全相同,只是前者只能使用梯形图,后者适用于功能块图或结构化文本编程.
03梯形图使用计时器指令1. 前面已经介绍了适用梯形图编程的计时器指令,有三个,分别为TON、TOF、RTO,在使用这三个指令之前,需要先创建标签,数据类型为TIMER,本文创建了一个名为ld_Timer的计时器标签,当然名称随意,只要符合规则即可.
2. 数据类型为TIMER的计时器标签,为结构体标签,每个元素都是独立的标签,在程序开发时,均可直接使用,关于计时器每个元素的详细含义,详见下图.http://p1.qhimg.com/t01bc4114264553573d.jpg?size=661x150
3. 接通延时计时器TON指令,预设3000mshttp://p9.qhimg.com/t0127a5c2e4b210b37d.gif?size=639x249
[*]当myBool=0时,计时器处于初始状态ld_Timer.EN=0,ld_Timer.TT=0ld_Timer.DN=0,ld_Timer.ACC=0
[*]当myBool从0变为1时,计时器开始计时ld_Timer.EN=1,ld_Timer.TT=1ld_Timer.DN=0,ld_Timer.ACC变化
[*]当myBool=1且ld_Timer.ACC=3000时ld_Timer.EN=1,ld_Timer.TT=0ld_Timer.DN=1,计时器完成计时
[*]当myBool从1变为0时,计时器又回到初始状态ld_Timer.EN=0,ld_Timer.TT=0ld_Timer.DN=0,ld_Timer.ACC=0
4. 关断延时计时器TOF指令,还是使用ld_Timer这个标签,预设5000mshttp://p0.qhimg.com/t01456dcc03a3d18020.gif?size=640x235
[*]当myBool=0时,计时器处于初始状态ld_Timer.EN=0,ld_Timer.TT=0ld_Timer.DN=0,ld_Timer.ACC=0
[*]当myBool从0变为1时,计时器的状态ld_Timer.EN=1,ld_Timer.TT=0ld_Timer.DN=1,ld_Timer.ACC=0
[*]当myBool从1变为0时ld_Timer.EN=0,ld_Timer.TT=1ld_Timer.DN=1,ld_Timer.ACC变化
[*]当ld_Timer.ACC=5000时ld_Timer.EN=0,ld_Timer.TT=0ld_Timer.DN=0
5. 保持型接通计时器RTO指令,继续使用ld_Timer这个标签测试,预设10000mshttp://p0.qhimg.com/t01ae0dc7388675ccfc.gif?size=637x234
[*]当myBool=0时,计时器处于初始状态ld_Timer.EN=0,ld_Timer.TT=0ld_Timer.DN=0,ld_Timer.ACC=0
[*]当myBool从0变为1时,计时器开始计时ld_Timer.EN=1,ld_Timer.TT=1ld_Timer.DN=0,ld_Timer.ACC变化
[*]当myBool从1变为0时ld_Timer.EN=0,ld_Timer.TT=0ld_Timer.DN=0,ld_Timer.ACC保持当前值
[*]当myBool再次从0变为1时,计时器又开始计时ld_Timer.EN=1,ld_Timer.TT=1ld_Timer.DN=0,ld_Timer.ACC在上次基数上累加
[*]当ld_Timer.ACC=10000时,ld_Timer.EN=1,ld_Timer.TT=0ld_Timer.DN=1这时,即使myBool=0时,ld_Timer.DN仍保持为1
6. 针对保持型接通计时器RTO完成计时后的状态,如果需要恢复初始状态(TT、DN、ACC等均为0),这时需要使用RES复位指令,另外两个计时器TON、TOF,也是用RES清零复位.
http://p4.qhimg.com/t01f98f43df12b0d568.jpg?size=1080x119
7. 计时器的预设值,以1ms为时基,比如要计时5秒,则需要赋值5000,可以直接在指令里面填写数值,也可以使用MOV指令赋值,另外,计时器的累加值.ACC,可以用来编程,和其他标签的一样.
http://p5.qhimg.com/t0178ac1daa5a37064e.jpg?size=1080x316
04
功能块图使用计时器指令
1. 如果要在FBD(功能块图)中使用计时器,则使用TONR、TOFR、RTOR这三个自带复位的计时器指令,使用之前,需创建数据类型为FBD_TIMER的标签,本文为fbd_Timer.http://p2.qhimg.com/t01f6f7bbb1bb403994.jpg?size=619x53
2. 新创建一个FBD程序,本文为FBD_TIMER.http://p8.qhimg.com/t012c51f6c85d5bec0e.jpg?size=719x413
3. 打开FBD_TIMER程序,在指令导航栏,找到计时器/计数器,本文选择TONR指令,如何使用,详见下图,也请自行测试,另外两个指令TOFR、RTOR用法类似,本文不再累述.http://p3.qhimg.com/t011d5fd43eadf25c47.jpg?size=942x427
4. 如何编写FBD程序,以及如何监控FBD里面的标签,请详见这篇文章《RSLogix/Studio 5000之FBD编程》
05
结构化文本使用计时器指令
1. 要在ST(结构化文本)中使用计时器,也是使用TONR、TOFR、RTOR这三个自带复位的计时器指令,使用之前,需创建数据类型为FBD_TIMER的标签,本文为st_Timer.http://p2.qhimg.com/t012ca42b17ce0afb15.jpg?size=594x50
2. 新创建一个ST程序,本文为ST_TIMER.http://p8.qhimg.com/t01e7709700ab0f9dd6.jpg?size=752x394
3. 打开ST_TIMER程序,输入相应的代码,详见下图,另外两个指令TOFR、RTOR用法相同,本文不再展开了.http://p5.qhimg.com/t0142b7da18e2621043.jpg?size=687x167
结语:综上所述,本文介绍了Studio 5000编程软件6个计时器指令的详细使用,用三种编程语言来阐述,虽然只是单纯的讲解了指令本身的用法,这个不是重点,重要的是使用的方法,而且,指令都不是独立的,指令均是为控制逻辑以及工艺要求服务的。所以,建议新接触AB PLC的朋友,多动手练练指令、多测试其用法,不以善小而不为。
看完楼主的帖子,我的心情竟是久久不能平息,受教了 好文,谢谢。 我顶,我顶,我顶顶顶 打卡路过,支持优质原创内容~ 水个经验,支持楼主,加油呀 赞同 + 10086,完全说出了我的想法! 谁懂啊!这内容我能循环看十遍 哈哈哈哈笑不活,楼主这脑洞绝了! 楼主辛苦啦,期待下一篇分享!