前言
本文是基于B站上的《SCL核心应用课项目实战》课程,所做的笔记,主要包括程序代码和自己的理解注释。课程链接:SCL核心应用课项目实战(21课全)
陆杰锋老师讲得非常好,有理论讲解也有实战演练,需要具备一定的梯形图编程基础。
有空我会持续更新。
三、SCL中的定时器
1.IEC定时器
西门子SCL语言中的定时器指令都是使用IEC定时器,其指令包括:脉冲定时器(TP)、延时接通定时器(TON)、延时断开定时器(TOF)、保持型延时接通定时器(TONR)、复位定时器(RESET_TIMER)及定时器预设值设置(PRESET_TIMER)指令。
2.延时接通定时器(TON)
延时接通定时器(TON)指令用于信号的延时接通。从指令列表中添加该指令时会自动生成背景数据块(下图中将定时器DB块名称定义为了T1),指令初始状态如下:
#TON(IN:=_bool_in_,
PT:=_time_in_,
Q=>_bool_out_,
ET=>_time_out_);//鼠标指针放在本行末尾,敲回车,Q和ET会自动隐藏
在指令中,IN和PT为必写参数,分别对应定时器的触发及定时时间,完成参数赋值后的指令如下:
"T1".TON(IN:=#复位,
PT:=t#100ms);
注意:必须在程序段中调用#TI.Q(定时器输出),该定时器才会起作用。且具有自动补全功能:
3.定时器使用技巧
IEC定时器在调用的时候会需要指定其所对应的背景存储区,该存储区可以是专属背景DB块,也可以是共享数据块中的Timer数据,也可以是FB中静态存储区中的Timer数据。在编程的时候,不建议大家为每个定时器建立专属的背景DB块,该方式浪费系统数据且容易混乱。
建议以下两种方式:
1.OB块中使用定时器:建立一个专用DB块,在DB块中使用数组的方式建议若干个定时器存储区;如下图,在“IEC_Test”数据块中,分别为TON、TOF、TP定时器构建了100个定时器,同时构建了100个未指定具体类型的定时器。
2.在FB块中使用定时器,并选择“多重实例”。会自动在Static区域中创建一个背景数据块。