⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panel_01.pmc

📁 基于PMAC运动控制卡的八轴数控磨床PLC运动控制程序
💻 PMC
📖 第 1 页 / 共 2 页
字号:
  @SET_ON(CS_COMMAND6_M,CS_JOG_U_PLUS)
Else
  If (@ON(IN_1_M,U_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_U_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_U_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_U_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_U_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,V_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_V_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_V_PLUS)
Else
  If (@ON(IN_1_M,V_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_V_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_V_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_V_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_V_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,C_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_C_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_C_PLUS)
Else
  If (@ON(IN_1_M,C_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_C_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_C_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_C_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_C_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,Z_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Z_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_Z_PLUS)
Else
  If (@ON(IN_1_M,Z_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Z_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_Z_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Z_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Z_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,A_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_A_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_A_PLUS)
Else
  If (@ON(IN_1_M,A_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_A_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_A_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_A_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_A_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,B_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_B_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_B_PLUS)
Else
  If (@ON(IN_1_M,B_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_B_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_B_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_B_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_B_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  ENDIF				//POWERON}
  ENDIF			   //MANUAL MODE}
  ENDIF				//}
  //--------------------------------------SWITCH PROCESS
  //SW_EMERGENCY_STOP    	1           ;// $00000001  急停
  // SW_CYCLE_START   	2           ;// $00000002  自动启动
  //SW_FEED_HOLD      	4           ;// $00000004  自动暂停
  // SW_RESET   	        8           ;// $00000008  复位
  // SW_SERVO_ON      	16          ;// $00000010  伺服启动
  //SW_MGY_CZAB_ON      16
  //SW_SOURCE_OFF	     	32          ;// $00000020  主机电源关
  
  If (IN_SW_M != IN_SW_CHNG_M)       //{ has one Ormore input bit(s) changed?
  IN_SW_M=IN_SW_CHNG_M           // update change flag
  
  If (IN_SW_NO = SW_CYCLE_START)//{
  If (@OFF(IN_SW_M,SW_CYCLE_START))	//{
  @SET_OFF(CS_COMMAND3_M,CS_CYCLE_START)
  @SET_OFF(CS_COMMAND3_M,CS_CYCLE_RESTART)
  IN_SW_NO=0
  ENDIF					//}
  ENDIF		           //}
  
  If (IN_SW_NO = SW_FEED_HOLD)  //{
  If (@OFF(IN_SW_M,SW_FEED_HOLD))		//{
  @SET_OFF(CS_COMMAND3_M,CS_FEED_HOLD)
  IN_SW_NO=0
  ENDIF					//}
  ENDIF		            //}
  
  If (IN_SW_NO = SW_RESET)
    If (@OFF(IN_SW_M,SW_RESET))
      @SET_OFF(CS_COMMAND3_M,CS_RESET)
      IN_SW_NO=0
    EndIf
  EndIf
  
  /* If (IN_SW_NO = SW_SERVO_ON)  //{
  If (@OFF(IN_SW_M,SW_SERVO_ON))		//{
  If (POWER_SW_2_PUSH = 0)				//{
  POWER_SW_2_PUSH=1
Else
  POWER_SW_2_PUSH=0
  ENDIF						//}
  ;@SET_OFF(CS_COMMAND8_M,CS_SERVO_ON)
  IN_SW_NO=0
  ENDIF					//}
  ENDIF			   //}*/
  If (IN_SW_NO = SW_MGY_CZAB_ON)  //{手轮FLAG
  If (@OFF(IN_SW_M,SW_MGY_CZAB_ON))		//{
  If (POWER_SW_2_PUSH = 0)				//{
  POWER_SW_2_PUSH=1
Else
  POWER_SW_2_PUSH=0
  ENDIF						//}
  ;@SET_OFF(CS_COMMAND8_M,CS_SERVO_ON)
  IN_SW_NO=0
  ENDIF					//}
  ENDIF			   //}
  
  
  If (IN_SW_NO = SW_SOURCE_OFF)
    If (@OFF(IN_SW_M,SW_SOURCE_OFF))
      ;@SET_OFF(CS_COMMAND4_M,SW_SOURCE_OFF)
      IN_SW_NO=0
    EndIf
  EndIf
  
Else
  //IF(@ON(IN_2_M,PWS)) 	   //POWER ON{
  //  If (C_MODE_M != SEL_MODE_MANUAL)//not manual mode{
  //@-----------------------------------
  If (@ON(IN_SW_M,SW_CYCLE_START))  //CYCLE START{
  CYCLE_START_NOISE_FILTER=CYCLE_START_NOISE_FILTER+1
  If (CYCLE_START_NOISE_FILTER > NOISE_DETECT_CYCLE)
    CYCLE_START_NOISE_FILTER=0
        
    If (@OFF(CS_STATUS7_M,CS_CYCLE_START_DIS)) //{Can Start
    If (@ON(CS_STATUS3_M,CS_FEED_HOLD)) 	//Is Feed hold on{
    IN_SW_NO=SW_CYCLE_START
    ES_ERR_WARN_M = 0
    ES_ERR_MSG_M = 0
    @SET_OFF(CS_COMMAND3_M,CS_CYCLE_START)
    ;@SET_OFF(CS_COMMAND3_M,CS_FEED_HOLD)
    @SET_OFF(OUT_2_M,HOLD_LED)
    @SET_ON(OUT_2_M,START_LED)
    @SET_ON(CS_COMMAND3_M,CS_CYCLE_RESTART)
  Else
    /*@SET_OFF(CS_COMMAND3_M,CS_CYCLE_RESTART)
    @SET_OFF(CS_COMMAND3_M,CS_FEED_HOLD)
    @SET_OFF(OUT_2_M,HOLD_LED)
    @SET_ON(CS_COMMAND3_M,CS_CYCLE_START)
    @SET_ON(OUT_2_M,START_LED)
    EndIf*/
    //don't issue CMD"S" when multi-moving
    If (@OFF(CS_COMMAND7_M,CS_COMPLEX_MOTION))
      And (IN_POSITION_M = 1)
      IN_SW_NO=SW_CYCLE_START
      @SET_OFF(CS_COMMAND3_M,CS_CYCLE_RESTART)
      ;@SET_OFF(CS_COMMAND3_M,CS_FEED_HOLD)
      @SET_OFF(OUT_2_M,HOLD_LED)
      @SET_ON(CS_COMMAND3_M,CS_CYCLE_START)
      @SET_ON(OUT_2_M,START_LED)
    EndIf
  EndIf
EndIf
EndIf
ENDIF				//CYCLE START}
//@-----------------------------------

//@-----------------------------------
If (@ON(IN_SW_M,SW_FEED_HOLD))    //FEED HOLD{
FEED_HOLD_NOISE_FILTER=FEED_HOLD_NOISE_FILTER+1
If (FEED_HOLD_NOISE_FILTER > NOISE_DETECT_CYCLE)//{
FEED_HOLD_NOISE_FILTER=0
IN_SW_NO=SW_FEED_HOLD
;@SET_OFF(CS_COMMAND3_M,CS_CYCLE_START)
@SET_OFF(OUT_2_M,START_LED)
@SET_ON(CS_COMMAND3_M,CS_FEED_HOLD)
If (RUNNING_PROG_STAT_M = 1)  //M338->X:$2040,0,1 程序运行标志
@SET_ON(OUT_2_M,HOLD_LED)
Else
  @SET_OFF(OUT_2_M,HOLD_LED)
EndIf
//@SET_OFF(CS_COMMAND7_M,CS_COMPLEX_MOTION)
ENDIF						//}
ENDIF				//FEED HOLD}
//ENDIF			//NOT MANUNAL MODE}//by li.z 96/03/04
//	ENDIF	//IT CAN RESET AT POWER OFF	98.1.30 	//POWER ON}
//@-----------------------------------
//If (C_MODE_M = SEL_MODE_MANUAL)// manual mode{
If (@ON(IN_SW_M,SW_RESET))	//RESET{
RESET_NOISE_FILTER=RESET_NOISE_FILTER+1
If (RESET_NOISE_FILTER > NOISE_DETECT_CYCLE)//{
RESET_NOISE_FILTER=0
IN_SW_NO=SW_RESET
@SET_ON(CS_COMMAND3_M,CS_RESET)
RESET_P=1
RESET_PLEASE_P = 0	//added by sekisawa
@START_TIMER(TIMER_2_M,2000)	//DELAY 2 SEC
EndIf
ENDIF			//REST}		//}
//ENDIF// manual mode{

;ENDIF

//@-----------------------------------
If (@ON(IN_SW_M,SW_SOURCE_OFF))		//{WHEN PUSH THE SOURCE S/W TO OFF
SOURCE_NOISE_FILTER=SOURCE_NOISE_FILTER+1
If (SOURCE_NOISE_FILTER > NOISE_DETECT_CYCLE)//{
SOURCE_NOISE_FILTER=0
//IN_SW_NO=SW_SOURCE_IN
SOURCE_PUSHED = 1   //yao,98-7-30
@SET_OFF(OUT_2_M,SOURCE_LED)
CMD "A"
DRIVER_RESET_M = 0	//new board
//OUT_7_M = $20100000     //CHANGE FROM "=$20000000" TO GUARANTEE THE RELAY TIME BEFORE HARD POWER OFF,BY BILLY98-11-4
@SET_OFF(CS_COMMAND8_M,CS_SERVO_ON)
SOURCE_ON_FLAG=2
@START_TIMER(TIMER_4_M,2000)//DELAY FOR PC TO KILL AXIS
ENDIF						//}
Else
  @SET_ON(OUT_2_M,SOURCE_LED)
  ENDIF					//}
  
  If (SOURCE_ON_FLAG = 2)//{
  If (@TIMER_STOPPED(TIMER_4_M))		//{
  SOURCE_ON_FLAG=0
  @SET_ON(CS_COMMAND4_M,CS_SOURCE_OFF)
  ENDIF					//}
  ENDIF		    //}
  
  If (@ON(IN_SW_M,SW_EMERGENCY_STOP)) 	//not in ESTOP{
  /* If (@ON(IN_SW_M,SW_SERVO_ON))		//SERVO_ON{
  POWER_NOISE_FILTER=POWER_NOISE_FILTER+1
  If (POWER_NOISE_FILTER > NOISE_DETECT_CYCLE)//{ The counts of filter are three times loop,TAHOO 98-7-26
  POWER_NOISE_FILTER=0
  IN_SW_NO=SW_SERVO_ON
  If (POWER_SW_2_PUSH = 1)			//{SOFT POWER FLAG
  CMD "A"
  DRIVER_RESET_M = 0	//new board
  @SET_OFF(CS_COMMAND8_M,CS_SERVO_ON)
  ; @SET_OFF(OUT_1_M,SERVO_ON_OUT)
  Else*/
  KILLED=0
  POWER_ON_DELAY_STARTED=1
  // @START_TIMER(TIMER_3_M,2000)//DELAY TIMER FOR DRIVE TO BE ON
  /* ENDIF					  //}
  ENDIF					    //}
EndIf // NEW{*/
If (p1120 = 0)
  cmd"#1j/"
  cmd"#2j/"
  cmd"#3j/"
  cmd"#4j/"
  cmd"#5j/"
  cmd"#6j/"
  cmd"#7j/"
  cmd"#8j/"
  p1120=1
EndIf

ENDIF	//} not in ESTOP

If (POWER_ON_DELAY_STARTED = 1)
  // If (@TIMER_STOPPED(TIMER_3_M))				//{
  POWER_ON_DELAY_STARTED=0
  @SET_ON(CS_COMMAND8_M,CS_SERVO_ON)
  @SET_ON(OUT_1_M,SERVO_ON_OUT)
  @SET_ON(OUT_1_M,BREAK_OFF_OUT)//气动回路释放
  //  ENDIF							//}
EndIf

If (@ON(IN_SW_M,SW_MGY_CZAB_ON))		//SW_MGY_CZAB_ON{
POWER_NOISE_FILTER=POWER_NOISE_FILTER+1
If (POWER_NOISE_FILTER > NOISE_DETECT_CYCLE)//{ The counts of filter are three times loop,TAHOO 98-7-26
POWER_NOISE_FILTER=0
IN_SW_NO=SW_MGY_CZAB_ON
If (POWER_SW_2_PUSH = 1)			//{SOFT POWER FLAG
// @SET_ON(OUT_1_M,MGY_CZAB_ON_OUT)
@SET_ON(OUT_2_M,MGY_CZAB_LED)
MGY_CZAB_ON_P = 1
Else
  //  @SET_OFF(OUT_1_M,MGY_CZAB_ON_OUT)
  @SET_OFF(OUT_2_M,MGY_CZAB_LED)
  MGY_CZAB_ON_P = 0
EndIf
EndIf
ENDIF	//}



If (@OFF(IN_SW_M,SW_EMERGENCY_STOP)) 	//ESTOP{
CMD^K
KILLED=1
@SET_OFF(CS_COMMAND8_M,CS_SERVO_ON)
//@SET_OFF(OUT_1_M,SERVO_ON_OUT)

p1120=0
/*POWER_SW_2_PUSH=0
FUNC1_SW_2_PUSH=0
FUNC2_SW_2_PUSH=0
FUNC3_SW_2_PUSH=0
FUNC4_SW_2_PUSH=0
FUNC5_SW_2_PUSH=0
FUNC6_SW_2_PUSH=0
FUNC7_SW_2_PUSH=0
FUNC8_SW_2_PUSH=0
OUT_1_M=0
OUT_2_M=0*/
//@SET_ON(OUT_1_M,BREAK_ON_OUT)//气动回路制动
;CMD "A"
@SET_ON(OUT_1_M,EMG_OUT) //急停输出
Else
  
  @SET_OFF(OUT_1_M,EMG_OUT)
  ENDIF				//ESTOP}
  
EndIf    //}


///////////////////////////////////////////////////////////////////
//SOURCE OFF PROCESS
///////////////////////////////////////////////////////////////////
If (@ON(CS_STATUS4_M,CS_SOURCE_OFF))	//{
CS_STATUS4_M=0
If (SOURCE_OFF_DELAY_STARTED = 0)
  SOURCE_OFF_DELAY_STARTED=1
  @START_TIMER(TIMER_4_M,60000)//DELAY TIMER FOR PC TO SHUTDOWN
EndIf
ENDIF					//}

If (SOURCE_OFF_DELAY_STARTED = 1)
  If (@TIMER_STOPPED(TIMER_4_M))		//{
  
  SOURCE_OFF_DELAY_STARTED=0
  
  CS_STATUS1_M=0
  CS_STATUS2_M=0
  CS_STATUS3_M=0
  CS_STATUS4_M=0
  CS_STATUS5_M=0
  CS_STATUS6_M=0
  CS_STATUS7_M=0
  CS_STATUS8_M=0
  ; CS_STATUS8_M=0
  
  REAL_SOURCE_OFF=1
  ; CMD^K
  ;KILLED=1
  /* POWER_SW_2_PUSH=0
  FUNC1_SW_2_PUSH=0
  FUNC2_SW_2_PUSH=0
  FUNC3_SW_2_PUSH=0
  FUNC4_SW_2_PUSH=0
  FUNC5_SW_2_PUSH=0
  FUNC6_SW_2_PUSH=0
  FUNC7_SW_2_PUSH=0
  FUNC8_SW_2_PUSH=0
  OUT_1_M=0
  OUT_2_M=0
  @SET_OFF(CS_COMMAND8_M,CS_TO_FRO)
  @SET_OFF(CS_COMMAND8_M,CS_MEND)
  @SET_OFF(CS_COMMAND8_M,CS_SPIN)
  @SET_OFF(CS_COMMAND8_M,CS_INPOS)
  @SET_OFF(CS_COMMAND8_M,CS_MGY)*/
  ENDIF				        //}
EndIf

If (ccdsnap_enable_p = 0)
  ccdsnap_position=ccdsnap_encode_home_positon_p-95000+ccdsnap_position_p
EndIf
///////////

//M1210=90000

///////////////////////////////////////////////////////////////////////
// OUTPUT
///////////////////////////////////////////////////////////////////////
If (OUT_1_M != OUT_1_CHNG_M)
  OUT_1_CHNG_M = OUT_1_M
  ACC34_1B=OUT_1_M	 	// write it out to GPCP-01
EndIf

If (OUT_2_M != OUT_2_CHNG_M)
  OUT_2_CHNG_M=OUT_2_M
  ACC34_2B=OUT_2_M
EndIf

EndWhile ;//}
;ENABLE PLC1
CLOSE
























































































































































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -