首页 上一页 1 2 下一页 尾页

用2N的PLC发脉冲控制伺服的集中一下。 点击:4328 | 回复:37



芳季

    
  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-16 17:36:34
楼主

以前我用这个东西控制伺服经常发现伺服的命令脉冲数比PLC的输出脉冲数多一个。

每发一轮脉冲就会有时候多一个有时候相等。我发的脉冲有一个特殊性,就是,不是自然停止,而是用PLSY指令前面的能流切断。使得脉冲强制中断。就会发生这种情况。

今天总算找到原因了。(正常停止的脉冲串不会有这种情况)

伺服收到的脉冲是对的。物理上也是产生了这数量的脉冲。错的是PLC。PLC记录脉冲完整个数是在脉冲下降缘登记的。脉冲完成标志也是大概这个时刻置位的。脉冲串的低电平忽略了。

当强制中断脉冲的话,执行完PLSY指令之后就会终止脉冲。而这个终止会发生在波形的任意位置。

当终止发生在低电平的时候波形的高电平完整,伺服也执行了这个脉冲,PLC的内部计数也登记了这个脉冲。这样的话伺服的命令脉冲寄存器与PLC的内部脉冲计数器数值相等。一切都不存在问题。

当终止发生在波形的高电平的时候。波形高电平不完整了。但但但 是是是 伺服却执行了这半个高电平。 而而而 PLC却不承认这个脉冲的发出。结果发生了本文第一句话的情况。

我相信三菱其他小型系列都是这种情况了。

欢迎拍砖。




墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-16 17:45:17
1楼

又见芳版,颇为感动!

拜读!

 

cqu_rockwell

  • 精华:16帖
  • 求助:0帖
  • 帖子:678帖 | 8694回
  • 年度积分:0
  • 历史总积分:57901
  • 注册:2010年6月30日
发表于:2011-12-16 22:32:59
2楼
排队开始拜读!!!  

jiyu19780415chzh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2011年11月15日
发表于:2011-12-17 23:24:40
3楼
学到了

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-18 09:27:43
4楼

要解决这个漏洞。唯有使用接线的方式用一个硬件高速计数器去跟踪高速输出。或者全闭环。

程序里面所有的D814x就用高速计数器号代替。D814x就不必再理会了。

用硬件高速计数器有一个好处,就是计数器有计数方向控制,可以方便地并到伺服的方向信号一起受驱动。这样的话程序里面就不再需要做累计脉冲的加法减法。节省很多运行时间和脑汁。

最近我都在做这个程序,就是控制行走机构的水平移动,有软件找零功能。定位在两个位置上。发现什么再上上。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-18 11:57:09
5楼

瞧下面的程序。我的硬件就是把高速输出接到高速输入罢了。没别的。

 

我用软件写了Y20之后开始发脉冲。脉冲发完后计数器居然有“11”这个数!!多次试验之下值不定13~0都有。

大家说咋回事?

断崖独坐

  • 精华:0帖
  • 求助:8帖
  • 帖子:20帖 | 228回
  • 年度积分:0
  • 历史总积分:1442
  • 注册:2010年9月17日
发表于:2011-12-19 11:31:14
6楼

学习了,我正在用2N做步进电机的控制,还没编好,真的要好好学习,天天向上了!

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-19 13:46:33
7楼
楼上还差什么?看看互补一下。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-27 12:25:25
8楼

今天试机。用高速计数器累计Y1的脉冲。成功。在反反复复的正反转下都不出现多一个脉冲了。

几十次的正反转下,再回原位,机械位置正确,伺服的命令脉冲累计为0,PLC的C235读数为0 。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-12-27 17:10:21
9楼
引用芳季 的回复内容:

瞧下面的程序。我的硬件就是把高速输出接到高速输入罢了。没别的。

 

我用软件写了Y20之后开始发脉冲。脉冲发完后计数器居然有“11”这个数!!多次试验之下值不定13~0都有。

大家说咋回事?




楼主的问题解决了没有?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-27 20:28:18
10楼
上图的问题没有得到证实。估计,估计是从底层软件到高速硬件之间还有一级缓冲。M8029可能是底层软件写完缓冲之后就动作。却不管硬件是否已经输出完。所以,8029把高速计数器复位了,却还有一部分脉冲正在从硬件发生。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-27 20:38:09
11楼

还有顺便说说。

当高速计数器线圈在程序只出现一次的话,

例如:

LD XXX

OUT  C235 K10000

