西门子S7-200smart PLC运动控制 二轴,高速脉冲控制步进电机或者伺服电机,触摸屏控制,可以设置绝对位置,触摸屏通讯,实时显示当前位置 实例,程序,案例 触摸屏型号MT6070IH ,

刚接了个小项目,客户要搞个二轴物料搬运平台。手头正好有台S7-200smart SR40和MT6070IH触摸屏,这组合搞运动控制挺合适。直接上干货,说说怎么用高速脉冲带伺服,顺便把触摸屏交互做明白。

先看PLC的硬件配置。SR40自带两个100kHz高速脉冲输出口,刚好带两个伺服轴。记得在块里把Q0.0和Q0.1的输出类型改成PTO,否则脉冲出不来。运动控制向导必须走一波,生成轴控制子程序:

//轴参数初始化
AXIS0_CTRL(
    EN:=True,
    MODE:=1,       //绝对定位模式
    STOP:=M0.2,    //急停信号
    Done=>M0.3,    //完成标志
    Error=>VB100); //错误代码

这里有个坑要注意,伺服驱动器的电子齿轮比要和PLC侧的脉冲当量匹配。比如丝杆导程5mm,电机转一圈需要10000脉冲,那每个脉冲对应0.0005mm。把这些参数填到向导里,后面编程直接按毫米操作。

触摸屏这边,用EasyBuilder Pro开新工程。通讯参数设置最关键,MT6070IH走的是RS485,PLC的PORT0口接上,波特率设成187.5k才跑得稳。地址映射这块,触摸屏的数值输入框直接绑定VD200(轴1目标位置)和VD204(轴2目标位置),实时显示用VW210和VW214。

移动控制的关键程序长这样:

//轴1绝对定位
AXIS0_GOTO(
    POSITION:=VD200,  //目标位置
    SPEED:=500,       //脉冲频率
    MODE:=0,          //绝对移动
    START:=M0.0,      //启动信号
    Done=>M0.1,       //完成信号
    Error=>VB101);

调试时发现个有意思的现象:伺服偶尔会过冲。后来发现是加减速参数没设好。在运动向导里把S曲线加速度改成30%后,运动平滑多了。顺手在触摸屏做了个加速度参数设置框,绑定到VD208,程序里改成:

MOVR   VD208, AC0
/R     100.0, AC0    //将百分比转换为小数
MOVR   AC0, SMB158   //写入加速度参数寄存器

实时位置显示用了高速计数器。S7-200smart的HSC0和HSC3对应Q0.0和Q0.1的脉冲反馈。配置完记得在中断程序里更新V存储区:

//HSC0中断服务程序
MOVD   HC0, VD210    //轴1当前位置
MOVD   HC3, VD214    //轴2当前位置

最后在触摸屏画了个简易示教界面,加了三个功能键:手动前进、示教点保存、一键回原点。调试时发现手动模式按下没反应,查了半天原来是PLC里的手动程序没做互锁。加了个状态切换的互锁逻辑:

LD     M10.0         //自动模式标志
AN     M10.1         //手动模式标志
=      M10.2         //模式互锁标志

现在设备跑得挺溜,客户验收时非要测试连续运行8小时。结果中途出现过一次位置偏移,查到最后是伺服电机刹车电阻发热导致。这事提醒我,下次做长时间运行的设备得把刹车电阻外置,或者改用机械抱闸。

整个项目下来,最大的收获是运动控制不仅要程序写对,还得吃透硬件特性。特别是脉冲当量和机械结构的配合,差之毫厘谬以千里。源码已经整理成库文件,下次类似项目直接调用能省不少事。

最近在车间折腾了一套西门子S7-200smart PLC的运动控制,正好用到了MT6070IH触摸屏做交互界面。这套两轴控制方案实测能稳定驱动步进电机和伺服电机,关键是可以玩绝对定位控制,咱们直接上干货。

硬件配置其实挺简单,PLC的Q0.0和Q0.1口输出高速脉冲,分别接X/Y轴驱动器。注意在驱动器侧要把脉冲模式调成"脉冲+方向",这时候PLC的Q0.2和Q0.3正好作为方向信号输出。触摸屏通过RS485接口和PLC通讯,波特率建议设成19200比较稳。

PLC程序里重点用PTO向导生成两个轴的脉冲控制模块。配置轴参数时有个细节容易翻车:脉冲当量要按实际机械结构计算。比如丝杆导程5mm,驱动器细分设为10000脉冲/转,那每毫米对应2000个脉冲。这里直接贴段关键代码:

// 轴1初始化
MOV_B 16#8D, SMB67  // 允许PTO操作,选择毫秒时基
MOV_W 500, SMW168   // 周期时间500ms
MOV_D 5000, SMD172  // 初始脉冲数
PLS 0               // 激活PTO0

这段配置让轴1以500ms周期发送5000个脉冲,实际使用时要根据运动速度换算。触摸屏开发这边,用EBPro新建工程时记得选西门子PPI协议。在画面上拖两个数值输入框,变量分别绑定到VD100和VD104(对应轴1和轴2的目标位置)。

实时显示当前位置有个小技巧:在PLC里用HC0和HC1高速计数器捕捉实际脉冲数,然后通过比例换算成工程单位。触摸屏上显示控件绑定VW200和VW204这两个寄存器,PLC程序里要定期执行:

// 位置反馈处理
MOV_D HC0, VD200     // 读取轴1实际脉冲数
DIV VD200, 2000.0    // 换算为毫米单位
ROUND VD200, VD200   // 取整数部分

调试时容易遇到方向信号混乱的问题,有个应急办法是在方向输出口并接LED指示灯,肉眼确认电机转向是否符合预期。当触摸屏发送绝对位置指令时,PLC需要先判断当前位置与目标位置的关系来决定方向信号状态,这部分的逻辑处理可以封装成子程序:

// 绝对位置运动判断
LDW>= VD100, VD200   // 比较目标位置和当前位置
= Q0.2               // 方向信号输出

这套方案经过48小时连续跑机测试,累计发送超过200万次脉冲指令没有出现丢步现象。关键点在于中断处理程序的优化,建议在PTO完成中断里加入位置校验和异常报警功能。实际工程文件已经上传到GitHub(地址私信),包含完整的注释说明和触摸屏界面源文件。
西门子S7-200smart PLC运动控制 二轴,高速脉冲控制步进电机或者伺服电机,触摸屏控制,可以设置绝对位置,触摸屏通讯,实时显示当前位置 实例,程序,案例 触摸屏型号MT6070IH ,

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