您的位置:控制工程论坛网论坛 » PLC与PAC » 西门子S7-200在步进电机定位控制中的应用

xiao_xiao1

xiao_xiao1   |   当前状态:离线

总积分:9568  2025年可用积分:0

注册时间: 2008-03-21

最后登录时间: 2012-03-20

空间 发短消息加为好友

西门子S7-200在步进电机定位控制中的应用

xiao_xiao1  发表于 2009/1/16 12:54:06      579 查看 0 回复  [上一主题]  [下一主题]

手机阅读

1  引言


    plc输出的集成脉冲可通过步进电机进行定位控制。关于定位控制,调节和控制操作之间存在一些区别。步进电机不需要连续的位置控制,而在控制操作中得到应用。在以下的程序例子中,借助于cpu214所产生的集成脉冲输出,通过步进电机来实现相对的位置控制。虽然这种类型的定位控制不需要参考点,本例还是粗略地描述了确定参考点的简单步骤。因为实际上它总是相对一根轴确定一个固定的参考点,因此,用户借助于一个输入字节的对偶码(dual coding)给cpu指定定位角度。用户程序根据该码计算出所需的定位步数,再由cpu输出相关个数的控制脉冲。

2  系统结构


    如图1所示。

 

图1     系统结构


3  硬件配置
    如表1所示。

 

 

 

4  软件结构


4.1  plc的输入信号与输出信号
    plc的部分输入信号与输出信号,以及标志位如表2所示。
4.2  系统软件设计
    plc的程序框图如图2所示。

 


4.3  初始化
    在程序的第一个扫描周期(sm0.1=1),初始化重要参数。选择旋转方向和解除联锁。


4.4  设置和取消参考点
    如果还没有确定参考点,那么参考点曲线应从按“start”按扭(i1.0)开始。cpu有可能输出最大数量的控制脉冲。在所需的参考点,按“设置/取消参考点”开关(i1.4)后,首先调用停止电机的子程序。然后,将参考点标志位m0.3置成1,再把新的操作模式“定位控制激活”显示在输出端q1.0。


    如果i1.4的开关已激活,而且“定位控制”也被激活(m0.3=1),则切换到“参考点曲线”参考点曲线。在子程序1中,将m0.3置成0,并取消“定位控制激活”的显示(q1.0=0)。此外,控制还为输出最大数量的控制脉冲做准备。当再次激活i1.4开关,便在两个模式之间切换。如果此信号产生,同时电机在运转,那么电机就自动停止。


    实际上,一个与驱动器连接的参考点开关将代替手动操作切换开关的使用,所以,参考点标志能解决模式切换。


4.5  定位控制
    如果确定了一个参考点(m0.3=1)而且没有联锁,那么就执行相对的定位控制。在子程序2中,控制器从输入字节ibo读出对偶码方式的定位角度后,再存入字节mb11。与此角度有关的脉冲数,根据下面的公式计算:
  n=φ/360°×s
式中:n-控制脉冲数
    φ-旋转角度
    s-每转所需的步数
该程序所使用的步进电机采用半步操作方式(s=1000)。在子程序3中循环计算步数,如果现在按“start”按钮(i1.0),cpu将从输出端q0.0输出所计算的控制脉冲个数,而且电机将根据相应的步数来转动,并在内部将“电机转动”的标志位m0.1置成1。
在完整的脉冲输出之后,执行中断程序0,此程序将m0.1置成0,以便能够再次起动电机。


4.6  停止电机
    按“stop”(停止)按扭(i1.1),可在任何时候停止电机。执行子程序0中与此有关的指令。

5  程序和注释


