世纪星车床标准化plc程序.docx

上传人:b****6 文档编号:7454986 上传时间:2023-01-24 格式:DOCX 页数:145 大小:51.22KB
下载 相关 举报
世纪星车床标准化plc程序.docx_第1页
第1页 / 共145页
世纪星车床标准化plc程序.docx_第2页
第2页 / 共145页
世纪星车床标准化plc程序.docx_第3页
第3页 / 共145页
世纪星车床标准化plc程序.docx_第4页
第4页 / 共145页
世纪星车床标准化plc程序.docx_第5页
第5页 / 共145页
点击查看更多>>
下载资源
资源描述

世纪星车床标准化plc程序.docx

《世纪星车床标准化plc程序.docx》由会员分享,可在线阅读,更多相关《世纪星车床标准化plc程序.docx(145页珍藏版)》请在冰豆网上搜索。

世纪星车床标准化plc程序.docx

世纪星车床标准化plc程序

//世纪星车床标准化plc程序

///版本号:

2.0

//修改记录:

2006年02月08日

/#pragmainline

#include"plc.h"

#include"plc_Map.h"

#definePLC2_TIME(128)

#ifndefMax_Shelves

#defineMax_Shelves

(1)

#endif

#ifndefToolsTotalNum

#defineToolsTotalNum

(1)

#endif

#defineMAX_DA(0x7fff)

#defineout_dac(da)(Y_i[28/2]=da)

#defineplc_ver_no()(G_i[255])

#definemode_selR[0]//模式选择

#definerun_enableR[1]//运行使能

#definesv_statR[2]//伺服上电状态

#defineSV_RESET_OUT(0x01)//伺服电源复位

#defineSV_POWER_OUT(0x04)//伺服上强电

#defineSV_POWER_WAIT(0x05)//等待上强电

#defineSV_ENABLE_OUT(0x08)//伺服使能

#defineSV_ENABLE_WAIT(0x09)//等待伺服使能

#defineSV_BRAKE_OUT(0x10)//开抱闸

#defineSV_OFF_CML(0x20)//关伺服SV-CML

#defineSV_FAILD(0x40)//伺服上电失败

#defineSV_IDLE(0x00)//空状态

#defineAdjustDAR[3]//需要调整DA输出

#definemode_tmpR[4]//临时模式选择

#defineSystem_ModeR[5]//系统当前工作模式

#defineMODE_ESTOP(0x01)//急停

#defineMODE_RESET(0x02)//复位

#defineMODE_NORMAL(0x04)//正常

#defineMODE_SV_POWER(0x08)//伺服上电

#definesv_dwellR_i[6/2]//伺服时延

#definestep_mulR_i[8/2]//步进进给增量倍率

#definejog_speedR_i[10/2]//点动速率

#definerpdfeedoverR_i[12/2]//快进修调

#definefeedoverR_i[14/2]//进给修调

#definespdl_overrideR_i[16/2]//主轴修调

#definespdl_cmdR_ui[18/2]//主轴转数

#definespdl_ctrlR[20]//主轴控制

#definespdl_statR[21]//主轴状态

#definespdl_dwellR_i[22/2]//主轴延时

#defineSpindleSpeedOKR[24]//主轴速度OK

#defineReferenceFindingStatR[25]//回零定位模式

#defineSpdlOutDAR_i[26/2]//当前主轴输出的DA

#defineSpdlCurSpeedR_i[28/2]//当前主轴的速度

#defineSysResetDwellR_i[30/2]//系统复位延时

#defineToolCurPosR[32]//刀具当前位置

#defineToolDesPosR[33]//刀具目的位置

#defineSysNeedStopR[34]//系统需要停止进给轴运动

#defineDoorLockStateR[35]//0:

防护门有效1:

防护门失效

#defineCommandOutSpeedR_ui[36/2]//当前指令输出速度

#defineAdjustOutSpeedR_ui[38/2]//补偿后的指令输出速度

#defineCur_Shelves_PosR[40]//当前使用的挡位

#defineNew_Shelves_PosR[41]//新的主轴挡位

#definePromptTimesR_i[42/2]//记录同一个消息的提示次数

#definePromptMessageMax(100)//定义系统最大的消息提示条数

#defineCH_STATR_i[44/2]//通道的状态

#defineLAST_MODE_SELR[48]//记录上一次选择的模式

#defineSpdlSpeedDAMaxTR_i[50/2]//速度到达的超时时间

