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

📄 panel_01.pmc

📁 基于PMAC运动控制卡的八轴数控磨床PLC运动控制程序
💻 PMC
📖 第 1 页 / 共 2 页
字号:

//
//  File: sncpanel.plc - Main IO for SODICK NC Panel.
//
//  This PLC program generates an interrupt (via EQUx) on the PC bus
//  each time an input bit changes states.  DPRAM is used to alter
//  the states of the I/O bits by both PMAC and the PC.
//
//  This program can be easily expanded to include more or different
//  types of IO devices.
//
//  Both PMAC and the PC will use the appropriate DPRAM location
//  to modify an output bit or read an input bit. These addresss are
//  located in the file "address.h" included with the current DLL.
//
//  Version 3.1
// ************************************************************************

//Change Log:
//	1. I/O map. yao. where 97.11.4 appears.

#include <address.h>
#include <oemm.h>
#include <oem.h>
#include <tsodick1.h>
#include <tsodick2.h>
#include <tsodick3.h>



OPEN PLC 1 CLEAR

// ///////////////////////////////////////////////////////////////////
// INIT SECTION ------------------------------------------------------
// ///////////////////////////////////////////////////////////////////
//{
/////////////////////GENERAL I/O ON GPCP-01////////////////////////
VS_GGROUP1_1_M = 1

IN_1_CHNG_M=ACC34_1A          // update the DPRAM
IN_1_M=IN_1_CHNG_M

OUT_1_M =0
OUT_1_CHNG_M=OUT_1_M          // update out "saved" word
ACC34_1B=OUT_1_M              // write it out to GPCP-01

SOURCE_PUSHED = 0
/////////////////////GENERAL I/O ON GPIO-01 #1////////////////////////
IN_2_CHNG_M=ACC34_2A          // update the DPRAM
IN_2_M=IN_2_CHNG_M

OUT_2_M =0
OUT_2_CHNG_M=OUT_2_M          // update out "saved" word
ACC34_2B=OUT_2_M              // write it out to GPCP-01

SOURCE_ON_FLAG=1                //yao,97-7-30
POWER_SW_2_PUSH=0

DRIVER_RESET_M = 0


IN_JGFD_M = $0 //for don't move jog feed 2m/min '98.1.19
IN_SW_M = $0 //for SWITCH INIT '98.1.27
CPANEL_IN_SAVE_M = $0 //for SWITCH INIT '98.1.27

@SET_ON(OUT_1_M,PC_ON_LATCH)
CMD"a"
// ///////////////////////////////////////////////////////////////////
// LOOP SECTION ------------------------------------------------------
// ///////////////////////////////////////////////////////////////////

While (1 < 2) ;//{
  
  ///////////////////////////////////////////////////////////////////////
  //  GENERAL IN ---------------------------------------------------------
  ///////////////////////////////////////////////////////////////////////
  
  //GPCP******************************************************************
  IN_1_CHNG_M=ACC34_1A          // read GPCP-01 general input word and save it
  
  If (IN_1_M != IN_1_CHNG_M)     // has one Ormore input bit(s) changed?
  IN_1_M=IN_1_CHNG_M     // update change flag
  // generate an interrupt!
  ;IN_1_CHNG_P=1
  ;ELSE
  ;IN_1_CHNG_P=0
EndIf

IN_2_CHNG_M=ACC34_2A         // read GPIO-01 #2's input word and save it
If (IN_2_M != IN_2_CHNG_M)     // has one Ormore input bit(s) changed?
IN_2_M=IN_2_CHNG_M     // update change flag
// generate an interrupt!
;IN_2_CHNG_P=1
;ELSE
;IN_2_CHNG_P=0
EndIf



// ///////////////////////////////////////////////////////////////////
// Control Panel hardware read ---------------------------------------
// ///////////////////////////////////////////////////////////////////
// ______________________________________________________________
// NOTE THAT IN WHAT FOLLOWS THE NUMBERS 10 AND $10 ARE DIFFERENT

/////////////////////EXCLUSIVE I/O ON GPCP-01/////////////////////////
//{
////////////////////////////////////////////////////////////////////////
//			CPANEL_IN_M DP:$
//|				X				|				Y				|
//		12		8		4		0		12 		8		4		0
//|            |   | |   | |          zOVR  FOVR  |       FUN1-8| |
//   *$1000000	     *$10000	       *$100	       *$1
/////////////////////////////////////////////////////////////////////////

