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、测试 在变量表中对各个定时器设定时间,监控,各个定时器设定值各不相同;互不干扰。
|
1、*近编程出现一个问题:S7-200程序下载不了,检查程序发现:程序13120字节超过224xp的存储区了,如图:
2、我们就在系统块里设置:禁止“运行模式编辑”程序来增加存储区,如下图所示:
3、增加存储区后,发现程序编译无错了,但仍旧下载不了程序,下载过程中依旧报错,如图所示:
4、新建一个空程序用以测试,结果发现可以下载,只有这个程序无法下载,按照如下步骤检查下载报错后的plc-信息:
5、打开PLC信息我们会发现:错误代码:9D,在SDB0中检测到非法参数,在主程序中,位于网络1,如图所示: 查《S7-200可编程系统手册》附录C部分,编译规则错误009D,组态SDB出错。
6、再来检查下系统块里的断电数据保持,重点检查定时器部分,因为如果这里选择错误,是会报9D错误的。如图:
检查发现: 断电数据保持区域有没有改过,T、C、V区数据也没有超,检查程序是否有编译错误,如上升沿下降沿超过256个等编程隐患,发现都没有问题,增加存储区也没有用,删除部分程序还是无法下载,甚至删光程序仍旧无法下载。 仔细对比还原前后的截图就发现错误在哪里了:因为MB区的单元数目不能是0,变为1后就可以了!
|