帮忙看一段代码 点击:768 | 回复:11



SIXIANGZHE007

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年7月31日
发表于:2015-12-05 13:20:48
楼主

梯形图 如下,为什么我 多次M0 闭合之后, 由S0 驱动的 C50始终只能 计数1 次, 而S0上升沿驱动的 C51每次却能正常驱动, 见 梯形图上的 运行值 C51 计数到5了, C50始终是1。 PLC用的信捷的, 梯形图应该跟三菱差不多,我是新手。望大家解惑




jtlfguo

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 328回
  • 年度积分:79
  • 历史总积分:5273
  • 注册:2012年3月28日
发表于:2015-12-05 14:04:44
1楼

你计数器前面接的这个s0 在闭合期间,程序每循环一次计数器加1,加到9 就又回到1.

 如果我想的没有错 你把k9,换成10000,就能看到计数在不停的变了

SIXIANGZHE007

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年7月31日
发表于:2015-12-05 14:10:04
2楼


引用 jtlfguo 的回复内容: 你计数器前面接的这个s0 在闭合期间,程序每循环一次计...

好像不是这样的哦,另外我加了一个M8000也是一样的不触发 始终是1

jtlfguo

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 328回
  • 年度积分:79
  • 历史总积分:5273
  • 注册:2012年3月28日
发表于:2015-12-05 14:22:03
3楼

m8000也是常闭吧?

回复内容:

对: SIXIANGZHE007 引用 jtlfguo 的回复内容: 你计数器前面接的这... 内容的回复!


SIXIANGZHE007

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年7月31日
发表于:2015-12-05 14:25:07
4楼


引用 jtlfguo 的回复内容: m8000也是常闭吧?回复内容:对: SIXIANGZ...

我还加了一个 M0 ,也不能正常计数, 搞不懂是我 逻辑出了问题 还是在 顺序控制里面 计数器不能用

jtlfguo

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 328回
  • 年度积分:79
  • 历史总积分:5273
  • 注册:2012年3月28日
发表于:2015-12-05 14:38:47
5楼

在c50前面,分支后面加个上升沿条件试一下,没有用过信捷,不熟

回复内容:

对: SIXIANGZHE007 引用 jtlfguo 的回复内容: m8000也是常闭... 内容的回复!


jtlfguo

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 328回
  • 年度积分:79
  • 历史总积分:5273
  • 注册:2012年3月28日
发表于:2015-12-05 14:43:23
6楼

t0 时间延长一下         

SIXIANGZHE007

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年7月31日
发表于:2015-12-05 14:44:43
7楼


回复内容:

对: jtlfguo t0 时间延长一下          内容的回复!

时间改成30000咯,也没鸟效果。 是不是哪里逻辑出了问题

jtlfguo

  • 精华:0帖
  • 求助:5帖
  • 帖子:24帖 | 328回
  • 年度积分:79
  • 历史总积分:5273
  • 注册:2012年3月28日
发表于:2015-12-05 15:09:42
8楼

回复内容:照个这个梯形图写一个,功能 每过3秒钟减一,R换成m,首次运行,用电脑使能R0

对: SIXIANGZHE007 回复内容:对: jtlfguo  t0 时间延长一下 ... 内容的回复!


SIXIANGZHE007

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年7月31日
发表于:2015-12-05 15:25:42
9楼


回复内容:

对: jtlfguo 回复内容:照个这个梯形图写一个,功能 每过3秒钟减一,... 内容的回复!



你的意思 是不是通过计时器 每3s 计数, 这个是可以的, 我上面的疑问是 M0的上升沿 启动一次流程,然后计数器 通过S0或者 MO 驱动的 不管 S0开始多少次, 始终只计数一次,

但是 SO上升沿却可以驱动,好奇怪啊

jz3154

  • 精华:2帖
  • 求助:2帖
  • 帖子:60帖 | 787回
  • 年度积分:5
  • 历史总积分:3532
  • 注册:2012年10月06日
发表于:2015-12-06 12:33:00
10楼

M0闭合后面的S0是在置位吧,SET与OUT不是一个指令,S0置位后没有复位,所以M0开关对于S0状态不会改变,一直是置位(输出)状态,所以C50一直是1,而C51可能是给一次置位就输出一个上升沿吧,T0应该一直在计时状态。建议M0后面跟个线圈试一下而不是置位,对于信捷PLC不熟悉,但是指令应该大差不差。

SIXIANGZHE007

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 15回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2015年7月31日
发表于:2015-12-07 10:43:28
11楼


回复内容:

对: jtlfguo 回复内容:照个这个梯形图写一个,功能 每过3秒钟减一,... 内容的回复!


想了好久, 我开始觉得这是 信捷PLC的一个漏洞, 当流程S结束时, 计时器、驱动线圈等全部会RST,但是对计数器 处理并不好。

我猜信捷的 计数器 处理大概方式: 驱动条件----计数器 ,当前周期 判断当前周期的  驱动条件 与 上周期的 驱动条件,然后判断 如果上周期 驱动条件off 当前周期为on ,则计数,其他则不计数。  

当关闭流程, 由于流程的特殊机制,当S不打开的情况下, 驱动条件----计数器 这个逻辑应该一直不会执行,所以  上周期的 驱动条件始终存储的是  S关闭之前的 那个周期的 驱动条件(为ON),所以当再次 打开(上次ON 这次也是ON) 就会出现意外的结果。

至于 为何S0的上升沿会触发, 根据上面的结论,我在S0中加入了 T延时计时器,所以S0会执行N个脉冲周期, 从第二个周期开始 S0上升沿 触发的 驱动条件 就会变成 OFF, 所以下次再次 打开流程的时候 S0上升沿会 使计数器+1. 


为了验证上面的猜想, 我会让 S0只执行一个 时钟周期然后RST, 那么, S0  和 S0上升沿 都将 保存成 ON ,那么下次 即使打开S0 也都不会计数


经过测试, 如果S0只 执行一个周期, S0 和S0上升沿 都不会计数了


热门招聘
相关主题

官方公众号

智造工程师