技术论坛

西门子200沿的应用

作者 主题
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
主题:西门子200沿的应用
精华帖精华帖星级2级 推荐帖


只看楼主 只看精华 楼主 2018-01-17 11:19:55

西门子200沿的应用

   今天给工厂编辑一个小的控制程序时,在编辑过程中疏忽了一个问题,图示:


   请大家看看我红色框图中外部“位”及“沿”的使用,开始编辑的本意是当状态转换到自动操作时,给顺控指令及相应的输出做一些初始化操作。将程序下载到cpu后,监控顺控指令并没有按我这个“思路”运行,打开状态图表监控,顺控指令没有一个“步”被激活,也就是说初始化操作无效。

当I0.0(自动_手动状态转换)= 1时,调用自动子程序中的上升沿并没有起作用。于是,将自动子程序网络1段的I0.0改为其它“位”地址I0.3后,程序能够正常运行,图示:


   那么,上升沿无效的原因就在这个调用子程序的条件I0.0的应用上是肯定的。这个过程中我曾经转换过I0.0状态转换开关,也就是说这个I0.0的状态肯定是有0和1的转换过程。

打开软件“F1”帮助,有这么一段提示的话,图示:


   这里的“首次扫描”,应该是指调用子程序时的第一次扫描周期中,这样,在同一个周期内作为同一个“位”地址,调用子程序及上升沿触发的条件就无法满足,子程序初始化中的上升沿无效也在“情理”之中了。

   程序虽然相对简单,但要深刻领悟简单指令中的应用,还是需要注意应用时其中的要求及说明,不然,掉“坑”是必然了。因为在现场遇见了这个问题,马上修改了程序,也就没有把在线监控的截图给做上,请谅解。



 
以下网友喜欢您的帖子:

  
重要声明:

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

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

至圣

经验值: 16417
发帖数: 2399
精华帖: 0
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 1楼 2018-01-17 12:53:21

为什么要有调试呢?就是发现和解决问题的。



开心每一天,懂得包容、感恩!
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 楼主 2楼 2018-01-17 13:16:06
以下是引用云山雾绕在2018-01-17 12:53:21的发言 >1楼

为什么要有调试呢?就是发现和解决问题的。


仿真、调试是验证编程者思路的一种有效途径。


 
以下网友喜欢您的帖子:

  
版主

经验值: 25992
发帖数: 11808
精华帖: 43
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 3楼 2018-01-17 16:23:28

我觉得 W 侠 没有把问题说到痛点上。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 楼主 4楼 2018-01-17 16:48:07
以下是引用yanxiao在2018-01-17 16:23:28的发言 >3楼

我觉得 W 侠 没有把问题说到痛点上。

我自己也是有此感觉,反倒一下子也说不出一个所以然来,请版主指正。


 
以下网友喜欢您的帖子:

  
版主

经验值: 25992
发帖数: 11808
精华帖: 43
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 5楼 2018-01-17 20:07:20
以下是引用WWCWWC在2018-01-17 16:48:07的发言 >

我自己也是有此感觉,反倒一下子也说不出一个所以然来,请版主指正。

沿指令一般是这样解释的:


P取的是I0.0的沿。似乎这样说很合理,工程应用也没问题。


那么下图:


网络1和网络2中的P,又取的是谁的沿?单个变量的沿?不是,是I0.0和I0.1运算后的结果的沿。

这样,问题就清楚了:P指令只看眼前,看不到I0.0和I0.1。

在STL中,沿指令只看栈顶值,LAD中,沿指令只看它面前的能流。


所以, W 侠的第一次问题出现时,尽管 I0.0 有0到1的变化,可是 P 指令前的能流,却没有0到1的变化。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 楼主 6楼 2018-01-18 08:30:26
以下是引用yanxiao在2018-01-17 20:07:20的发言 >

沿指令一般是这样解释的:


P取的是I0.0的沿。似乎这样说很合理,工程应用也没问题。


那么下图:


网络1和网络2中的P,又取的是谁的沿?单个变量的沿?不是,是I0.0和I0.1运算后的结果的沿。

这样,问题就清楚了:P指令只看眼前,看不到I0.0和I0.1。

在STL中,沿指令只看栈顶值,LAD中,沿指令只看它面前的能流。


所以, W 侠的第一次问题出现时,尽管 I0.0 有0到1的变化,可是 P 指令前的能流,却没有0到1的变化。


非常感谢版主的指正。

