S7-1200系列PLC的定时器采用的是IEC格式的定时器,每个定时器就是一个FB块,因此每个定时器在使用时都需要分配相应的背景DB块来存储定时器的相应的数据。如果在程序中使用的定时器比较多,每个定时器都需要分配一个背景DB,则将会生成大量的数据块“碎片”。 为了解决该问题,我们可以通过以下两种方式来实现:
1、在全局DB块中建立IEC_TIMER数据类型的变量,然后通过这个变量来代替定时器中的背景DB。
当在程序的OB块中或是FC块中需要使用到定时器时,可以先在全局DB块中建立相应的IEC_TIMER始数据类型的变量,当在调用定时器指令时,提示分配DB块时,可以点击取消,然后在定时器的输入背景数据块处,选择输入在全局DB块中建立的IEC_TIMER的数据类型的变量。如下图所示,在数据块中分别建立了“启动延时”和“断开延时”两个变量,变量的类型都为IEC_TIMER的变量。
变量建立完成后,在编写程序时调用的定时器时分配背景块就可以分配相应的变量过去即可,如下所示:
2、在FB块接口区中的静态变量中建立数据类型为IEC_TIMER的变量,然后分配给定时器。