技术论坛

SCL语言下,为什么在FC里编程无法实现置位复位?

作者 主题
侠士

经验值: 1818
发帖数: 65
精华帖: 0
主题:【求助】SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 楼主 2020-03-16 10:46:13

使用SCL语言,在FC里编写用来实现置位的语句,在OB1下调用FC。


编写

#Q := 1;

是可以实现置位的。


但是,编写

IF #S THEN
    #Q := 1;
END_IF;

就没法实现置位了。按下S,Q输出1;但松开S,Q就立即变为0了。


而如果在FB里(接口区将IO信号均设置为默认的非保持特性),或直接在OB1里,编写

IF #S THEN
    #Q := 1;
END_IF;

都可以实现置位的功能。


为什么在FC里,就没法实现置位,而在FB或OB1里都能实现置位呢?

 

 

 

 


 
以下网友喜欢您的帖子:

  
重要声明:

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

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

奇侠

经验值: 8097
发帖数: 1308
精华帖: 6
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 1楼 2020-03-16 18:50:44

。。。。局部变量的问题啊。。


养活一团春意思,撑起两根穷骨头
以下网友喜欢您的帖子:

  
侠士

经验值: 1746
发帖数: 141
精华帖: 4
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 2楼 2020-05-12 14:12:10

在FC里,把要置位的输出变量放到inout接口上


公众号"worksway工方工园",欢迎关注~
以下网友喜欢您的帖子:

  
侠士

经验值: 1383
发帖数: 133
精华帖: 0
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 3楼 2020-06-21 09:04:54

要好好看看FB与FC的区别了,区分静态变量与临时变量的用法



突破
以下网友喜欢您的帖子:

  
游士

经验值: 173
发帖数: 44
精华帖: 0
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 4楼 2020-06-21 10:07:40

使用Temp变量,在没对Temp变量进行特殊处理的情况下,要遵循一个原则,那就是必须先写后读。Temp变量先读的话在STEP7里是随机值,在PORTAL里是0 。你可以把这些先读后写的变量放在INOUT接口上,或者给FC建立一个类似的背景数据块来对数据进行处理。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2841
发帖数: 276
精华帖: 3
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 5楼 2020-06-22 22:19:49

个人人理解,FC的OUT接口如果没有对它进行写入跟TEMP一样也是随机的


你若安好便是晴天
以下网友喜欢您的帖子:

  
侠圣

经验值: 2841
发帖数: 276
精华帖: 3
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 6楼 2020-06-22 22:27:37

如果用INOUT接口也会有问题,因为Q点一般断电不保持,结果就是正常运行时没问题,一旦断电重启,而你又没有S这个置位操作的话,Q点又变为0了,所以用DB(设置断电保持)中转一下可以实现。


你若安好便是晴天
以下网友喜欢您的帖子:

  
侠圣

经验值: 4872
发帖数: 741
精华帖: 10
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 7楼 2020-08-07 11:14:17

从截图看楼主并没有使用Temp,而是直接用IO变量。

我实验了下,我没有使用%0.1,而是用M,因为我的PLC没有接输入。

实验结果没有问题,当S按下Q置位为1,当S释放,Q还是置位为1.


 
以下网友喜欢您的帖子:

  
wrh
侠客

经验值: 944
发帖数: 153
精华帖: 0
回复:SCL语言下,为什么在FC里编程无法实现置位复位?


只看楼主 8楼 2020-08-07 18:24:07

FB有背景块存储数据,FC没有背景块只有局部数据,数据不存储。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
SCL语言下,为什么在FC里编程无法实现置位复位?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。