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

📄 main.cpp

📁 机械手IPC控制器伺服运动程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    MCC_SetRIOClockDivider(19, RIO_SET1, CARD_INDEX); //  set remote I/O set 0's transmission rate = 40MHz / (2 * (19 + 1)) = 1 MHz 
    MCC_EnableRIOSetControl(RIO_SET1, CARD_INDEX);    //  enable remote I/O set 0
    MCC_EnableRIOSlaveControl(RIO_SET1, CARD_INDEX);  //  enable remote I/O set 0' slave node
	MCC_EnableRIOTransTrigger(RIO_SET1, CARD_INDEX);  //  enable a remote I/O's transmission error to trigger a interrupt service function
    MCC_SetRIOOutputValue(OUTPUT0, RIO_SET1, RIO_PORT0, CARD_INDEX); //  write remote I/O set 0's DO0  ~ DO15 signals
    MCC_SetRIOOutputValue(OUTPUT1, RIO_SET1, RIO_PORT1, CARD_INDEX); //  write remote I/O set 0's DO16 ~ DO31 signals
    MCC_SetRIOOutputValue(OUTPUT2, RIO_SET1, RIO_PORT2, CARD_INDEX); //  write remote I/O set 0's DO32 ~ DO47 signals
    MCC_SetRIOOutputValue(OUTPUT3, RIO_SET1, RIO_PORT3, CARD_INDEX); //  write remote I/O set 0's DO48 ~ DO63 signals
//  MCC_SetCycleInterruptRoutine(System_ISR_Function);

	
	MCC_SetUnit(1); //mm
//	Acc_DecType='S';
	Acc_DecType='T';

    MCC_SetAccType(Acc_DecType, GROUP_INDEX0);
    MCC_SetAccType(Acc_DecType, GROUP_INDEX1);
    MCC_SetAccType(Acc_DecType, GROUP_INDEX2);
    MCC_SetDecType(Acc_DecType, GROUP_INDEX0);
    MCC_SetDecType(Acc_DecType, GROUP_INDEX1);
    MCC_SetDecType(Acc_DecType, GROUP_INDEX2); 

	if(MX_AccTime>MZ_AccTime)
      MCC_SetAccTime(MX_AccTime, GROUP_INDEX0);
    else
      MCC_SetAccTime(MZ_AccTime, GROUP_INDEX0);
	if(MX_DecTime>MZ_DecTime)
      MCC_SetDecTime(MX_DecTime, GROUP_INDEX0);
    else
      MCC_SetDecTime(MZ_DecTime, GROUP_INDEX0);
	if(SX_AccTime>SZ_AccTime)
      MCC_SetAccTime(SX_AccTime, GROUP_INDEX1);
    else
      MCC_SetAccTime(SZ_AccTime, GROUP_INDEX1);
	if(SX_DecTime>SZ_DecTime)
      MCC_SetDecTime(SX_DecTime, GROUP_INDEX1);
    else
      MCC_SetDecTime(SZ_DecTime, GROUP_INDEX1);
    MCC_SetPtPAccType(Acc_DecType, Acc_DecType, Acc_DecType,
		              Acc_DecType, Acc_DecType, Acc_DecType, GROUP_INDEX0);
    MCC_SetPtPAccType(Acc_DecType, Acc_DecType, Acc_DecType,
		              Acc_DecType, Acc_DecType, Acc_DecType, GROUP_INDEX1);
    MCC_SetPtPAccType(Acc_DecType, Acc_DecType, Acc_DecType,
		              Acc_DecType, Acc_DecType, Acc_DecType, GROUP_INDEX2);
    MCC_SetPtPDecType(Acc_DecType, Acc_DecType, Acc_DecType,
		              Acc_DecType, Acc_DecType, Acc_DecType, GROUP_INDEX0);
    MCC_SetPtPDecType(Acc_DecType, Acc_DecType, Acc_DecType,
		              Acc_DecType, Acc_DecType, Acc_DecType, GROUP_INDEX1);
    MCC_SetPtPDecType(Acc_DecType, Acc_DecType, Acc_DecType,
		              Acc_DecType, Acc_DecType, Acc_DecType, GROUP_INDEX2);
    MCC_SetPtPAccTime(MX_AccTime, 300, MZ_AccTime, 300, 300, 300, GROUP_INDEX0);
    MCC_SetPtPAccTime(SX_AccTime, 300, SZ_AccTime, 300, 300, 300, GROUP_INDEX1);
    MCC_SetPtPAccTime(300, Y_AccTime, 300, 300, 300, 300, GROUP_INDEX2);
    MCC_SetPtPDecTime(MX_DecTime, 300, MZ_DecTime, 300, 300, 300, GROUP_INDEX0);
    MCC_SetPtPDecTime(SX_DecTime, 300, SZ_DecTime, 300, 300, 300, GROUP_INDEX1);
    MCC_SetPtPDecTime(300, Y_DecTime, 300, 300, 300, 300, GROUP_INDEX2);
