关于plsy指令的一个问题! 点击:10274 | 回复:55



xitonghua

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 34回
  • 年度积分:0
  • 历史总积分:121
  • 注册:2008年10月18日
发表于:2010-06-01 13:41:34
楼主

 

为什么给x002一个上升沿脉冲时,y001会输出两次?

请高手给予指点!(继电器输出型三菱plc,但是频率为1时,我想继电器输出也能正常工作!)




xitonghua

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 34回
  • 年度积分:0
  • 历史总积分:121
  • 注册:2008年10月18日
发表于:2010-06-19 20:48:53
21楼

难道说高速输出指令用于低速就有误差?

至于你说的最低速度,我不是很同意,因为说明书没说就不会有这个问题!

我想这个指令有误差的存在,正所谓在这个世界上圆无标准的圆,方无真正的方!不知大家的意见怎么样?

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-06-19 20:59:36
22楼

不能说误差。是最少脉冲数的原因。这个事情我很早前曾经试验过了。没办法,使用上就尽量避开一个脉冲这唯一一种情况,就可以正常的。

用西门子啦。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 12:11:21
23楼

 

   我与大家的观点有一些不一致,说出来谨供大家参考。(楼主提出的问题是属于FX1s、FX1n系列PLC上遇到的。所以,我的这些观点仅限于FX1s、FX1n系列范围)

 

1、 PLSY(FNC57)指令是一种高速指令。它的“执行过程”(单指脉冲的输出过程)是独立于程序扫描周期之外的过程,不受程序的扫描周期的制约。在该指令的驱动条件为ON的最初一个周期里开始运算,然后立即输出脉冲!(不等程序扫描到END命令,它是以中断形式执行的。)

 

2、 当PLSY指令的第一个操作数指定频率在 1Hz~1999Hz  之内时,指令单次触发执行的最小基本单位数量为1个脉冲。

 

3、    当指定频率在 2000Hz~3000Hz  之内时,指令单次触发执行的最小基本单位数量为2个脉冲。 

 

4、 当指定频率在 3001Hz~4999Hz  之内时,指令单次触发执行的最小基本单位数量为4个脉冲。

 

5、 当指定频率在 5000Hz~8998Hz  之内时,指令单次触发执行的最小基本单位数量为8个脉冲。

 

6、 当指定频率在 8999Hz~16999Hz  之内时,指令单次触发执行的最小基本单位数量为16个脉冲。

 

7、 当指定频率在 17000Hz~32976Hz  之内时,指令单次触发执行的最小基本单位数量为32个脉冲。

 

8、 当指定频率在 32977Hz~65040Hz  之内时,指令单次触发执行的最小基本单位数量为64个脉冲。

 

9、 当指定频率在 65041Hz 以上的频率时,指令单次触发执行的最小基本单位数量为128个脉冲。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 13:26:49
24楼

 

  PLSY(FNC57)指令的执行过程(单指“脉冲输出过程”) 是以“中断”形式来执行的,完全独立于程序的扫描周期之外,不受扫描周期制约。只有该指令的“执行条件”的访问才是放在扫描周期里进行的。当程序扫描到PLSY(FNC57)指令的“执行条件”从OFF到ON这个前沿时,PLC立即执行该PLSY指令,对应于该指令的“目标操作数(Y00或Y01)”的标志位:M8147(Y00脉冲输出中)或M8148(Y01脉冲输出中)ON。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 13:56:20
25楼

 

  三菱FX系列的编程手册对PLSY(FNC57)指令称之为<脉冲输出>。这个“脉冲”不同于随机时序中出现的单个脉冲,而它是一种周期性出现的脉冲。既然这个“脉冲”是周期性出现的,所以对这执行脉冲输出的硬件电路(这里与PLC通常的输出过程是不一样的。它不是靠软件在执行END命令时刷新输出锁存器来实现的,而是靠专门的脉冲输出硬件电路直接控制Y0或Y1输出。)就得赋予它有“前瞻性”。当硬件输出电路在输出第1个“基本单位”脉冲时,就已经“前瞻性”的为下一个“基本单位”脉冲的输出作好了准备(给M8148的导通时间准备了用于输出两个“基本单位”所需的时间)。

 

  对于其指令第2个“操作数”(S2)≥ 2 的情形,我们可以把PLSY(FNC57)指令理解成<脉冲串输出>。要形成“串”则至少不得少于两个脉冲!所以当楼主网友所写的 <  LDP  X02  PLSY  K1  K5  Y01  > 这条指令在执行时,标志位: M8148(Y01脉冲输出中)ON的持续时间最短也得保证有2个完整的周期。故,该指令执行的结果是Y01输出“两个脉冲”。即便是程序在第1个脉冲还没有输出完毕时程序进入第2个扫描周期,运算出该PLSY指令应该OFF,但是,已经启动了的M8148 在导通时间未满两个脉冲周期之前是不会OFF的!

 

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 14:12:53
26楼

 

  如果“执行条件”(X02)在Y01输出第2个脉冲(包括脉冲前的空隔)时才由ON转为OFF,则M8148之ON的持续时间将“前瞻性”的延长到3个脉冲周期,Y01将输出3个脉冲;以此类推,当“执行条件”(X02)在Y01输出第4个脉冲(包括脉冲前的空隔)时才由ON转为OFF,则M8148之ON的持续时间将延长到5个脉冲周期,Y01将输出5个脉冲。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 15:07:52
