西门子200系列PLC直流步进电机控制方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直流步进电机plc控制方法
系统功能概述:
本系统采用PLC通过步进电机驱动模块控制步进电机运动。
当按下归零按键时,电机1和电机2回到零点(零点由传感器指示)。
当按下第一个电机运行按键时,第一个电机开始运行,直到运行完固定步数或到遇到零点停止。
当按下第二个电机运行按键时,第二个电机开始运行,运行完固定步数或遇到零点停止。
两电机均设置为按一次按键后方向反向。
电机运行时有升降速过程。
PLC输入点I0.0为归零按键,I0.1为第一个电机运行按键,I0.2为第二个电机运行按键,I0.3为第一个电机传感器信号反馈按键,I0.4为第二个电机传感器信号反馈按键。
PLC输出点Q0.0为第一个电机脉冲输出点,Q0.1为第二个电机脉冲输出点,Q0.2为第一个电机方向控制点,Q0.3为第二个电机方向控制点,Q0.4为电机使能控制点。
所用器材:
PLC:西门子S7-224xpcn及USB下载电缆。
编程及仿真用软件为V4.0 STEP 7 MicroWIN SP3。
直流步进电机2个,微步电机驱动模块2个。
按键3个。
24V开关电源一个。
导线若干。
各模块连接方法:
PLC与步进电机驱动模块的连接:
驱动模块中EN+、DIR+、CP+口均先接3k电阻,然后接24V 电源。
第一个驱动模块CP-接PLC的Q0.0,DIR-接PLC的Q0.2,EN-接PLC的Q0.4
第二个驱动模块CP-接PLC的Q0.1,DIR-接PLC的Q0.3,EN-接PLC的Q0.4
注意:
1、PLC输出时电压为24V,故和驱动器模块连接时,接了3k 电阻限流。
2、由于PLC处于PTO模式下只有在输出电流大于140mA时,才能正确的输出脉冲,故在输出端和地间接了200欧/2w下拉电阻,来产生此电流。
(实验室用的电阻功率不足,用200欧电阻时功率至少在24*24/200=2.88w,即用3w的电阻)
3、PLC与驱动模块连接时,当PLC输出低电平时不能将驱动模块电平拉低,故在EN-和DIR-上接了200欧/2W下拉电阻
驱动模块与电机接法:
驱动模块的输出端分别与电机4根线连接
电机传感器与PLC连接:
传感器电源接24v,信号线经过240欧电阻(试验中两个470电阻并联得到)与24v电源上拉后,信号线接到PLC的I0.3和I0.4
将各模块电源、地线接好。
PLC中输入输出各路M对应点均接地,
L+对应点均要接24V电源。
注意PLC右下角24V DC OUTPUT不
要接。
PLC程序介绍:
PLC程序中主要使用向导生成的电机控制函数来控制电机运动。
此向导使用方法如下:
首先打开软件,新建工程,选择工具->位置控制向导…,如下图
打开如下界面:选择配置s7-200PLC内置PTO/PWM操作,点击下一步,如下图
根据需要选择Q0.0或Q0.1,点击下一步,如下图
选择线性脉冲串输出(PTO),将下方使用高速计数器HSC0前的勾点上,点击下一步,如下图
输入电机此应用项目中最高电机速度(MAX_SPEED)和电机的启动/停止速度(SS_SPEED),默认是100000和5000,修改好了点击
下一步,如下图
输入电机加速和减速时间。
默认均为1000ms。
点击下一步,如下图
然后出现如下界面,选择新包络。
选项中可以选择相对位置和单速连续旋转,由于步进电机有加减速过程,故选择相对位置。
输入步0的目标速度,即运动时的限速,在下方的框中输入结束位置,由于是相对位置,故此处位置即为所要走的距离。
电机绘制包络,右方出现的梯形的图即为速度线。
改变左
下角的保罗定义符号名为MOTOR1,点击确认,
然后选择V存储区的地址范围,一般默认即可,点击下一步
点击完成。
这样,通过位置控制向导就生成了4个PTO函数,分别是
PTOx_CTRL、PTOx_RUN、PTOx_MAN、PTOx_LDPOS。
PTOx_CTRL子程序(控制)使能和初始化步进电机或伺服电机的PTO输出。
在程序中仅能使用该子程序一次,并保证每个扫描周期该子程序都被执行。
一直使用SM0.0作为EN输入的输入。
I_STOP(立即STOP)输入量为一个布尔量输入。
当输入为低电平时,PTO功能正常操作。
当输入变为高电平时,PTO立即终止脉冲输出。
D_STOP(减速STOP)输入量为一个布尔量输入。
当输入为低电平时,PTO功能正常操作。
当输入变为高电平时,PTO产生一个脉冲串将电机减速到停止。
DONE输出是一个布尔量输出。
高电平表示CPU已经执行完子程序。
当Done位为高电平时,Error字节以一个无错误代码或错误代码来报告是否正常完成。
若在向导中启用了HSC,则C_Pos参数包含以脉冲数表示的模块当前位置。
否则,当前位置将一直为0
PTOx_RUN子程序(运行包络)命令PLC在一个制定的保罗中执行运动操作,此包络存储在组态/包络表中。
接通EN位,使能该子程序。
确保EN位保持接通,直至Done 位指示该子程序完成。
接通START参数以初始化包络的执行。
对于每次扫描,当START参数接通且PTO当前未激活时,指令激活PTO。
要保证该
命令只发一次,使用边沿检测命令以脉冲触发START参数接通。
接通参数Abort,命令位控模块停止当前的包络,并减速直至电机停下。
PTOx_MAN子程序(手动模式)使PTO置为手动模式。
这可以是
电机在向导中制定的范围内以不同的速度启动、停止和运行。
如果启用了PTOx_MAN子程序,则不应执行其他任何PTOx_RUN指令。
允许RUN参数,命令PTO加速到指定速度。
即使电机在运行时,也可改变速度参数的值。
禁止参数RUN择命令PTO减速,直
至电机停止。
PTOx_LDPOS指令(装载位置)改变PTO脉冲计数器的当前位置
值为一个心智。
可以通过该指令为一个运动命令建立一个新的零位置。
本系统将电机1的PTO设置为Q0.0输出,使用高速计数器HSC0,最高电机速度2000HZ,启动/停止速度100HZ,加速500ms,减速500ms,步0的目标速度2000HZ,总位移8000脉冲,分配存储区为VB0到VB69。
可得到PTO0的包络表如下所示:
//----------------------------------------------------------------
//输出Q0.0 的PTO 包络表
//----------------------------------------------------------------
VB0 'PTOA' //
VW4 54 //FREQ
VD6 204800 //SS_SPEED
VD10 4096000 //MAX_SPEED
VD14 16#04000939 //K_ACC
VD18 16#84FFF6C7 //K_DEC
VB22 1 //NUMPROF
VW23 25 //OFFS_0
VB25 4 //包络0 的NUM_SEGS VB26 0 //保留。
VB27 0 //段0 的S_STEP
VB28 16#08 //S_PROP
VD29 +204800 //SFREQ
VD33 525 //加速的脉冲数VB37 0 //段1 的S_STEP VB38 16#04 //S_PROP
VD39 +4098089 //SFREQ
VD43 6948 //恒速的脉冲数
VB47 0 //段2 的S_STEP VB48 16#00 //S_PROP
VD49 -1 //SFREQ
VD53 526 //减速的脉冲数VB57 0 //段3 的S_STEP VB58 16#10 //S_PROP
VD59 +204800 //SFREQ
VD63 1 //最终减速的脉冲数
VB67 0 //保留。
VB68 0 //保留。
VB69 0 //保留。
由上表可知加速脉冲数为75057,存于VD33中。
恒速脉冲为49881,存于VD43中。
减速脉冲为75061,存于VD53中。
最终的减速的脉冲数为1,存于VD63中。
我们控制步进电机可以通过PTOx_CTRL和PTOx_RUN两个子程序。
电机控制过程中,加减速脉冲数不方便修改,因为线性加减速的指令并不清楚,所以只好修改恒速段的脉冲数。
唯一的限制是,总的脉冲数,必须大于加减速段+最终减速段脉冲数之和,也即恒速段的脉冲
不能小于1。
此处总的脉冲数,最小值应为525+526+1+1=1053个脉冲。
当然电机加减速时间如果较小,此脉冲数会变小。
电机2的PTO设置为Q0.1输出,使用高速计数器HSC3,最高电机速度20000HZ,启动/停止速度100HZ,加速500ms,减速500ms,步0的目标速度2000HZ,总位移10000脉冲,分配存储区为VB70到VB139。
可得到PTO0的包络表如下所示:
//----------------------------------------------------------------
//输出Q0.1 的PTO 包络表
//----------------------------------------------------------------
VB70 'PTOA' //
VW74 54 //FREQ
VD76 204800 //SS_SPEED VD80 40960000 //MAX_SPEED VD84 16#03000C13 //K_ACC
VD88 16#83FFF3ED //K_DEC VB92 1 //NUMPROF
VW93 25 //OFFS_0
VB95 4 //包络0 的NUM_SEGS VB96 0 //保留。
VB97 0 //段0 的S_STEP
VB98 16#08 //S_PROP
VD99 +204800 //SFREQ
VD103 100 //加速的脉冲数
VB107 0 //段1 的S_STEP
VB108 16#04 //S_PROP
VD109 +4111824 //SFREQ
VD113 9797 //恒速的脉冲数VB117 0 //段2 的S_STEP VB118 16#00 //S_PROP
VD119 -1 //SFREQ
VD123 102 //减速的脉冲数
VB127 0 //段3 的S_STEP VB128 16#10 //S_PROP
VD129 +204800 //SFREQ
VD133 1 //最终减速的脉冲数VB137 0 //保留。
VB138 0 //保留。
VB139 0 //保留。
电机1和电机2参数可根据实际需要修改。
使用步骤:
(1)在启动PTO0_RUN之前,计算出恒速段的脉冲数=目标脉数数-加减速脉冲数之和-1,填入包络表中的恒速位置;此系统中电机1恒速脉冲保存在VD43,电机2恒速脉冲数保存在VD113中。
(2)启动PTO0_RUN。
具体程序见附件中步进电机PLC控制.xps
程序流程图如下:。