📄 main.cpp
字号:
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 + -