您现在所在的是:

PLC论坛

回帖:1个,阅读:363 [上一页] [1] [下一页]
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2013/10/8 20:13:40
#0楼

网友秀全说:“我编写的功能FC1里边有一个SR置位复位块,在OB1调用4次FC1,怎么搞也不行,后来我把它改为分开的置位、复位指令就好了。我怎么也想不明白怎么回事。”
下图是他的FC的局部程序。
图
首先要注意SR触发器用来对图中的M0.0置位和复位,同时也对Q输出端可选的BOOL变量置位和复位。程序中的M0.0和局部变量#zuudianyuan(主电源)的作用是重复的,可以只用其中之一。
SR触发器有记忆和保持的功能。调用一次FC1,M0.0用来记忆一台设备的启动、停止命令。调用两次FC1,能用M0.0同时记忆两台设备的启动、停止命令吗?当然不行。
要想多次调用FC,其中有记忆功能的变量不能使用绝对地址,也不能使用局部变量中的临时变量。
最简单的解决方法是删除图中的线圈,将M0.0改为要控制的#zuudianyuan。
对于S7-300来说,SR方框上的地址可以使用输出参数。但是对于S7-200的子程序(相当于S7-300的FC),如果使用输出参数,多次调用该子程序时就会出错。应改为IN_OUT参数。
此帖来自中华工控网工控博客
原文件地址:http://blog.gkong.com/more.asp?id=177168&Name=liaochangchu
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
37994
cvlsam 版主
文章数:12477
年度积分:605
历史总积分:37994
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2013/10/8 21:23:29
#1楼
这种情况下不应该使用Fc,而应该使用Fb。

当Fc中使用了In_OUT变量后,其无法向其他支持IEC61131-3标准的厂家进行程序移植,因为在标准中,Fc并不支持In_OUT变量,只要看看西门子的工程师写的那些Fc,都会按照61131标准进行写程序,而不会去使用西门子的Fc支持IN_OUT这个怪诞的特性。

当程序员习惯使用西门子怪诞的特性后,其后续使用其他厂牌编程时往往困难重重。

Good Luck~

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

31.2002