#defineAXIS_X_STATR_i[52/2]//X轴的状态

#defineAXIS_Y_STATR_i[54/2]//X轴的状态

#defineAXIS_Z_STATR_i[56/2]//Z轴的状态

#defineZ_lockR[58]//机床Z轴锁住

#defineRISE_ZLockR[59]//取Z轴锁住的上升沿

#definemac_lockR[60]//测试机床是否锁住

#definemst_lockR[61]//测试MST锁住

#defineCurSpldTFenZiR[62]//主轴传动比分子

#defineCurSpldTFenMuR[63]//主轴传动比分母

#defineChange_Tool_DelayR_i[64/2]//换刀时延时间

#defineToolChg_dwellR_i[66/2]//换刀超时控制

#defineToolChangeStateR[68]//刀具换刀状态

#defineToolIdle(0)//非换刀状态

#defineToolRevFwd

(1)//让刀架正、反

#defineToolCheckDest

(2)//检测刀是否到达目的刀位

#defineToolShotPin(3)//打出定位销

#defineCheckToolPin(4)//检测定位销到位

#defineToolMotorStop(5)//刀架电机停(既不正转,也不反转)2005-03-10

#defineToolRev(6)//刀库反转

#defineToolCheckLock(7)//检测锁紧信号

#defineToolTakePin(8)//拔出定位销

#defineToolChgEnd(9)//换刀完成2005-03-10

#defineToolActDirB[69]//刀架开始的运动方向

#defineSToolChgStateR[69]//伺服刀架换刀状态

#defineSToolIdle(0)

#defineZeroSearch

(1)

#defineSToolReset

(2)

#defineSToolChange(3)

#defineSToolMove(4)

#defineSToolCheckIndex(5)

#defineSToolCheckLock(8)

#defineSToolChg_DelayR_i[70/2]

#defineToolCheckDwellR_i[72/2]

#defineSKIP_SWR[76]//跳段功能

#defineRISE_SKIP_SW[77]//取跳段功能上升沿

#defineWaitMSTFinish_MR[78]//M代码执行完毕

#defineWaitMSTFinish_SR[79]//主轴转速到达

#defineWaitMSTFinish_TR[80]//换刀动作完成

#defineHomeAxis_ModeR[81]//是回零模式

#defineGotoZero_FlagsR[82]//移动轴是否回零的标志

#defineRISE_CSpdlFwdR[83]//主轴正点动上升沿

#defineRISE_CSpdlRevR[84]//主轴负点动上升沿

#defineJogDwellR[85]//主轴点动延时的计时器

#defineSpdlJogDelay(1000)//主轴点动延时一秒

#defineAutoDoorStateR[86]//自动门的状态,0为关闭,1为开启

#defineRISE_AutoDoorR[87]//取自动门的上升沿

#defineOver_Step

(2)//系统修调的步距

#defineTEMP_ESTOP_STATR[88]//急停的状态

#defineRISE_ESTOPR[89]//取急停上升沿

#defineRISE_MacLockR[90]//取机床锁住的上升沿

#defineRISE_CoolLockR[91]//取冷却开停的上升沿

#defineRISE_ToolSelectR[92]//取选刀的上升沿

#defineRISE_ToolChangeR[93]//取换刀的上升沿

#defineRISE_DryRunR[94]//取空运行的上升沿

#defineRISE_SelecStopR[95]//取选择停的上升沿

#defineDryRun_StateR[96]//空运行的状态

#defineSpdlMode_StateR[97]//星三角完成的标记

#defineKaPan_ModeR[98]//卡盘方式0:

外卡,1:

内卡

#defineKaPan_StateB[99]//卡盘动作1:

外卡松(内卡紧),2:

外卡紧(内卡松)

#defineFlagKaPanStateR[100]//记录卡盘方式

#defineTaoTong_StateB[101]//套筒方式0:

无动作1:

前伸,2:

后退

#defineYeYa_StateR[102]//液压状态1:

开启,0:

关闭

#defineShelveDwellR[103]//主轴换档延时计时器

#defineShelveChangeDelay(1000)//主轴换档延时时间

#defineRISE_KaPanModeR[104]//取卡盘方式选择的上升沿

#defineRISE_KaPanActR[105]//取卡盘松紧选择的上升沿

#defineRISE_TaoTongR[106]//取套筒的上升沿

#defineRISE_YeYaLockR[107]//取液压的上升沿

