经常看到有的工控朋友问起用PLC控制步进马达的问题,在这里我举个最简单的例子,只能提供思路,更深入的研究就靠大家自己了。
如图所示:1、2为步进电机驱动器的电源 3为控制电源正极 4为脉冲输入 5为方向控制 步进电机的步距角为1.8度,驱动器有细分的功能,考虑到精度和速度的问题,我们选用了半步运行的方式。丝杆的螺距为5mm,即步进电机旋转一周,它所拖动的工件移动5个mm,PLC则输出400个脉冲,即每毫米需要输出80个脉冲。5号脚高电平则电机正转,反之亦反。 设计的要求是这样的:在人机界面上输入工件要到的位置(以mm为单位),输入完成后工件自动运行到指定位置停下。如果设定的位置大于实际的位置,则工件正向运转到位,反之亦反。 D200:人机界面输入的工件要求位置 D202:工件的实际位置 D204:实际位置与设定位置之差值 程序如下: LDD> D200 D202 DSUBP D200 D202 D204 ;将差值送到D204 SET Y2 ;如果设定值大于实际值则正转 LDD<= D200 D202 DSUBP D202 D200 D204 ;将差值送到D204 RST Y2 ;如果设定值小于实际值则反转 LDD<> D200 D202 ;设定值与实际值不等 PLS M0 ANI M0 DPLSY K1000 K206 Y0 ;以1000赫兹的频率输出脉冲所需的脉冲数 LD M0 DMUL D204 K80 D206 ;所需输出的脉冲数 LD M8029 DADDP D202 D204 D202 ;脉冲输出完成后实际位置与设定位置一样 END 这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。看在同行的份上,大家不要扔臭鸡蛋哦。
还要注意一下: 这段程序其实有个缺点:当工作台移动的时候,屏幕上的工作实际位置值(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 ;脉冲输出完成后给脉冲计数器清零 END
|