技术论坛

FC块在OB1中调用出现超出嵌套深度???500调用

作者 主题
新手

经验值: 19
发帖数: 4
精华帖: 0
主题:【求助】FC块在OB1中调用出现超出嵌套深度???500调用


只看楼主 楼主 2021-04-02 21:12:43

S71500 1515-2PN+ET200SP,500个模拟量输入点,4-20ma,6个PTP模块,2个DI,2个DO.

现建立FC块在OB1中调用出现超出嵌套深度???

1、模拟量相似,就工程量上下限,报警设定值,报警方式,不同其余都一样,现场接的是同一种传感器。

2、用FC是否正确,还是FB?

3、目前调用方式为:

a、建立FC1,内部写模拟量处理程序(SCALE),外加一些量程处理,上下限报警处理输出,上升报警还是下降报警切换程序段;

b、复制9个FC1,分别编号为FC2,FC3.,,,,FC10,里面变量程序一模一样;

c、新建FC11,FC12,,,,,,FC20这10个FC块,然后FC11中调用50次FC1,FC12中调用50次FC2,,,,FC20中调用50次FC10;

d、OB1或者OB30这些块中调用FC11,FC12,FC13,,,,,,FC20这10个块;

c、编译仿真运行后亮红灯SF故障,显示块调用超出堆栈嵌套深度。

1500不熟悉,一下子处理500个点,运行不起来???

4、如何合理化编程?

5、除了模拟量+报警处理外,就一些500个点位的公共报警输出这类相对简单,但是有一个公共蜂鸣报警,当消音后又有报警产生,要实现蜂鸣再次触发如何简单的实现,变量少的情况下就用所有的一级二级报警状态位的上升沿置位蜂鸣即可,消音复位就行,现在有500点,1500个报警变量都要并联上升沿触发的话程序太笨,有没有好的方法?

5、如何建立变量(每一个点对应变量有量程上限、一级报警值、二级报警值、实际转换输出值、一级报警状态位、二级报警状态位、故障报警状态位、一级报警升报/降报、二级报警升报/降报、屏蔽报警状态位、一级二级故障公共报警状态位这4个浮点数+7个BOOL变量),使用UDT是很快建立500个变量,放在DB块中,使用DB块中的变量编程,但是整体变量没有规律性。有何高见?

6、而且WINCCV7.5要监控上述变量,如何方便WINNCC访问,编程?

7、另有6个PTT Modbus RTU模块 做从站,供其他主站访问上述变量,如何建立数据库,方便每个modbus——slave使用????有何见解???

 



 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1689569&b_id=66&s_id=0&num=2

游侠

经验值: 455
发帖数: 19
精华帖: 0
回复:FC块在OB1中调用出现超出嵌套深度???500调用


只看楼主 1楼 2021-04-03 16:41:22
模拟量采集用的FB,用FC嵌套。
不知名热心市民
以下网友喜欢您的帖子:

  
至圣

经验值: 43587
发帖数: 15780
精华帖: 61
回复:FC块在OB1中调用出现超出嵌套深度???500调用


只看楼主 2楼 2021-04-08 09:07:25

3、程序嵌套可以嵌套8层。

你的程序有问题呀!你fc1是模拟量处理的程序,直接调用fc1 500次就行了呀,fc1内部不要有全局变量就行了,fc2~fc10用不着,可以删除。

fc11~fc20中各调用50次fc1

5、把报警信息集中到一个数组中然后用for循环判断只要有一个报警就触发蜂鸣器

建立变量怎么没有规律,你建立一个数组,变量,数据类型是你的udt,编程时做好一组信号的处理,其他的只要改变数组的角标就行了,着用scl的for循环就简单了呀,数组寻址用循环的自增变量

6、db取消优化访问,

7、还是udt+数组方式。



活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
FC块在OB1中调用出现超出嵌套深度???500调用
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。