#defineSpdlJogSpeedMax(300)//主轴点动的速度

#defineSpdlJogSpeedMin(11)//主轴点动的速度

#defineSpindleOnOffDelayR_i[108/2]//主轴电机接通延时

#defineSpeedOverStepR_i[110/2]//当前输出允许的误差转速

#defineLAST_Mul_SELR_ui[112/2]//记录上一次倍率

#defineSpdlLastSpeedR_i[114/2]//主轴上一次的速度

#defineRISE_ToolIndexR[116]//刀架刀位信号的上升沿

#defineToolHomeFlagR[117]//计数刀塔是否回原位标记

#defineG96Mode

(1)//恒速度切削模式

#defineG97Mode

(2)//非恒速度切削模式

#defineInvarCurZeroR_i[118/2]

#defineInvarCurXPosR_ui[120/2]

#defineInvarRadiusR_i[122/2]

#defineInvarSpeedCut(int)(*ch_var(0,0))//恒速度切削标志

#defineInvarCurCutSpeed(int)(*ch_var(0,1))//恒线速度切削的速度(m/min)

#defineInvarMinSpldSpin(int)(*ch_var(0,2))//恒速度切的最小转速

#defineInvarMaxSpldSpin(int)(*ch_var(0,3))//恒速度切的最大转速

#defineRISE_ABS_XN(x)R[124+x]//取步进+x方向的上升沿//XN:

R[124],YN:

R[125],ZN:

R[126]

#defineRISE_ABS_XP(x)R[128+x]//取步进-x方向的上升沿//XP:

R[128],YP:

R[129],ZP:

R[130]

#defineAbsSpd_StartR(134)

#defineSpdl_Shel_AbsSpeed(x)R_i[(AbsSpd_StartR+x*2)/2]//引用主轴对应档位的设定转速

//注意:

R[134]后的64个R由此宏定义使用,如果还要使用新的R寄存器请从200开始

#defineActSpd_StartR(200)

#defineSpdl_Shel_ActSpeed(x)R_i[(ActSpd_StartR+x*2)/2]//引用主轴对应档位的实测转速

//注意:

R[200]后的64个R由此宏定义使用,如果还要使用新的R寄存器请从268开始

#defineTrans_StartR(268)

#defineSpdl_Shel_TFenZi(x)R[Trans_StartR+x*2]//引用主轴传动比分子

#defineSpdl_Shel_TFenMu(x)R[Trans_StartR+x*2+1]//引用主轴传动比分母

//注意:

R[270]后的32个R由此宏定义使用,如果还要使用新的R寄存器请从310开始

#defineRSpldStopDelayR_ui[300/2]//主轴停止后制动延时时间

#defineRSpldBrakeDelayR_ui[302/2]//主轴持续制动延时时间

#defineDefen_Door_Spd_SpeedR_ui[304/2]//主轴的速度值

#defineDefen_Door_Spd_StatusR[306]//防护门打开后主轴的模态(0:

停1:

正转2:

反转)

#defineSeleStop_StateR[307]//程序选择停的状态0:

无效1:

有效

#defineRISE_DoorLockR[308]//门连锁的上升延

//PLC1中用的临时变量

#defineTEMP_R10R[310]//临时变量

#defineTEMP_R11R[311]//临时变量

#defineTEMP_R12R[312]//临时变量

#defineTEMP_R13R[313]//临时变量

#defineTEMP_R14R[314]//临时变量

#defineTEMP_R15R[315]//临时变量

#defineTEMP_R16R[316]//临时变量

#defineSpdlTimeR_ui[318/2]//临时变量

//PLC2中用的临时变量

#defineTEMP_R20R[320]//临时变量

#defineTEMP_R21R[321]//临时变量

#defineTEMP_R22R[322]//临时变量

#defineTEMP_R23R[323]//临时变量

#defineTEMP_R24R[324]//临时变量

#defineTEMP_R25R[325]//临时变量

#defineTEMP_R26R[326]//临时变量

#defineTEMP_R27R[327]//临时变量

#defineYeYaJumpOutR_ui[332]//临时变量

#defineTempTimeR_ui[334/2]//临时变量

#defineLube_Time1R_ul[336/4]//临时变量

#defineIsLubingR[340]//0:

没有润滑1:

正在润滑

#defineLube_Time2R_ui[342/2]//临时变量

#defineLube_Time3R_ui[344/2]//临时变量

#defineCCoolantDwellR_i[350/2]

