http://www.shizhou.net/

博客内容仅包含一个网址http://www.shizhou.net ,未提供更多信息技术相关关键信息。
第三题1.添加1个实轴,3个虚轴,建立2个程序,分别为整机回原,和自动程序2.触发愁机,回原按钮,4个钟依次定位到10,30,40,60的位置,输出回原亮成信号。3.按下启动按钮,并且有回原完或信号的时候,才可以自动运行,运行皮如下;利用4个轴,从轴1开始,每个轴依次走到下一个始的位置去,无限循环,当按下停止按钮,所有轴立马停止运行,握要启动,必须回原才能启动、 以下面这种为例在CODESYS的ST语言里做出来,不需要简化 GVL_0.MC_Power_0( Axis:= shizhou, Enable:= TRUE, bRegulatorOn:= GVL_0.使能, bDriveStart:= TRUE, bRegulatorRealState=> GVL_0.使能状态, Error=> GVL_0.使能报错, ErrorID=> GVL_0.使能报错ID); GVL_0.MC_Power_1( Axis:= xuzhou1, Enable:= TRUE, bRegulatorOn:= GVL_0.使能1, bDriveStart:= TRUE, bRegulatorRealState=> GVL_0.使能状态1, Error=> GVL_0.使能报错1, ErrorID=> GVL_0.使能报错ID1); GVL_0.MC_Power_2( Axis:= xuzhou2, Enable:= TRUE, bRegulatorOn:= GVL_0.使能2, bDriveStart:= TRUE, bRegulatorRealState=> GVL_0.使能状态2, Error=> GVL_0.使能报错2, ErrorID=> GVL_0.使能报错ID2); //点动 GVL_0.MC_Jog_0( Axis:= shizhou, JogForward:= GVL_0.正向运动, JogBackward:= GVL_0.反向运动, Velocity:= REAL_TO_LREAL(GVL_0.目标速度) , Acceleration:= REAL_TO_LREAL(GVL_0.加速度), Deceleration:= REAL_TO_LREAL(GVL_0.h_f减速度), Error=> GVL_0.h_f点动报错, ErrorId=> GVL_0.h_f点动报错ID); GVL_0.MC_Jog_1( Axis:= xuzhou1, JogForward:= GVL_0.正向运动2, JogBackward:= GVL_0.反向运动2, Velocity:= REAL_TO_LREAL(GVL_0.目标速度2) , Acceleration:= REAL_TO_LREAL(GVL_0.加速度2), Deceleration:= REAL_TO_LREAL(GVL_0.h_f减速度2), Error=> GVL_0.h_f点动报错2, ErrorId=> GVL_0.h_f点动报错ID2); GVL_0.MC_Jog_2( Axis:= xuzhou2, JogForward:= GVL_0.正向运动3, JogBackward:= GVL_0.反向运动3, Velocity:= REAL_TO_LREAL(GVL_0.目标速度3) , Acceleration:= REAL_TO_LREAL(GVL_0.加速度3), Deceleration:= REAL_TO_LREAL(GVL_0.h_f减速度3), Error=> GVL_0.h_f点动报错3, ErrorId=> GVL_0.h_f点动报错ID3); GVL_0.MC_Reset_0( Axis:= shizhou, Execute:= GVL_0.h_x复位, Done=> GVL_0.h_x复位成功, Error=> GVL_0.h_f复位报错, ErrorID=> GVL_0.h_f复位报错ID); GVL_0.MC_Reset_1( Axis:= xuzhou1, Execute:= GVL_0.h_x复位1, Done=> GVL_0.h_x复位成功1, Error=> GVL_0.h_f复位报错1, ErrorID=> GVL_0.h_f复位报错ID1); GVL_0.MC_Reset_2( Axis:= xuzhou2, Execute:= GVL_0.h_x复位2, Done=> GVL_0.h_x复位成功2, Error=> GVL_0.h_f复位报错2, ErrorID=> GVL_0.h_f复位报错ID2); // GVL_0.MC_Stop_0( Axis:= shizhou, Execute:= GVL_0.h_x停止, Deceleration:= REAL_TO_LREAL(GVL_0.h_f停止速度), Done=> GVL_0.h_x停止成功, Error=> GVL_0.h_f停止报错, ErrorID=> GVL_0.h_f停止报错ID); GVL_0.MC_Stop_1( Axis:= xuzhou1, Execute:= GVL_0.h_x停止1, Deceleration:= REAL_TO_LREAL(GVL_0.h_f停止速度1), Done=> GVL_0.h_x停止成功1, Error=> GVL_0.h_f停止报错1, ErrorID=> GVL_0.h_f停止报错ID1); GVL_0.MC_Stop_2( Axis:= xuzhou2, Execute:= GVL_0.h_x停止2, Deceleration:= REAL_TO_LREAL(GVL_0.h_f停止速度2), Done=> GVL_0.h_x停止成功2, Error=> GVL_0.h_f停止报错2, ErrorID=> GVL_0.h_f停止报错ID2); // GVL_0.MC_Halt_0( Axis:= shizhou, Execute:= GVL_0.暂停, Deceleration:= REAL_TO_LREAL(GVL_0.暂停速度), Done=> GVL_0.暂停完成, Error=> GVL_0.暂停报错, ErrorID=> GVL_0.暂停报错ID); GVL_0.MC_Halt_1( Axis:= xuzhou1, Execute:= GVL_0.暂停1, Deceleration:= REAL_TO_LREAL(GVL_0.暂停速度1), Done=> GVL_0.暂停完成1, Error=> GVL_0.暂停报错1, ErrorID=> GVL_0.暂停报错ID1); GVL_0.MC_Halt_2( Axis:= xuzhou2, Execute:= GVL_0.暂停2, Deceleration:= REAL_TO_LREAL(GVL_0.暂停速度2), Done=> GVL_0.暂停完成2, Error=> GVL_0.暂停报错2, ErrorID=> GVL_0.暂停报错ID2); // GVL_0.MC_MoveVelocity_0( Axis:= shizhou, Execute:= GVL_0.h_x速度触发, Velocity:= REAL_TO_LREAL(GVL_0.h_fv速度), Acceleration:= REAL_TO_LREAL(GVL_0.h_fv加速度), Deceleration:= REAL_TO_LREAL(GVL_0.h_fv减速度), Direction:= GVL_0.h_i方向, InVelocity=> GVL_0.h_x速度到达, Error=> GVL_0.h_f速度报错, ErrorID=> GVL_0.h_f速度报错ID); GVL_0.MC_MoveVelocity_1( Axis:= xuzhou1, Execute:= GVL_0.h_x速度触发1, Velocity:= REAL_TO_LREAL(GVL_0.h_fv速度1), Acceleration:= REAL_TO_LREAL(GVL_0.h_fv加速度1), Deceleration:= REAL_TO_LREAL(GVL_0.h_fv减速度1), Direction:= GVL_0.h_i方向1, InVelocity=> GVL_0.h_x速度到达1, Error=> GVL_0.h_f速度报错1, ErrorID=> GVL_0.h_f速度报错1ID); GVL_0.MC_MoveVelocity_2( Axis:= xuzhou2, Execute:= GVL_0.h_x速度触发2, Velocity:= REAL_TO_LREAL(GVL_0.h_fv速度2), Acceleration:= REAL_TO_LREAL(GVL_0.h_fv加速度2), Deceleration:= REAL_TO_LREAL(GVL_0.h_fv减速度2), Direction:= GVL_0.h_i方向2, InVelocity=> GVL_0.h_x速度到达2, Error=> GVL_0.h_f速度报错2, ErrorID=> GVL_0.h_f速度报错2ID); GVL_0.MC_HOME( Axis:= shizhou, Execute:= GVL_0.回原, Position:= REAL_TO_LREAL(GVL_0.回原位置), Done=> GVL_0.回原成功, Error=> GVL_0.回原报错, ErrorID=> GVL_0.回原报错ID); GVL_0.MC_HOME1( Axis:= xuzhou1, Execute:= GVL_0.回原1, Position:= REAL_TO_LREAL(GVL_0.回原位置1), Done=> GVL_0.回原成功1, Error=> GVL_0.回原报错1, ErrorID=> GVL_0.回原报错1ID); GVL_0.MC_HOME2( Axis:= xuzhou2, Execute:= GVL_0.回原2, Position:= REAL_TO_LREAL(GVL_0.回原位置2), Done=> GVL_0.回原成功2, Error=> GVL_0.回原报错2, ErrorID=> GVL_0.回原报错2ID); // GVL_0.MC_MoveRelative_0( Axis:= shizhou, Execute:= GVL_0.hx相对触发1, Distance:= REAL_TO_LREAL(GVL_0.h_f相对位置), Velocity:= REAL_TO_LREAL(GVL_0.hf相对速度), Acceleration:= REAL_TO_LREAL(GVL_0.h_iv1相对加速度), Deceleration:= REAL_TO_LREAL(GVL_0.h_iv1相对减速度), Done=>GVL_0.相对完成, Error=> GVL_0.hf相对报错6, ErrorID=> GVL_0.相对报错8ID); GVL_0.MC_MoveRelative1( Axis:= xuzhou1, Execute:= GVL_0.hx相对触发, Distance:= REAL_TO_LREAL(GVL_0.h_f相对位置1), Velocity:= REAL_TO_LREAL(GVL_0.hf相对速度1), Acceleration:= REAL_TO_LREAL(GVL_0.h_iv1相对加速度1), Deceleration:= REAL_TO_LREAL(GVL_0.h_iv1相对减速度1), Done=> GVL_0.相对完成1, Error=> GVL_0.hf相对报错4, ErrorID=> GVL_0.相对报错5ID); GVL_0.MC_MoveRelative3( Axis:= xuzhou2, Execute:= GVL_0.hx相对触发3, Distance:= REAL_TO_LREAL(GVL_0.h_f相对位置3), Velocity:= REAL_TO_LREAL(GVL_0.hf相对速度3), Acceleration:= REAL_TO_LREAL(GVL_0.h_iv1相对加速度3), Deceleration:= REAL_TO_LREAL(GVL_0.h_iv1相对减速度3), Done=> GVL_0.相对完成2, Error=> GVL_0.hf相对报错, ErrorID=> GVL_0.相对报错8ID ); // GVL_0.MC_MoveAbsolute_0( Axis:= shizhou, Execute:= GVL_0.hx绝对触发1, Position:= REAL_TO_LREAL(GVL_0.h_f绝对位置), Velocity:= REAL_TO_LREAL(GVL_0.hf绝对速度), Acceleration:= REAL_TO_LREAL(GVL_0.h_iv1绝对加速度), Deceleration:= REAL_TO_LREAL(GVL_0.h_iv1绝对减速度), Direction:= GVL_0.绝对方向, Done=> GVL_0.绝对完成, Error=> GVL_0.hf绝对报错2, ErrorID=> GVL_0.绝对报错3ID); GVL_0.MC_MoveAbsolute1( Axis:= xuzhou1, Execute:= GVL_0.hx绝对触发2, Position:= REAL_TO_LREAL(GVL_0.h_f绝对位置2), Velocity:= REAL_TO_LREAL(GVL_0.hf绝对速度2), Acceleration:= REAL_TO_LREAL(GVL_0.h_iv1绝对加速度2), Deceleration:= REAL_TO_LREAL(GVL_0.h_iv1绝对减速度2), Direction:= GVL_0.绝对方向1, Done=> GVL_0.绝对完成1, Error=> GVL_0.hf绝对报错3, ErrorID=>GVL_0.绝对报错4ID); GVL_0.MC_MoveAbsolute2( Axis:= xuzhou2, Execute:= GVL_0.hx绝对触发3, Position:= REAL_TO_LREAL(GVL_0.h_f绝对位置3), Velocity:= REAL_TO_LREAL(GVL_0.hf绝对速度3), Acceleration:= REAL_TO_LREAL(GVL_0.h_iv1绝对加速度3), Deceleration:= REAL_TO_LREAL(GVL_0.h_iv1绝对减速度3), Direction:= GVL_0.绝对方向3, Done=> GVL_0.绝对完成3, Error=> GVL_0.hf绝对报错, ErrorID=>GVL_0.绝对报错ID); CASE i步序 OF 0: IF h_x启动 AND GVL_0.使能 AND GVL_0.使能1 AND GVL_0.使能2 THEN 循环次数:=循环次数2:=循环次数3:=0; GVL_0.h_x停止:=GVL_0.h_x停止1:=GVL_0.h_x停止2:=FALSE; i步序:=10; END_IF; 10: GVL_0.h_x停止:=FALSE; GVL_0.h_i方向:=1; GVL_0.h_x速度触发:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.h_x速度触发:=FALSE; TON_0.IN:=FALSE; END_IF; IF GVL_0.h_fweizhi>=100 THEN GVL_0.h_x停止:=TRUE; i步序:=20; END_IF; 20: GVL_0.h_x停止:=FALSE; GVL_0.h_i方向:=-1; i步序:=30; 30: GVL_0.h_x速度触发:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.h_x速度触发:=FALSE; TON_0.IN:=FALSE; END_IF; IF GVL_0.h_fweizhi<=-100 THEN GVL_0.h_x停止:=TRUE; i步序:=40; END_IF; 40: 循环次数:=循环次数+1; IF 循环次数<3 THEN i步序:=10; ELSE i步序:=50; END_IF; 50: GVL_0.h_x停止2:=FALSE; GVL_0.h_i方向2:=1; GVL_0.h_x速度触发2:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.h_x速度触发2:=FALSE; TON_0.IN:=FALSE; END_IF; IF GVL_0.h_fweizhi2>=200 THEN GVL_0.h_x停止2:=TRUE; i步序:=60; END_IF; 60: GVL_0.h_x停止2:=FALSE; GVL_0.h_i方向2:=-1; i步序:=70; 70: GVL_0.h_x速度触发2:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.h_x速度触发2:=FALSE; TON_0.IN:=FALSE; END_IF; IF GVL_0.h_fweizhi2<=-200 THEN GVL_0.h_x停止2:=TRUE; i步序:=80; END_IF; 80: 循环次数2:=循环次数2+1; IF 循环次数2<2 THEN i步序:=50; ELSE i步序:=90; END_IF; 90: GVL_0.h_i方向2:=1; GVL_0.h_x速度触发2:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.h_x速度触发2:=FALSE; TON_0.IN:=FALSE; END_IF; IF GVL_0.h_fweizhi2>=300 THEN GVL_0.h_x停止2:=TRUE; i步序:=100; END_IF; 100: GVL_0.h_x停止2:=FALSE; GVL_0.h_i方向2:=-1; i步序:=110; 110: GVL_0.h_x速度触发2:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.h_x速度触发2:=FALSE; TON_0.IN:=FALSE; END_IF; IF GVL_0.h_fweizhi2<=-300 THEN GVL_0.h_x停止2:=TRUE; i步序:=0; END_IF; END_CASE; IF T_x停止 THEN GVL_0.h_x速度触发:=GVL_0.h_x速度触发1:=GVL_0.h_x速度触发2:=FALSE; GVL_0.h_x停止:=GVL_0.h_x停止2:=GVL_0.h_x停止2:=TRUE; 设备状态:=0; i步序:=0; END_IF IF h_x暂停 AND i步序<>1000 THEN GVL_0.h_x速度触发:=GVL_0.h_x速度触发1:=GVL_0.h_x速度触发2:=FALSE; GVL_0.暂停:=GVL_0.暂停1:=GVL_0.暂停2:=TRUE; 步序暂存:=i步序; i步序:=1000; END_IF; IF h_x启动 AND i步序=1000 THEN GVL_0.暂停:=GVL_0.暂停1:=GVL_0.暂停2:=FALSE; i步序:=步序暂存; END_IF; IF h_x回原 AND 设备状态=0 THEN GVL_0.回原:=GVL_0.回原1:=GVL_0.回原2:=TRUE; TON_0.IN:=TRUE; IF TON_0.Q THEN GVL_0.回原:=GVL_0.回原1:=GVL_0.回原2:=FALSE; TON_0.IN:=FALSE; i步序:=0; END_IF; END_IF
08-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值