求一个pto 和pwm 脉冲输出 程序,学习用 所以麻烦大侠们加上注释,小弟在此先谢谢各位了!
最佳答案
Tip022B
题目:用集成脉冲输出触发步进电机驱动器
***概述***
CPU214有两个脉冲输出,可以用来产生控制步进电机驱动器的脉冲。功率驱
动器将控制脉冲按照某种模式转换成步进电机线圈的电流,产生旋转磁场,使得
转子只能按固定的步数(步数a)来改变它的位置。连续的脉冲序列产生与其对应
的同频率(同步机)步序列。如果控制频率足够高,步进电机的转动可看作一个
连续的转动。
本例叙述用Q0.0的输出脉冲触发步进电机驱动器。当输入端m1.0发出"START"信号后,
控制器将输出固定数目的方波脉冲,使步进电机按对应的步数转动。当输入端m1.1
发出“STOP”信号后,步进电机停止转动。接在输入端m1.5的方向开关位置决定电机
正转或反转。
硬件要求
数量 设备 制造厂/订货号
1 SIMATIC S7-200 CPU-214 SIEMENS/6ES7 214-1AC00-0XB0
1 PC/PPI电缆 SIEMENS/6ES7 901-3BF00-0XA0
1 编程设备或PC
1 带有标准的功率驱动器和相关连接电缆的步进电机
1 用于传输控制信号到功率驱动器的电缆
1 开关
2 按钮
***程序和注释***
1. 初始化
在程序的第一个扫描周期(SM0.1=1),为两种脉冲输出功能(PTO和PTW)选择参
数,本例从中选择了PTO, 并规定了脉冲周期和脉冲数。
2. 选择旋转方向
用接在输入端m1.5的开关来选择转动方向。如果m1.5=1,将输出Q0.2置成高电位
那么电机逆时针转动。如果m1.5=0,将输出Q0.2置成低电位,那么电机顺时针转动。
为保护电机避免漏步,电机转动方向的改变只能在电机处于停止状态(M0.1=0)时
进行。
3. 起动电机
起动电机的三个条件如下:
(1) 按"START"(起动)按钮,在输入端m1.0产生脉冲上升沿(从0升到1);
(2) 无联锁,即联锁标志M0.2=0;
(3) 电机处于停止状态,即操作标志M0.1=0。
如果同时具备上述3个条件,则将M0.1置位(M0.1=1),控制器执行PLS0指令,在输出端
Q0.0输出脉冲,其他必须预先具备的条件,已经在首次扫描(SM0.1=1)设置,主要是脉
冲输出功能的基本数据。例如,时基、周期和脉冲数。这些数据置于相应的属于PTO/PWM的
特殊存储字SMW68,SMW70和SMD72。
4. 停止电机
停止电机的两个条件如下:
(1) 按"STOP"按钮,在输入端m1.1产生脉冲上升沿(从0升到1);
(2) 电机处于运转状态,即操作标志M0.1=1。
如果同时具备上述2个条件,则将标志M0.1复位(M0.1=0),并中断输出端Q0.0的脉冲输出。
这与执行PLS0命令有关,它将脉宽调制(PWM)输出的脉冲宽度减为0(所需的基本设置已在第
一扫描周期中定义了),因而输出信号被抑制。
在完整的脉冲序列输出后,中断程序0将标志M0.1复位(M0.1=0),从而使电机能够重新起动。
5.联锁
为保护人员和设备的安全,再按"STOP"(停止)按钮(m1.1)之后,必须规定驱动器连锁(或称
阻塞),将联锁标志M0.2置位(M0.2=1),立即关断驱动器。只有在M0.2复位,(M0.2=0)后,才能
重新起动电机。当"STOP"按钮松开后,为防止电机的意外起动,只有在“START”(m1.0)和
"STOP"按钮(m1.1)都松开后,才能将M0.2复位(M0.2=0),如果要再次起动电机,则必须再发出
一个起动信号。
6.程序清单
本程序长度为64个字
标题:驱动器功能测试
主程序:
Network 1
LD SM0.1
CALL SBR63
Network 2
LD SM0.0
CALL SBR0
Network 3
LD SM0.0
CALL SBR62
OB(SBR0)
Network 1 // 设置转动方向
LDN M0.1 // 若电机处于停止状态,
A M1.5 // 且转向开关置于1
S Q0.2, 1 // 则逆时针转动(Q0.2=1)
Network 2
LDN M0.1 // 若电机处于停止状态,
AN M1.5 // 且转向开关置于0
R Q0.2, 1 // 则顺时针转动(Q0.2=0)
Network 3 // 联锁
LD M1.1 // 若按"STOP"(停止)按钮
S M0.2, 1 // 则联锁有效(M0.2=1)
Network 4 // 解除联锁
LDN M1.0 // 若"START"(起动) 按钮松开
AN M1.1 // 且"STOP"(停止)按钮松开,
R M0.2, 1 // 则解除联锁
Network 5 // display
// xianshi
//
LD SM0.0
MOVD HC0, VD50
MOTOR(SBR62)
Network 1
LD M1.0
EU
LPS
AD= VD50, 0
MOVD +40000, SMD72 // 输出40000个脉冲
LPP
AD<> VD50, 0
MOVD +40000, AC1
ANDD 16#FFFFFFFF, AC1
MOVD VD50, AC2
-D AC2, AC1
MOVD AC1, SMD72
Network 2 // 网络标题
// 网络注解
LD M1.0 // 若按"START"(起动)按钮
EU // 上升沿
AN M0.2 // 且无联锁
AN M0.1 // 且电机停止 则
MOVB 16#85, SMB67 // 置脉冲输出功能的控制位
PLS 0 // 起动脉冲输出(Q0.0)
S M0.1, 1 // 电机运行标志M0.1置位(M0.1=1)
Network 3
LD M1.1 // 若按"STOP"(停止)按钮,
EU // 上升沿
A M0.1 // 且电机正在转动,则
R M0.1, 1 // 电机运行标志M0.1复位(M0.1=0)
MOVB 16#CB, SMB67 // 置脉冲输出功能的控制位,PWM的脉宽为0
PLS 0 // 输出端Q0.0无脉冲
INI(SBR63)
Network 1 // 网络标题
// 网络注解
LD SM0.0
HDEF 0, 12
MOVB 16#F8, SMB37
MOVD 0, SMD38
MOVD 40000, SMD42
ATCH INT2, 12
ENI
HSC 0
Network 2
LD SM0.0 // 仅首次扫描周期SM0.1置位(SM0.1=1)
MOVW +500, SMW68 // 输出脉冲周期为500微秒
MOVW +0, SMW70 // 脉宽为0(脉宽调制)
ATCH INT0, 19 // 把中断程序0分配给中断事件19(PLS0
// 脉冲输出结束)
ENI // 允许中断
INT_0(INT0)
LD SM0.0
R M0.1, 1 // 电机运行标志M0.1复位(M0.1=0)
INT_2(INT2)
Network 1 // 网络标题
// 网络注解
LD SM0.0
MOVD 0, SMD38
MOVB 16#C0, SMB37
HSC 0
提问者对于答案的评价:
很详细!多谢了!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc358766.html