签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
使用SCL语言,在FC里编写用来实现置位的语句,在OB1下调用FC。
编写
#Q := 1;
是可以实现置位的。
但是,编写
IF #S THEN #Q := 1;END_IF;
就没法实现置位了。按下S,Q输出1;但松开S,Q就立即变为0了。
而如果在FB里(接口区将IO信号均设置为默认的非保持特性),或直接在OB1里,编写
都可以实现置位的功能。
为什么在FC里,就没法实现置位,而在FB或OB1里都能实现置位呢?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1613207&b_id=66&s_id=0&num=8
。。。。局部变量的问题啊。。
在FC里,把要置位的输出变量放到inout接口上
要好好看看FB与FC的区别了,区分静态变量与临时变量的用法
使用Temp变量,在没对Temp变量进行特殊处理的情况下,要遵循一个原则,那就是必须先写后读。Temp变量先读的话在STEP7里是随机值,在PORTAL里是0 。你可以把这些先读后写的变量放在INOUT接口上,或者给FC建立一个类似的背景数据块来对数据进行处理。
个人人理解,FC的OUT接口如果没有对它进行写入跟TEMP一样也是随机的
如果用INOUT接口也会有问题,因为Q点一般断电不保持,结果就是正常运行时没问题,一旦断电重启,而你又没有S这个置位操作的话,Q点又变为0了,所以用DB(设置断电保持)中转一下可以实现。
从截图看楼主并没有使用Temp,而是直接用IO变量。
我实验了下,我没有使用%0.1,而是用M,因为我的PLC没有接输入。
实验结果没有问题,当S按下Q置位为1,当S释放,Q还是置位为1.
FB有背景块存储数据,FC没有背景块只有局部数据,数据不存储。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录