步进电机的程序该怎么写

步进电机的程序该怎么写,第1张

我没有写过PLC的,只写过单片机的哦...你网上搜下,蛮多的,主要是理解了就好...步进嘛,就是你给它一个突变的信号,它就走一步的,不然就不叫步进撒...也就是你触发它一下,它跑一步,且只跑一步的哦...懂了吧?

内容: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=0i<4i++) //4相

{

P1=F_Rotation[i] //输出对应的相 可以自行换成反转表格

Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag)

{

P0=0x7C//显示 b 标示反转

for(i=0i<4i++) //4相

{

P1=B_Rotation[i] //输出对应的相

Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

}

/******************************************************************/

/* 中断入口函数 */

/******************************************************************/

void ISR_Key(void) interrupt 2 using 1

{

Delay(300)

Flag=!Flag//s3按下触发一次,标志位取反

}

西门子S7-200PLC高速计数器的使用方法(一)

本程序皆经过本人上机测试正常后发出;本意是能让PLC初学者迅速掌握西门子S7-200PLC高速计数器的基本使用方法,所以程序尽量加以简化,以便大家学习;同时也希望能起到抛砖引玉的效果,多得到PLC高人的指点,使自己有更多的领悟,结识更多的朋友、导师。

程序通过先设定计数器的值,本例中设定值为13;按设备启动按钮I0.1启动设备,运行后通过信号输入点I0.0进行计数,当计数当前值等于设定值13时,输出点断开,设备运行停止。I0.2为设备停止按钮。

程序如下:

LD SM0.1

MOVB 16#C8, SMB37

HDEF 0, 0

MOVD +0, SMD38

HSC0

上述程序注解:(1)对高数记数器HSC0初始化,写入控制字节(16#C8含义为:要求进行初始值设定;不装入预设值;运 行中不要求更改计数方向;计数器类型为增。)

(2)执行HDEF指令,进行高速计数器工作模式的选定设置(计数器为HSC0;模式为0)

(3)初始值设定:装载高数记数器初始值为0

(4)执行HSC指令,写入HSC0设置。

LDNM14.0

EU

MOVB 16#C8, SMB37

MOVD +0, SMD38

HSC0

上述程序注解:当记速值达到要求值时,M14.0复位,高速计数器计数将复位为初始值,以备下次计数使用。

LDD< HC0, +13

= M14.0

上述程序注解:当计数器值小于13 时,M14.0始终处于置位状态。

LD I0.1

O Q0.0

AN I0.2

A M14.0

= Q0.0

上述程序注解:I0.1为设备启动信号;I0.1为设备停止信号。高速计数器累计值达到13 时,设备运行停止。

西门子S7-200PLC高速计数器的使用方法(二)

本例程序设计的背景:(中断单点控制)

程序是通过一个板材自动定长剪切设备工作程序简单设计进行高数计数器和中断指令的使用。

工作要求为:启动设备,料滚电机工作带动板材进行送料,同时由计数器记录长度脉冲信号,当达到脉 冲预设值时,即板材设定长度时,中断指令发信号,停止料滚电机工作,执行压料、裁 剪,裁剪完成后,压料阀和料剪同时复位,料滚电机工作,进行下一次裁剪,周而复始。

程序拓展:可根据实际需要设计成钢板的定长裁剪;或流量的控制。

通过本程序学习,可加深高数计数器指令和中断指令的使用了解。I0.0为计数脉冲输入点。

主程序:

Network 1 // 开机调用子程序,进行高数记速器的参数设定

LD SM0.0

CALL SBR0

Network 2 // 送料电机启动控制

LD I1.1

O T39

S Q0.0, 1

Network 3 // 送料电机停止控制

LD I1.0

R Q0.0, 3

Network 4 // 压紧时间设置

LD Q0.1

TONT37, 15

Network 5

LD T37

S Q0.2, 1

Network 6 // 剪裁时间设置

LD Q0.2

TONT38, 10

Network 7 // 压板、裁刀复位时间设定

LD T38

LD M0.0

AN T39

OLD

R Q0.1, 1

TONT39, 20

= M0.0

R Q0.2, 1

Network 8 // 程序调试计数器运行检测;实际中可删除。

LD SM0.0

MOVD HC0, VD30

子例行程序及注解:

第一条为设定高数计数器参数:16#E8=11101000。含义是:启用计数器;可更新当前值即SMD38;允许更新设定值即SMD42;不更改计数方向。

LD SM0.1

MOVB 16#E8, SMB37 设定高数计数器参数;

MOVD +0, SMD38设定当前值SMD38=0

MOVD +20, SMD42 设定预装值SMD42=20

HDEF 0, 0 选用0#记速器连接12号中断事件

ATCH INT0, 12

ENI 开中断;

HSC0 开启0#计速器

中断例行程序注解:

LD SM0.0

R Q0.0, 1 中断执行,Q0.0失电料滚停转

MOVB 16#E8, SMB37 重新设置高数计数器控制参数SMB37

MOVD 0, SMD38 清空高数计数器当前值SMD38。

HSC0 执行高数计数器指令HSC0。

S Q0.1, 1 中断执行,压板控制得电工作开始。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/11906188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存