深圳网站建设哪家公司便宜郑州网站运营实力乐云seo
一、前言
本文是我的第二篇专栏《西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN》的第五篇文章,也是这个系列的结尾,本篇讲讲使用昆仑通态触摸屏 TPC4023Ei和整一套演示箱建立通信,从而实现简便的人机交互。
这个专栏的往期文章讲解了这一款Profinet闭环一体式步进伺服,并且讲解了硬件连接、软件组态,还没有看过的可以看我往期文章。
西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN (1)电机及专栏介绍
西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN (2) 硬件介绍
西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN (3) PLC组态与连接
西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN (4)仿SinaPos控制块
本文从创建PLC变量开始,再到关联触摸屏变量,从而实现触摸屏控制电机切换各种运动模式。
二、PLC变量创建
由于我所需要控制三个轴,并且能够切换它的运动模式,所以我选择使用M寄存器来操作对应轴的状态机,状态机不同状态运行不同运动模式的测试流程。
下面是我定义的符号表
符号 | 地址 | 注释 |
轴1_1启动零点设置示例 | M0.0 | 轴1将当前位置设置为零点 |
轴1_2启动相对定位示例 | M0.1 | 轴1以50000lu/s的速度,正转50000lu |
轴1_3启动绝对定位示例 | M0.2 | 轴1定位到-50000lu的位置(需要先设定零点,否则无法启动) |
轴1_4启动主动回零示例 | M0.3 | 轴1主动回零,出厂默认扭矩回零 |
轴1_5启动速度模式示例 | M0.4 | 轴1以300RPM的速度正转后停止 |
轴1_6启动点动示例 | M0.5 | 轴1正向点动2秒后停止 |
轴1_7失能 | M0.6 | 轴1失能 |
轴2_1启动零点设置示例 | M1.0 | 轴2将当前位置设置为零点 |
轴2_2启动相对定位示例 | M1.1 | 轴2以50000lu/s的速度,正转50000lu |
轴2_3启动绝对定位示例 | M1.2 | 轴2定位到-50000lu的位置(需要先设定零点,否则无法启动) |
轴2_4启动主动回零示例 | M1.3 | 轴2主动回零,出厂默认扭矩回零 |
轴2_5启动速度模式示例 | M1.4 | 轴2以300RPM的速度正转后停止 |
轴2_6启动点动示例 | M1.5 | 轴2正向点动2秒后停止 |
轴2_7失能 | M1.6 | 轴2失能 |
轴3_1启动零点设置示例 | M2.0 | 轴3将当前位置设置为零点 |
轴3_2启动相对定位示例 | M2.1 | 轴3以50000lu/s的速度,正转50000lu |
轴3_3启动绝对定位示例 | M2.2 | 轴3定位到-50000lu的位置(需要先设定零点,否则无法启动) |
轴3_4启动主动回零示例 | M2.3 | 轴3主动回零,出厂默认扭矩回零 |
轴3_5启动速度模式示例 | M2.4 | 轴3以300RPM的速度正转后停止 |
轴3_6启动点动示例 | M2.5 | 轴3正向点动2秒后停止 |
轴3_7失能 | M2.6 | 轴3正向点动2秒后停止 |
轴1_ControlStateMachine | SD0 | 轴1控制状态机 1零点设置 10相对位置 20绝对位置 30主动回零 40速度模式 50点动 |
轴2_ControlStateMachine | SD4 | 轴2控制状态机 1零点设置 10相对位置 20绝对位置 30主动回零 40速度模式 50点动 |
轴3_ControlStateMachine | SD8 | 轴3控制状态机 1零点设置 10相对位置 20绝对位置 30主动回零 40速度模式 50点动 |
表格中最后三行为三个轴对应的状态机,注释中标注了状态机的值对应运动模式示例,在后续过程控制时会用到。
例如当轴1状态机(SD0)的值为1时,状态机内将电机运动模式切换到设定零点模式,并在一定的延时(2倍IO周期)后启动电机。
三、昆仑通态触摸屏设备配置
在设备窗口->设备组态->添加一个通用TCP/IP父设备。将触摸屏和S7-200SMART的IP地址和端口号分别填入本地IP地址、本地端口号、远程IP地址、远程端口号中。
继续添加子设备
添加"西门子_S7_Smart200_以太网",不使用默认通迅参数设置父设备。
在增加新设备通道依次添加M继电器 -> 通道地址00位,地址0,个数1,对应M0.0
连接变量(名称):轴1_1启动零点设置示例
后面依次添加了三个轴的变量
四、添加触摸屏控件
接下来我在触摸屏画面中添加了多个按钮来操作对应轴的模式,以下是我创建的按钮。
每个按钮对应一个M寄存器的对应位。
五、PLC控制程序编写
首先使用分配好的M寄存器的bool信号来切换轴状态机。
1 = 零点设置 ;10 = 相对位置 ; 20 = 绝对位置;
30 = 主动回零 ;40 = 速度模式 ; 50 = 点动 ;
回顾上一篇文章,我已经分配好了符号表,并且已经创建好了控制三个仿SINAPOS控制块MD_PN_CTRL。
(1)设定零点的步骤
1、运行模式选择 ModePos=5, 零点设置
2、CancelTransing=1,IntermediateStop=1,
3、ConfigEpos=16#00000003(OFF2 = 1 & OFF3 = 1)
4、置位轴使能信号 EnableAxis=1
5、复位ExecuteMode信号
6、ExecuteMode上升沿触发定位运动
7、状态转移到下一步
8、延时等待参数设置,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO周期 4ms),确保前面设置的信号设定完成并使能。
9、激活运行作业(零点设置)
10、状态转移回空闲0态
LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 1
MOVW 5, 轴1_1ModePos:VW0
S 轴1_5CancelTraversing:V10.1, 1
S 轴1_6IntermediateStop:V10.2, 1
MOVD 3, 轴1_Control_8ConfigEpos:VD20
S 轴1_4EnableAxis:V10.0, 1
R 轴1_7ExecuteMode:V10.3, 1
MOVD 2, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 2
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器1_1开始定时:M5.0, 轴1_定时器1_2初始值:VD200, 轴1_定时器1_3当前时间:VD204, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 2
A #timed:L0.0
MOVD 3, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 3
S 轴1_7ExecuteMode:V10.3, 1
MOVD 0, 轴1_ControlStateMachine:SD0
(2)相对定位模式的步骤
1、运行模式选择 ModePos=1
2、CancelTransing=1,IntermediateStop=1
3、ConfigEpos=16#00000003
4、设置目标位置Position和速度Velocity(根据电机配置每圈LU数出厂默认值10000LU/圈 , 设定值位置50000LU,速度50000LU/秒 -》 以300rpm的速度往正方向转5圈)
5、通过输入参数 OverV、OverAcc 指定速度、加速度的倍率,设置为100
6、置位轴使能信号 EnableAxis=1
7、复位ExecuteMode信号
8、状态转移到下一步
9、延时等待参数设置,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO周期 4ms),确保前面设置的信号设定完成并使能。
10、激活运行作业(以300rpm的速度往正方向转5圈)
11、等待完成信号
12、状态转移回空闲0态
LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 10
LPS
MOVW 1, 轴1_1ModePos:VW0
S 轴1_5CancelTraversing:V10.1, 1
S 轴1_6IntermediateStop:V10.2, 1
MOVD 3, 轴1_Control_8ConfigEpos:VD20
MOVD 50000, 轴1_2Position:VD2
AENO
MOVD 50000, 轴1_3Velocity:VD6
LRD
MOVW 100, 轴1_Control_6OverV:VW14
AENO
MOVW 100, 轴1_Control_7OverAcc:VW16
LRD
S 轴1_4EnableAxis:V10.0, 1
LRD
R 轴1_7ExecuteMode:V10.3, 1
LPP
MOVD 11, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 11
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器2_1开始定时:M5.1, 轴1_定时器2_2初始值:VD208, 轴1_定时器2_3当前时间:VD212, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 11
A #timed:L0.0
MOVD 12, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 12
S 轴1_7ExecuteMode:V10.3, 1
MOVD 13, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 13
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器3_1开始定时:M5.2, 轴1_定时器3_2初始值:VD216, 轴1_定时器3_3当前时间:VD220, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 13
A #timed:L0.0
MOVD 14, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 14
A 轴1_5Done:V44.0
MOVD 0, 轴1_ControlStateMachine:SD0
(3)绝对定位模式
1、轴必须已回零 判断回零是否完成,已经回零才能绝对定位,否则状态机清除
2、运行模式选择 ModePos=2
3、CancelTransing=1,IntermediateStop=1
4、ConfigEpos=16#00000003
5、设置目标位置Position和速度Velocity(根据电机配置每圈LU数出厂默认值10000LU/圈 , 设定值位置-50000LU,速度50000LU/秒 -》 以300rpm的速度移动到-50000的位置)
6、通过输入参数 OverV、OverAcc 指定速度、加速度的倍率,设置为100
7、置位轴使能信号 EnableAxis=1
8、复位ExecuteMode信号
9、状态转移到下一步
10、延时等待参数设置,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO周期 4ms),确保前面设置的信号设定完成并使能。
11、激活运行作业(以300rpm的速度定位到-50000的位置)
12、等待运动到达
13、状态转移回空闲0态
LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 20
LPS
A 轴1_Status3AxisRef:V24.2
MOVD 21, 轴1_ControlStateMachine:SD0
LPP
AN 轴1_Status3AxisRef:V24.2
MOVD 0, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 21
LPS
MOVW 2, 轴1_1ModePos:VW0
S 轴1_5CancelTraversing:V10.1, 1
S 轴1_6IntermediateStop:V10.2, 1
MOVD 3, 轴1_Control_8ConfigEpos:VD20
MOVD -50000, 轴1_2Position:VD2
AENO
MOVD 50000, 轴1_3Velocity:VD6
LRD
MOVW 100, 轴1_Control_6OverV:VW14
AENO
MOVW 100, 轴1_Control_7OverAcc:VW16
LRD
S 轴1_4EnableAxis:V10.0, 1
LRD
R 轴1_7ExecuteMode:V10.3, 1
LPP
MOVD 22, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 22
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器4_1开始定时:M5.3, 轴1_定时器4_2初始值:VD224, 轴1_定时器4_3当前时间:VD228, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 22
A #timed:L0.0
MOVD 23, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 23
S 轴1_7ExecuteMode:V10.3, 1
MOVD 24, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 24
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器5_1开始定时:M5.4, 轴1_定时器5_2初始值:VD232, 轴1_定时器5_3当前时间:VD236, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 24
A #timed:L0.0
MOVD 25, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 25
A 轴1_5Done:V44.0
MOVD 0, 轴1_ControlStateMachine:SD0
(4)主动回零模式
1、运行模式选择 ModePos=4
2、CancelTransing=1,IntermediateStop=1
3、ConfigEpos=16#00000003
4、通过输入参数 OverV、OverAcc 指定速度、加速度的倍率,设置为100
5、置位轴使能信号 EnableAxis=1
6、复位ExecuteMode信号
7、状态转移到下一步
8、延时等待参数设置,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO周期 4ms),确保前面设置的信号设定完成并使能。
9、激活运行作业(主动回零)
10、延时等待确保作业已激活,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO周期4ms),确保前面设置的信号设定完成并使能。
11、等待回零完成信号置位
12、状态转移回空闲0态
LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 30
LPS
MOVW 4, 轴1_1ModePos:VW0
S 轴1_5CancelTraversing:V10.1, 1
S 轴1_6IntermediateStop:V10.2, 1
MOVD 3, 轴1_Control_8ConfigEpos:VD20
MOVW 100, 轴1_Control_6OverV:VW14
AENO
MOVW 100, 轴1_Control_7OverAcc:VW16
LRD
S 轴1_4EnableAxis:V10.0, 1
LRD
R 轴1_7ExecuteMode:V10.3, 1
LPP
MOVD 31, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 31
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器6_1开始定时:M5.5, 轴1_定时器6_2初始值:VD240, 轴1_定时器6_3当前时间:VD244, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 31
A #timed:L0.0
MOVD 32, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 32
S 轴1_7ExecuteMode:V10.3, 1
MOVD 33, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 33
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器7_1开始定时:M5.6, 轴1_定时器7_2初始值:VD288, 轴1_定时器7_3当前时间:VD292, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 33
A #timed:L0.0
MOVD 34, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 34
A 轴1_Status3AxisRef:V24.2
MOVD 0, 轴1_ControlStateMachine:SD0
(5)速度模式
1、运行模式选择 ModePos=3
2、CancelTransing=1,IntermediateStop=1
3、ConfigEpos=16#00000003
4、通过输入参数 OverV、OverAcc 指定速度、加速度的倍率,设置为100
5、设置速度Velocity(根据电机配置每圈LU数出厂默认值10000LU/圈 ,速度50000LU/秒 -》 以300rpm的速度正转)
6、置位pControl_Positive信号, 指定旋转方向为正方向
7、置位轴使能信号 EnableAxis=1
8、复位ExecuteMode信号
9、状态转移到下一步
10、延时等待参数设置,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO 周期4ms),确保前面设置的信号设定完成并使能。
11、激活运行作业(主动回零)
12、延时等待确保作业已激活,延时时间应大于IO通讯周期(S7-200smart默认PROFINET IO周期4ms),确保前面设置的信号设定完成并使能, 复位ExecuteMode信号
13、等待速度到达信号置位后保持3秒
14、复位pControl_Positive信号、置位ExecuteMode信号,停止旋转
15、状态转移回空闲0态
LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 40
LPS
S 轴1_5CancelTraversing:V10.1, 1
S 轴1_6IntermediateStop:V10.2, 1
S 轴1_Control_1Positive:V12.0, 1
S 轴1_4EnableAxis:V10.0, 1
R 轴1_7ExecuteMode:V10.3, 1
MOVW 3, 轴1_1ModePos:VW0
AENO
MOVD 3, 轴1_Control_8ConfigEpos:VD20
LRD
MOVW 100, 轴1_Control_6OverV:VW14
AENO
MOVW 100, 轴1_Control_7OverAcc:VW16
LPP
MOVD 50000, 轴1_3Velocity:VD6
AENO
MOVD 41, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 41
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器8_1开始定时:M5.7, 轴1_定时器8_2初始值:VD296, 轴1_定时器8_3当前时间:VD300, #timed:L0.0LD Always_On:SM0.0
LPS
AD= 轴1_ControlStateMachine:SD0, 41
A #timed:L0.0
MOVD 42, 轴1_ControlStateMachine:SD0
LPP
AD= 轴1_ControlStateMachine:SD0, 42
S 轴1_7ExecuteMode:V10.3, 1
R #timed:L0.0, 1
MOVD 43, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 43
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 10, 轴1_定时器9_1开始定时:M6.0, 轴1_定时器9_2初始值:VD304, 轴1_定时器9_3当前时间:VD308, #timed:L0.0LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 43
A #timed:L0.0
MOVD 44, 轴1_ControlStateMachine:SD0
R 轴1_7ExecuteMode:V10.3, 1
R #timed:L0.0, 1LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 44
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 3000, 轴1_定时器10_1开始定时:M6.1, 轴1_定时器10_2初始值:VD312, 轴1_定时器10_3当前时间:VD316, #timed:L0.0LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 44
A #timed:L0.0
R 轴1_Control_1Positive:V12.0, 1
R #timed:L0.0, 1
MOVD 0, 轴1_ControlStateMachine:SD0
AENO
S 轴1_7ExecuteMode:V10.3, 1
(6)点动模式 - 正转
1、运行模式选择 ModePos=7
2、ConfigEpos=16#00000003
3、通过输入参数 OverV、OverAcc 指定速度、加速度的倍率,设置为100
4、置位轴使能信号 EnableAxis=1
5、置位正方向点动信号JOG1=1
6、状态转移到下一步
7、延时两秒(模拟操作点动信号两秒)
8、复位正方向点动信号JOG1=0
9、状态机清零
10、状态转移回空闲0态
LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 50
LPS
MOVW 7, 轴1_1ModePos:VW0
S 轴1_5CancelTraversing:V10.1, 1
S 轴1_6IntermediateStop:V10.2, 1
MOVD 3, 轴1_Control_8ConfigEpos:VD20
MOVW 100, 轴1_Control_6OverV:VW14
AENO
MOVW 100, 轴1_Control_7OverAcc:VW16
LRD
S 轴1_4EnableAxis:V10.0, 1
LRD
S 轴1_Control_3JOG1:V12.2, 1
LPP
MOVD 51, 轴1_ControlStateMachine:SD0LD Always_On:SM0.0
= L60.0
LDD= 轴1_ControlStateMachine:SD0, 51
= L63.7
LD L60.0
CALL 定时器:SBR4, L63.7, 2000, 轴1_定时器11_1开始定时:M6.2, 轴1_定时器11_2初始值:VD320, 轴1_定时器11_3当前时间:VD324, #timed:L0.0LD Always_On:SM0.0
AD= 轴1_ControlStateMachine:SD0, 51
A #timed:L0.0
R 轴1_Control_3JOG1:V12.2, 1
MOVD 0, 轴1_ControlStateMachine:SD0
往期的文章可以搜索《西门子S7-200SMART 控制Profinet闭环步进》找到我的CSDN博客
CSDN博主:小小小小小6-CSDN博客
将程序下载好后,就可以通过触摸屏来控制电机按照指定的运动模式旋转了
六、结尾
本篇重点讲解了如何使用触摸屏和PLC进行数据关联,从而实现通过触摸屏按钮切换这款Profinet一体式步进伺服电机的运动模式。MD-PN-CTRL是和SINAPOS具有相同引脚的控制块,在我本专栏中的其它文章有讲解,有什么疑问都可以评论交流,如果想要我这个工程的也可以私信我~