追梦工控论坛|工控论坛-专业的Intouch论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 3230|回复: 2

[求助-西门子PLC300/400]FC中参数传递

[复制链接]

升级  33%

该用户从未签到

发表于 2014-1-7 19:19:42 | 显示全部楼层 |阅读模式

上传分享工控资料得追梦点,下载积分获取办法点击进入 ☆追梦点充值入口
发帖回帖赚金币兑换下载积分。上传附件须知点击进入

×

马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
各位老师,
有几个参数传递的问题想请教下:
1. 西门子高级编程PPT中说,在被调FC中,必须写输出参数(避免使用指令如S和R)? 为什么?
2. 如何用指针将一个数组(bits)写到另一个数组(bits),并且应该置位第二个数组,即 A array[0] S array1[0],应该怎么写?
谢谢</p>
        问题补充:
1. 您说的我理解,问题在于为什么说不能用S 和R
2.FC如图所示,该FC在模拟器中正常,但是用SFC51将数据写入DB作为该FC的输入,不能够正常输出

图片说明: 1,11
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
3232°C
2
  • gaibar_dd
  • GT雨燕8秒41
过: 他们

升级  19%

该用户从未签到

发表于 2014-1-7 20:06:41 | 显示全部楼层
1、FC的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系。FC参数传递的是数据的地址。
2、需要对数组进行拆分后传送。
参见:FC中如何传递ANY指针
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=6731&loginID=&srno=&sendtime=
输出变量每次执行扫描后必须都要对其赋值,否则就会输出一个随机值。这就是不用S、R指令的原因,因为FC中没有保存输出状态的地址。
至于你的程序不能够正常输出,原因也在与此。其实你用字节、字传送也可以的,或用A、=,这样保证每次执行时都对输出赋值了。
                                                                                                                                                                                                                                                              
                                                        

升级  46.5%

该用户从未签到

发表于 2014-1-7 20:33:34 | 显示全部楼层
FC实参是DB块绝对地址引用的数据时,比如DB1.DBX0.0,此时形参和实参之间的传递是通过临时变量中转的,对于OUT类型的变量,必须要对其赋值才能使形参临时变量有一个确定的值,也就是临时变量要先赋值后使用的原则,而使用R或S指令对OUT变量赋值,这些指令有可能在一定的条件下被跳过,造成形参临时变量未被赋值的情况,如果用IN_OUT替换OUT类型,则就不存在这个问题,块调用时会先把实参读入形参,就不存在不会被赋值的情况了。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            FC的临时变量、输出变量应该如何正确使用?为什么FC的输入和输出使用DB和M地址会得到不同的结果?这个问题以前我一直很疑惑?象我们这样纯靠实践来学习东西的人很难解释这个问题,到论坛上搜索才知道原来手册上有提过这些东东,看来,理论结合实际还是必要的,好哈研究一下相关书籍吧,下面这个链接会对你有很大帮助:
参考链接:http://www.ad.siemens.com.cn/club/bbs/post.aspx?myreply=1&b_id=4&a_id=605538&s_id=&num=38
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

请珍惜自己的ID,严禁发布垃圾水贴,诸如adsf......顶......纯表情......多次重复回帖刷积分......轻则删帖警告,重则封禁!★请分享资料、经验或者赞助论坛,贡献一份力量★

关闭

最新活动上一条 /1 下一条

小黑屋|手机版|追梦工控论坛|工控论坛-专业的Intouch论坛 ( 皖ICP备10012005号 )|网站地图

GMT+8, 2025-5-5 21:44 , Processed in 0.153785 second(s), 21 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

快速回复 返回顶部 返回列表