使用多重实例的困惑?多重实例的多重实例?
刘玉蓉
发布于2014-10-15 17:05
1
0
标签:
近使用多重实例编程使用定时器碰到点困惑,希望大家指点下。
S7300PLC控制60个回路,60个回路代码相同,只是输入,输出参数不同,每个回路内部编程需用到5个定时器。300个定时器超过CPU定时器的Timers数量,所以放弃采用传递T定时器方式,再说也不想用,不然传参数一大堆,翻屏容易眼花。想采用IEC定时器.
程序结构大概如下:
FB200为单回路代码子函数,内部STAT静态变量分别定义了5个IEC定时器SFB4,代码内以STL编程符号名方式调用SFB4。
FB201为10路调用函数,输入,输出分别定义了和FB200接口类似的参数,只是数量是每种10个。内部STAT静态变量定义了10个FB200实例.FB201内部代码什么也没干,只是调这10个实例并传参数。
FB202:调用FB201的过程,没有定义任何参数,代码内分别调6次FB201,传递不同的参数和DB背景块。
FB203,测试用,单回路,直接调用FB200并传递参数和背景块.
测试过程:
模拟运行,OB1中调用FB203,FB200运行正常,5个IEC定时器均独立工作很好。
模拟运行,OB1中调用FB202并传递DB背景块,发现都在分别共用这5个IEC定时器,并不是我想象中的300独立个定时器。
查了下资料讲的多重实例,我定义了5个IEC定时器SFB4,这就是SFB4的多重实例,不知道类似于SFB4的这种库函数支不支持多重实例的多重实例?不知道大家编这种要用定时器程序是怎么规划的,不会是OB35定时中断计数来整吧?我实在不想堆积木样的堆60个回路的代码,编的累,改的累,维护更累。再说心疼CTRL,C,V这几个按键,呵呵,都快没什么弹性了。
佳答案
你这样使用是没有问题的,调用6次FB201使用了不同的背景数据块怎么可能共用了呢,或许你忽略了其它问题。
支持不支持多重背景实例是指调用者而不是被调用者,FB生成是默认支持多重背景实例的,即使它不支持多重背景实例,但它可以做为多重背景实例被其它的FB调用。