我是这样理解这个状态的,当I0.0 = 1时,子程序调用有效,因为与调用时I0.0是同一个周期内有效,沿无法检测到能流。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 18067
发帖数: 1524
精华帖: 2
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 7楼 2018-01-18 09:31:06
以下是引用yanxiao在2018-01-17 20:07:20的发言 >5楼

沿指令一般是这样解释的:


P取的是I0.0的沿。似乎这样说很合理,工程应用也没问题。


那么下图:


网络1和网络2中的P,又取的是谁的沿?单个变量的沿?不是,是I0.0和I0.1运算后的结果的沿。

这样,问题就清楚了:P指令只看眼前,看不到I0.0和I0.1。

在STL中,沿指令只看栈顶值,LAD中,沿指令只看它面前的能流。


所以, W 侠的第一次问题出现时,尽管 I0.0 有0到1的变化,可是 P 指令前的能流,却没有0到1的变化。


以下是引用WWCWWC在2018-01-17 16:48:07的发言 >:我自己也是有此感觉...

引用详细内容:

我自己也是有此感觉,反倒一下子也说不出一个所以然来,请版主指正。

版主,能流是前面整个状态的变化而不是某一位的变化?是这样理解吗?


我回来了!继续努力!
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 楼主 8楼 2018-01-18 09:35:56
以下是引用yecao2006在2018-01-18 09:31:06的发言 >7楼

版主,能流是前面整个状态的变化而不是某一位的变化?是这样理解吗?

以下是引用yanxiao在2018-01-17 20:07:20的发言 >5楼:沿指令一般是这样解...

引用5楼详细内容:

沿指令一般是这样解释的:


P取的是I0.0的沿。似乎这样说很合理,工程应用也没问题。


那么下图:


网络1和网络2中的P,又取的是谁的沿?单个变量的沿?不是,是I0.0和I0.1运算后的结果的沿。

这样,问题就清楚了:P指令只看眼前,看不到I0.0和I0.1。

在STL中,沿指令只看栈顶值,LAD中,沿指令只看它面前的能流。


所以, W 侠的第一次问题出现时,尽管 I0.0 有0到1的变化,可是 P 指令前的能流,却没有0到1的变化。


以下是引用WWCWWC在2018-01-17 16:48:07的发言 >:我自己也是有此感觉...

引用详细内容:

我自己也是有此感觉,反倒一下子也说不出一个所以然来,请版主指正。

应该是沿前面的所有逻辑运算结果。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3003
发帖数: 455
精华帖: 0
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 9楼 2018-01-18 10:03:41

学习了 王工,以前反反复复的栽在边沿上,现在总算摸到点“套路”了,每次编程都是按自己的固定套路就不容易出错了,呵呵


Automation
以下网友喜欢您的帖子:

  
至圣

经验值: 19345
发帖数: 2077
精华帖: 72
回复:西门子200沿的应用
推荐帖 推荐帖


只看楼主 只看精华 10楼 2018-01-18 16:52:28

根本原因是子程序的调用方式,即条件调用和无条件调用的区别。

200plc子程序中要用沿指令,我都这么写:


不要用P,用一个中间位过渡一下。