27楼
引用<芳季> 的内容:

   不能说误差。是最少脉冲数的原因。这个事情我很早前曾经试验过了。没办法,使用上就尽量避开一个脉冲这唯一一种情况,就可以正常的。

 


 

 

  <Wanggq>回复:

 

  楼主的程序片断在输入点“X02”的前沿脉冲操作下为什么不输出 5 个脉冲? 那是因为程序在第2个“扫描周期”内就运算出PLSY指令OFF,所以该指令执行不到第2个“脉冲周期”之后(不包括第2个“脉冲周期”)的脉冲输出。

 

  既然楼主的程序片断在程序的第2个“扫描周期”中就运算得到该PLSY 指令“OFF”,而且这时,第1个“脉冲周期”甚至都还没有执行完毕,为什么不就此中止“脉冲”的输出呢? 那是因为PLSY指令的“脉冲输出硬件电路”已经启动,不受程序“扫描周期”制约,若在启动之前“Y01脉冲输出禁止”之M8146 没有被置位,则“Y01脉冲输出中”M8148 之ON至少要保证有两个完整的“基本单位”的脉冲周期(前瞻性的多准备了一份最小“基本单位”)。在楼主的例程中,单次触发执行最小“基本单位数量”是1个脉冲。故,该例程在单次触发下输出的是2个完整的脉冲,而不是1个完整脉冲,更不可能是1个不足一个“脉冲周期”的不完整脉冲!

 

  事实上,我们也完全不需要刻意去“避开只输出一个脉冲的情况”!倘若有人需要用“PLSY”指令来实现:用“X02”前沿触发一次,PLC的“Y01”就输出一个“完整的脉冲”。那么,我们将楼主的例程中该脉冲输出指令的“S2”指定为“K1”即可!

 


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 15:12:41
28楼

 

  如下所示:

 

    LDP   X02   PLSY  K1   K1   Y01

 

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-02 15:25:48
29楼

 

  倘若有人偏要用楼主的< LDP   X02   PLSY    K1   K5   Y01  >   来实现:触发一次,“Y01”就输出一个“完整的脉冲”。那么,我们也是能够办得到的!

 

  方法是:

 

  a、 在运行该例程之前,预先将PLC的M8146 置位。 

 

  或者:

 

  b、 在“PLSY指令”之前加一条“SET  M8146 ”命令。

 

  如:

 

  LDP    X02  

  SET          M8146

  PLSY   K1    K5    Y01

 





芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-07-02 20:54:40
30楼

有见地。我正在消化。……

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2010-07-03 11:21:38
31楼

M8146的控制在置位后是否需要编写复位的程序?

另王先生那个关于基本单位脉冲数量与频率关系的描述是实际测试得出来的吗?

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-03 13:27:39
32楼

对:<winter938> 关于

M8146的控制在置位后是否需要编写复位的程序?

另王先生那个关于基本单位脉冲数量与频率关系的描述是实际测试得出来的吗?

 内容的回复:



  回复第一个问题:

 

  在FX1s、FX1n中,M8146 是<Y01脉冲输出禁止>位。它如果在PLSY指令(设目标操作数为Y01) 执行前就已经为ON ,则它将禁止 M8148 -<Y01脉冲输出中> ON 之时值中的“前瞻性”的预备部分,但它却不能禁止对应于该PLSY指令对 M8148 的触发(启动)!换句话说就是:“脉冲禁止位”于PLSY指令执行前有效时,其禁止的是除首份脉冲之外的所有后续脉冲。(关于“首份脉冲”的定义,我将在以后抽时间来细讲)

 

  当目标功能定为:用< LDP    X02      PLSY    K1     K5    Y01 > 实现每操作一次“X02”,“Y01”就仅输出一个“占空比为50%的周期脉冲”时,我们没有必要对 M8146 施行“复位”操作。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-03 13:49:13
33楼

 

 回复<winter938> 的第二个问题:

 

  “基本单位脉冲数量”与频率关系的描述是在FX1s的PLC上实际测试得出来的。它也可能适用于FX1n的PLC ,但肯定不适用于FX2n和FX2nc系列!

  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-03 13:57:04
34楼

  在FX1s、FX1n中,由“PLSY”指令所输出的“占空比为50%的周期脉冲”其时序波形与《编程手册》的描述是有差异的。这个“差异”最好用图片的形式来加以描述。下面第1个图片是《编程手册》的第229页上的内容:

 

                                                                                
                                                        ( 图片1 )

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-04 13:36:43
35楼