#defineLube_dwell1R_ul[352/4]//临时变量

#defineLube_dwell2R_ui[356/2]//临时变量

#defineLube_dwell3R_ui[358/2]//临时变量

#definePLS_MOVE_1UMR_ui[400/2]//移动轴脉冲当量分母由上层系统传递,不能更改

#defineAxisInUseR[507]

#defineSV_Reset_Delay(200)//伺服复位延时(毫秒)

#defineSV_Power_Delay(1000)//伺服上强电延时(毫秒)

#defineSV_Enable_Delay(5000)//伺服使能延时(毫秒)

#defineSV_Brake_Delay(200)//开抱闸延时(毫秒)

#defineXAxis_Home_MSK0x01

#defineYAxis_Home_MSK0x02

#defineZAxis_Home_MSK0x04

#defineSys_Need_GotoZeroP_ui[0]//系统上电是否提示回零

#defineSpdl_Break_SpeedMinP_ui[1]//主轴开抱闸的最小转速

#defineToolChangeTimeMaxP_ui[2]//换刀超时时间=5秒

#defineToolLockTimeP_ui[3]//锁紧时间=1000毫秒

#defineToolFwdTimeP_ui[4]//正转延时时间=1000毫秒

#definePinLockTimeP_ui[5]//打出定位销延时

#defineSpld_CurrentScopeP_ui[6]//指令转速和实际转速之间的误差

#defineSpld_SpeedAgreaMaxTP_ui[7]//主轴速度到达的超时时间5秒

#defineSpldStopDelayBrakeP_ui[8]//主轴停止后制动延时时间

#defineSpldBrakeTimeP_ui[9]//主轴持续制动延时时间

#defineSpldYeYaLube_Time1P_ui[10]//液压泵启动延时

#defineMachLubeLube_Time1P_ui[11]//机床润滑间隔时间[单位:

分钟]

#defineMachLubeLube_Time2P_ui[12]//机床润滑持续时间[单位:

秒]

#defineMachLubeLube_Time3P_ui[13]//机床润滑报警检测时间[单位:

毫秒]

#defineSpldInitSpeedP_ui[14]//主轴启动速度

#defineSpldTriaChangeTimeP_ui[15]//主轴星三角切换延时

#defineHandWheelDirP_ui[16]//手摇脉冲方向(0:

同向1:

反向)

intabs(intn)

{

if(n<0)

n=-n;

returnn;

}

voidSetPLCVer(intNo)//设置PLC版本

{

*plc_ver_no()=No;//PLC版本信息

}

voidSetPrompt(intNo)

{

*message_no()=No;//PLC报警提示信息

PromptTimes=0;

}

//停止所有轴运动(不含主轴)

voidstop_move(void)

{

inti;

for(i=0;i<3;i++)

set_axis_stop(i);

handwheel(0,-1,0);//清手摇

}

//停止所有轴运动(含主轴)

voidstop(void)

{

stop_move();

spdl_ctrl=0;

mod_M_code(0)=-1;

mod_T_code(0)=-1;

mod_S_code(0)=-1;

}

intHydrauPre(void)//液压控制

{

#ifdefIN_GET_YeYaStart

TEMP_R27=IN_GET_YeYaStart;//液压泵启动键按下

#else

TEMP_R27=0;

#endif

if(TEMP_R27==0)

RISE_YeYaLock=0;

else

{

if(RISE_YeYaLock==0)

{

if(YeYa_State==1)

{

#ifdefOUT_LAMP_DN_YeYaStart

OUT_LAMP_DN_YeYaStart

#endif

YeYa_State=0;

}

else

{

#ifdefOUT_LAMP_EN_YeYaStart

OUT_LAMP_EN_YeYaStart

#endif

YeYa_State=1;

}

RISE_YeYaLock=1;

}

}

#ifdefIN_GET_PessureWarning

if(IN_GET_PessureWarning)

{

TempTime++;

if((CH_STAT&CH_CYCLE_LAMP)||(TempTime>(SpldYeYaLube_Time1/plc1_time)))

{

#ifdefOUT_ACT_DN_YeYaBegin

OUT_ACT_DN_YeYaBegin

#endif

SysNeedStop=1;

SetPrompt(14);//压力报警

return1;

}

}

else

{

TempTime=0;

//#ifdefOUT_ACT_DN_YeYaBegin

//OUT_ACT_DN_YeYaBegin

//#endif

//return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1