技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > fc块调用db块 db不能当输出

fc块调用db块 db不能当输出

郑志武 发布于2012-12-27 17:49 9 0 标签:

用fc做了个程序块,在ob1中调用他在输出(out)的引脚中用了个db块
当我调用第二次fc输出也用db块。在测试当中只测试个fc时db置1,为什么第二个fc的输出引脚的db块也置1呢?(第二个fc根本没有满足条件)当我不用db块,我用q或者m不会出现上述情况,这是为什么?

问题补充:
我把out这个引脚改成in/out的引脚就好了应该不是楼下说的那样

佳答案

这个问题是因fc调用的参数传送机制引起的
当fc的参数是一个绝对地址引用的db块数据时(比如db1.dbx0.0),系统会为这个形参分配一个临时区域(就是v区,上一层程序的本地数据,即调用fc的块的l区),众所周知,临时变量要遵循先赋值后使用的原则,对于这样一个out类型的形参,块被开始调用时,并不会把实参(如db1.dbx0.0)赋值给形参,如果在fc块里没有对这个形参赋值,那么块结束时就会把一个不确定的值(其他块遗留在临时变量区域的值)赋值给实参,这样就会出现你描述的问题。
当这个参数是in/out类型时,fc块被调用开始时,会把实参(如db1.dbx0.0)赋值给形参(in参数的特性),这样既使在fc块里没有对形参赋值,形参也不会是一个不确定的值,而是把原来的实参值重新赋值给实参,所以结果就和out类型不一样。
所以在fc使用db块绝对地址引用的变量作为out类型变量实参时,一定要确保对形参赋值,否则就用in/out替换out类型。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签