引用<winter938 >的内容:
“在PLSY指令的驱动条件OFF时正在输出的脉冲串又是以什么状态结束的?”
-------------------------------------------------
<Wanggq>回复:
在不同系列的PLC上,这个问题的答案是不同的。
在FX2n上,当“PLSY指令”的驱动条件OFF时,正在输出的脉冲串嘎然而止!并不保证其正在输出中的一个脉冲达到标准脉宽。
在FX1s或FX1n上,脉冲的输出,是一份一份的进行的。当“PLSY指令”的驱动条件出现OFF(准确的说,是驱动条件的“下降沿”)时,正在输出中的“方波”(这里我用“方波”的概念来替代“脉冲串”更加准确一些)必须保证正在执行的一份“方波”后面再追加一份“前瞻预备份”完整执行后才停止输出。倘若在“PLSY指令”执行前,对应的“脉冲输出禁止”位已经置为ON,则不须追加“前瞻预备份”,但也必须待正在执行中的一份“方波”完整执行后才能停止输出。
相关链接: 《关于plsy指令的一个问题》
引用 < xitonghua >网友的内容:
“为什么给 x002一个上升沿脉冲时,y001会输出两次?”
------------------------------------------------------------
< xitonghua >网友的意思是问:用X002的上升沿操作一次,PLSY指令的执行结果为什么既不是5个“脉冲”,也不是1个“脉冲”?而偏偏是两个“脉冲”(两个周波)。
答案是:
在FX1s或FX1n系列的PLC上,PLSY指令实际是靠“驱动条件的前沿”触发“脉冲输出硬件电路”启动来输出“脉冲”的。如果在触发前对应的“脉冲输出禁止”状态位--M8146或M8145还未置ON,则PLSY指令将赋予“脉冲输出中”标志位--M8148或M8147 之ON的时值为:“( 首份周波数+基本单位周波数) ×周期 ”。在<xitonghua >网友的这个例程中,“首份周波数”等于1 ;“基本单位周波数”也等于1 。所以才是每操作一次X002的上升沿,“脉冲输出”位--Y001就会输出两个“脉冲”(即两个周波)。
<接上一楼的内容>
我们还是以 < PLSY K1 K5 Y001 > 为例,接着讲该指令输出3、或4、或5个周波的情形:
在对应的“脉冲输出禁止”位--M8146一直处于OFF状态下,如果我们设计一个让“驱动条件”在Y01输出方波之第2个周波的时间段里才由ON转为OFF,则M8148之ON的持续时值将“前瞻性”的延长到3个周波末,Y01将输出完整的3个周波;以此类推,当“驱动条件”在Y01输出方波之第4个周波的时间段里才由ON转为OFF,则M8148之ON的持续时值将延长到5个周波末,Y01将输出5个完整的周波。
下面举例设计一个让“驱动条件”之ON持续到Y01输出方波之第2个周波的时间段里才OFF,
使 < PLSY K1 K5 Y01 > 输出3个完整周波的例程片断。
关于<首份脉冲> ( 准确的讲是<首份周波> ) 的概念,我是用它来跟<基本单位周波>这一概念相区别的。
我曾在《关于plsy指令的一个问题》主题下跟帖时贴出过<基本单位脉冲>(即<基本单位周波>)与PLSY指令的“源操作数1”所指定的频率的关系。我把它重新以表格的形式再贴出来:
指定频率(Hz) |
|
基本单位周波数 |
1~1999 |
|
1 |
2000~3000 |
|
2 |
3001~4999 |
|
4 |
5000~8998 |
|
8 |
8999~16999 |
|
16 |
17000~32976 |
|
32 |
32977~65040 |
|
64 |
65041~100000 |
|
128 |
<接楼上的内容>
现在揭示这个表格所列举的一组数据的规律:
第3列的数据减去第4列数据,其差都是“32”。这就是指定频率“ 32767 Hz ”所对应的“基本单位份”的周波数--32个周波。
第3列的数据减去一个“基本单位份周波数”--“32”,其差为“首份周波数”,即第4列数据。
当第2列数据--“指定周波总量”等于“基本单位周波数”的整数倍(如表格中染为红色的行所示数据)时,“首份周波数”等于“基本单位份周波数”
当“指定周波总量”不等于“基本单位周波数”的整数倍时,“首份周波数”等于“基本单位份周波数”+“尾数”。(“指定周波总量”>“基本单位周波数”的情形。)
<接楼上的内容>
这里“尾数”是指小于1个“基本单位周波数”的周波量。
我们设“基本单位周波数”为 Q ,“尾数”为 m (m <Q ),则:“首份周波数”= Q + m
在M8145 / M8146 先于(FNC57)脉冲指令之前置为ON 的情形下,若“指定周波总量”<2Q 时,一次“前沿触发”执行量为:全部“指定周波总量”;
若“指定周波总量”= nQ (n ≥ 2)时,一次“前沿触发”执行1个“基本单位周波数”Q ;
若“指定周波总量”= nQ+m (n ≥ 2)时,一次“前沿触发”执行量为:1个“首份周波数”即:Q+m 如表格第4列数据所示。
在“脉冲输出禁止”无效(M8145 / M8146为:OFF)的前提下,若(FNC57)脉冲指令在执行一份输出周波(且其驱动条件的“下降沿”还没有出现)时就已经前瞻性的预备了下一份“基本单位周波”(在指定周波总量范围内,如果还有下一个“基本单位份”的话)。
若“指定周波总量”<2Q 时,一次“前沿触发”执行量为:全部“指定周波总量”;
若“指定周波总量”= nQ (n ≥ 2)时,一次“前沿触发”执行2个“基本单位周波”--2Q;
若“指定周波总量”= nQ+m (n ≥ 2)时,一次“前沿触发”执行量为:“首份周波数”加“基本单位周波数”即:Q+m+Q =2Q+m 如表格第3列数据所示。