最近在改造一台90年的德玛吉DMU60P,海德汉系统,飞利浦品牌主机。机床已经无法启动了,上电后操作系统丢失报警,从主机上看,硬盘插槽的电源指示灯不亮,找各种途径尝试维修,最终结论是无法修复。
公司决定用库里的840D系统进行改造,增加840D NUC单元,保留电源模块和驱动模块611D,增加6SN1118,操作面板,PLC模块等。
断断续续几星期后才送电开始调试,很快各进给轴和C轴都可以运行了,下一步全闭运行都没有问题。紧接着测试回参考点,由于之前吃过大亏,轴限位有效之前,回参考点是很危险的。必须谨慎操作,于是找各进给轴限位信号,想尽快处理验证一下,以免造成不必要的麻烦,但是从图纸上反反复复找也没找到限位信号及限位开关,于是打开机床防护罩继续找,还真没有!由于各进给轴和光栅尺都是增量的,通电之后参考点建立之前,软限位是无效的。这不奇怪了吗?这机器可是德国制造啊!依德国人严谨的做事风格,通电之后参考点建立之前,不可能没有安全措施,那么误操作只能撞机械缓冲装置,触发伺服报警吗?应该是不可能这么草率!
那么我就想有没有办法在没有硬件限位开关的情况下,能否实现硬件限位功能?经实践验证是可行的。
首先郑重声明以下几点:
1. 首先各轴要准确无误建立一次参考点,以便PLC侧的DB数据块存储各轴的机械实际位置
2. 当调用的FB2输出报警时,此时DB数据块存储各轴的机械实际位置是错误的,要记录并响应,还需要设置超程解除机制,否则断电重启后,参考点无法建立
3. FB2是随PLC扫描周期触发的,再经过运算处理,触发硬件限位报警时会有延迟,导致轴会有一定的过冲量,比硬件限位触发报警时的过冲量稍大
4. 机械维修时,轴的实际位置发生改变后,超程解除后才能建立参考点
5. 其余还有不严谨的地方肯请坛友们批评指正,讨论。
大概思路如下,供大家参考:
1. 建立数据表
2. 利用NC变量选择器选择各轴的机械坐标变量
3. OB1中读取各轴的实际位置
AN M 0.0
= M 0.0
CALL "GET" , DB122
Req :=M0.0
NumVar :=3
Addr1 :="NCVAR".C1_SMA_actToolBasePos1_2.SYNTAX_ID
Unit1 :=B#16#1
Column1:=
Line1 :=
Addr2 :="NCVAR".C1_SMA_actToolBasePos2_2.SYNTAX_ID
Unit2 :=
Column2:=
Line2 :=
Addr3 :="NCVAR".C1_SMA_actToolBasePos3_2.SYNTAX_ID
Unit3 :=
Column3:=
Line3 :=
Addr4 :=
Unit4 :=
Column4:=
Line4 :=
Addr5 :=
Unit5 :=
Column5:=
Line5 :=
Addr6 :=
Unit6 :=
Column6:=
Line6 :=
Addr7 :=
Unit7 :=
Column7:=
Line7 :=
Addr8 :=
Unit8 :=
Column8:=
Line8 :=
Error :=DB110.DBX16.0
NDR :=DB110.DBX17.0
State :=DB110.DBW18
RD1 :="AXIS POSITION".DB_X_AXIS_POSITION
RD2 :="AXIS POSITION".DB_Y_AXIS_POSITION
RD3 :="AXIS POSITION".DB_Z_AXIS_POSITION
RD4 :=
RD5 :=
RD6 :=
RD7 :=
RD8 :=
4. 参考点建立之后位置更新
A "X_AIXS".E_RefSyn2
FP M 10.0
= L 0.0
A L 0.0
JNB _007
L 0.000000e+000
T "AXIS POSITION".DB_X_AXIS_POS_BUFFE_0
_007: NOP 0
A L 0.0
JNB _008
L 0.000000e+000
T "AXIS POSITION".DB_X_AXIS_POSITION_INC
_008: NOP 0
6. 轴限位报警
L "AXIS POSITION".DB_X_AXIS_POSITION
L "AXIS POSITION".DB_X_AXIS_POS_BUFFE_0
+R
T "AXIS POSITION".DB_X_AXIS_POSITION_INC
L "AXIS POSITION".DB_X_AXIS_POSITION_INC
L "AXIS POSITION".DB_X_AXIS_POS_LIMIT_MINU
>R
NOT
A I 2.0
= "X_AIXS".A_HWLimitMinus
L "AXIS POSITION".DB_X_AXIS_POSITION_INC
L "AXIS POSITION".DB_X_AXIS_POS_LIMIT_PLUS
<R
NOT
A I 2.0
= "X_AIXS".A_HWLimitPlus
7. OB100中刷新断电前轴实际位置
L "AXIS POSITION".DB_X_AXIS_POSITION_INC
T "AXIS POSITION".DB_X_AXIS_POS_BUFFE_0