找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4269|回复: 12

【干货】西门子S7-1200博途用LAD和SCL语言控制步进电机程序...

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24106
发表于 2021-8-18 20:35:27 | 显示全部楼层 |阅读模式
西门子S7-1200PLC控制步进电机的梯形图程序
西门子S7-1200PLC控制步进电机的梯形图程序,也可以用结构化编程的思路来编程。

首先,新建一个FB,编程语言选择LAD(梯形图)。

然后,在FB编程区编写程序段1~19。

程序段1,M1.2为系统存储器始终为1。手/自动开关为1时,自动模式开启;手/自动开关为0时,手动模式开启。

程序段2,M1.2为系统存储器始终为1。启动使能按钮一个上升沿在步进电机未使能时,置位轴使能;启动使能按钮一个上升沿在步进电机已使能时,复位轴使能。

▼ 程序段1、2


程序段3,步进电机启动使能,调用MC_Power指令程序。

程序段4,步进电机点动模式,调用MC_MoveJog指令程序。

▼ 程序段3、4


程序段5,在手动模式下,按复位按钮,复位指令启动。

程序段6,步进电机复位模式,调用MC_Reset指令程序。

程序段7,步进自动转换为手动模式的一个脉冲时,触发暂停模式。

▼程序段5、6、7


程序段8,步进电机暂停模式,调用MC_Halt指令程序。

程序段9,在自动模式下,按复位按钮,回原点指令启动。

▼程序段8、9


程序段10,步进电机回原点模式,调用MC_Home指令程序。

程序段11,在自动模式下,按自动启动按钮,开始执行定位运行。

▼ 程序段10、11


程序段12,步进电机原点OK情况下,确认原点的偏差范围为-0.5~+0.5,则认为是原点位置。确认位置1、2的定位偏差范围为-0.5~+0.5。

▼ 程序段12


程序段13,自动开始启动按钮按下,如在原点位置,则调用15.0的定位速度和位置1的定位位置;如在位置1处,则调用20.0的定位速度和位置2的定位位置;

▼ 程序段13


程序段14,定位1、2的触发,统一为定位触发。

程序段15,绝对定位模式,通过上几步的设置为步进电机进行定位。

▼ 程序段14、15


程序段16,自动指示灯程序。

程序段17,手动指示灯程序。

程序段18,步进电机启动使能程序

程序段19,步进电机使能异常报警程序。

▼程序段16、17、18、19


最后,我们要在主程序块下调用FB程序,直接在项目树中拖过来放开即可,这里要为FB的输入、输出分配好实参地址。

▼ 主程序块调用FB


好了,西门子S7-1200PLC控制步进电机的部分梯形图程序就介绍到这里,实际工程应用大家自行增减。



西门子S7-1200PLC控制步进电机的SCL语言编程

▼ 函数块SCL语言程序


#轴使能启动(Axis:="步进电机",
Enable:=#轴使能_1,
StartMode:=1,
StopMode:=1);
#复位启动(Axis:="步进电机",
Execute:=#手动模式_1 AND #复位按钮);
"回原点启动"(Axis:="步进电机",
Execute:=#自动模式_1 AND #复位按钮,
Position:=0,
Mode:=3);
#点动模式启动(Axis:="步进电机",
JogForward:=#正向点动 AND #手动模式_1,
JogBackward:=#负向点动 AND #手动模式_1);
#绝对定位启动(Axis:="步进电机",
Execute:=#绝对定位模式_1,
Position:=#位置,
Velocity:=#速度);

#上升沿检测(CLK:=#手动模式_1);
#暂停模式启动(Axis:="步进电机",
Execute:=#上升沿检测.Q);

//以上为指令块调用

#上升沿检测2(CLK:=#启动使能按钮);

IF #上升沿检测2.Q AND NOT #轴使能启动.Status THEN
#轴使能_1 := 1 ;
END_IF;

IF #上升沿检测2.Q AND #轴使能启动.Status THEN
#轴使能_1 := 0 ;
END_IF;

#自动模式_1 := #"自/手动切换";

#手动模式_1 := NOT #"自/手动切换";

//以上为按钮的状态

