西门子PLC很多用户表示T出现频率较高,讨论软件中是否应该用M和T,
咱说下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块中这些都可以实现。