在程序的整个扫描过程中,这个out指令会把程序分割成上部分和下部分。上部和下部之间经过OUT刷新就更新了高计的当前值。

如果在程序的多个地方重复写out c235 k10000那么的话一个扫描中就可以得到多次的当前值刷新。

别怕产生双线圈。

就算在中断程序里希望当前值得到更新,就执行一下out。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-12-28 09:44:16
12楼
引用芳季 的回复内容:

今天试机。用高速计数器累计Y1的脉冲。成功。在反反复复的正反转下都不出现多一个脉冲了。

几十次的正反转下,再回原位,机械位置正确,伺服的命令脉冲累计为0,PLC的C235读数为0 。




可否介绍一点经验?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-28 16:12:56
13楼

可以。

谁都可以向我提问,我回答。但是反过来让我说一下……那我从何说起呢?

但是不要叫我提供电路图和程序,有点越限。

基本就是

1.伺服发出就绪信号上升缘就请求找零点。因为就绪信号一直存在就可判断伺服正在ON。零点分布在两端极限的中间区域。极限信号先进去PLC再用PLC输出给伺服的极限停车。因为找零过程有可能到达极限,这很正常,所以要程序屏蔽。找零后,程序正常就永远不会到达极限开放程序屏蔽,驱动伺服极限。自己要想出一个最简单可靠的找零路径。

2.上面说到。用高计累计高出脉冲。不要用D8xxx。高计的计数方向受伺服的方向命令驱动,一定要注意扫描过程一定要先驱动伺服的方向信号,下一个周期执行高计方向指令再执行高速计数器线圈再执行脉冲输出。道理很复杂,有兴趣再详述。

3.点动使用PLSY指令。自动使用PLSR指令。两个指令同时驱动一个输出同时扫描不产生双线圈。但是两个相同的指令就是双线圈。

4.程序用高速计数器触点作为远端软限位开关,用比较指令作为近端限位开关供程序使用。然后看情况串联上伺服的定位完成信号作为特殊使用。

5.慎重考虑。当自动时,达到高速的时间紧急停止,脉冲命令突然消失,伺服有可能一下子就要停车,将会跳闸并且自然转到自由状态。我未有方法解决。这个暂时只有调低伺服的硬度缓和一下。将会牺牲定位时间。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-12-28 16:31:12
14楼
引用芳季 的回复内容:

还有顺便说说。

当高速计数器线圈在程序只出现一次的话,

例如:

LD XXX

OUT  C235 K10000

在程序的整个扫描过程中,这个out指令会把程序分割成上部分和下部分。上部和下部之间经过OUT刷新就更新了高计的当前值。

如果在程序的多个地方重复写out c235 k10000那么的话一个扫描中就可以得到多次的当前值刷新。

别怕产生双线圈。

就算在中断程序里希望当前值得到更新,就执行一下out。




高计的当前值可能并非实时的当前值,硬件计数软件读出时是此前的硬件计数值,频率越高相差越大,

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-12-28 16:51:41
15楼
高计的状态位(触点)变化是不是也要经过OUT C***后才刷新呢?如果是做远端软限位开关有可能受扫描周期影响而发生实际限位位置变化

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-28 17:44:02
16楼

当我用一个边缘指令驱动一个子程序。然后子程序用M8000驱动一个高计的话。高计的当前值一直不发生变化。但硬件是一直在接收脉冲的。并且是一直在计数的。当我再次触发边缘指令时,高计当前值更新了。

说明高计要经过OUT C***刷新。

远端(近端)的软限位并非用于禁止发脉冲。发脉冲的数量早在PLSY(PLSR)指令里面定好了。一定不会超限的。仅仅用作程序动作的到位于否的传递,给下一个动作做触发。所以不需要考虑扫描影响。PLSY(PLSR)在驱动前就事先预算好我这次驱动最多要走多少,写好脉冲数。最大值就是走到尽头(软尽头),点动的话就可以随时停,高计都知道的。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-12-28 21:38:11
17楼
高计的状态位(触点)变化是不是也要经过OUT C***后才刷新呢?如果是做远端软限位开关有可能受扫描周期影响而发生实际限位位置变化

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-29 07:32:02
18楼
此事未关注。估计当前值都没有更新那么标志位也不会更新。改天试试。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-12-29 09:56:15
19楼

怎么搞的不回复就看不到新贴内容呢?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-12-29 11:29:37
20楼
938你还是在用旧页面吗?

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页