如何计算西门子S7400 CPU所需的Local Data大小

时间:2023-03-18作者:佚名
Local data顾名思义为本地数据,在西门子控制器中有一部分内存空间被设置为L区间,它被用于控制器在运行程序时存储临时数据。由于编写FB/FC程序的需要和OB中调用功能块结构的不同,不同的OB由于调用不同的FB/FC,因此所需的Local data的大小各不相同(被调用的FB/FC将占用当前调用他的OB块的Local Data资源)。在控制器硬件组态中的CPU属性设置中,Memory选项卡用于设置Local data的分配。如果相应OB块实际运行所需的Local data大于硬件组态中所设置的Local Data大小,那么相应的程序将无法运行,CPU将报告INTF错误,甚至更为严重的情况下CPU可能会停止运行。但如果盲目将Local Data的分配设置过大,将会浪费一部分宝贵的CPU内存空间。
S7 300CPU中的Local data不可修改,每个优先级固定设置为256 bytes,S7 400的Local data则可以人为修改。由此可以看出正确设置S7400 CPU的Local Data的大小非常重要。在控制器硬件组态中CPU属性 Memory选项卡的Local Data区域用于设置基于优先级的Local Data(如下图所示):

如何计算西门子S7400 CPU所需的Local Data大小
Pic1: Local Data的分配

在PCS7组态的项目中,在编译CFC程序后,系统将会自动计算各OB块所需的Local Data大小,可以通过交叉索引(Chart reference data  Local data,如下图所示)查询到。

如何计算西门子S7400 CPU所需的Local Data大小
Pic2: Chart reference data ® Local data

而普通的由用户采用Step7编程方式编写的程序,程序功能块及OB块各自的调用结构由用户自行控制,需要在编写完整个程序之后自行计算。
在手动计算Local Data时,需要获取如下信息:
1. 各OB块、FB块、FC块各自独立运行时所需的Local Data大小
可以通过如下方式查询到:在Block文件夹中选择相应功能块,右键 属性 General - Part2中即可查看到,如下图所示:

如何计算西门子S7400 CPU所需的Local Data大小
Pic3: 功能块所需的Local Data

注:嵌套调用时,上一级功能块将不会计算其嵌套调用的FB/FC所需的Local data大小;在上图中将不会累加嵌套功能块所需的Local data大小;


2. 整个程序的调用结构(Call structure)
由于功能块不会计算其嵌套调用的功能块所需到Local data大小,因此为了最后计算整个OB所需到Local Data,必须了解整个程序的调用结构。打开任何一个功能块,点击左侧的Call Structure即可查询到,如下图所示;

如何计算西门子S7400 CPU所需的Local Data大小
Pic4: 程序调用结构


3. 当前程序下所使用的所有OB的优先级
由于CPU属性设置中的Local Data分配基于优先级进行设置,因此需要查看所有当前程序使用的OB块的中断优先级,打开硬件组态中CPU属性查看,如下图所示;

如何计算西门子S7400 CPU所需的Local Data大小
Pic5: 查看OB的优先级

获得所有上述信息后,即可计算当前程序所需的Local data大小。假设当前项目下使用的功能块及OB块上述相关信息如下表所示:

OB/FB/FC Priority 优先级 所需Local Data(Bytes)
FB1 X 100
FC1 X 400
OB1 1 26
OB35 12 26
OB121 X 20
OB122 X 20

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大小计算时已经自动加入了这部分的大小。
具体的计算法则可以归纳为一下几点:

1. 从内往外,从低往高;
即:基于程序的调用结构,从最低层、最内层逐步往上、往外计算;
2. 同级取最大,内外求和;
即:程序调用结构中,同层FB/FC中所需的Local data取各所需Local data中的最大值;某一优先级所需的Local Data大小取所有相同优先级OB所需的Local Data的最大值;上下调用层级各自所需Local Data需求和;
3. 结果叠加OB121(编程错误)、OB122(I/O读取错误);
即:最终计算出的某优先级所需的Local data大小需要叠加上OB121、OB122所需的Local data;

