引用<winter938 >的内容:
“在PLSY指令的驱动条件OFF时正在输出的脉冲串又是以什么状态结束的?”
-------------------------------------------------
<Wanggq>回复:
在不同系列的PLC上,这个问题的答案是不同的。
在FX2n上,当“PLSY指令”的驱动条件OFF时,正在输出的脉冲串嘎然而止!并不保证其正在输出中的一个脉冲达到标准脉宽。
在FX1s或FX1n上,脉冲的输出,是一份一份的进行的。当“PLSY指令”的驱动条件出现OFF(准确的说,是驱动条件的“下降沿”)时,正在输出中的“方波”(这里我用“方波”的概念来替代“脉冲串”更加准确一些)必须保证正在执行的一份“方波”后面再追加一份“前瞻预备份”完整执行后才停止输出。倘若在“PLSY指令”执行前,对应的“脉冲输出禁止”位已经置为ON,则不须追加“前瞻预备份”,但也必须待正在执行中的一份“方波”完整执行后才能停止输出。
相关链接: 《关于plsy指令的一个问题》
由于抽时间去整理<王林海>网友贴出来显示不清楚的图片信息,耽搁了回复<winter938 >在第15楼提的问题。
引用<winter938 >网友的内容:
“ 如果频率高得以上规律输出的脉冲在不到一个扫描周期就输出完成,但此时边沿检测尚未完成PLC会怎样处理呢?
是就这样处理并立即置位M8147/8还是输出PLSY指令的脉冲数并立即置位M8147/8?
比如 PLSY K32767 K300 Y001
在扫描周期10毫秒的程序中边沿驱动该指令时输出多少个脉冲?
( 300/32=9.....12 首份 32 + 12 = 44 基本份 32 * 7 = 224 前瞻预备份 32
按以上规律可能输出44或76个脉冲,我的这个理解对吗?是否PLC会输出300个脉冲并立即置位M8148 ? ) ”
-----------------------------------------------
<Wanggq>回复:
例程片断: PLSY K32767 K300 Y001
“驱动条件”的“上升沿”在程序运行中的有效时间是1个扫描周期,若考虑到程序较长,譬如扫描周期为10毫秒,则这个驱动条件的“上升沿脉冲”的“后沿”将在从触发“脉冲输出硬件电路”的时刻算起经10毫秒时值之后才会出现。这相当于“驱动条件”持续驱动该“PLSY指令”10个毫秒的时间。在这段时间里,“脉冲输出硬件电路”早已将S2所指定的周波总量全部输出!
所以,正确答案是:在扫描周期为10毫秒的程序中,边沿驱动该指令时,每触发一次就输出300个脉冲。
“ 我想问PLC在什么时候装载前瞻的脉冲。比如说第 n 次的前瞻。”
<Wanggq> 回复:
在M8145 / 6 为OFF的前提下,若“脉冲输出硬件电路”的工作进行到第“n-1”份周波的时刻“驱动条件的下降沿”还没有被程序扫描到,则:立即追加第 n 份周波的预备份额到 M8147 / 8 之ON 时值中(当然是预先于第 n 份周波的执行周期),当“脉冲输出硬件电路”的工作进行到第 n 份周波的时刻又立即追加第“n+1”份周波的预备份(如果S2所指定的周波总量中有第“n+1”份的话)。
关于这个问题,好像在《关于plsy指令的问题》主题下第26个回帖中我做过类似的回复:
“ 如果“执行条件”(X02)在Y01输出第2个脉冲(包括脉冲前的空隔)时才由ON转为OFF,则M8148之ON的持续时间将“前瞻性”的延长到3个脉冲周期,Y01将输出3个脉冲;以此类推,当“执行条件”(X02)在Y01输出第4个脉冲(包括脉冲前的空隔)时才由ON转为OFF,则M8148之ON的持续时间将延长到5个脉冲周期,Y01将输出5个脉冲。 ”
(当时是针对“ LDP X02 PLSY K1 K5 Y001 ”这个片断来讲的)
关于“时刻”的“归属”很容易产生歧义。譬如:今天凌晨,时钟的时针、分针、秒针正好走到“12点”标准位置,这一时刻,既是今天(19 号)的“零点”,又是昨日(18 号)的“24点”。所以,这一“时刻”既可以归属于7月19日,又可以归属于7月18日!
为了规避“歧义”,同时也是考虑到规避PLC的时钟误差,我们在实验中计算时可以考虑在“时刻”的概念上加一个很小的时间长度来区分“时刻”的归属。
譬如:第 n 份周波与第 n+1 份周波的分界点(时刻),把这一时刻前0.1mS的时刻粗略的当作第 n 份周波未,而归属于第 n 份周波时值内;把 第 n 份周波与第 n+1 份周波的分界点(时刻)后0.1mS的时刻粗略的当作第n+1份周波始,而归属于第n+1份周波时值内。
在M8145 / 6 为OFF的前提下,若“脉冲输出硬件电路”的工作进行到第“n-1”份周波的时刻“驱动条件的下降沿”还没有被程序扫描到,则:立即追加第 n 份周波的预备份额到 M8147 / 8 之ON 时值中(当然是预先于第 n 份周波的执行周期),如果“驱动条件的下降沿”还未到来,当“脉冲输出硬件电路”的工作进行到第 n 份周波的时刻又立即追加第“n+1”份周波的预备份(如果S2所指定的周波总量中有第“n+1”份的话)。
染为红色的数字序号所在“时刻”为载入对应“追加份额”的时刻。黑色数字序号为对应“追加份额”的编号。
大家注意到没有?在这个例子所指定的时间里,程序片断中“PLSY 指令”只做了1次(驱动条件上升沿出现时的)运算!其运算结果为:启动“脉冲输出硬件电路”;赋给M8148两份周波(“首份”+“预备份”)所需时值;记下本指令输出周波总量所对应的“周波总份数 n ”。而“脉冲输出硬件电路”在运行过程中对M8148所做的 7 次“追加”“基本单位份周波”所需时值,都是“硬件电路”独立于扫描周期之外自行完成的,并没有接受“PLSY 指令”的信息。在下一个扫描周期(驱动条件下降沿的到来时)“PLSY指令”再做“OFF”运算时,“硬件电路”早已于上一周期内完整的把 9 份周波(300个周波)都输出去了!因为指定周波总量输出完成时“PLSY指令”没有再运算,所以“完成标志”M8029没有动作(没有ON),到第2个周期“PLSY指令”再运算时,驱动条件又OFF了,仍然也不能让M8029发生动作。
引用<莫子辰> 的内容:
“现在感觉听起来越来越复杂了?? ”
回复:
如果有看不明白本人对FX1s系列PLC中“脉冲输出指令”相关问题的解答的网友,就请从提出这个问题的帖子看起。
请点击《关于plsy指令的一个问题》从头开始了解。
一样的解释,有的人一点就“通”!有的人要“通”却难上难!
下面引用《关于plsy指令的一个问题》一帖下第44楼的一个回帖:
“解释很清晰,学习中!”