//标题:用脉冲输出进行定位控制
//主程序
ld       sm0.1  
//仅首次扫描周期sm0.1才为1。
r        m0.0,128              
//md0至md12复位
atch    0,19                  
//把中断程序0分配给中断事件19(脉冲串终止)
eni                             
//允许中断
//脉冲输出功能的初始化
movw    500,smw68          
//脉冲周期t=500us
movw    0,smw70              
//脉冲宽度为0(脉冲调制)
movd    429496700,smd72     
//为参考点设定的最大脉冲数
//设置逆时针旋转
ldn      m0.1        //若电机停止
a         i1.5        //且旋转方向开关=1
s         q0.2,1     //则逆时针旋转(q0.2=1)
//设置顺时针旋转
ldn      m0.1       //若电机停止
an        i1.5       //且旋转方向开关=0
r         q0.2,1    //则逆时针旋转(q0.2=0)
//联锁
ld        i1.1        
//若按“stop”(停止)按钮
s         m0.2,1     //则激活联锁(m0.2=1)
//解除联锁
ldn       i1.1       
//若“start”(启动)按钮松开
an        i1.0                  
//且“stop”(停止)按钮松开
r         m0.2,1       //则解除联锁(m0.2=0)
//确定操作模式(参考点定位控制)
ld        i1.4        
//若按“设置/取消参考点”按钮
eu                     //上升沿
call 1                 //则调用子程序1
//启动电机
ld         i1.0                 
//若按“start”(启动)按钮
eu                      //上升沿
an         m0.1         //且电机停止
an         m0.2         //且无联锁
ad≥       smd72,1   
//且步数≥1,则
movb      16#85,smb67       
//置脉冲输出功能(pto)的控制位
pls         0          //启动脉冲输出(q0.0)
s           m0.1,1             
//“电机运行”标志位置位(m0.1=1)
//定位控制
ld          m0.3               
//若已激活“定位控制” 操作模式
an          m0.1       //且电机停止
call 2                 //则调用子程序2
//停止电机
ld          i1.1                
//若按“stop”(停止)按钮
eu                      //上升沿
a           m0.1       //且电机运行,则
call 0                 //则调用子程序0
mend                  //主程序结束
//子程序1
sbr 0                  //子程序0停止电机
movb       16#cb,smb67    
//激活脉宽调制
pls          0        //停止输出脉冲到q0.0
r            m0.1,1          
//“电机运行”标志位复位(m0.1=0)
ret                  //子程序0结束
sbr1                  
//子程序1,“确定操作模式”
ld           m0.1    //若电机运行
call 0             
//则调用子程序0,停止电机
//申请“参考点曲线”
ld           m0.3   
//若已激活“定位控制”,则
r             m0.3,1           
//参考点标志位;复位(m0.3=0)
r             q1.0,1           
//取消“定位控制激活”信息(q1.0=0)
movd       429496700,smd72  
//为新的“参考点曲线”设定最大的脉冲数。
cret                           
//条件返回到主程序。
//申请“定位控制”
ldn          m0.3      
//若未设置参考点(m0.3=0),则
s             m0.3,1          
//参考点标志位置位(m0.3=1)
s             q1.0,1          
//输出“定位控制激活”信息(q1.0=1)
ret                 //子程序1结束
//子程序2
sbr2             //子程序2,“定位控制”
movb        ib0,mb11        
//把定位角度从ibo拷到md8的最低有效字节mb11。
r             m8.0,24        
//mb8至mb10清零
div           9,md8 
//角度/9=q1+r1
movw        mw8,mw14    
//把r1存入md12
mul          25,md8 
//q1×25→md8
mul          25,md12
div           9,md12        
// r1×25/9= q2+r2
call 3            
//在子程序3中循环步数
movw        0,mw12    //删除r2
+d         md12,md8      
//把步数写入md8
movd      md8,smd72
//把步数传到smd72
ret                //子程序2结束
//子程序3
sbr3            //子程序3,“循环步数”
ldw≥mw12,5  //如果r2≥5/9,则
incw       mw14        //步数增加1。
ret                         
//子程序3结束
//中断程序0,“脉冲输出终止”
int0                      //中断程序0
r            m0.1,1        
//“电机运行”标志位复位(m0.1=0)
ret                      //子程序0结束

6  结束语


    通过对硬件和软件的合理设计,用较为价廉的西门子s7-200系列plc作为核心控制部件,构成的定位系统能够达到精确定位的目的。特别应指出的是通过灵活、巧妙的应用plc的指令系统,可使系统实现高精度定位。


 

1楼 0 0 回复