① 三菱 信捷plc如何用编码器控制步进电机
步进电机的话程序上需要写一些运动控制指令。因为步进电机不太好设置的刚好满足你的要求。这个需要专业的人员来处理。
但是如果用伺服电机的话,因为伺服电机自带电子齿轮比,可以调节到和你需要的移动距离一样,那么就可以把编码器的AB相直接进入驱动器。而你PLC要做的只是接受Z脉冲计数(本身PLC能接收的脉冲数频率是有要求的 大约20KHZ左右),Z脉冲是1圈一个,所以转的快一些也能接收。判断满10个脉冲就切换的方向(这里如果驱动器有外部控制端子最好,如果没有,可以通过继电器来切换编码器的AB相的信号来完成,如果是信捷的PLC自带485通讯,也可以选择带通讯的驱动来实现,只要切换参数就可以了)来完成。具体请自行测试,突然想到如果是完整的10圈就切换速度的话 这个方法也挺玄的。只是编程方便罢了。。。。
② 51单片机控制步进电机
这个简单,让我来教楼主怎么玩
首先我说下思路:
我们采用P1口来采集ADC0832的8位数据,用P0.0口控制步进电机动作,利用T0的时间中断来采集P1口的ADC0832数据并做出比较后设置步进电机启动标志位start=1;并设置他的运行频率,当然,楼主没说怎么比较,我这就只是写了个简单的例子,一通百通,希望对你有帮助
下面是程序:
#include <reg51.h> //选用晶振11.0592MHz
unsigned int m=0,n=0; //设置循环的周期
unsigned char start=0,t0temp=0;
sbit Y0=P0^0; //控制步进电机的管脚
delay()
{
unsigned char i,j;
for(i=m;i>0;i--)
for(j=n;i>0;j--);
}
main()
{
//自检测T0时间设置
ET0=1;
TMOD|=0x01;
TH0=0XFC; //1ms中断扫描
TL0=0X66;
IT0=1; //下降沿触发
TR0=0; //关闭扫描
/***********************初始化完毕***********************/
//****************I/O口程序
while(1)
{
while(start)
{
delay();
Y0=~Y0;
}
}
}
void counter1(void) interrupt 1 //T0计时器中断
{
if(t0temp%4)t0temp++; //4ms时间才采集一次P0口的数据
else
{
t0temp++;
//这里就写你怎么做对比的程序,我举个例子
if(P1>150)
{start=1;n=1000;m=0;} //入错采用12M晶振,那这时候控制步进电机的输出周期就是1ms一次,也就是1000HZ
else {start=0;n=0;m=0;}
}
}
//PS:我在输出频率中用了两个全局变量m,n可以延迟很长时间,楼主可以根据需要选用,一般16位的,选用一个就可以了,另一个放弃
OK,至于电路图,我软件没有ADC0832的封装,不然就发给你了,但想来楼主完全就没必要担心,ADC0832的8位数据接到P1口,P0.0控制步进电机启动的三极管,电路图就那么简单!
③ 脉冲数据采集卡是什么卡
脉冲数据采集卡实际上就是 计数器卡 和 编码器输入卡。
编码器输入卡实际上也是计数器卡,所以脉冲数据采集卡就是计数器。
它可以计算 脉冲的个数 从而得到很多有用的信息。
比如说 步进电机 或 伺服电机 转动的时候,电机的编码器反馈出来的信号就是脉冲信号。
我们可以计算 单位时间内的 脉冲数, 从而确定 电机转动的速度。