// FUNC1-8 SELECT
//-------------------------
//SW_FUNC1	     	 1	 //往复启停
//SW_FUNC2	     	 2	 //修整启停
// SW_FUNC3	     	 4	 //旋转启停
//SW_FUNC4	     	 8	 //准停
// SW_FUNC5	          10	//吸尘启停
// SW_FUNC6	  	 SW_MGY    	20   // 手脉启停
// SW_FUNC7	 	SW_UV     	40  // U/V手脉


FUNC1_8_IN_SAVE_M=TO_FRO_IN__M|(MEND_IN__M*$2)|(SPIN_IN__M*$4)
FUNC1_8_IN_SAVE_M=FUNC1_8_IN_SAVE_M|(INPOS_IN__M*$8)|(DUST_IN__M*$10)
FUNC1_8_IN_SAVE_M=FUNC1_8_IN_SAVE_M|(MGY_IN__M*$20)|(UVMGY_IN__M*$40)
CPANEL_IN_M = FUNC1_8_IN_SAVE_M

// FEED OVRD
//-------------------------------
FOVRD_IN_SAVE_M=FOVRD1_IN_SAVE_M|(FOVRD2_IN_SAVE_M*$2)|(FOVRD3_IN_SAVE_M*$4)|(FOVRD4_IN_SAVE_M*$8)
CPANEL_IN_M = CPANEL_IN_M | (FOVRD_IN_SAVE_M*$100)
//  ZA OVRD
//--------------------------
ZOVRD_IN_SAVE_M=ZOVRD1_IN_SAVE_M|(ZOVRD2_IN_SAVE_M*$2)|(ZOVRD3_IN_SAVE_M*$4)|(ZOVRD4_IN_SAVE_M*$8)
CPANEL_IN_M = CPANEL_IN_M | (ZOVRD_IN_SAVE_M*$1000)
//mode
MODE_IN_M=MOD1_IN__M|(MOD2_IN__M*$2)
CPANEL_IN_M = CPANEL_IN_M|(MODE_IN_M*$10000)
//------------------------------------- LATCH THE REGISTERS
// 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
//MGY_IN
//UVMGY_IN
//-------------------------------------

IN_SW_CHNG_M = EMG_IN_SAVE_M|(STRAT_IN__M*$2)|(HOLD_IN__M*$4)|(RESET_IN__M*$8)
IN_SW_CHNG_M=IN_SW_CHNG_M|(MGY_CZAB_ON__M*$10)|(SOFF_IN_SAVE_M*$20)
//IN_SW_CHNG_M=IN_SW_CHNG_M|(SERVO_ON_IN __M*$10)|(SOFF_IN_SAVE_M*$20)

//-------------------------------------
// AXIS_IN_SAVE_M //  JOGINC_IN_SAVE_M//  SMPY_IN_SAVE_M //MODE_IN_SAVE_M//JOG(-/+)
AXIS_IN_SAVE_M=AXIS1_IN_SAVE_M|(AXIS2_IN_SAVE_M*$2)|(AXIS3_IN_SAVE_M*$4)
JOGINC_IN_SAVE_M=JOGINC1_IN_SAVE_M|(JOGINC2_IN_SAVE_M*$2)|(JOGINC3_IN_SAVE_M*$4)
SMPY_IN_SAVE_M=SMPY1_IN_SAVE_M|(SMPY2_IN_SAVE_M*$2)