大道至简,知易行难
推荐帖推荐理由: 经典的one-shot output,实在是居家旅行编程必备之利器! (推荐人:'Razor)
以下网友喜欢您的帖子:

  
版主

经验值: 25992
发帖数: 11808
精华帖: 43
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 11楼 2018-01-18 18:23:14
以下是引用看雪001在2018-01-18 16:52:28的发言 >10楼

根本原因是子程序的调用方式,即条件调用和无条件调用的区别。

200plc子程序中要用沿指令,我都这么写:


不要用P,用一个中间位过渡一下。


系统自动为每一个沿指令分配一个唯一的位,来记录前一次扫描的状态,效率应比使用M位的还高。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1480
发帖数: 49
精华帖: 0
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 12楼 2018-01-18 20:42:05

 

1200/1500中的沿分得就细了。

 


没有最好,只有更好!
以下网友喜欢您的帖子:

  
至圣

经验值: 19345
发帖数: 2077
精华帖: 72
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 13楼 2018-01-18 23:20:04
以下是引用yanxiao在2018-01-18 18:23:14的发言 >11楼

系统自动为每一个沿指令分配一个唯一的位,来记录前一次扫描的状态,效率应比使用M位的还高。

以下是引用看雪001在2018-01-18 16:52:28的发言 >10楼:根本原因是子程序的...

引用10楼详细内容:

根本原因是子程序的调用方式,即条件调用和无条件调用的区别。

200plc子程序中要用沿指令,我都这么写:


不要用P,用一个中间位过渡一下。


通常,我们在讲“效率”这个词的时候,是要包含“正确、准确”这个前提的,傻瓜式操作往往也意味着低端,避免不了一些bug。

举个例子:step7里面有一个集成功能,当wincc程序和plc程序集成在一个项目中时,wincc是可以使用plc的符号变量的,也有很多人觉得这样做就会提高效率。但wincc的变量属性终究是和plc变量属性是不同的,不仅仅是要重新定义采样周期,比如plc中一些io位变量,如果直接用到wincc中,而不是以字或双字格式组态,那就是是浪费tag个数,反而低效!

借用西家的话:知其道,用其妙!一味盲目跟随,并不是知其道。




大道至简,知易行难
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 楼主 14楼 2018-01-18 23:57:26
以下是引用看雪001在2018-01-18 16:52:28的发言 >10楼

根本原因是子程序的调用方式,即条件调用和无条件调用的区别。

200plc子程序中要用沿指令,我都这么写:


不要用P,用一个中间位过渡一下。


我也倾向于你的观点,本想用特殊标志位SM0.1来验证一下,因手头没有实体机。等有了我验证一下就可以了。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 76195
发帖数: 19142
精华帖: 378
回复:西门子200沿的应用


只看楼主 只看精华 15楼 2018-01-19 00:28:33

 呵呵,归根结底是逻辑程序没有全扫描


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
侠圣

经验值: 4511
发帖数: 522
精华帖: 0
回复:西门子200沿的应用


只看楼主 只看精华 16楼 2018-01-19 08:22:11
以下是引用WWCWWC在2018-01-17 11:19:55的发言 >楼主

西门子200沿的应用

   今天给工厂编辑一个小的控制程序时,在编辑过程中疏忽了一个问题,图示:


   请大家看看我红色框图中外部“位”及“沿”的使用,开始编辑的本意是当状态转换到自动操作时,给顺控指令及相应的输出做一些初始化操作。将程序下载到cpu后,监控顺控指令并没有按我这个“思路”运行,打开状态图表监控,顺控指令没有一个“步”被激活,也就是说初始化操作无效。

当I0.0(自动_手动状态转换)= 1时,调用自动子程序中的上升沿并没有起作用。于是,将自动子程序网络1段的I0.0改为其它“位”地址I0.3后,程序能够正常运行,图示:


   那么,上升沿无效的原因就在这个调用子程序的条件I0.0的应用上是肯定的。这个过程中我曾经转换过I0.0状态转换开关,也就是说这个I0.0的状态肯定是有0和1的转换过程。

打开软件“F1”帮助,有这么一段提示的话,图示:


   这里的“首次扫描”,应该是指调用子程序时的第一次扫描周期中,这样,在同一个周期内作为同一个“位”地址,调用子程序及上升沿触发的条件就无法满足,子程序初始化中的上升沿无效也在“情理”之中了。

   程序虽然相对简单,但要深刻领悟简单指令中的应用,还是需要注意应用时其中的要求及说明,不然,掉“坑”是必然了。因为在现场遇见了这个问题,马上修改了程序,也就没有把在线监控的截图给做上,请谅解。


在子程序中使用边沿触发指令是和主循环有区别的,特别对于初学者很容易掉坑里!


孜孜不倦,向高峰挺进!
以下网友喜欢您的帖子:

  
版主

经验值: 25992
发帖数: 11808
精华帖: 43
回复:西门子200沿的应用
推荐帖


只看楼主 只看精华 17楼 2018-01-19 08:35:35

LD I0.0

EU

一开始就把EU想象成取I0.0的沿,离掉坑里就不远了。EU是取栈顶的沿,并不直接取I0.0的沿(尽管在此例中栈顶值来自I0.0)。

LAD也一样,只取沿面前能流的沿。


退一步,EU不讲。

LD I0.0

指令取的是I0.0内部寄存器的值,和外电路中的状态不能直接等价。如果直接理解成取外电路状态,离掉坑里也不远。



 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6859
发帖数: 1351
精华帖: 5
回复:西门子200沿的应用


只看楼主 只看精华 18楼 2018-01-19 08:54:32

1200的沿就分的很清楚了,RLO和位的单独有指令


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67542
发帖数: 14782
精华帖: 100
回复:西门子200沿的应用


只看楼主 只看精华 19楼 2018-01-19 11:59:21

是啊。有扫描和没扫描。区别明显。

同样,跳转,循环,会使一部分程序没扫描和多扫描也是造成“不正常”现象。

认识扫描真的是基础中的基础。


 
以下网友喜欢您的帖子:

  
收起
西门子200沿的应用
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。