//	if(MX_AccTime<MZ_AccTime) MX_AccTime=MZ_AccTime;
	if(MX_DecTime<MZ_DecTime) MX_DecTime=MZ_DecTime;
//	if(SX_AccTime<SZ_AccTime) SX_AccTime=SZ_AccTime;     
	if(SX_DecTime<SZ_DecTime) SX_DecTime=SZ_DecTime;

	//	MCC_SetInPosCheckTime(20, 0);//  set in-position check time : 20 X (interpolation time interval)
//	MCC_EnableInPos(0);//  enable in-position check
//	MCC_SetInPosTolerance(50, 20, 50, 1000, 1000, 1000, 0);//  set in-position tolerances (unit : pulse)
//	MCC_SetInPosCheckTime(20, 1);//  set in-position check time : 20 X (interpolation time interval)
//	MCC_EnableInPos(1);//  enable in-position check
//	MCC_SetInPosTolerance(50, 20, 1000, 1000, 1000, 1000, 1);//  set in-position tolerances (unit : pulse)
//	MCC_SetInPosCheckTime(20, 2);//  set in-position check time : 20 X (interpolation time interval)
//	MCC_EnableInPos(2);//  enable in-position check
//	MCC_SetInPosTolerance(100, 50, 1000, 1000, 1000, 1000, 2);//  set in-position tolerances (unit : pulse)
//	MCC_SetPCLRoutine(PCL_ISR_Function);//  link a position control loop interrupt service function
//	MCC_EnableLimitSwitchCheck(1);//  enable hardware limit switch check
//    Read_Flag=1;
	FileDataType=2;
    LoadRecords();
	msafepos=siSys.safepos_z;   // Z Pos.
	mytsafepos=siSys.getsafe_y; // Y Take Pos.
	mypsafepos=siSys.putsafe_y; // Y Put Pos.
//    AcrossZH=msafepos-20.0;     // Across Z Height
	if(siSys.minpos_sz>=siSys.safepos_z) AcrossZH=msafepos-50.0;
    else                                 AcrossZH=siSys.minpos_sz;
    NG_XPos=siSys.minpos_mx;
    NG_ZPos=siSys.minpos_mz;
    NG_YPos=siSys.maxpos_mx;
    QC_XPos=siSys.maxpos_mz;
    QC_ZPos=siSys.minpos_y;
    QC_YPos=siSys.maxpos_y;
	QC_MoldSet=(int)siSys.minpos_sx;
    Side_Wait_Timer=siSys.maxpos_sz;
	MakerDate=siSys.produce_date;
//    MoldCountSet=siSys.run_count; // Total Count
    Save_Flag=0;
	nErrorCount=0;
	FileDataType=1;
    LoadRecords();
	FileDataType=0;

	FileNameSys=glb.m_num;
    ModeSys=glb.m_Valid;
    MoldCountCur=glb.m_MoldCount;
    MoldCountSet=glb.m_MoldTotal;
    MoldSet=glb.m_MoldSet;                
    MoldStack1=glb.m_MoldStack1;          
    MoldStack2=glb.m_MoldStack2;          
    MoldReserv1=glb.m_Reserved1;          
    MoldReserv2=glb.m_Reserved2;          
    MoldReserv3=glb.m_Reserved3; // Buzzer On/Off         
    AlmLogIndex=glb.m_LogIndex;           
    for(int i=0; i<50; i++) {
        AlmLogTime[i]=glb.m_LogTime[i];
        AlmLogID[i]=glb.m_LogID[i];
    }
	msgalm=0;
	JogAlarm=0;
	OTAlarm=0;
	IOAlarm=0;
	ACTAlarm=0;
	WarnAlarm=0;
	TimeNum=0;
	BeepOnce=0;
	Int_Count=0;
	Demo_Flag=0; // 0:Home, 1:No Home/No Alarm Display, 2:No Home/Alarm Display
	TryRun_Flag=0;
    KillTimer(60);
    SetTimer(60, 200, NULL);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

// 200ms
void CMain::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
//	int   Sys_LagMX, Sys_LagMZ, Sys_LagMSY, Sys_LagSX, Sys_LagSZ;
//	long   m_Encmx, m_Encmz, m_Encmsy, m_Encsx, m_Encsz;
//	long   m_Curmx, m_Curmz, m_Curmsy, m_Cursx, m_Cursz, m_dummy;