IN_JGFD_CHNG_M =AXIS_IN_SAVE_M|(JOGINC_IN_SAVE_M*$8)|(SMPY_IN_SAVE_M*$40)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(X_PLUS_IN__M*$10000)|(X_MINUS_IN__M*$20000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(Y_PLUS_IN__M*$40000)|(Y_MINUS_IN__M*$80000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(U_PLUS_IN__M*$100000)|(U_MINUS_IN__M*$200000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(V_PLUS_IN__M*$400000)|(V_MINUS_IN__M*$800000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(C_PLUS_IN__M*$1000000)|(C_MINUS_IN__M*$2000000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(Z_PLUS_IN__M*$4000000)|(Z_MINUS_IN__M*$8000000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(A_PLUS_IN__M*$10000000)|(A_MINUS_IN__M*$20000000)
IN_JGFD_CHNG_M=IN_JGFD_CHNG_M|(B_PLUS_IN__M*$40000000)|(B_MINUS_IN__M*$80000000)



///////////ADDED BY LI.Z 97.05.09//////////////////////
//Remmember this:
//IN_LIM_CHNG_M = IN_6_M,Y:$DFE5 (REAL CHANGING INPUT)
//IN_LIM_M = IN_6_CHNG_M,Y:$DFF5 (NCUI.EXE DETECTS IT)
///////////////////////////////////////////////////////
IN_LIM_CHNG_M=IN_LIM_M
IN_LIM_CHNG_M=IN_LIM_CHNG_M & $F000
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (X_OT2_LIMIT_M)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (Y_OT2_LIMIT_M*$2)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (U_OT2_LIMIT_M*$4)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (V_OT2_LIMIT_M*$8)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (C_OT2_LIMIT_M*$20)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (Z_OT2_LIMIT_M*$40)

IN_LIM_CHNG_M=IN_LIM_CHNG_M | (X_ORG_LIMIT_M*$80)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (Y_ORG_LIMIT_M*$100)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (U_ORG_LIMIT_M*$200)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (V_ORG_LIMIT_M*$400)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (C_ORG_LIMIT_M*$800)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (Z_ORG_LIMIT_M*$1000)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (A_ORG_LIMIT_M*$2000)
IN_LIM_CHNG_M=IN_LIM_CHNG_M | (B_ORG_LIMIT_M*$2000)
If (IN_LIM_M != IN_LIM_CHNG_M)
  IN_LIM_M = IN_LIM_CHNG_M
EndIf


/********************************************************************/

//new driver error detector
DERR_FLAG_BUF_M = 0
DERR_BUF_M = 0

DERR_FLAG_BUF_M = AMP1_FAULT_IN_M
DERR_BUF_M = UVW_X_M
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP2_FAULT_IN_M * $2)
DERR_BUF_M = DERR_BUF_M |(UVW_Y_M * $10)
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP3_FAULT_IN_M * $4)
DERR_BUF_M = DERR_BUF_M |(UVW_U_M * $100)
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP4_FAULT_IN_M * $8)
DERR_BUF_M = DERR_BUF_M |(UVW_V_M * $1000)
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP5_FAULT_IN_M * $10)
DERR_BUF_M = DERR_BUF_M |(UVW_C_M * $10000)
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP6_FAULT_IN_M * $20)
DERR_BUF_M = DERR_BUF_M |(UVW_Z_M * $100000)
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP7_FAULT_IN_M * $40)
DERR_BUF_M = DERR_BUF_M |(UVW_A_M * $1000000)
DERR_FLAG_BUF_M = DERR_FLAG_BUF_M |(AMP8_FAULT_IN_M * $80)
DERR_BUF_M = DERR_BUF_M |(UVW_B_M * $10000000)

DERR_FLAG_M = DERR_FLAG_BUF_M
DRIVE_ERROR_M = DERR_BUF_M

/////////////////////////////////////////////////////////////////////
//Control Panel hardware processing ---------------------------------
/////////////////////////////////////////////////////////////////////
//------------------------------------------------------------------
If (C_MODE_M = SEL_MODE_MANUAL And SS_MODE_PREV != SEL_MODE_MANUAL)
  SS_MODE_PREV = SEL_MODE_MANUAL
EndIf

If (Z_OVR_NO_FLG = 1)
  C_ZOVRD_M=4
EndIf

If (FEED_OVR_NO_FLG = 1)
  C_FOVRD_M=4
EndIf

// ///////////////////////////////////////////////////////////////////
// Control Panel hardware service request ----------------------------
// ///////////////////////////////////////////////////////////////////

// -------------------------------------- Hardware and last Command not same?
If (CPANEL_IN_SAVE_M != CPANEL_IN_M)	//{
// -------------------------------------- PMAC to PC request generation
CPANEL_IN_SAVE_M = CPANEL_IN_M     // Set Command request

