合信论坛

快捷导航
查看: 7079|回复: 0

一招教你如何封装10ms定时器

[复制链接]

4

主题

5

帖子

434

积分

中级会员

Rank: 3Rank: 3

积分
434
发表于 2020-4-8 18:13:40 | 显示全部楼层 |阅读模式
1.建立变量:
3.png

(1)IN:使能位,用于启动10ms定时器;
(2)PT10MS:最小单位10ms,例如此处填10,就为100ms;
(3)OUT:输出位,定时器计时完成该位会输出;
(4)BGM_T:(读取内置 1 毫秒计数器的当前值,并将该值存储于 OUT。)
         简单来说就是开始计时的那一刻;
1.png





(5)CAL_T:(计算当前时间与 IN 所提供时间的时差,将该时差存储于 OUT。)
      简单来说就是开始计时那一刻 与 现在此刻 的时间间隔;
2.png


(6)SET_T_MS:总的计时时间,最小单位10ms,例如此处填10,计时器时间就为100ms;
2.编写程序
子程序
4.png


注意:
1.此子程序只支持 CTS 200plc 和 CTH200 带X的PLC(H224X H226XL)
2.不支持100系列PLC 和 CTH200 不带X的PLC (H224 H226)
原因:
cts100系列和cth200标准型:
每次调用子程序,或者触发中断程序时,PLC临时开辟出64字节的空间作为局部存储器,从子程序退出或者中断程序返回时,释放这64个字节
每次开辟出64字节的空间时,不会对这些寄存器进行复位,也即,里面存储的数据是之前不知道哪个子程序计算的结果,对当前子程序来讲毫无意义;
由上可知:当进子程序时,L区内的数据毫无意义,如果要用L区内的数据,则必须先赋值 (在同一个扫描周期内,L区用之前必须先赋值)

cts200系列和cth200高性能:
对于中断,每个中断程序有固定的一片存储区作为局部存储器(L区)。
不同的子程序(fc),L区各自分配固定存储区,退出子程序时不释放存储区,下个扫描周期访问的仍是上个扫描周期的结果
对于某一个子程序,每一次调用此子程序,就分配固定的一片存储区作为局部存储器(L区),下一个扫描周期同一次调用的L区内的数值是上一个扫描周期运算的结果
由上可知:对cts200系列和cth200高性能PLC来讲,L区可以理解为 FB块的背景数据块,可以用来存储数据用,一个子程序多次调用,其中L区都是相互独立的存储区,互不影响

当定时器计时大于等于预设时间,输出位就会输出。

主程序
5.png

注意:
1. EN必须用sm0.0调用
2.时间基准为10ms 设定10 定时时间为10*10ms=100ms






   


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

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-4-20 17:55 , Processed in 0.082745 second(s), 23 queries .

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