用PLSY指令控制.docx
- 文档编号:26298912
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:45.22KB
用PLSY指令控制.docx
《用PLSY指令控制.docx》由会员分享,可在线阅读,更多相关《用PLSY指令控制.docx(21页珍藏版)》请在冰豆网上搜索。
用PLSY指令控制
用plc控制两台伺服做两轴控制 用PLSY指令控制步进电机
实际上德国人有更好的办法,就是用真正的光学绝对值码盘的绝对值编码器,并同时输出正余弦信号,其绝对值信号也是用通讯形式输出,例如海德汉的EnDat,或STEGMANN的Hipeface,其时钟频率可在1MHz以上,虽然绝对值信号输出,仍然要编码-解码,速度快了,响应一样跟不上,但是不要忘了,其是真正光学刻线的绝对值,其响应不上并不丢脉冲。
并不影响精度,而只是滞后,这时,其同时输出的正余弦信号就有用了,既可以作为速度反馈(即时的),也可以作为高速定位的冗余,此高速定位是减速,等速度下来,仍然由高精度绝对信号定位停车,从而做到高速高精度。
用这种方法,编码器是贵了,但运动控制卡的成本就可以下来,这的确是种好方法,可惜,国内做运动控制的,基本是跟着日本人走,还很少有人认识到这种方法。
三菱PLC的PLSY指令我想实现步进电机旋转60°我这样写对不对PLSYk3000k240y3步进电机的步距角是0.9不对的
首先对脉冲输出仅限于y000或y001也就是说不能指定y003
一个脉冲是赚一个步距角吗
plsyk3000k66y000
PLSYK3000K1548Y3
步距0.9的
Y0和Y1同时输出PLSY指令是可以的(其实也不是同时,因为你得分别写两条这个指令,所以只能说是在同一扫描周期内执行而已.姑且认为是同时吧)
如下:
LDX0
PLSYK1000K2000Y0
PLSYK1000K2000Y1
Y0和Y1的高速输出标志各是各的,不会互相影响.
不可以同时执行同一个输出点的两条PLSY指令.
首先用MT晶体管系列的,
其次,最好不用PLSY指令,使用DIVR指令,可重复使用.
对于脉冲输出来控制伺服电机,台达PLC完全可以胜任,而且已经有很多实际应用,PLSY/PLSR指令是脉冲输出控制指令,DRVI/DRVA/ZRN是专门定位指令,还有PWM脉宽调制指令都可以使用,其中PLSY是直接脉冲输出,PLSR是可以设置加减速时间脉冲输出指令.
前几日改造设备,原设备用的PLC是三菱FX1N的,运动机构用的是安川的伺服电机。
原程序中控制电机发脉冲的指令为PLSY,起初我没有在意,就没有换用别的指令,但是当我在触摸屏上加上显示伺服当前位置时,发现了问题。
显示伺服电机通过丝杠带动的工作台的当前位置,我用了PLC自带的D8140寄存器中的数值除以变比得到,但当我实际调试时,才发现,电机正转,该值增加,没有错,但当电机反转,工作台往回走时,显示值还是增加,这时我的头就大了,这样根本就不能真实的显示工作台的位置了呀。
但是我以前做过类似的系统,显示的没有错啊!
我冷静的思考比较了一下,想到应该是PLSY这条指令的问题。
想到这,我换用了DRVA指令,结果一调试,这回没有错了。
后来我想到,D8140中存放的是PLC发送的脉冲数,而PLSY指令发送脉冲只有正值,没有负值,电机旋转方向是靠控制电机正反转来决定的。
而DRVA指令控制电机的正反转不是人为定义的,而是靠给定的脉冲值,这时脉冲值是有正负的,所以D8140中的脉冲数会相应的增加或减少,这时想在屏幕上监视的结果才出来了。
用PLSY指令控制步进电机
经常看到有的工控朋友问起用PLC控制步进马达的问题,在这里我举个最简单的例子,只能提供思路,更深入的研究就靠大家自己了。
如图所示:
1、2为步进电机驱动器的电源 3为控制电源正极 4为脉冲输入 5为方向控制
步进电机的步距角为1.8度,驱动器有细分的功能,考虑到精度和速度的问题,我们选用了半步运行的方式。
丝杆的螺距为5mm,即步进电机旋转一周,它所拖动的工件移动5个mm,PLC则输出400个脉冲,即每毫米需要输出80个脉冲。
5号脚高电平则电机正转,反之亦反。
设计的要求是这样的:
在人机界面上输入工件要到的位置(以mm为单位),输入完成后工件自动运行到指定位置停下。
如果设定的位置大于实际的位置,则工件正向运转到位,反之亦反。
D200:
人机界面输入的工件要求位置
D202:
工件的实际位置
D204:
实际位置与设定位置之差值
程序如下:
LDD>D200D202
DSUBPD200D202D204 ;将差值送到D204
SETY2 ;如果设定值大于实际值则正转
LDD<=D200D202
DSUBPD202D200D204 ;将差值送到D204
RSTY2 ;如果设定值小于实际值则反转
LDD<>D200D202 ;设定值与实际值不等
PLSM0
ANIM0
DPLSYK1000K206Y0 ;以1000赫兹的频率输出脉冲所需的脉冲数
LDM0
DMULD204K80D206 ;所需输出的脉冲数
LDM8029
DADDPD202D204D202 ;脉冲输出完成后实际位置与设定位置一样
END
这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。
看在同行的份上,大家不要扔臭鸡蛋哦。
楼主应该没有考虑进PLC的刷新速度吧
由PLC直接产生脉冲来控制步进电机可以有效地简化系统的硬件电路,进一步提高可靠性。
由于PLC是以循环扫描方式工作,其扫描周期一般在几毫秒至几十毫秒之间,因此受到PLC工作方式的限制以及扫描周期的影响,步进电机不能在高频下工作。
例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。
则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。
若控制步进电机的脉冲频率为100HZ,则脉冲周期为10毫秒,与PLC的扫描周期约处于同一数量级,步进电机运行时亦可能会产生较大的误差。
因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。
TO myrandge:
你的考虑是正确的,很多时候我们都要考虑到PLC的扫描周期对程序的影响,但是这个程序不是你想象的那样的,因为这段程序执行的时候是以中断的方式执行的,就是说脉冲的处理与PLC的扫描周期并没有关系,以这种方式输出脉冲时,FX2N最高可以到20KHz,好象FX1S的可以更高。
希望大家多交流。
楼主你好:
发脉冲可以达到20KHZ是没错的,三菱PLC上的说明书也确实是这样写的,但是,就那个文章中所说,你发的脉冲并不全用在控制步进电机了,会产生失步的.
PLSY指令发连续脉冲是不受扫描速度的影响的,但是如果发出的脉冲去控制步进电机,就如文章中所说,是要受扫描速度的影响的,文章不是我写的,我对这方面也不懂,所以,请问,楼主如果你有现在有条件的话,去试验下,因为我没有这方面的条件.
另外,请教楼主的是,你刚才说的中断方式是否是指PLSY的自身的发脉冲方式?
还是楼主你编写的程序是用到了中断指令?
多谢指教,谢谢!
还请问楼主,DPLSYK1000K206Y0;以1000赫兹的频率输出脉冲所需的脉冲数LDDMULD204K80D206;所需输出的脉冲数LDM8029你这里的M8029在程序里起了什么作用呢?
为什么这里你加了M8029而不是其他呢?
请楼主指点,谢谢!
TO:
myrandge
PLSY指令发送脉冲去控制步进电机,不会有失步,因为使用PLSY指令,当扫描到PLSY指令时,输出端子会立刻输出脉冲信号,而并不是等到程序扫描到END时,才会输出脉冲信号。
其实这段程序是我以前做过的一个项目里面的一段,刚开始的时候不是用的脉冲指令,而是用的一个计时器指令产生脉冲:
ld m8000
ani t246
out t246 k0
刚开始程序不长的时候,效果和PLSY差不多,后来程序不断的完善,也越来越长,这段指令就不行了,因为扫描周期变大,使得脉冲输出周期也越来越大,对步进电机的速度影响很大,所以就改成PLSY了。
M1026和M1029只是一个标志信号而已,编写程序时,根据自己的需要,如果需要用到M1026和M1029作为条件时,就可以将M1026或者M1029作为条件编写到PLC程序中,如果不需要就不用便写到程序中。
正如lesing.du所说的那样,就看你的需要了。
作为我的这段程序来说,因为我要在屏子上显示实际的位置所以,就需要在脉冲输出完成后马上将数据处理好并将数据传到触摸屏上,因此就用了M8029。
正如你所说的那样,定时器发脉冲是要受到PLC扫描周期的影响的,我记得当时我做这个程序的时候,刚开始是单轴的,工艺也比较简单,所以就用了定时器。
后来到了双轴了,工艺也复杂了,这种方式就不行了。
尽管T246的时基是1ms的,但是这种方式发脉冲时,他是要程序处理后才发脉冲,就是说程序每扫描一次就执行一次,这样的话,步数多了速度就不行了。
当然,也可以做定时中断处理。
但这样也有误差,累积误差还很大。
这段程序其实有个缺点:
当工作台移动的时候,屏幕上的工作实际位置值(D202)并没有随着工作台的移动而改变,它只是在工作台移动完成后才变为实际位置值。
好比现在工作台的实际位置为200,要求位置是300,当工作台移动的时候,实际值(200)并没有随着工作台的移动而201,202……的增加,而是工作台移动到300的位置后直接变为300,因此这段程序不能实时的反映工作台的移动情况。
为了克服这种情况,我将程序做了部分的修改,更新如下:
D200:
人机界面输入的工件要求位置
D202:
工件的实际位置
D204:
工件的实际位置(做转换用)
D206:
实际位置变化值
程序如下:
LDD> D200 D202
OUT M10
DSUBP D200 D202 D204 ;将差值送到D204
SET Y2 ;如果设定值大于实际值则正转
LDD<= D200 D202
OUT M11
DSUBP D202 D200 D204 ;将差值送到D204
RST Y2 ;如果设定值小于实际值则反转
LD M10
OR M11 ;设定值与实际值不等
PLS M0
ANI M0
DPLSY K1000 K0 Y0 ;以1000赫兹的频率不间断输出脉冲
DDIV D8140 K80 D206 ;脉冲数折算成毫米
LD M0
MOV D202 D204 ;实际位置值送到D204
LD M10
ADD D204 D206 D202 ;增加的毫米数实时传到D202(工作台实际位置)
LD M11
SUB D204 D206 D202 ;减少的毫米数实时传到D202(工作台实际位置)
LD M8029
DMOV K0 D8140 ;脉冲输出完成后给脉冲计数器清零
FX2N发脉冲时有一个最大的缺点,那就是脉冲计数器D8140,不论电机是正转还是反转,始终处于增加的状态,也就是说你无法知道电机的当前位置,如果单纯用于控制步进电机或伺服建议还是选用FX1S或FX1N而且价格也要比FX2N便宜。
但FX1S和FX1N没有浮点运算功能,在精密计算时,很可能会丢步。
步进电机产生丢步的原因不是因为PLC的PLSY指令或DDIVR等脉冲指令本身所引起的,其实PLC都有把脉冲发完,只是因为步进电机采用的是开环控制,当马达在运转过程中遇到阻挡的时候,步进马达会出现“打滑”的现象,也就是所谓的“丢步”,大家用同样的指令去驱动伺服电机就可以看出,如果马达运转过程中有阻挡,伺服还会一直的往前冲,甚至会出现异常的响声,直到达到所设定位置才肯真正的停止下来,如果伺服所带负载的弹性过高的话,甚至都有可能出现“共振”的现象,这也是所有初学伺服时容易产生的“盲区”,建议大家初学时一定要注意,如果是步进的话就无所谓了,顶多走不到位罢了,不至于出现什么事故!
FX2NPLC没有定位指令,
只能有PLSY,PLSR脉冲输出指令,如何实现搜寻原点呢
我是这样做的ldm10andix0plsrk1000k100k50y0
x0原点信号
还有其它好的方法吗?
哈哈。
搞的差不多了
我是这样用的
ldm10andix0plsrk1000k100k50y0
ldpx0movk0d8140
求助:
FX1S脉冲Y0输出控制伺服,停止问题!
arden建议删除该贴!
!
|收藏|回复
|修改
|2007-12-0716:
09:
07楼主PLC型号为FX1S-10MT;伺服系统为MR-J2S-40A+HC-KFS43;用X0启动发脉冲给伺服控制器PLSYK25000D0Y0,寄存器D0中的值是K10000,要求在伺服电机转动过程中(脉冲没有发完)遇到一传感器信号X1时,伺服电机再转一个设定的角度后停止,要求伺服电机从启动到停止中途不能有停顿,请各位高手帮忙参考,谢谢!
请教三菱变成高手,帮忙看看一下程序,谢谢!
接线方法如下:
X0:
脉冲启动信号
X1:
检测目标传感器信号
X2:
接Y0输出信号,用C237作高速计数器
Y0:
接伺服电机
下面的程序我在低速时可以运行,但是在PLSYK25000K10000Y000时却不行,定时器T0根本就做不到,请高手指教,
EI
LDX000
PLSYK2500K10000Y000
LDM0
OUTT0K10
OUTC237K400
LDT0
RSTM0
LDC237
OUTM8145
LDFX000
RSTC237
FEND
I101
LDM8000
SETM0
IRET
END
引用|回复
|管理
|设为最佳回复
|2007-12-1313:
29:
004楼流逝泉检测目标传感器信号接通后将D8140清零,然后当d8140等于设定脉冲后断开PLSY指令
就发脉冲给伺服就可以了,伺服可以设置多少个脉冲转一圈。
步进电机才有步距角,伺服一般叫脉冲当量。
控制步进电机,一般的用晶体管输出的就可以,三菱的fx2n能控制两台,fx3u能控制3台步进电机,如果不够,或要求稍微高一点,可一追加fx2n-1pg脉冲输出模块,成本稍高,最准确最好的定位单元是fx2n-10GM,fx2n-20GM后者可实现直线插补.但定位单元也是最贵的
在编程时,按份脉冲数减500个左右,或者说在快到位置的时间停下来。
然后以极低的速度爬行到光电开关处停止。
相当于回原点方式。
这个问题不是没有写,可能是大家觉没有必要写吧!
用过几次步进电机的人都知道步进电机是靠脉冲控制进行角位移的,大家的想法都差不多,如果你使用步进电机带动丝杆使滑块来回移动,你应该在滑块的前后终点位置安装感应器。
感应器一般用光电的吧带槽的那种。
你可以写段程序确认步进电机是否在原点上,没有的话让步进电机做回走的动作,速度可以慢点,如果你用三菱的话用这个指令plsy。
具体是这样的plsyk500k0y0
因为参数中用了k0所以马达会一直走下去,除非前面的条件不导通。
你必须在前面加一个感应器导通的条件。
感应器导通的时候让它停下来。
具体做的时候可能比我说的要复杂些。
用plc控制两台伺服做两轴控制 用PLSY指令控制步进电机
(2011-10-0819:
46:
16)
转载▼
标签:
杂谈
分类:
智能建筑PLC自动化控制理
实际上德国人有更好的办法,就是用真正的光学绝对值码盘的绝对值编码器,并同时输出正余弦信号,其绝对值信号也是用通讯形式输出,例如海德汉的EnDat,或STEGMANN的Hipeface,其时钟频率可在1MHz以上,虽然绝对值信号输出,仍然要编码-解码,速度快了,响应一样跟不上,但是不要忘了,其是真正光学刻线的绝对值,其响应不上并不丢脉冲。
并不影响精度,而只是滞后,这时,其同时输出的正余弦信号就有用了,既可以作为速度反馈(即时的),也可以作为高速定位的冗余,此高速定位是减速,等速度下来,仍然由高精度绝对信号定位停车,从而做到高速高精度。
用这种方法,编码器是贵了,但运动控制卡的成本就可以下来,这的确是种好方法,可惜,国内做运动控制的,基本是跟着日本人走,还很少有人认识到这种方法。
三菱PLC的PLSY指令我想实现步进电机旋转60°我这样写对不对PLSYk3000k240y3步进电机的步距角是0.9不对的
首先对脉冲输出仅限于y000或y001也就是说不能指定y003
一个脉冲是赚一个步距角吗
plsyk3000k66y000
PLSYK3000K1548Y3
步距0.9的
Y0和Y1同时输出PLSY指令是可以的(其实也不是同时,因为你得分别写两条这个指令,所以只能说是在同一扫描周期内执行而已.姑且认为是同时吧)
如下:
LDX0
PLSYK1000K2000Y0
PLSYK1000K2000Y1
Y0和Y1的高速输出标志各是各的,不会互相影响.
不可以同时执行同一个输出点的两条PLSY指令.
首先用MT晶体管系列的,
其次,最好不用PLSY指令,使用DIVR指令,可重复使用.
对于脉冲输出来控制伺服电机,台达PLC完全可以胜任,而且已经有很多实际应用,PLSY/PLSR指令是脉冲输出控制指令,DRVI/DRVA/ZRN是专门定位指令,还有PWM脉宽调制指令都可以使用,其中PLSY是直接脉冲输出,PLSR是可以设置加减速时间脉冲输出指令.
前几日改造设备,原设备用的PLC是三菱FX1N的,运动机构用的是安川的伺服电机。
原程序中控制电机发脉冲的指令为PLSY,起初我没有在意,就没有换用别的指令,但是当我在触摸屏上加上显示伺服当前位置时,发现了问题。
显示伺服电机通过丝杠带动的工作台的当前位置,我用了PLC自带的D8140寄存器中的数值除以变比得到,但当我实际调试时,才发现,电机正转,该值增加,没有错,但当电机反转,工作台往回走时,显示值还是增加,这时我的头就大了,这样根本就不能真实的显示工作台的位置了呀。
但是我以前做过类似的系统,显示的没有错啊!
我冷静的思考比较了一下,想到应该是PLSY这条指令的问题。
想到这,我换用了DRVA指令,结果一调试,这回没有错了。
后来我想到,D8140中存放的是PLC发送的脉冲数,而PLSY指令发送脉冲只有正值,没有负值,电机旋转方向是靠控制电机正反转来决定的。
而DRVA指令控制电机的正反转不是人为定义的,而是靠给定的脉冲值,这时脉冲值是有正负的,所以D8140中的脉冲数会相应的增加或减少,这时想在屏幕上监视的结果才出来了。
用PLSY指令控制步进电机
经常看到有的工控朋友问起用PLC控制步进马达的问题,在这里我举个最简单的例子,只能提供思路,更深入的研究就靠大家自己了。
如图所示:
1、2为步进电机驱动器的电源 3为控制电源正极 4为脉冲输入 5为方向控制
步进电机的步距角为1.8度,驱动器有细分的功能,考虑到精度和速度的问题,我们选用了半步运行的方式。
丝杆的螺距为5mm,即步进电机旋转一周,它所拖动的工件移动5个mm,PLC则输出400个脉冲,即每毫米需要输出80个脉冲。
5号脚高电平则电机正转,反之亦反。
设计的要求是这样的:
在人机界面上输入工件要到的位置(以mm为单位),输入完成后工件自动运行到指定位置停下。
如果设定的位置大于实际的位置,则工件正向运转到位,反之亦反。
D200:
人机界面输入的工件要求位置
D202:
工件的实际位置
D204:
实际位置与设定位置之差值
程序如下:
LDD>D200D202
DSUBPD200D202D204 ;将差值送到D204
SETY2 ;如果设定值大于实际值则正转
LDD<=D200D202
DSUBPD202D200D204 ;将差值送到D204
RSTY2 ;如果设定值小于实际值则反转
LDD<>D200D202 ;设定值与实际值不等
PLSM0
ANIM0
DPLSYK1000K206Y0 ;以1000赫兹的频率输出脉冲所需的脉冲数
LDM0
DMULD204K80D206 ;所需输出的脉冲数
LDM8029
DADDPD202D204D202 ;脉冲输出完成后实际位置与设定位置一样
END
这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。
看在同行的份上,大家不要扔臭鸡蛋哦。
楼主应该没有考虑进PLC的刷新速度吧
由PLC直接产生脉冲来控制步进电机可以有效地简化系统的硬件电路,进一步提高可靠性。
由于PLC是以循环扫描方式工作,其扫描周期一般在几毫秒至几十毫秒之间,因此受到PLC工作方式的限制以及扫描周期的影响,步进电机不能在高频下工作。
例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。
则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。
若控制步进电机的脉冲频率为100HZ,则脉冲周期为10毫秒,与PLC的扫描周期约处于同一数量级,步进电机运行时亦可能会产生较大的误差。
因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。
TO myrandge:
你的考虑是正确的,很多时候我们都要考虑到PLC的扫描周期对程序的影响,但是这个程序不是你想象的那样的,因为这段程序执行的时候是以中断的方式执行的,就是说脉冲的处理与PLC的扫描周期并没有关系,以这种方式输出脉冲时,FX2N最高可以到20KHz,好象FX1S的可以更高。
希望大家多交流。
楼主你好:
发脉冲可以达到20KHZ是没错的,三菱PLC上的说明书也确实是这样写的,但是,就那个文章中所说,你发的脉冲并不全用在控制步进电机了,会产生失步的.
PLSY指令发连续脉冲是不受扫描速度的影响的,但是如果发出的脉冲去控制步进电机,就
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLSY 指令 控制
![提示](https://static.bdocx.com/images/bang_tan.gif)