西门子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小时。结果中途出现过一次位置偏移,查到最后是伺服电机刹车电阻发热导致。这事提醒我,下次做长时间运行的设备得把刹车电阻外置,或者改用机械抱闸。

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