引用 < gzf1 >  的内容:

 

  “ 当程序在X2的闭合这个周期内检测到上升沿有效,在下一个输出刷新阶段是马上以PLSY指令规定的速度来执行Y1的输出.这个输出是高速输出,和下一个阶段的输入刷新和程序执行同步进行的,只有当下一次扫描周期进行时,检测到X2的PLSY指令不具备执行条件,才会在输出刷新阶段停止执行PSLY指令。”

 


 

 < Wanggq > 回复:

 

  楼主的问题是在FX1s / FX1n 系列PLC上遇到的。而我理解< gzf1 >网友这句“当程序在X2的闭合这个周期内检测到上升沿有效,在下一个输出刷新阶段是马上以PLSY指令规定的速度来执行Y1的输出”好像是对FX2n 或FX2nc来讲的。如果是在FX2n系列的PLC上做运行这个 < LDP   X02       PLSY     K1      K5      Y01 >  的试验,则:从PLC面板上的输出指示灯来看,这个片断是不会有“输出”指示的。

 

   

  在FX2n系列的PLC上运行“PLSY指令,其驱动条件为ON的时值至少应当保证有2个扫描周期才会有“输出”指示!

 

  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-04 14:19:46
36楼

 <紧接上一楼的内容>

 

  在FX2n系列的PLC上,如果我们写一个片断来保证“PLSY指令”的驱动条件只通两个扫描周期,当程序第1次扫描至该“PLSY指令”的驱动条件(X02)为ON,则该“PLSY指令”运算为ON,但是“Y01”在“映象寄存器”中的映像并不立即出现“脉冲”的ON状态。直到程序扫描至本周期的“End命令”时“Y01的映像”也不出现“脉冲”的ON状态,而是在下一个扫描周期里再次扫描至该“PLSY指令”(X02 仍然为ON时),立即刷新“Y01的映像”(不等这一周期的“输出刷新阶段”)。倘若第三次扫描至该“PLSY指令”,其驱动条件(X02)为OFF时,运算出该“PLSY指令”为OFF。这时将立即中止“正在执行中的脉冲输出”(同样的也是不等这一周期的“输出刷新阶段”)。如此这样,从PLC面板指示灯上看“Y01就只输出一个脉冲”。

 

   (从“输出指示”上看到的这一个脉冲的脉宽只有一个程序扫描周期的时值,而不是象在FX1s或FX1n上运行 < PLSY  K1  K5  Y01 > 指令那样输出完整的:“ OFF-500mS、 ON-500mS  ”的一个“周期脉冲”)

 

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2010-07-04 16:30:41
37楼
非常感谢王先生提供的宝贵实践经验!个人感觉三菱FX编程手册错误疏漏经多次修正后的版本仍然很多,糟糕的是有些文字不知是翻译还是原文描述晦涩难懂,这里截录手册中关于脉冲输出指令说明的一点描述图片请王先生解释一下,谢谢!

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2010-07-04 18:33:31
38楼

上面图片是只再启动的情况。而楼主等的讨论则是一次运行过程的有关问题。情况不同。先不要同时讨论。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-05 16:14:03
39楼

引用 < gzf1 > 的内容:

 
  “ 当程序在X2的闭合这个周期内检测到上升沿有效,在下一个输出刷新阶段是马上以PLSY指令规定的速度来执行Y1的输出.。”

------------------------------------------------
 < Wanggq > 回复:


      我对“PLSY指令规定的速度”的理解是:该指令的“源操作数1”指定的“脉冲频率”。对应于楼主提供的例程片断———— < LDP   X02      PLSY    K1      K5       Y01  > 来说,“S1” 所指定的为“K1”,即指定频率为“1Hz ”。

 

  在FX1s或FX1n系列PLC 中,“PLSY指令”在驱动条件(X02)上升沿有效的周期内立即以“中断”形式触发“硬件脉冲输出电路”其输出脉冲频率为对应“S1”所指定的(K1)——“1 周期/每秒”的脉冲速度。

 

  在FX2n系列PLC中,“PLSY指令”在驱动条件(X02)上升沿有效的周期内立即以“中断”形式触发“硬件脉冲输出电路”(“硬件脉冲输出电路”输出脉冲与“映像寄存器状态”及“输出锁存器状态”是不同的概念),但其脉冲速度不可能低到“1 周期/每秒”。因为FX2n中的“PLSY指令”最低频率是2Hz 。

 

下面是支持这一观点的实验证据:让“PLSY指令”的驱动条件之ON时值延长到M8029标志出现时,记下这段时间为2250毫秒。

 


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-07-05 21:21:18
40楼

  
  在FX1s、FX1n中,由“PLSY”指令所输出的“占空比为50%的周期脉冲”其时序波形与《编程手册》的描述是有差异的。这个“差异”最好用图片的形式来加以描述。

   下面把第1个图片的局部提出来,并加上标注,供网友们参考:


热门招聘
相关主题

官方公众号

智造工程师