随着在这个学习平台中每天不断的学习前辈们的编程思路和控制理论,编程技术也在逐渐的提高,常产生一种想试试的“冲动”。在现场维护数控设备时发现每一次一个工件加工程序运行结束后各轴都需要做回原点的操作,这样当运行第二次加工程序时又需要从原点开始快速移动到加工工件的安全位置后再进行有效的加工。考虑过各种安全因数后,是否让一些轴不回到原点而只运行到一个安全位置后再进行第二次加工来提供产能呢?
打开用户程序检查相关回原点的程序,发现它在加工程序结束后需要做一次各轴回原点位置的检查,同时在用户报警程序中也做了相应的原点确认报警程序,当出现这些报警信息后设备停止,关闭联动操作。刚从学习平台中了解到西门子840D的动态“M”指令的应用,想实现用动态“M”指令控制这些轴不回原点的操作。打开“810/840D简明调试手册”找到动态“M”指令的地址表,对应设备用户指南的“M”指令使用状况,确认未使用的“M”指令地址段,编写用户“M”指令控制程序步骤如下:
1) 首先确定调用“M”指令地址;“M18 启动第二次定位( DB21.DBX196.2 / DB22.DBX196.2 / DB23.DBX196.2 / DB24.DBX196.2 ),M19关闭第二次定位 ( DB21.DBX196.3 / DB22.DBX196.3 / DB23.DBX196.3 / DB24.DBX196.3 )”。这样可以方便让用户在任意一个通道均允许使用这个指令。
2) 根据具体安全考虑只将3个通道的Z轴不做原点回归操作。
3) 编写调用“M”指令程序如下:
////////////////////////启用二次定位功能/////////////////
A "S T E U E R S P E I N" //系统启动标志位
A(
A "Chan1".MDyn[18] //通道1使用M18
O "Chan2".MDyn[18] //通道2使用M18
O "Chan3".MDyn[18] //通道3使用M18
O "Chan4".MDyn[18] //通道4使用M18
)
S M86.0 //启动第二次不回原点标志位
////////////////////////停用二次定位功能/////////////////
A "Chan1".MDyn[19] //通道1使用M19
O "Chan2".MDyn[19] //通道2使用M19
O "Chan3".MDyn[19] //通道3使用M19
O "Chan4".MDyn[19] //通道4使用M19
O "ZM Taste Reset" //MCP操作面板中的RST键
R M86.0 //停止第二次不回原点标志位
原用户程序各轴原点检测程序段:
A #Ausg_Masch_bereit
A #ZM_Entladebereit
A "DB Nocken".X1_freigefahren //X1轴在正向标志位
A "DB Nocken".X2_freigefahren //X2轴在正向标志位
A "DB Nocken".X3_freigefahren //X3轴在正向标志位
A(
A "DB Nocken".Z1_freigefahren //Z1轴在正向标志位
A "DB Nocken".Z2_freigefahren //Z2轴在正向标志位
A "DB Nocken".Z3_freigefahren //Z3轴在正向标志位
A "DB Nocken".Rst_freigefahren //主轴在正向标志位
O M 86.0 //启动二次定位标志位
)
A "DB Nocken".E1_geoeffnet //加载门轴在正向标志位
AN "DB Nocken".E1_geschlossen //加载门轴不在负向标志位
AN I 62.7 //加载门关闭行程
A I 62.6 //加载门打开行程
= #Ausg_Masch_Entladebereit //
A #Ausg_Masch_bereit
A #ZM_Entladebereit
A "DB Nocken".X1_freigefahren //X1轴在正向标志位
A "DB Nocken".X2_freigefahren //X2轴在正向标志位
A "DB Nocken".X3_freigefahren //X3轴在正向标志位
A(
A "DB Nocken".Z1_freigefahren //Z1轴在正向标志位
A "DB Nocken".Z2_freigefahren //Z2轴在正向标志位
A "DB Nocken".Z3_freigefahren //Z3轴在正向标志位
A "DB Nocken".Rst_freigefahren //主轴在正向标志位
O M86.0 //启动二次定位标志位
)
A "DB Nocken".E1_geoeffnet
AN "DB Nocken".E1_geschlossen
AN I 62.7 //加载门关闭行程
A I 62.6 //加载门打开行程
A "LS Ausstos.SP Rad frei"
AN "LS Ausstos.RT Rad klebt"
= #Ausg_Masch_Entladebereit //
报警程序:
A(
O "DB Robot".ZM_Beladebereit //DB222.DBX1.0
O "DB Robot".ZM_Entladebereit //DB222.DBX1.0
)
AN "DB Nocken".Z1_freigefahren //DB100.DBX0.7
A "DB Robot".Mit_Beschickung //DB222.DBX1.4
A "verz Steuerspannung ein" //T17
AN M86.0 //暂时屏蔽Z轴1报警
= "ALMSG_DB".A7000xx[38] //700038 # Z1轴不在原点报警
A(
O "DB Robot".ZM_Beladebereit
O "DB Robot".ZM_Entladebereit
)
AN "DB Nocken".Z2_freigefahren //DB100.DBX1.0
A "DB Robot".Mit_Beschickung
A "verz Steuerspannung ein"
AN M86.0 //暂时屏蔽Z轴2报警
= "ALMSG_DB".A7000xx[39] //700039 # Z2轴不在原点报警
A(
O "DB Robot".ZM_Beladebereit
O "DB Robot".ZM_Entladebereit
)
AN "DB Nocken".Z3_freigefahren //DB100.DBX1.1
A "DB Robot".Mit_Beschickung
A "verz Steuerspannung ein"
AN M86.0 //暂时屏蔽Z轴3报警
= "ALMSG_DB".A7000xx[40] //700040# Z3轴不在原点报警
将编写、修改好的程序检查确认后下载到cpu并在NCK程序中按实际加工程序的具体动作位置添加这2个“M”指令并重新编写NCK“Z”轴回原点程序段进行测试,加工工件每一个可以由原来的50秒/个,缩短到45秒/个,提供了生产能力,还可以使3个通道的Z轴减少运行时对丝杆的磨损,受到公司嘉奖的同时,更提高了学习的信心,望这篇短文也能够提供给大家另一种编程思路。