⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tip022.ob1

📁 西门子 PLC S7-200用Q0.0的输出脉冲触发步进电机驱动器的应用程序源代码
💻 OB1
字号:
// Tip022B
// 题目:用集成脉冲输出触发步进电机驱动器

//***概述***

// CPU214有两个脉冲输出,可以用来产生控制步进电机驱动器的脉冲。功率驱
//动器将控制脉冲按照某种模式转换成步进电机线圈的电流,产生旋转磁场,使得
//转子只能按固定的步数(步数a)来改变它的位置。连续的脉冲序列产生与其对应
//的同频率(同步机)步序列。如果控制频率足够高,步进电机的转动可看作一个
//连续的转动。
//本例叙述用Q0.0的输出脉冲触发步进电机驱动器。当输入端I1.0发出"START"信号后,
//控制器将输出固定数目的方波脉冲,使步进电机按对应的步数转动。当输入端I1.1
//发出“STOP”信号后,步进电机停止转动。接在输入端I1.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. 选择旋转方向
//  用接在输入端I1.5的开关来选择转动方向。如果I1.5=1,将输出Q0.2置成高电位
//那么电机逆时针转动。如果I1.5=0,将输出Q0.2置成低电位,那么电机顺时针转动。
//为保护电机避免漏步,电机转动方向的改变只能在电机处于停止状态(M0.1=0)时
//进行。

// 3. 起动电机
// 起动电机的三个条件如下:
//        (1) 按"START"(起动)按钮,在输入端I1.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"按钮,在输入端I1.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"(停止)按钮(I1.1)之后,必须规定驱动器连锁(或称
//阻塞),将联锁标志M0.2置位(M0.2=1),立即关断驱动器。只有在M0.2复位,(M0.2=0)后,才能
//重新起动电机。当"STOP"按钮松开后,为防止电机的意外起动,只有在“START”(I1.0)和
//"STOP"按钮(I1.1)都松开后,才能将M0.2复位(M0.2=0),如果要再次起动电机,则必须再发出
//一个起动信号。

// 6.程序清单
//本程序长度为64个字

//标题:驱动器功能测试



NETWORK 1//***主程序***
LD     SM0.1				// 仅首次扫描周期SM0.1置位(SM0.1=1)
MOVW   +500, SMW68			// 输出脉冲周期为500微秒
MOVW   +0, SMW70			// 脉宽为0(脉宽调制)
MOVD   +40000, SMD72			// 输出40000个脉冲
ATCH   0, 19				// 把中断程序0分配给中断事件19(PLS0
                                    // 脉冲输出结束)
ENI					// 允许中断

NETWORK 2	// 设置转动方向
LDN    M0.1				// 若电机处于停止状态,
					
A      I1.5				// 且转向开关置于1
S      Q0.2, 1			// 则逆时针转动(Q0.2=1)

NETWORK 3
LDN    M0.1				// 若电机处于停止状态,
					
AN     I1.5				// 且转向开关置于0
R      Q0.2, 1			// 则顺时针转动(Q0.2=0)

NETWORK 4	//联锁
LD     I1.1				// 若按"STOP"(停止)按钮
S      M0.2, 1			// 则联锁有效(M0.2=1)

NETWORK 5	// 解除联锁
LDN    I1.0				// 若"START"(起动) 按钮松开
AN     I1.1				// 且"STOP"(停止)按钮松开,
R      M0.2, 1			// 则解除联锁

NETWORK 6	// 起动电机
LD     I1.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 7	//停止电机
LD     I1.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无脉冲

NETWORK 8	// 主程序结束
MEND				

NETWORK 9	//***中断程序0***

INT    0				

NETWORK 10	
LD     SM0.0				
R      M0.1, 1			// 电机运行标志M0.1复位(M0.1=0)

NETWORK 11	// 中断程序0结束
RETI					

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -