技术论坛

fc块中的in参数保存在plc的什么区域

作者 主题
侠士

经验值: 1163
发帖数: 139
精华帖: 1
主题:fc块中的in参数保存在plc的什么区域


只看楼主 楼主 2014-12-05 21:48:39
比如调用FC105,HI_LIM 设置100.0,这个100.0会存储在PLC的什么区域中呢,PLC掉电还能保存住这个100.0
 
以下网友喜欢您的帖子:

  
重要声明:

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

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

版主

经验值: 76199
发帖数: 19143
精华帖: 378
回复:fc块中的in参数保存在plc的什么区域


只看楼主 1楼 2014-12-05 22:40:17
FC的in参数都是临时变量,是每一次调用时靠实参赋值的
Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
侠士

经验值: 1163
发帖数: 139
精华帖: 1
回复:fc块中的in参数保存在plc的什么区域


只看楼主 楼主 2楼 2014-12-06 22:18:44
这个实际参数保存在plc的什么地方呢,
 
以下网友喜欢您的帖子:

  
至圣

经验值: 11067
发帖数: 1222
精华帖: 35
回复:fc块中的in参数保存在plc的什么区域


只看楼主 3楼 2014-12-09 14:16:50
如果是M,I等地址,是直接指向IN的形参的,如果是DBX.DBXXX等地址,是保存在FC 的V区的
Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
奇侠

经验值: 6141
发帖数: 879
精华帖: 11
回复:fc块中的in参数保存在plc的什么区域


只看楼主 4楼 2014-12-09 16:01:25
以下是引用YiMoon在2014-12-09 14:16:50的发言 >3楼:如果是M,I等地址,是直接指向IN的形参的,如果是DBX.DBXXX等地址,是保存在FC 的V区的
好像以前廖老师说过,应该是保存在调用该程序的OB或FC或FB的V区
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3658
发帖数: 268
精华帖: 0
回复:fc块中的in参数保存在plc的什么区域


只看楼主 5楼 2014-12-10 09:17:43
保存在调用该FC块的程序块中的V堆栈,也是临时堆栈的一种。掉电的话,In参数还是需要实参进行赋值,只要形参是掉电保持的就好
努力屯田中!
以下网友喜欢您的帖子:

  
至圣

经验值: 13937
发帖数: 2008
精华帖: 43
回复:fc块中的in参数保存在plc的什么区域


只看楼主 6楼 2014-12-11 21:11:07
1:S7 CPU的参数传递方式,一般是按引用传递的。
2:CALLING块 首先将实参的值,传递到L区,在调用"被调用块"的时候,会把L区的地址 传递给"被调用块",这个时候,在"被调用块"里面就根据"调用块"存在L区(在被调用块里,就叫V区,其实也是L区,就是"调用块"的L区)里的地址,然后根据地址 把实参的值读取到内部。
当然这个都是CPU操作系统底层干的事情。
比如OB1中 调FC1,FC1有个IN类型接口IN1
正常调用这样
CALL FC1
IN1:MW0
但操作系统 底层会这样干
L MW0
T LW20
UC FC1
IN1:P#L20.0
在FC1内部取IN1的值的时候,应该类似如下过程
LAR1 P#IN1
L W[AR1,P#0.0]AR1里的值就DW#16#870000A0,也就P#V20.0了。
这个“调用块”里的L20.0 在FC1内,就叫V20.0了,这个是因为FC里,也有自己的L区,所以CALLING的区,就叫V区了,是特殊的V区(这个纯属个人猜测)
所以在调用 ANY,POINTER等参数类型或者复杂数据类型的接口时,就有了指向指针的说法了。

系统在调用过程中,会不断进行这个过程,COPY实参(变量或者常数)到L区。所以,CPU停止再次运行后,你的存在L区里的值会丢失了,但是PLC在执行到调用FC的语句时,会再次把100 COPY到相应的L区里。
人生就像一场旅行!
以下网友喜欢您的帖子:

  
至圣

经验值: 18294
发帖数: 2654
精华帖: 14
回复:fc块中的in参数保存在plc的什么区域


只看楼主 7楼 2014-12-12 09:39:16
买本廖老师的书,先认真看一遍,否则以后遇到问题还是一头雾水
sometimes you have to be your own hero!
以下网友喜欢您的帖子:

  
至圣

经验值: 13056
发帖数: 4961
精华帖: 81
回复:fc块中的in参数保存在plc的什么区域


只看楼主 8楼 2014-12-12 22:44:44
以下是引用yunc在2014-12-06 22:18:44的发言 >2楼:这个实际参数保存在plc的什么地方呢,
这个常数保存在程序代码里,对于是S7-300最终程序保存在MMC卡里。
实际程序运行时,这个参数赋值到形参所在的临时变量里。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2480
发帖数: 118
精华帖: 1
回复:fc块中的in参数保存在plc的什么区域


只看楼主 9楼 2015-04-24 09:36:59
西门子STL手册中“参数传送”章节有如下的描述:块参数以值的形式传送。对于功能块,在被调用块中使用背景数据块中的实际参数值的副本。对于功能,实际值的副本存在于本地数据堆栈中。将不复制指针。在调用之前,将INPUT 值复制到背景数据块或L 堆栈中。调用以后,将OUTPUT 值往回复制给变量。在被调用的块中,仅可使用副本。所需的STL指令位于调用块中,并且对于用户来说是不可见。注意:如果将存储位、输入、输出或外设I/O 存储区用作功能的实际地址,则对它们的处理方法将不同于对其它地址的处理方法。此处,直接执行更新,不通过L 堆栈。
学无止境
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
fc块中的in参数保存在plc的什么区域
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。