//	double Sys_PEncMX, Sys_PEncMZ, Sys_PEncMSY, Sys_PEncSX, Sys_PEncSZ;
//	double Sys_PCurMX, Sys_PCurMZ, Sys_PCurMSY, Sys_PCurSX, Sys_PCurSZ;
	WORD wInput0, wInput1;

	MCC_GetRIOInputValue(&wInput0, RIO_SET1, RIO_PORT0, CARD_INDEX);
	MCC_GetRIOInputValue(&wInput1, RIO_SET1, RIO_PORT1, CARD_INDEX);

// Get Encoder Data
// Get Command Data
/*
	MCC_GetENCValue(&m_Encmx, 0, 0);
	MCC_GetENCValue(&m_Encmz, 1, 0);
	MCC_GetPulsePos(&m_Curmx, &m_dummy, &m_Curmz, &m_dummy,  &m_dummy, &m_dummy,
		            GROUP_INDEX0);

	MCC_GetENCValue(&m_Encsx, 3, 0);
	MCC_GetENCValue(&m_Encsz, 4, 0);
	MCC_GetPulsePos(&m_Cursx, &m_dummy, &m_Cursz, &m_dummy,  &m_dummy, &m_dummy,
		            GROUP_INDEX1); 

	MCC_GetENCValue(&m_Encmsy,2, 0);
	MCC_GetPulsePos(&m_dummy, &m_Curmsy, &m_dummy, &m_dummy, &m_dummy,  &m_dummy,
				    GROUP_INDEX2);
				 
    Sys_LagMX=(int)(labs(m_Curmx-m_Encmx));
    Sys_LagMZ=(int)(labs(m_Curmz-m_Encmz));
    Sys_LagMSY=(int)(labs(m_Curmsy-m_Encmsy));
    Sys_LagSX=(int)(labs(m_Cursx-m_Encsx));
    Sys_LagSZ=(int)(labs(m_Cursz-m_Encsz));
*/
/*
	if(Demo_Flag!=1) {
        if(Sys_LagMX>ServoLagMX) {
            AlarmLagMX=Sys_LagMX;
			JogAlarm=JogAlarm | 0x00001000;
		}
        if(Sys_LagMZ>ServoLagMZ) {
            AlarmLagMZ=Sys_LagMZ;
			JogAlarm=JogAlarm | 0x00002000;
		}
        if(Sys_LagMSY>ServoLagMSY) {
            AlarmLagMSY=Sys_LagMSY;	
		    JogAlarm=JogAlarm | 0x00000400;
		}
        if(Sys_LagSX>ServoLagSX) {
            AlarmLagSX=Sys_LagSX;
			JogAlarm=JogAlarm | 0x00004000;
		}
        if(Sys_LagSZ>ServoLagSZ) {
            AlarmLagSZ=Sys_LagSZ;
			JogAlarm=JogAlarm | 0x00008000;
		}
    }

    if(Sys_LagMX>200) {
	  if(lab(LastEnc-CurEnc)<100) Alarm;
	  else LastEnc=CurEnc;

    }
	else LastEnc=CurEnc;





*/
/*
    m_Encmx=m_Encmx*unit0a;
    m_Encmz=m_Encmz*unit1a;
    m_Encmsy=m_Encmsy*unit2a;
    m_Encsx=m_Encsx*unit3a;
    m_Encsz=m_Encsz*unit4a;
	Sys_PEncMX=(m_Encmx/2500.0)*unit0;
	Sys_PEncMZ=(m_Encmz/2500.0)*unit1;
	Sys_PEncMSY=(m_Encmsy/2500.0)*unit2;
	Sys_PEncSX=(m_Encsx/2500.0)*unit3;
	Sys_PEncSZ=(m_Encsz/2500.0)*unit4;
	MCC_GetCurPos(&m_Curmx, &m_dummy, &m_Curmz, &m_dummy,  &m_dummy, &m_dummy,
				  GROUP_INDEX0);
	MCC_GetCurPos(&m_Cursx, &m_dummy, &m_Cursz, &m_dummy,  &m_dummy, &m_dummy,
				  GROUP_INDEX1); 
	MCC_GetCurPos(&m_dummy, &m_Curmsy, &m_dummy, &m_dummy, &m_dummy,  &m_dummy,
				  GROUP_INDEX2);
    Sys_PCurMX=m_Curmx*unit0;
    Sys_PCurMZ=m_Curmz*unit1;
    Sys_PCurMSY=m_Curmsy*unit2;
    Sys_PCurSX=m_Cursx*unit3;
    Sys_PCurSZ=m_Cursz*unit4;

	MCC_GetENCValue(&m_curmx, 0, 0);
	MCC_GetENCValue(&m_curmz, 1, 0);
	MCC_GetENCValue(&m_curmsy,2, 0);
	MCC_GetENCValue(&m_cursx, 3, 0);
	MCC_GetENCValue(&m_cursz, 4, 0);
// Get Command Data
	MCC_GetPulsePos(&m_curcmx, &m_dummy, &m_curcmz, &m_dummy,  &m_dummy, &m_dummy,
				  GROUP_INDEX0);
	MCC_GetPulsePos(&m_curcsx, &m_dummy, &m_curcsz, &m_dummy,  &m_dummy, &m_dummy,
				  GROUP_INDEX1); 
	MCC_GetPulsePos(&m_dummy, &m_curcmsy, &m_dummy, &m_dummy, &m_dummy,  &m_dummy,
				  GROUP_INDEX2);

    m_lagmx_str.Format("%ld ", labs(m_curmx-m_curcmx)); 
    m_lagmz_str.Format("%ld ", labs(m_curmz-m_curcmz)); 
    m_lagmsy_str.Format("%ld ", labs(m_curmsy-m_curcmsy)); 
    m_lagsx_str.Format("%ld ", labs(m_cursx-m_curcsx)); 
    m_lagsz_str.Format("%ld ", labs(m_cursz-m_curcsz)); 

    m_curmx=m_curmx*unit0a;
    m_curmz=m_curmz*unit1a;
    m_curmsy=m_curmsy*unit2a;
    m_cursx=m_cursx*unit3a;
    m_cursz=m_cursz*unit4a;
	m_mnumx=(m_curmx/2500.0)*unit0;
	m_mnumz=(m_curmz/2500.0)*unit1;
	m_mnumsy=(m_curmsy/2500.0)*unit2;
	m_mnusx=(m_cursx/2500.0)*unit3;
	m_mnusz=(m_cursz/2500.0)*unit4;
    m_mnumx_str.Format("%6.2f ", m_mnumx); 
    m_mnumz_str.Format("%6.2f ", m_mnumz); 
    m_mnumsy_str.Format("%6.2f ", m_mnumsy); 
    m_mnusx_str.Format("%6.2f ", m_mnusx); 
    m_mnusz_str.Format("%6.2f ", m_mnusz); 

    m_curcmx=m_curcmx*unit0a;
    m_curcmz=m_curcmz*unit1a;
    m_curcmsy=m_curcmsy*unit2a;
    m_curcsx=m_curcsx*unit3a;
    m_curcsz=m_curcsz*unit4a;
	m_mnumx=(m_curcmx/2500.0)*unit0;
	m_mnumz=(m_curcmz/2500.0)*unit1;
	m_mnumsy=(m_curcmsy/2500.0)*unit2;
	m_mnusx=(m_curcsx/2500.0)*unit3;
	m_mnusz=(m_curcsz/2500.0)*unit4;
    m_curmx_str.Format("%6.2f ", m_mnumx); 
    m_curmz_str.Format("%6.2f ", m_mnumz); 
    m_curmsy_str.Format("%6.2f ", m_mnumsy); 
    m_cursx_str.Format("%6.2f ", m_mnusx); 
    m_cursz_str.Format("%6.2f ", m_mnusz); 
*/

    TimeNum++;
	if(TimeNum>=10) TimeNum=0;
    if(TimeNum<5) Buzzer=1;
    else          Buzzer=0;
    if((wInput0 & 0x8000)==0 || (wInput1 & 0x0001)==0) OUTPUT0=OUTPUT0 |  0x2000;
    else                                               OUTPUT0=OUTPUT0 & ~0x2000;
    if(msgalm>0 || JogAlarm>0 || (OUTPUT0 & 0x2000)>0 ||  BeepOnce==1) {
		OUTPUT0=OUTPUT0 | 0x0800;
        if(BeepOnce==1) {
			BeepOnce=0;
			Buzzer=1;
			TimeNum=0;
		}
		if(MoldReserv3!=1 && Buzzer==1) OUTPUT0=OUTPUT0 |  0x0400;
        else                            OUTPUT0=OUTPUT0 & ~0x0400;
    }
	else OUTPUT0=OUTPUT0 & ~0x0C00;
		
	MCC_SetRIOOutputValue(OUTPUT0, RIO_SET1, RIO_PORT0, CARD_INDEX);	
    
	CDialog::OnTimer(nIDEvent);
}


void CMain::OnButton5() 
{
	// TODO: Add your control notification handler code here
	if(teatovflg==0)
	{
	if(dlgcur!=(CDialog *)dlgmainfrm) return;
	WIN32_FIND_DATA fd;
	HANDLE hfind=FindFirstFile("D:\\update",&fd);
	BOOL bDirectory=FALSE;
	if((hfind!=INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
		bDirectory=TRUE;
	if(!bDirectory)
	{
//		AfxMessageBox("ど

⌨️ 快捷键说明

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