技术论坛

一段看似简单,但是百思不得其解的程序

作者 主题
侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
主题:一段看似简单,但是百思不得其解的程序


只看楼主 楼主 2010-03-29 21:03:02
现有FC1,定义其输入IN接口有Set(BOOL)、Reset(BOOL),定义其输出接口有Out(BOOL);其程序就是一个很简单的置位复位程序,转换为STL如下:
A #Set
S #Out
A #Reset
R #Out
NOP 0

然后在OB1中做如下调用:



测试运行时将M1.0置1,I0.0并未接通,奇怪的现象就是DB1.DBX0.0和DB1.DBX0.1快速的在0和1之间切换,而不是DB1.DBX0.0置1。
将DB1.DBX0.0及DB1.DBX0.1替换为M,则动作正常。
更为奇怪的是将程序修改成下图,动作也正常:

请教各位为何会产生如此奇怪的现象?有条件的兄弟可以用PLCSIM测试一下。
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
重要声明:

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

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

至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:一段看似简单,但是百思不得其解的程序


只看楼主 1楼 2010-03-29 21:47:29
这是由FC参数传递特性引起的
D侠没看过这贴吧
http://www.ad.siemens.com.cn/club/bbs/post.asp?myreply=1&b_id=4&a_id=605538&s_id=&num=38#anch
 
以下网友喜欢您的帖子:

  
至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:一段看似简单,但是百思不得其解的程序


只看楼主 2楼 2010-03-29 23:20:33
对于使用OPN后正常的情况,经实验,发现使用OPN后,FC的形参DB数据不使用绝对引用时也是传递的是地址
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
回复:一段看似简单,但是百思不得其解的程序


只看楼主 楼主 3楼 2010-03-30 07:55:19
quote:以下是引用youhm在2010-03-29 21:47:29的发言:
这是由FC参数传递特性引起的
D侠没看过这贴吧
http://www.ad.siemens.com.cn/club/bbs/post.asp?myreply=1&b_id=4&a_id=605538&s_id=&num=38#anch

谢谢youhm,起初我也是对这个有所怀疑,只是不敢确定。看来我只有另想其他办法了。
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
游侠

经验值: 329
发帖数: 81
精华帖: 0
回复:一段看似简单,但是百思不得其解的程序


只看楼主 4楼 2010-03-30 11:33:21
如果非要这个功能,那么就把输出值也放入输入项中,满足条件则赋值,不满足就保持原值。
以前写过限幅FC模块,超过最大或最小都进行了判断,结果忘了不大也不小的判断,也是这种情况。
好好学习,天天向上
以下网友喜欢您的帖子:

  
至圣

经验值: 11247
发帖数: 3299
精华帖: 4
回复:一段看似简单,但是百思不得其解的程序


只看楼主 5楼 2010-03-30 13:16:08
一直没有注意到这个问题,今天学习啦,其实直接用“M”也是一样的吧
喜欢用SIEMENS,乐水工控生活 打造工业智能家居生活!
以下网友喜欢您的帖子:

  
游侠

经验值: 372
发帖数: 322
精华帖: 1
回复:一段看似简单,但是百思不得其解的程序


只看楼主 6楼 2010-03-30 21:33:04
DBX0.0和DBX0.1逻辑上有问题。
热衷于工控相关领域,欢迎交流学习!
以下网友喜欢您的帖子:

  
侠圣

经验值: 2862
发帖数: 1760
精华帖: 55
回复:一段看似简单,但是百思不得其解的程序


只看楼主 楼主 7楼 2010-03-31 11:08:31
为了避免这个问题,我将Out修改为POINTER类型,在程序中对POINTER进行寻址并进行置位复位操作。

经过测试,不论是M、DB等均没有上述现象发生。修改后程序如下:
L P##Out
LAR1

L W [AR1,P#0.0]
L 0
<>I
JNB _OPN
L W [AR1,P#0.0]
T #DB_NO
OPN DB [#DB_NO]
_OPN: NOP 0
L D [AR1,P#2.0]
LAR1

A #Set
S [AR1,P#0.0]
A #Reset
R [AR1,P#0.0]

美中不足的就是无法直接监控该管脚是否接通 :(
非淡泊无以明志,非宁静无以致远
以下网友喜欢您的帖子:

  
至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:一段看似简单,但是百思不得其解的程序


只看楼主 8楼 2010-03-31 11:20:38
直接使用M或把OUT改为IN/OUT不就可以了
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10195
发帖数: 2115
精华帖: 3
回复:一段看似简单,但是百思不得其解的程序


只看楼主 9楼 2010-03-31 16:05:46
如果你把FC换成FB,情况又将如何呢?
Kapok
以下网友喜欢您的帖子:

  
至圣

经验值: 13053
发帖数: 4961
精华帖: 81
回复:一段看似简单,但是百思不得其解的程序


只看楼主 10楼 2010-03-31 17:38:41
FB不会有这样的问题
 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
一段看似简单,但是百思不得其解的程序
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。