Timer.rar
最近在论坛中T出现频率比较高,特别是前一段万泉河老师的两扁文章,多人跟贴讨论软件中是否应该用M和T,今天暂不讨论M的使用,咱说下T ,这几年我写软件基本上不是用IEC_Timer或者Ton_Timer,我们的系统一般都不小,一般一个项目40~150个分布式站点还是有点,对应的设备当然不会少,每一台设备上Timer还是要用上几个的,下面说一下具体实现思路。
1、 以S7-1516 3PN/DP作为主机,打开“系统和时钟存储器”:
此时在变量表中自动增加了系统时钟变量:
此时把程序下载到PLC或者PLCsim监控一下变量表,会发现上述变量已经是按固定频率变化了。注意如果下载完程序,监控变量无变化,可通过格式化存储卡,重新下载程序解决,这个应该是PLC的bug,我碰到过这种现象。
2、 建全局DB块:
3、 建一个FC块:
作一个1s的脉冲信号
"R_TRIG_DB"(CLK:="Clock_1Hz",
Q=>"DB_Timer".Pulse_1s);
IF "DB_Timer".Pulse_1s THEN
"DB_Timer".Num += 1;
END_IF;
通过监控发现Num是按1s的速度递增。到此1s的全局脉冲信号就有了,当然只有1s的脉冲信号是不够的,根据软件工艺需要再作脉冲信号就是了。需要用定时器时使用int变量记数,时间到去作触发事件,要记得给int变量复位。
在软件中不要用M,懂一有一点高级语言编程知识的应该知道,在大型系统时免不了要用Array[n]、Struct 、Array of Struct[n],这些在M区是没有办法定义的,但是在DB块中这些都可以实现。