为什么欧姆龙plc脉冲输出不停止
用户需要把当前脉冲数MOV到另外的寄存器中再中断即可停止。 欧姆龙PLC脉冲输出模式有两种模式,分别是连续模式和独立模式
有连续模式由SPED指令设置输出脉冲频率为0,停止脉冲输出或由动作模式控制INI指令控制脉冲输出停止。
独立模式输出脉冲数目达到设定的脉冲数目时脉冲输出停止,输出脉冲的数目及脉冲频率分别由设置脉冲指令(PULS)及速度输出指令(SPED)设置。
扩展资料:
注意事项:
1、继电器开关动作频率确保低于1800 次/ 小时。
2、保证继电器输出负载电流在规定范围内。 最大开关能力AC250V/2A(Cosφ=1),DC24V/2A(4A 公共)。 最小开关能力DC5V/10mA。
3、继电器输出连接感性负载时,请与负载并联连接浪涌抑制器或二极管。
4、输出接头严禁虚焊和接触不良。往往因接触不良产生的电火花干扰会影响整个电路的正常工作。
5、单机输出公共线只能提供单机使用,多机使用输出部分应单机接,且不可相互连接。
参考资料来源:百度百科-欧姆龙系列PLC原理及应用
参考资料来源:百度百科-脉冲输出
参考资料来源:百度百科-寄存器
你说的没错,就是因为A279里面有值了,所以还在走,因为A279是高位,你是要走200的,本来高位应该是0的,结果高位多了200,那这个值就要比200大很多很多很多了……
为什么A279会有值?会不会是你一开始调试的时候没注意,把值移进D105了呢?这个还真不好说是到底为什么会,最有可能就是你自己移进去的。而且,从你的梯形图来看,如果D105里面是200,那就一直是200了,因为你都没去清空它,你没有清空它或者说你没有移其它数据进去,那它就一直是200了。
你移200进D2用了MOVL是对了,但是你把D2移进D104的时候是用MOV,你没有用MOVL,也就是说你只是把数据移进了D104,而D105你是没有去动它的,所以说你的D105如果是200的话,那你这些指令都没有去改变它。
所以,你可以试一下,把0移进D105去清空它,或者把MOV D2 D104这条指令改成MOVL D2 D104(顺便问一下,为什么有两个MOV D2 D104?是误写的吗?你要么删掉一个,要么改的时候你两个都要改),我想这样应该就没问题了,应该可以停止了。
顺便提一下,你后面那个MOVL &0 D1和MOVL &200 D2,(如果是高手故意这样使用的话,请无视后文)这样是有点问题的,MOV加了个L,变成MOVL,就是长传送了,MOVL &0 D1会用到D1和D2,而MOVL &200 D2会用到D2和D3,你这两个指令会共用一个D2的,数据会乱的,一般我们都不这样用,除非你是故意要这样用的。
INI给脉冲当前值置零的时候是不是默认传8位的,也就是说在我的这个程序里他是把D1、D2的分别传到了A278、A279,所以A279才会是200的,还有就是原来是因为我置零的时候直接用的 INI #1 #2 0 ,但是他没有置零我才用了一个寄存器,我现在想问下, INI #1 #2 0 这条为什么不能置零啊~
我不是很明白你的意思,你程序改了吗?能停止了吗?你这是另外一个问题还是说之前那个问题还没解决,还是停止不了?
INI #1 #2 0是变更当前值,就算你置0了,它也不会停止啊。变更当前值成为0,并不是停止脉冲输出啊。所以说我不是很明白你的意思,但是如果说你是想用INI #1 #2 0来停止是停止不了的,而且它有没有置0,你也看不到啊。
这是个很笼统的提问,可能有多种原因。
指令里有脉冲输出装置,目标脉冲数,,起始速度,目标速度,,加速度,减速度,绝对位置,还是相对位置。
可能是目标脉冲数设置过大,这个值脉冲要发很长时间,还没来得及停下来,可以监控一下值。
可能是脉冲的方向信号错了(脉冲输出点断线),你给的指令没错, 但实际脉冲向相反的方向计数了, 永远达不到你的目标值。
可能是发脉冲前没有回零, PLC寄存器的当前值和你设定的目标值差的多, 当然要发很长时间脉冲,停不下来。
总之,实时监控一下, 问题就能发现。