成都高价回收西门子模块 西门子模块回收,回收西门子plc,回收西门子cpu
整个程序的调用结构(Call structure)
由于功能块不会计算其嵌套调用的功能块所需到Local data大小,因此为了*后计算整个OB所需到Local Data,必须了解整个程序的调用结构。打开任何一个功能块,点击左侧的Call Structure即可查询到,如下图所示;
程序调用结构
3. 当前程序下所使用的所有OB的优先级
由于CPU属性设置中的Local Data分配基于优先级进行设置,因此需要查看所有当前程序使用的OB块的中断优先级,打开硬件组态中CPU属性查看,如下图所示;
获得所有上述信息后,即可计算当前程序所需的Local data大小。假设当前项目下使用的功能块及OB块上述相关信息如下表所示:
OB/FB/FC | Priority 优先级 | 所需Local Data(Bytes) |
FB1 | X | 100 |
FC1 | 400 | |
OB1 | 1 | 26 |
OB35 | 12 | |
OB121 | 20 | |
OB122 |
OB的调用关系如上图Pic4所示。根据调用结构计算,单独运行各OB块时所需的Local data如下:
OB1: OB1 + Max(Sum(FB1,FC1), FC1) =26+Max(Sum(100,400), 400)=526
OB35: OB35 + Sum(FB1,FC1) =26+Sum(100,400)=526
OB121: OB121=20
OB122: OB122=20
*终CPU属性中Local data的设置如下:
优先级 1 所需Local Data大小至少为526 + 20 + 20 = 566 bytes;
优先级12所需的Local Data大小至少为526 + 20 + 20 = 566 bytes;
注:为什么上述优先级1和12中需要加入 两个20呢,因为程序运行的任何位置都有可能会执行OB121、OB122,所以需要加上OB121和OB122所需的本地数据。PCS7中(Pic2所示)进行各优先级所需Local data大小计算时已经自动加入了这部分的大小。
具体的计算法则可以归纳为一下几点:xiangbaijiao
从内往外,从低往高;
即:基于程序的调用结构,从*低层、*内层逐步往上、往外计算;
同级取*大,内外求和;
即:程序调用结构中,同层FB/FC中所需的Local data取各所需Local data中的*大值;某一优先级所需的Local Data大小取所有相同优先级OB所需的Local Data的*大值;上下调用层级各自所需Local Data需求和;
结果叠加OB121(编程错误)、OB122(I/O读取错误);
即:*终计算出的某优先级所需的Local data大小需要叠加上OB121、OB122所需的Local data;