//-----------------------------------------JOG MODE SEL PROCESS
If (MODE_IN_SAVE_M != MODE_IN_M)
  MODE_IN_SAVE_M = MODE_IN_M
  C_MODE_M = MODE_IN_SAVE_M	//IN_MODES_M is the high 4 bit of IN_JGFD_M
  If (MODE_IN_SAVE_M = 3)
    C_MODE_M = 2
  EndIf
  If (MODE_IN_SAVE_M = 2)
    C_MODE_M = 3
  EndIf
  
  S_MODE_M = C_MODE_M
  //CMD"A"
EndIf
If (Z_OVR_NO_FLG != 1)		//{
C_ZOVRD_M = ZOVRD_IN_SAVE_M
Else
  C_ZOVRD_M=4
EndIf
If (FEED_OVR_NO_FLG != 1)
  C_FOVRD_M = FOVRD_IN_SAVE_M
  C_ROVRD_M  = FOVRD_IN_SAVE_M
  C_FEED_M = FOVRD_IN_SAVE_M
Else
  C_FOVRD_M = 4
EndIf

//-----------------------------------------------------------
If (FUNC_SW_NO = 5)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC5))
    If (FUNC5_SW_2_PUSH = 0)
      FUNC5_SW_2_PUSH=1
    Else
      FUNC5_SW_2_PUSH=0
    EndIf
    FUNC_SW_NO=0
  EndIf
EndIf

If (FUNC_SW_NO = 1)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC1))
    If (FUNC1_SW_2_PUSH = 0)
      FUNC1_SW_2_PUSH=1
    Else
      FUNC1_SW_2_PUSH=0
    EndIf
    FUNC_SW_NO=0
  EndIf
EndIf



If (C_MODE_M = SEL_MODE_MANUAL)// manual mode{


If (FUNC_SW_NO = 2)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC2))
    If (FUNC2_SW_2_PUSH = 0)
      FUNC2_SW_2_PUSH=1
    Else
      FUNC2_SW_2_PUSH=0
    EndIf
    FUNC_SW_NO=0
  EndIf
EndIf

If (FUNC_SW_NO = 3)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC3))
    If (FUNC3_SW_2_PUSH = 0)
      FUNC3_SW_2_PUSH=1
    Else
      FUNC3_SW_2_PUSH=0
    EndIf
    FUNC_SW_NO=0
    //F6_NOISE_FILTER=0
  EndIf
EndIf

If (FUNC_SW_NO = 4)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC4))
    If (FUNC4_SW_2_PUSH = 0)
      FUNC4_SW_2_PUSH=1
    Else
      FUNC4_SW_2_PUSH=0
    EndIf
    ;@SET_OFF(CS_COMMAND8_M,CS_INPOS)
    /*;If (@ON(MOTOR3_STATUS_M,1))
    ;@SET_OFF(OUT_2_M,INPOS_LED)
    ;Else*/
    ; @SET_ON(OUT_2_M,INPOS_LED)
    ;EndIf
    FUNC_SW_NO=0
  EndIf
EndIf

If (FUNC_SW_NO = 6)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC6))
    If (FUNC6_SW_2_PUSH = 0)
      FUNC6_SW_2_PUSH=1
    Else
      FUNC6_SW_2_PUSH=0
    EndIf
    FUNC_SW_NO=0
  EndIf
EndIf
ENDIF			// MANUAL MODE }

/*If (C_MODE_M != SEL_MODE_MANUAL)// NOT manual mode{
If (FUNC_SW_NO = 7)
  If (@OFF(FUNC1_8_IN_SAVE_M,SW_FUNC7))
    If (FUNC7_SW_2_PUSH = 0)
      FUNC7_SW_2_PUSH=1
    Else
      FUNC7_SW_2_PUSH=0
    EndIf
    FUNC_SW_NO=0
  EndIf
EndIf
ENDIF			// NOT MANUAL MODE }*/

