FC块与FB最大的区别就是FB块拥有自己的DB块来存储数据,而FC却没有,所以在多次调用同一个FC块有时出现错误,譬如将FC写成一个定器,
当多次调用改FC块编写的定时器时,由于每次调用时设定的时间不同,则会对计时造成影响。解决这个问题可以使用STEP中FB块的一个功能多重背景数据。
多重背景数据简单说就是为每次调用的功能块分别独立的数据存储区,互不干扰。
一、 CPU自带的clock memory(也就是系统时钟功能)
1、在硬件组态中 CPU---属性----时钟脉冲器---勾选时钟存储器---填写字节0及MB0
如下图所示 MB0中7个位对应的时间脉冲(此时间脉冲为方波,不是上升沿)
2、然后书写程序由于设置的系统时钟为方波型,不能直接用于计时,需要做成上升沿(每隔N秒一次上升沿)
3、通过用ADD_I指令来实现计时,将之前做的每隔一秒钟导通的上升沿作为使能,每隔1S中自加1一次,来实现计时
二、利用多重背景数据来建立定时器
1、新建一个FB块FB50 “勾选多重背景功能” 并书写定时器的程序
2、再建立另一个FB块FB51用来存放之前的编写功能的FB块
3、打开第二步建立的FB块 在“STAR”类型下的“数据类型”选择为“FB
4、“数据类型”填写第一步建立的FB50
5、在“多重背景”选项栏中可以找到第四步建立的数据块,并将它们拖入FB51中,然后填写在各个引脚上填写数据
6、最后OB1中调用存放着功能块的FB块FB51;并分配一个背景DB块,如下图DB32
7、进入DB32 可以看到每个功能块所分配了不同的地址
8、测试 在变量表中对各个定时器设定时间,然后监控,各个定时器设定值各不相同;互不干扰。