① 三菱PLC控制步进电机的最简单的程序
M206:正转
M207:反转
Y0:脉冲输出
Y1:反转信号
D4200:频率(用于控制速度,数据来源于触摸屏)
K99999999:脉冲数量
K100:加速时间
向左转|向右转
如图,这个就是一个步进电机的正反转的运行,Y0接步进驱动器的脉冲,Y1接步进驱动器的方向,M0为ON时正转,M1为ON时反转,D0是脉冲的频率,D1是脉冲的个数。
移动速度和脉冲频率有关,在细分数一定的条件下,频率越高速度越快,行走的距离和脉冲个数有关,脉冲个数越多,行走距离越长,(在三菱这个指令中,脉冲个数为0时,是一直运行,相当于无限个数),具体的移动速度和行走距离得根据你的设置(频率,细分数,脉冲个数等)和硬件(包括步进电机的步距角,丝杆的丝距,齿轮组的齿轮比,齿轮带的传送比等)来调节。
② 步进电机怎么编写控制程序
步进电机编程一般有几点。细分数,结构比例,加速度,减速度。最大频率限值,最小起跳频率。
1:原点。
2:速度,距离(相对位置,绝对位置)。速度模式
3:停止。等待
如果多轴的或开关,传感器比较多的位置控制就比较复杂了。有很多变量和跳转。这取决于控制器功能和底层程序开发和运用。
根据你问的情况,应该是写上层程序。中层都已经做好了,写程序需要对使用的芯片和代码非常熟悉,逻辑关系比较了解,运动结构也有一定的认知。
③ 三菱 步进电机 PLC编程
PLC控制步进电机的实例(图与程序)
④ 姹傚ぇ绁炲府蹇欑紪鍐欏崟鐗囨満鎺у埗姝ヨ繘鐢垫満C璇瑷缂栫▼锛屽浘鐗囧備笅锛孉T89C51鍗曠墖鏈哄洓鐩稿叓鎷嶏紝ULN2004椹卞姩鑺鐗
#include "reg52.h"
//Motor
sbit A = P2^0; //瀹氫箟绠¤剼
sbit b = P2^1;
sbit C = P2^2;
sbit D = P2^3;
///////////////////////////////////////
//姝ヨ繘鐢垫満椹卞姩
unsigned char MotorStep=0;
unsigned int MotorTimer = 0;
unsigned int MotorDelay,Speed=1,TIM,CT;
#define speed 8 // 璋冩暣閫熷害 鏁板间笉瑕佽剧殑澶浣 浣庝簡浼氬紩璧烽渿鍔ㄣ
/*****************************************************
* 鍒濆嬪寲椹杈 *
******************************************************/
void InitMotor()
{
A = 1;
b = 1;
C = 1;
D = 1;
}
void SetMotor()
{
// if(Speed == 0) return;
MotorDelay=Speed; //璋冩暣閫熷害
switch(MotorStep)
{
case 0:
if(TIM) // A
{
A = 0; //0xf1
b = 1;
C = 1;
D = 1;
MotorStep = 1;
TIM=0;
}
break;
case 1: // AB
if(TIM)
{
A = 0; //0xf3
b = 0;
C = 1;
D = 1;
MotorStep = 2;
TIM=0;
}
break;
case 2: //B
if(TIM)
{
A = 1;
b = 0; //0xf2
C = 1;
D = 1;
MotorStep = 3;
TIM=0;
}
break;
case 3: //BC
if(TIM)
{
A = 1;
b = 0; //0xf6
C = 0;
D = 1;
MotorStep = 4;
TIM=0;
}
break;
case 4: //C
if(TIM)
{
A = 1;
b = 1; //0xf4
C = 0;
D = 1;
MotorStep = 5;
TIM=0;
}
break;
case 5: //CD
if(TIM)
{
A = 1;
b = 1; //0xfc
C = 0;
D = 0;
MotorStep = 6;
TIM=0;
}
break;
case 6: //D
if(TIM)
{
A = 1;
b = 1; //0xf8
C = 1;
D = 0;
MotorStep = 7;
TIM=0;
}
break;
case 7: //DA
if(TIM)
{
A = 0;
b = 1; //0xf9
C = 1;
D = 0;
MotorStep = 0;
TIM=0;
}
break;
}
}
void system_Ini()
{
TMOD|= 0x11;
TH0=0xDC; //11.0592M
TL0=0x00;
IE = 0x8A;
TR0 = 1;
}
main()
{ system_Ini();
InitMotor();
while(1)
{
SetMotor();
}
}
/************************************************
* *
* 瀹氭椂涓鏂寤舵椂 *
************************************************/
void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;
if( CT++==speed)
{TIM=1;
CT=0;
}
}
⑤ 璁╂ヨ繘鐢垫満涓鐩磋浆鎬庝箞缂栫▼
鎺у埗鍦ㄥ洓鐩哥粫缁勪笂杈撳叆鑴夊啿鐨勯『搴忥紝灏卞彲浠ユ帶鍒剁數鏈虹殑姝h浆/鍙嶈浆(鎺у埗寤舵椂灏辫兘鎺у埗杞閫)銆傛ヨ繘鐢垫満姝e弽杞鎺у埗鏂瑰紡锛
姝ヨ繘鐢垫満鏈夊洓鐩哥粫缁凙銆丅銆丆銆丏锛屽綋涓缁曠粍閫氱數鏃跺湪鐢靛姩鏈哄唴閮ㄥ舰鎴怤锛峉鏋侊紝浜х敓纾佸満锛屽綋閫氱數鐨勭浉鍙戠敓鍙樺寲锛岀佸満鍙戠敓鏃嬭浆锛屽湪纾佸満鐨勪綔鐢ㄤ笅锛岃浆瀛愬皢杞鍔锛岃嫢姝ヨ繘鐢垫満鎸夊弻鍥涙媿鐨勬柟寮忔潵宸ヤ綔銆
鍦ˋ銆丅銆丆銆丏鍥涚浉缁曠粍涓婅緭鍏ヨ剦鍐茬殑椤哄簭涓篈B鈫払C鈫扖D鈫扗A鈫扐B锛屾ヨ繘鐢垫満娌块『鏃堕拡鏂瑰悜杞鍔锛屽嵆姝h浆锛涜嫢鍦ˋ銆丅銆丆銆丏鍥涚浉缁曠粍涓婁緷娆¤緭鍏ヨ剦鍐睞B鈫扗A鈫扖D鈫払C鈫扐B锛涙ヨ繘鐢垫満灏嗘部閫嗘椂閽堟柟鍚戞棆杞锛屽嵆鍙嶈浆銆
⑥ 给位大神,控制步进电机自动工作,不用plc和单片机。最好用电脑控制或者控制器。该如何控制,如何编程
这个问题好解决,可以使用表控TPC8-8TD的控制器来控制步进电机,特点就是简单、易行。使用表格设置方式,用鼠标在表格上设置,无需专业技术。这个型号的表控是8路输入8路输出的,具有4路脉冲输出端,最多可以同时控制4个步进电机。还有个特点是:不仅可以控制步进电机,还可以同时控制气缸、交流电机等更多的负载同时工作。
下图是功能设置表的图片:
上图是控制单台步进电机的接线示意图,表控由Y1输出脉冲信号,由Y输出方向信号到步进电机驱动器。还有2轴和4轴的接线图这里从略,需要的可以到网上下载。
⑦ 步进电机怎么编程
不知道你是为什么要做这个,如果你是学生的话,那你应该正在学这个,怎么能说什么都不懂呢,如果你是工作党,这就是你的工作,你不懂说不过去吧。
这是plc控制步进电机,是在plc编程软件里写程序,也不知道你要用什么plc,不同的plc,编程方法不同,主流就是日系的三菱,欧系的西门子,还有国产的台达,若是你plc都不知道,那就不用急着编程了,先去了解plc吧,学点东西对你有帮助,你可以去技成看看它的plc视频,先把门入了再说!
⑧ 用c语言程序实现步进电机的正反转加减速的编程
内容:1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/
#include <reg52.h>
bit Flag;//定义正反转标志位
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
unsigned char i;
EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开
while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);
Flag=!Flag; //s3按下触发一次,标志位取反
}