如果项目中CPU设置的Local Data小于程序所需Local Data大小时会有如下后果:
1. PCS7中,如果项目硬件组态设置的CPU的Local data大小小于程序所需的Local data大小的情况下,PCS7项目在编译时将提示如下相应警告信息:
/******************************************************************************************
W: Local data requirements for the priority class 1:
The local data requirements (890 bytes, including OB121 and OB122) of organization block OB1 exceed the configured local data stack of the corresponding priority class on the connected offline CPU.
/******************************************************************************************
如果实际运行的CPU中的Local Data设置小于正在下载的程序所需的Local data大小将提示如下错误信息,下载程序将终止:
/******************************************************************************************
Download to CPU SIMATIC H Station(1)CPU_417-4H_R0S7 Program(1) on 1/12/2009 10:26:16 PM (entire program)
E: Local data requirements (890 byte, inclusive OB121 and OB122) for organization block OB1 is larger than the local data stack configured in the connected online CPU for the corresponding priority class 1.
/******************************************************************************************
2. Step7编写的程序则不会校验Local data分配的情况,如果实际运行的CPU中的Local Data设置小于正在下载的程序所需的Local data大小,则在下载程序后运行该优先级下的程序时,CPU将报告INTF错误,该优先级的程序将无法执行,并将触发OB88(Process interrupt OB)错误中断。在CPU的诊断缓冲区中将生成类似如下的诊断信息:
/******************************************************************************************
Event 1 of 160: Event ID 16# 3576
Error when allocating local data
Caused by OB: Cyclic interrupt OB (OB 35), Priority class: 12
OB number: 35
Module address: 72
Requested OB: Processing abort OB (OB88)
Priority class: 28
Internal error, Incoming event
04:04:28.026 PM 01/14/1994
/******************************************************************************************
如果程序中没有插入OB88,则CPU将停止运行;
在冗余CPU的情况下,在主CPU运行,启动从CPU时将调用优先级为28的OB72。如果在优先级为28的中断中出现Local Data不足的情况,则主从CPU都将停止运行。CPU的诊断缓冲区将生成类似如下的诊断信息:
/******************************************************************************************
Event 2 of 374: Event ID 16# 4570
STOP due to processing error (OB not loaded or not possible, or no FRB)
Breakpoint in user program: CPU redundancy error OB (OB72)
Priority class: 28
OB number: 72
Module address: 6
Previous operating mode: RUN (redundant mode)
Requested operating mode: STOP (internal)
Event occurred in the standby CPU in rack 1
Internal error, Incoming event
04:08:33.523 PM 01/14/1994
/******************************************************************************************
注:任何优先级为28的OB中出现Local data不足的情况都将导致该OB无法执行,CPU诊断缓冲区中将报告该OB无法执行或未装载的错误。如果未装载该OB会导致CPU停止运行,则即便程序中已经加载了这些OB,但由于该OB出现Local Data不足而导致无法执行,CPU仍旧会停止运行。

相关阅读

2017年最全面的电工常识都在这里了,初学电工的你速度戳进来!

爱好是学习的动力,从爱好出发,你会掌握更多的知识。“电工技术”没有绝招,只有好学与热爱,精通电工必备的常识,是一名电工的基本准则,本文整理了电工必备基础知识、电工...
2023-06-11
2017年最全面的电工常识都在这里了,初学电工的你速度戳进来!

为什么小电容通高频,大电容通低频?

首先我们来了解下电容的工作原理: 电容器是两个极板上积累的电荷,一个积累正电荷,一个积累负电荷而形成电位差。类似于一个电池!你可以这么理解,只不过电容的电是一次性的,放完...
2023-03-31
为什么小电容通高频,大电容通低频?

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

▲ 本文要分析的电路 事情是这样开始的。 买了个电动牙刷,几十块钱那种: 收到的实物长这样: 牙刷手柄上有1个按键和6个LED灯: 拆开看看电路板: 可以看出,电路板上用的单片机...
2023-08-14
用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

一起涨知识!电气牛人总结的接地和接零,太实用了!

接地和接零的基本目的有两条,一是按电路的工作要求需要接地;二是为了保障人身和设备安全的需要接地或接零。按其作用可分为四种。A.工作接地;b.保护接地;c.保护接零;d.重复...
2023-06-11

灯一闪一闪的是什么原因?如何解决

灯一闪一闪的是什么原因?灯闪烁不停的原因:接线存在错误、电压不稳 、与电源接触不良、室内潮湿引发短路、灯具自身故障、灰尘影响灯口接触、LED灯珠与LED驱动电源不匹配、驱动...
2023-05-21
灯一闪一闪的是什么原因?如何解决

热销商品

连发瓦斯枪通用瓦斯射钉钢钉枪瓦斯气体高强度瓦斯射钉枪165气罐

连发瓦斯枪是一款专为高强度瓦斯射钉设计的工具,其特点在于能够连续发射瓦斯气体,适用于多种需要快速穿透和固定材料的场景。这款瓦斯枪配备了165气罐,容量足够满足...
4.5

黄铜镀镍金属电缆防水接头EWM密封格兰头HSM电线固定填料函M20M16

黄铜镀镍金属电缆防水接头EWM密封格兰头(HSM型)是一款高性能电线固定与密封装置,适用于M16和M20螺纹规格。采用优质黄铜材质并表面镀镍处理,具备优异的防腐蚀性、机械...
1.14

消防配件二氧化碳灭火器2 3 5 7KG弯头喷管24Kg干冰CO2外喷头喷嘴

二氧化碳灭火器配件中的2357KG弯头喷管与24Kg干冰CO₂外喷头喷嘴,是专业消防设备的重要组成部分。该弯头喷管采用高强度耐腐蚀材料制造,连接灵活,适用于高压CO₂灭火...
4.5

雷士照明led筒灯孔灯客厅吊顶天花灯嵌入式过道筒灯射灯桶灯家用

雷士照明LED筒灯是一款专为现代家居设计的嵌入式照明产品,适用于客厅、吊顶、过道、卧室等空间。采用高品质LED光源,光线柔和均匀,显色指数高,有效还原真实色彩,营造舒...
5.78

雷士照明嵌入式防眩筒灯射灯窄边过道灯深杯客厅无主灯天花灯米雪

雷士照明嵌入式防眩筒灯射灯——“米雪”系列,专为现代无主灯设计打造。采用窄边深杯结构,有效控制杂散光,实现精准防眩,营造舒适柔和的光环境。适用于客厅、过道、天...
25.67

网站栏目