Else
  //-----------------------------------------FUNC1-4 PROCESS
  //yao. to disable all the function switchs when homing.
  If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC5))       	//吸尘启停
  F5_NOISE_FILTER=F5_NOISE_FILTER+1
  If (F5_NOISE_FILTER > NOISE_DETECT_CYCLE)
    F5_NOISE_FILTER=0
    FUNC_SW_NO=5
    If (FUNC5_SW_2_PUSH = 1)
      @SET_OFF(CS_COMMAND8_M,CS_CUST)
      @SET_OFF(OUT_2_M,DUST_LED)
    Else
      @SET_ON(CS_COMMAND8_M,CS_CUST)
      @SET_ON(OUT_2_M,DUST_LED)
    EndIf
  EndIf
EndIf

;If (@OFF(MOTOR1_STATUS_M,$400))
;AND (@OFF(MOTOR1_STATUS_M,1))	//home in progress
;OR(@OFF(MOTOR2_STATUS_M,$400))
;AND (@OFF(MOTOR2_STATUS_M,1))
;OR(@OFF(MOTOR3_STATUS_M,$400))
;AND (@OFF(MOTOR3_STATUS_M,1))
;OR(@OFF(MOTOR5_STATUS_M,$400))
;AND (@OFF(MOTOR5_STATUS_M,1))
;OR(@OFF(MOTOR6_STATUS_M,$400))
;AND (@OFF(MOTOR6_STATUS_M,1))
;OR(@OFF(MOTOR7_STATUS_M,$400))
;AND (@OFF(MOTOR7_STATUS_M,1))
;OR(@OFF(MOTOR8_STATUS_M,$400))
;AND (@OFF(MOTOR8_STATUS_M,1))

;Else

//------------------------------------------FUNC5-8 PROCESS
If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC1))     //往复启停
F1_NOISE_FILTER=F1_NOISE_FILTER+1
If (F1_NOISE_FILTER > NOISE_DETECT_CYCLE)
  F1_NOISE_FILTER=0
  FUNC_SW_NO=1
  If (FUNC1_SW_2_PUSH = 1)
    @SET_OFF(CS_COMMAND8_M,CS_TO_FRO)
    @SET_OFF(OUT_2_M,TO_FRO_LED)
  Else
    @SET_ON(CS_COMMAND8_M,CS_TO_FRO)
    @SET_ON(OUT_2_M,TO_FRO_LED)
    @SET_OFF(OUT_2_M,INPOS_LED)
  EndIf
EndIf
EndIf



If (C_MODE_M = SEL_MODE_MANUAL)// manual mode{



If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC2))      //修整启停
F2_NOISE_FILTER=F2_NOISE_FILTER+1
If (F2_NOISE_FILTER > NOISE_DETECT_CYCLE)
  F2_NOISE_FILTER=0
  FUNC_SW_NO=2
  If (FUNC2_SW_2_PUSH = 1)
    @SET_OFF(CS_COMMAND8_M,CS_MEND)
    @SET_OFF(OUT_2_M,MEND_LED)
  Else
    @SET_ON(CS_COMMAND8_M,CS_MEND)
    @SET_ON(OUT_2_M,MEND_LED)
  EndIf
EndIf
EndIf

If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC3))      //旋转启停
F3_NOISE_FILTER=F3_NOISE_FILTER+1
If (F3_NOISE_FILTER > NOISE_DETECT_CYCLE)
  F3_NOISE_FILTER=0
  FUNC_SW_NO=3
  If (FUNC3_SW_2_PUSH = 1)
    @SET_OFF(CS_COMMAND8_M,CS_SPIN)
    @SET_OFF(OUT_2_M,SPIN_LED)
  Else
    @SET_ON(CS_COMMAND8_M,CS_SPIN)
    @SET_ON(OUT_2_M,SPIN_LED)
  EndIf
EndIf
EndIf

If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC4))     	 //准停
F4_NOISE_FILTER=F4_NOISE_FILTER+1
If (F4_NOISE_FILTER > NOISE_DETECT_CYCLE)
  F4_NOISE_FILTER=0
  FUNC_SW_NO=4
  If (FUNC4_SW_2_PUSH = 1)
    @SET_OFF(CS_COMMAND8_M,CS_INPOS)
    @SET_OFF(OUT_2_M,INPOS_LED)
  Else
    If (@ON(CS_COMMAND8_M,CS_TO_FRO))
      FUNC1_SW_2_PUSH = 0
      @SET_OFF(CS_COMMAND8_M,CS_TO_FRO)
      @SET_OFF(OUT_2_M,TO_FRO_LED)
      @SET_ON(CS_COMMAND8_M,CS_INPOS)
      @SET_ON(OUT_2_M,INPOS_LED)
    Else
      @SET_ON(CS_COMMAND8_M,CS_INPOS)
      @SET_ON(OUT_2_M,INPOS_LED)
    EndIf
  EndIf
  ;EndIf