#步进启动2 := #自动模式_1 AND #自动启动 AND "步进电机".StatusBits.HomingDone;

//以上绝对定位方式的自动启动

IF #步进启动2 THEN
CASE #程序步 OF
0:
#程序步 := 10;
;
10:
#位置 := #位置1设置值;
#速度 := #速度1设置值;
#绝对定位模式_1 := 1;
#延时处理 := 0;
IF #绝对定位启动.Done THEN
#绝对定位模式_1 := 0;
#程序步:= 15;
END_IF;
15:
#IEC_Timer_0_Instance(IN:=#延时处理,
PT:=t#0s);
#延时处理 := 1;
IF #IEC_Timer_0_Instance.Q THEN
#位置 := #位置2设置值;
#速度 :=#速度2设置值;
#绝对定位模式_1 := 1;
END_IF;
IF #绝对定位启动.Done THEN
#绝对定位模式_1 := 0;
#延时处理 := 0;
#程序步:= 20;
END_IF;
20:
#IEC_Timer_0_Instance_1(IN:=#延时处理,
PT:=t#10s);
#延时处理 := 1;
IF #IEC_Timer_0_Instance_1.Q THEN
#位置 := #位置3设置值;
#速度 := #速度3设置值;
#绝对定位模式_1 := 1;
END_IF;
IF #绝对定位启动.Done THEN
#绝对定位模式_1 := 0;
#延时处理 := 0;
#程序步 := 10;
END_IF;
END_CASE;
ELSE
#位置 := 0;
#速度 := 0;
#自动模式_1 := 0;
#程序步 := 0;
END_IF;
//以上为三个位置的定位,预留延时功能

#自动指示灯_1 := #自动模式_1;
#手动指示灯_1 := #手动模式_1;
#报警指示灯_1 := #轴使能启动.Error;
#轴使能指示灯 := #轴使能启动.Status;
#原点指示灯_1 := "步进电机".StatusBits.HomingDone;
//以上为输出指示灯

▼ Main程序块调用函数块


工控课堂 www.gkket.com

0

主题

132

回帖

294

积分

注册会员

积分
294
发表于 2021-8-18 21:09:29 | 显示全部楼层
好东西一定要看看!
工控课堂 www.gkket.com
  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:1
  • 打卡总奖励:9
  • 最近打卡:2025-12-18 11:20:33

0

主题

114

回帖

377

积分

注册会员

积分
377
发表于 2021-8-18 22:03:12 | 显示全部楼层
真是难得给力的帖子啊。
工控课堂 www.gkket.com

0

主题

68

回帖

93

积分

新手上路

积分
93
发表于 2025-11-13 07:24:43 | 显示全部楼层
赞同 + 10086,没毛病,完全没毛病
工控课堂 www.gkket.com

0

主题

154

回帖

338

积分

注册会员

积分
338
发表于 2025-11-13 10:57:52 | 显示全部楼层
笑不活了,评论区比正文还精彩!
工控课堂 www.gkket.com

0

主题

137

回帖

396

积分

注册会员

积分
396
发表于 2025-11-13 11:05:05 | 显示全部楼层
哈哈哈哈笑不活,楼主这脑洞绝了!
工控课堂 www.gkket.com

0

主题

126

回帖

241

积分

注册会员

积分
241
发表于 2025-11-13 19:29:35 | 显示全部楼层
笑不活了,评论区比正文还精彩
已转发给朋友,一起快乐一下
工控课堂 www.gkket.com

0

主题

146

回帖

390

积分

注册会员

积分
390
发表于 2025-11-13 21:45:36 | 显示全部楼层
这波反向操作,我属实没想到!
工控课堂 www.gkket.com

0

主题

453

回帖

2302

积分

高级会员

积分
2302
发表于 2025-11-13 21:56:55 | 显示全部楼层
这评论区卧虎藏龙,个个都是人才!
工控课堂 www.gkket.com

0

主题

89

回帖

265

积分

注册会员

积分
265
发表于 2025-11-13 22:54:49 | 显示全部楼层
求个链接 / 教程,楼主好人一生平安~
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 01:19 , Processed in 0.139524 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表