PLC控制步进电机原理详图
- 格式:doc
- 大小:5.61 MB
- 文档页数:2
PLC控制步进电机的方法步进电机工作原理一、引言微电子技术和计算机技术发展,可编程序控制器有了突飞猛进发展,其功能已远远超出了逻辑控制、顺序控制范围,它与计算机有效结合,可进行模拟量控制,具有远程通信功能等。
有人将其称为现代工业控制三大支柱(即PLC,机器人,CAD/CAM)之一。
目前可编程序控制器(Programmable Controller)简称PLC已广泛应用于冶金、矿业、机械、轻工等领域,为工业自动化提供了有力工具。
二、PLC基本结构PLC采用了典型计算机结构,主要包括CPU、RAM、ROM和输入/输出接口电路等。
把PLC看作一个系统,该系统由输入变量-PLC-输出变量组成,外部各种开关信号、模拟信号、传感器检测信号均作为PLC输入变量,它们经PLC外部端子输入到内部寄存器中,经PLC内部逻辑运算或其它各种运算、处理后送到输出端子,它们是PLC输出变量,由这些输出变量对外围设备进行各种控制。
三、控制方法及研究1、FP1特殊功能简介(1) 脉冲输出FP1输出端Y7可输出脉冲,脉冲频率可软件编程进行调节,其输出频率范围为360Hz~5kHz。
(2) 高速计数器(HSC)FP1内部有高速计数器,可同时输入两路脉冲,最高计数频率为10kHz,计数范围-~+。
(3) 输入延时滤波FP1输入端采用输入延时滤波,可防止因开关机械抖动带来不可靠性,其延时时间可需要进行调节,调节范围为1ms~128ms。
(4) 中断功能FP1中断有两种类型,一种是外部硬中断,一种是内部定时中断。
2、步进电机速度控制FP1有一条SPD0指令,该指令配合HSC和Y7脉冲输出功能可实现速度及位置控制。
速度控制梯形图见图1,控制方式参数见图2,脉冲输出频率设定曲线见图3。
图1 速度控制梯形图图2 控制方式参数东莞市斯泰普机电科技有限公司图3 脉冲输出频率设定曲线3、控制系统程序运行图4 控制系统原理图图4是控制系统原理接线图,图4中Y7输出脉冲作为步进电机时钟脉冲,经驱动器产生节拍脉冲,控制步进电机运转。
PLC如何控制步进电机用三菱PLC的FX1S-14MT以切纸机为例,大致阐述一下PLC控制步进电机的方法。
*PL+,PL-:步进驱动器的脉冲信号端子,*DR+,DR-:步进驱动器的方向信号端子。
为了简单明了地讲明PLC控制步进电机的方法,所以本例一切从简,只画了PLC的脉冲输出端Y0,方向控制端Y2与步进电机驱动器的脉冲信号端子,方向信号端子的接线方式。
PLC输出端的内部结构如上图,其为NPN输出方式。
所以其负载(驱动器的光电三极管)应该接在输出三极管的集电极。
驱动器信号端子的内部结构图如上,其供电电压应该是5V,根据其电流参数计算,24V 供电应该串联了一个2K左右的电阻。
*个人认为24V串联电阻供电方式比5V供电抗干扰性要好,所以宁愿麻烦多串两个电阻。
电气接线为:X0接启动按钮,X1接停止按钮。
X2接切刀位置开关(切刀在下方切纸结束时接通).Y4控制切刀电磁阀。
机械结构大致为:步进电机经过同步带带动压轮(周长40mm),也就是说步进电机转动一圈送纸40mm。
切刀由电磁阀带动(实际应用切刀也用步进电机驱动更理想).根据机械结构与精度要求(误差小于0.1mm),本例将驱动器的设为4细分,也就是驱动器接收到800个脉冲步进电机转一圈,PLC输出一雎龀逅椭?.05mm.程序如下:本程序只为说明控制方法,没有认真考虑工作过程要求,程序严密性定然不够,不具备设计参考价值!第0步:设定基底速度120转/分(一转800个脉冲,1600HZ就是每秒2转),加速时间100ms,最高速度600转/分(一转800个脉冲,8000HZ就是每秒10转)。
HZ(赫兹)是频率单位,每秒PLC输出的脉冲个数。
第20步,22步:启动,停止操作。
T0的延时有防干扰作用,停止按钮(X1)闭合时间不到100毫秒无效。
20步的启动按钮应该再串联一个触点,防止再运行过程中按启动按钮,M0置位。
(懒得改程序了)第26步:按停止按钮不是立刻停止,而是用M1来达到完成一个过程后再停止(送纸后,切刀完成再停止)第29步:本例送纸40mm,送纸电机速度600转/分,送纸结束M8147断开置位M2,开始切纸过程。
plc控制步进电机工作原理PLC控制步进电机的工作原理步进电机是一种按照一定规律逐步转动的电动机,其中每步转动一个固定角度。
PLC(可编程序逻辑控制器)作为一种专门用于自动化控制的电子设备,常被用于控制步进电机,实现精确的位置控制。
步进电机的工作原理如下:首先,步进电机由多个电磁线圈组成,这些线圈的位置决定了电机的转子位置。
当电源施加在电磁线圈上时,线圈会产生磁场吸引或排斥磁性定子,从而使转子沿着一定的角度旋转。
步进电机有两种常见的驱动方式:单相驱动和双相驱动。
在单相驱动的步进电机中,每次只有一个线圈被激活,而在双相驱动的步进电机中,每次有两个线圈被激活。
PLC控制步进电机的工作原理如下:首先,PLC接收到外部的输入信号,例如传感器检测到的位置信息或其他触发信号。
PLC根据这些输入信号来判断步进电机应该转动到的位置。
PLC内部的逻辑控制程序会根据设定的运行模式和算法,生成驱动信号来控制步进电机。
这些驱动信号会通过PLC的输出端口发送给步进电机的驱动电路。
步进电机的驱动电路会根据驱动信号的频率和脉冲宽度来决定电机的转动方式和速度。
通常,每接收到一个驱动信号,步进电机就会转动一个固定的角度。
通过不断发送驱动信号,PLC可以准确地控制步进电机的转动角度和速度,从而实现精确的位置控制。
在实际应用中,PLC控制步进电机通常与其他传感器、开关和执行器等设备配合使用,形成一个自动化系统。
PLC不仅可以控制步进电机的转动,还可以根据不同的需求进行逻辑判断和与其他设备的数据交互,实现更复杂的控制功能。
总结起来,PLC控制步进电机的工作原理是通过接收外部输入信号、根据内部的逻辑控制程序生成驱动信号,控制步进电机的转动角度和速度,从而实现精确的位置控制。
PLC对步进电机的快速精确定位控制(附PLC原程序) 步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号时就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),其旋转以固定的角度运行。
可以通过控制脉冲个数来控制角位移量以达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度而达到调速的目的。
步进电机作为一种控制用的特种电机,因其没有积累误差(精度为100%)而广泛应用于各种开环控制。
1 定位原理及方案1.1 步进电机加减速控制原理步进电机驱动执行机构从一个位置向另一个位置移动时,要经历升速、恒速和减速过程。
当步进电机的运行频率低于其本身起动频率时,可以用运行频率直接起动并以此频率运行,需要停止时,可从运行频率直接降到零速。
当步进电机运行频率fb>fa(有载起动时的起动频率)时,若直接用fb频率起动会造成步进电机失步甚至堵转。
同样在fb频率下突然停止时,由于惯性作用,步进电机会发生过冲,影响定位精度。
如果非常缓慢的升降速,步进电机虽然不会产生失步和过冲现象,但影响了执行机构的工作效率。
所以对步进电机加减速要保证在不失步和过冲前提下,用最快的速度(或最短的时间)移动到指定位置。
步进电机常用的升降频控制方法有2种:直线升降频和指数曲线升降频。
指数曲线法具有较强的跟踪能力,但当速度变化较大时平衡性差。
直线法平稳性好,适用于速度变化较大的快速定位方式。
以恒定的加速度升降,规律简练,用软件实现比较简单,本文即采用此方法。
1.2 定位方案要保证系统的定位精度,脉冲当量即步进电机转一个步距角所移动的距离不能太大,而且步进电机的升降速要缓慢,以防止产生失步或过冲现象。
但这两个因素合在一起带来了一个突出问题:定位时间太长,影响执行机构的工作效率。
因此要获得高的定位速度,同时又要保证定位精度,可以把整个定位过程划分为两个阶段:粗定位阶段和精定位阶段。
粗定位阶段,采用较大的脉冲当量,如0.1mm/步或1mm/步,甚至更高。
PLC如何控制步进电机用三菱PLC的FX1S-14MT以切纸机为例,大致阐述一下PLC控制步进电机的方法。
*PL+,PL-:步进驱动器的脉冲信号端子,*DR+,DR—:步进驱动器的方向信号端子。
为了简单明了地讲明PLC控制步进电机的方法,所以本例一切从简,只画了PLC的脉冲输出端Y0,方向控制端Y2与步进电机驱动器的脉冲信号端子,方向信号端子的接线方式.PLC输出端的内部结构如上图,其为NPN输出方式。
所以其负载(驱动器的光电三极管)应该接在输出三极管的集电极。
驱动器信号端子的内部结构图如上,其供电电压应该是5V,根据其电流参数计算,24V 供电应该串联了一个2K左右的电阻。
*个人认为24V串联电阻供电方式比5V供电抗干扰性要好,所以宁愿麻烦多串两个电阻.电气接线为:X0接启动按钮,X1接停止按钮。
X2接切刀位置开关(切刀在下方切纸结束时接通)。
Y4控制切刀电磁阀。
机械结构大致为:步进电机经过同步带带动压轮(周长40mm),也就是说步进电机转动一圈送纸40mm。
切刀由电磁阀带动(实际应用切刀也用步进电机驱动更理想)。
根据机械结构与精度要求(误差小于0.1mm),本例将驱动器的设为4细分,也就是驱动器接收到800个脉冲步进电机转一圈,PLC输出一雎龀逅椭?。
05mm.程序如下:本程序只为说明控制方法,没有认真考虑工作过程要求,程序严密性定然不够,不具备设计参考价值!第0步:设定基底速度120转/分(一转800个脉冲,1600HZ就是每秒2转),加速时间100ms,最高速度600转/分(一转800个脉冲,8000HZ就是每秒10转)。
HZ(赫兹)是频率单位,每秒PLC输出的脉冲个数。
第20步,22步:启动,停止操作。
T0的延时有防干扰作用,停止按钮(X1)闭合时间不到100毫秒无效。
20步的启动按钮应该再串联一个触点,防止再运行过程中按启动按钮,M0置位。
(懒得改程序了)第26步:按停止按钮不是立刻停止,而是用M1来达到完成一个过程后再停止(送纸后, 切刀完成再停止)第29步:本例送纸40mm,送纸电机速度600转/分,送纸结束M8147断开置位M2,开始切纸过程。
【简要说明】一、尺寸:83mmX50mm X 15mm 长X宽X高二、主要芯片:单片机控制三、工作电压:供电电压直流5~24伏(宽电压工作);四、特点:1、单路信号输出。
2、输出占空比约为百分之五十的方波波形4、输出频率由按键调节,加速减速按键控制5、输出频率范围1~4KHZ(40种脉冲频率调节)6、输出电压(直流5V)7、输出电流225毫安(MAX)8、上升/下降时间100 ns五、有详细使用说明书适用场合:单片机学习、电子竞赛、产品开发、步进电机脉冲信号、毕业设计。
【标注图片】【原理图】/********************************************************************汇诚科技使用芯片:STC15F104E晶振:33MHZ编译环境:Keil作者:zhangxinchun淘宝店:汇诚科技【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*********************************************************************//********************************************************************/#include "reg52.h"#include <intrins.H>#define uchar unsigned char //宏定义字符型变量#define uint unsigned int //宏定义整型变量/********************************************************************寄存器设置*********************************************************************/ sfr IAP_DATA =0xc2; //数据寄存器sfr IAP_ADDRH =0xc3; //地址寄存器sfr IAP_ADDRL =0xc4; //地址寄存器sfr IAP_CMD =0xc5; //命令寄存器sfr IAP_TRIG =0xc6; //触发寄存器sfr IAP_CONTR =0xc7; //擦除寄存器/********************************************************************命令定义*********************************************************************/ #define CMD_IDLE 0 //EEPROM无操作#define CMD_READ 1 //读取字节#define CMD_PROGRAM 2 //写入字节#define CMD_ERASE 3 //擦除字节/********************************************************************编程周期由晶振决定*********************************************************************/ //#define ENABLE_IAP 0X80 //编程周期由晶振决定(如果<30MHZ选用此项)//#define ENABLE_IAP 0X81 //编程周期由晶振决定(如果<24MHZ选用此项)//#define ENABLE_IAP 0X82 //编程周期由晶振决定(如果<20MHZ选用此项) #define ENABLE_IAP 0X83 //编程周期由晶振决定(如果<12MHZ选用此项)//#define ENABLE_IAP 0X84 //编程周期由晶振决定(如果<6MHZ选用此项)//#define ENABLE_IAP 0X85 //编程周期由晶振决定(如果<3MHZ选用此项)//#define ENABLE_IAP 0X86 //编程周期由晶振决定(如果<2MHZ选用此项)//#define ENABLE_IAP 0X87 //编程周期由晶振决定(如果<1MHZ选用此项)#define IAP_ADDRESS 0X0000 //内部EEPROM地址/********************************************************************定义继输入输出*********************************************************************/ sbit JIA=P3^1; //sbit JIAN=P3^0; //sbit EN=P3^2; //sbit P35=P3^5; //bit write=0;/********************************************************************初始定义*********************************************************************/ uint tcnt1; //脉冲计数uint t1;bit write;uchar sudu;/********************************************************************延时100MS函数*********************************************************************/void Delay100ms(){uchar i, j, k;_nop_();i = 5;j = 144;k = 71;do{do{while (--k);} while (--j);} while (--i);}/********************************************************************操作函数*********************************************************************/ void IapIdle(){IAP_CONTR=0;IAP_CMD=0;IAP_TRIG=0;IAP_ADDRH=0X80;IAP_ADDRL=0;}/********************************************************************读取一个字节函数*********************************************************************/ uchar IapReadByte(uint addr){uchar dat;IAP_CONTR=ENABLE_IAP;IAP_CMD=CMD_READ;IAP_ADDRL=addr;IAP_ADDRH=addr>>8;IAP_TRIG=0X5A;IAP_TRIG=0XA5;_nop_();_nop_();_nop_();dat=IAP_DATA;IapIdle();return dat;}/********************************************************************写入一个字节函数*********************************************************************/void IapProgramByte(uint addr,uchar dat){IAP_CONTR=ENABLE_IAP;IAP_CMD=CMD_PROGRAM;IAP_ADDRL=addr;IAP_ADDRH=addr>>8;IAP_DATA=dat;IAP_TRIG=0X5A;IAP_TRIG=0XA5;_nop_();_nop_();_nop_();IapIdle();}/********************************************************************擦除一个字节函数*********************************************************************/void IapEraseSector(uint addr){IAP_CONTR=ENABLE_IAP;IAP_CMD=CMD_ERASE;IAP_ADDRL=addr;IAP_ADDRH=addr>>8;IAP_TRIG=0X5A;IAP_TRIG=0XA5;_nop_();_nop_();_nop_();IapIdle();}/********************************************************************按键判断函数*********************************************************************/void KEY(){if(JIA==0){Delay100ms();if(JIA==0){Delay100ms();sudu++;write=1;if(sudu>=37)sudu=37;while(!JI A);Delay100ms();}}if(JIAN==0){Delay100ms();if(JIAN==0){Delay100ms();sudu--;write=1;if(sudu<=1)sudu=1;while(!JI AN);Delay100ms();}}if(EN==0)TR0=1;else TR0=0;switch(sudu){case 1: t1=1;break;//2K case 2: t1=2;break;//1.6k case 3: t1=3;break;//1.33k case 4: t1=4;break;//2K case 5: t1=5;break;//1.6k case 6: t1=6;break;//1.33k case 7: t1=7;break;//1.14k case 8: t1=8;break;//1k case 9: t1=9;break;// 880 case 10: t1=10;break;// 800 case 11: t1=12;break;// 660 case 12: t1=14;break;// 580 case 13: t1=16;break;// 500 case 14: t1=18;break;// 450 case 15: t1=20;break;// 400 case 16: t1=22;break;// 360 case 17: t1=23;break;// 350 case 18: t1=26;break;// 300 case 19: t1=30;break;// 260 case 20: t1=33;break;// 240 case 21: t1=37;break;// 220 case 22: t1=41;break;// 200 case 23: t1=50;break;// 160 case 24: t1=60;break;// 135 case 25: t1=65;break;// 125 case 26: t1=75;break;// 110 case 27: t1=80;break;// 100 case 28: t1=95;break;// 84 case 29: t1=120;break;//60 case 30: t1=150;break;//50 case 31: t1=300;break;//30 case 32: t1=1000;break;//8 case 33: t1=10000;break;//1 case 34: t1=20000;break;//1 case 35: t1=30000;break;//1 case 36: t1=40000;break;//1 case 37: t1=60000;break;//1default:break;}}/********************************************************************定时中断服务函数*********************************************************************/ void t0(void) interrupt 1 using 0 //定时中断服务函数{tcnt1++;if(tcnt1>=t1){tcnt1=0;P35=!P35;}}/********************************************************************主函数*********************************************************************/ void main(){uchar Q;TMOD=0x02; //定时器工作在方式2TH0=0x06; //对TH0 TL0 赋值TL0=0x06;TR0=0; //关定时ET0=1; //开定时器EA=1; //开总中断P35=0;//脉冲输出脚Q=IapReadByte(0);sudu=Q;while(1){KEY();if(write==1){write=0;IapEraseSector(0); //擦除扇区IapProgramByte(0,sudu); //写入数据}}}/********************************************************************结束*********************************************************************/ 【应用举例】【产品展示】。