EndIf
EndIf

If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC6))     	 //手脉
F6_NOISE_FILTER=F6_NOISE_FILTER+1
If (F6_NOISE_FILTER > NOISE_DETECT_CYCLE)
  F6_NOISE_FILTER=0
  FUNC_SW_NO=6
  If (FUNC6_SW_2_PUSH = 1)
    @SET_OFF(CS_COMMAND8_M,CS_MGY)
    @SET_OFF(C_JOG_M,SEL_JOG_HANDLE)
    @SET_OFF(OUT_2_M,MGY_LED)
  Else
    @SET_ON(CS_COMMAND8_M,CS_MGY)
    @SET_ON(C_JOG_M,SEL_JOG_HANDLE)
    @SET_ON(OUT_2_M,MGY_LED)
  EndIf
EndIf
EndIf
ENDIF				  // MANUAL MODE }

If (C_MODE_M != SEL_MODE_MANUAL)//NOT manual mode{
If (@ON(FUNC1_8_IN_SAVE_M,SW_FUNC7))     	 //U/V手脉
F7_NOISE_FILTER=F7_NOISE_FILTER+1
If (F7_NOISE_FILTER > NOISE_DETECT_CYCLE)
  F7_NOISE_FILTER=0
  ;  FUNC_SW_NO=7
  @SET_ON(CS_COMMAND8_M,CS_UVMGY)
  @SET_ON(OUT_2_M,UV_LED)
EndIf
Else
  @SET_OFF(CS_COMMAND8_M,CS_UVMGY)
  @SET_OFF(OUT_2_M,UV_LED)
EndIf
ENDIF				  //NOT MANUAL MODE }

;EndIf //	home in progress
EndIf

//---------------------------------------JOG & FEED RATE PROCESS
If (IN_JGFD_M != IN_JGFD_CHNG_M)       // { has one Ormore input bit(s) changed?
IN_JGFD_M=IN_JGFD_CHNG_M           // update change flag

C_JOGINC_M = JOGINC_IN_SAVE_M
If (@ON(C_JOGINC_M,SEL_JOG_S))
  @SET_ON(C_JOG_M,SEL_JOG_CONT)
  @SET_OFF(C_JOG_M,SEL_JOG_INC)
Else
  @SET_ON(C_JOG_M,SEL_JOG_INC)
  @SET_OFF(C_JOG_M,SEL_JOG_CONT)
EndIf

C_AXIS_M = AXIS_IN_SAVE_M
C_DIST_M = SMPY_IN_SAVE_M
;VS_HAND_STEP_M = SMPY_IN_SAVE_M

Else
  //------------------------------------
  If (C_MODE_M = SEL_MODE_MANUAL)	// manual mode{
  If (@OFF(ES_ERR_FATAL_M,MANUAL_LIMIT))	//POWER ON{
  If (@ON(IN_1_M,X_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_X_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_X_PLUS)
Else
  If (@ON(IN_1_M,X_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_X_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_X_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_X_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_X_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,Y_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Y_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_Y_PLUS)
Else
  If (@ON(IN_1_M,Y_MINUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Y_PLUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)
  @SET_ON(CS_COMMAND6_M,CS_JOG_Y_MINUS)
Else
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Y_PLUS)
  @SET_OFF(CS_COMMAND6_M,CS_JOG_Y_MINUS)
  @SET_ON(CS_COMMAND3_M,CS_JOG_STOP)
  ENDIF					//}
  ENDIF					//}
  
  If (@ON(IN_1_M,U_PLUS))		//{
  @SET_OFF(CS_COMMAND6_M,CS_JOG_U_MINUS)
  @SET_OFF(CS_COMMAND3_M,CS_JOG_STOP)

⌨️ 快捷键说明

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