📄 common.cpp
字号:
if(k>0&&k==j)
{
return SUCCESS;
}
else
{
return ERROR_SET_SLAVEPRM;
}
}
int OnSetBusPrm(struct CBusPrm* myBusPrm)
{
USIGN16 temp;
int CurrentSlaveAdd=255;
int j=0;
int k=0;
m_PbproComm.read_dp_master_default(); //2008-4-29
temp=myBusPrm->m_dataCtlTime;
m_PbproComm.bus_para_set_ptr->data_control_time =SWAP16(temp) ;
temp=myBusPrm->m_MaxTsdr;
m_PbproComm.bus_para_set_ptr->max_tsdr =SWAP16(temp);
temp=myBusPrm->m_minSlaveInterval;
m_PbproComm.bus_para_set_ptr->min_slave_interval=SWAP16(temp);
temp=myBusPrm->m_pullTimeOut;
m_PbproComm.bus_para_set_ptr->poll_timeout=SWAP16(temp) ;
m_PbproComm.bus_para_set_ptr->baud_rate=myBusPrm->m_baudRate;
if(m_PbproComm.dp_download_bus_req()==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_DOWNLOAD_BUS_REQ;
}
//SendBusPrm();
}
void OnDataexchang(struct CDataSdRcv* myDataExch, UINT slavenumber)
{
USIGN16 temp;
int CurrentSlaveAdd=255;
int j=0;
int k=0;
/* temp=(unsigned short)*pParam; //此处需要重新考虑
if(temp<DP_MAX_SLAVE_ADDRESS)
bShowSlave=temp;
if(temp==255)*/ //此书输入的应该是相应从站的地址 拟进行如下编写
//temp=slavenumber;
//if(temp<DP_MAX_SLAVE_ADDRESS)
bShowSlave=slavenumber;
//if(temp>0) //
//{
temp=myDataExch->m_PKE_OUT;
m_PbproComm.Output_data[bShowSlave][0]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][1]=temp;
temp=myDataExch->m_IND_OUT;
m_PbproComm.Output_data[bShowSlave][2]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][3]=temp;
temp=myDataExch->m_PWE>>16;
m_PbproComm.Output_data[bShowSlave][4]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][5]=temp;
temp=myDataExch->m_PWE;
m_PbproComm.Output_data[bShowSlave][6]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][7]=temp;
temp=myDataExch->m_STW1;
m_PbproComm.Output_data[bShowSlave][8]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][9]=temp;
temp=myDataExch->m_NSOOL_B>>16;
m_PbproComm.Output_data[bShowSlave][10]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][11]=temp;
temp=myDataExch->m_NSOOL_B;
m_PbproComm.Output_data[bShowSlave][12]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][13]=temp;
temp=myDataExch->m_STW2;
m_PbproComm.Output_data[bShowSlave][14]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][15]=temp;
temp=myDataExch->m_G1_STW;
m_PbproComm.Output_data[bShowSlave][16]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[bShowSlave][17]=temp;
// }
/////////////////////////////////////////////////////
//2008-5-23
if(myDataExch->m_STW2==0)
{
Data_Exchange_Postion_Flag=0;
}
else
{
Data_Exchange_Postion_Flag=1;
}
///////////////////////////////////////////////////////////////
//2008-5-20
DataExchangeFlag=1; //2008-5-20
OnDataHandle(myDataExch,slavenumber); //2008-5-23
// OnDataOperate(myDataExch,slavenumber);
/*
if(!TimerId)
{
TimerId=SetMultimediaTimer(TIMER_SET_VALUE,1);
DataExchangeFlag=1;
}*/
}
void OnGetPositionPrm(struct CDataSdRcv* myDataExch, UINT slavenumber)
{
USIGN16 temp;
//////////////////////////////
//2008-5-11
SlaveY=slavenumber;
SlaveX=slavenumber;
//////////////////////////////////
int CurrentSlaveAdd=255;
int j=0;
int k=0;
if( Data_Exchange_Postion_Flag==0)
Data_Exchange_Postion_Flag=1;
V0=500;
Vmax=6000;
V_Current=V0;
Acc=2;
Dt=TIMER_SET_VALUE;
X_Current=X_Pre=0;
Y_Current=Y_Pre=0;
dX_Current=0;
dY_Current=0;
Y_fb_pre=0;
Y_Current=Y_Pre=1310720;
PidReg_Y.e_k=1310720;
X_Current=X_Pre=1310720;
PidReg_X.e_k=1310720;
m_PbproComm.Output_data[SlaveY][10]=0;
m_PbproComm.Output_data[SlaveY][11]=0;
m_PbproComm.Output_data[SlaveY][12]=0;
m_PbproComm.Output_data[SlaveY][13]=0;
Y_fb0=m_PbproComm.Input_data[SlaveY][18];
Y_fb0<<=8;
Y_fb0+=m_PbproComm.Input_data[SlaveY][19];
Y_fb0<<=8;
Y_fb0+=m_PbproComm.Input_data[SlaveY][20];
Y_fb0<<=8;
Y_fb0+=m_PbproComm.Input_data[SlaveY][21];
Y_fb=Y_fb_pre=Y_fb0;
Y_Pre_double=Y_fb0;
Y_fb_pre_double=0;
dY_fb_double=0;
/////////////////////////////////////////////////////////////////////////////////////////////////
m_PbproComm.Output_data[SlaveX][10]=0;
m_PbproComm.Output_data[SlaveX][11]=0;
m_PbproComm.Output_data[SlaveX][12]=0;
m_PbproComm.Output_data[SlaveX][13]=0;
X_fb0=m_PbproComm.Input_data[SlaveX][18];
X_fb0<<=8;
X_fb0+=m_PbproComm.Input_data[SlaveX][19];
X_fb0<<=8;
X_fb0+=m_PbproComm.Input_data[SlaveX][20];
X_fb0<<=8;
X_fb0+=m_PbproComm.Input_data[SlaveX][21];
X_fb=X_fb_pre=X_fb0;
X_Pre_double=X_fb0;
X_fb_pre_double=0;
dX_fb_double=0;
/* if(!TimerId)
{
TimerId=SetMultimediaTimer(TIMER_SET_VALUE,1);
DataExchangeFlag=1;
}*/
}
/////////////////////////////////////////////////////////////////////////
/////////2008-5-10
/*void KillMultimediaTimer(UINT m_TimerID)
{
timeKillEvent(m_TimerID);
}
*/
//void OnMultimediaTimer(WPARAM wParam, LPARAM lParam)//使用多媒体定时器
void OnDataHandle(struct CDataSdRcv* myDataExch,UINT slavenumber)
{
///////2008-5-10
bShowSlave=slavenumber;
/////////////////////////////////////////
//2008-5-20
SlaveX=slavenumber;
SlaveY=slavenumber;
///////////////////////
long Y_Speed=0;
long X_Speed=0;
UINT temp;
//myDataExch.UpdateData(TRUE);
if(Data_Exchange_Postion_Flag)
{
///////////////////////////////////////////////////////
//2008-5-23
OnGetPositionPrm(myDataExch,7);
//////////////////////////////PID ///////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
/////////////////////////////// PID Y ////////////////////////////////
/////////////////////////////////////////////////////////////////////////
Y_fb=m_PbproComm.Input_data[SlaveY][18]; //编码器位置信息
Y_fb<<=8;
Y_fb+=m_PbproComm.Input_data[SlaveY][19];
Y_fb<<=8;
Y_fb+=m_PbproComm.Input_data[SlaveY][20];
Y_fb<<=8;
Y_fb+=m_PbproComm.Input_data[SlaveY][21];
dY_Current=Y_Current;
dY_fb=Y_fb-Y_fb_pre;
PidReg_Y.PidReg(dY_Current,dY_fb,1);
Y_fb_pre=Y_fb;
//////////////////////////////输出速度值//////////////////////////
Y_Speed=PidReg_Y.out;
//Y_Speed=PidReg_Y.out=pcspeed; // 2008-3-21
temp=Y_Speed>>16;
m_PbproComm.Output_data[SlaveY][10]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[SlaveY][11]=temp;
temp=Y_Speed;
m_PbproComm.Output_data[SlaveY][12]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[SlaveY][13]=temp;
/////////////////////////////////////////////////////////////////////////
/////////////////////////////// PID X ////////////////////////////////
/////////////////////////////////////////////////////////////////////////
X_fb=m_PbproComm.Input_data[SlaveX][18];
X_fb<<=8;
X_fb+=m_PbproComm.Input_data[SlaveX][19];
X_fb<<=8;
X_fb+=m_PbproComm.Input_data[SlaveX][20];
X_fb<<=8;
X_fb+=m_PbproComm.Input_data[SlaveX][21];
dX_Current=X_Current;
dX_fb=X_fb-X_fb_pre;
PidReg_X.PidReg(dX_Current,dX_fb,1);
X_fb_pre=X_fb;
//////////////////////////////输出速度值//////////////////////////
//X_Speed=PidReg_X.out=pcspeed; //2008-3-21
X_Speed=PidReg_X.out;
Y_Speed=dY_Current/Dt;
temp=X_Speed>>16;
m_PbproComm.Output_data[SlaveX][10]=temp>>8; //速度输出
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[SlaveX][11]=temp;
temp=X_Speed;
m_PbproComm.Output_data[SlaveX][12]=temp>>8;
temp<<=8;
temp>>=8;
m_PbproComm.Output_data[SlaveX][13]=temp;
}
////////////////////////////////////////////////////////////////////
if(DataExchangeFlag==1)
//if(m_PbproComm.dp_data_exchange( slavenumber)!=E_OK)//2008-5-21
if(m_PbproComm.dp_data_exchange( )!=E_OK)
{
;
}
else
{ // UpdateDlgFre++; //2008-5-20
// if(UpdateDlgFre>200) //2008-5-20
for(UpdateDlgFre=0;UpdateDlgFre<10;UpdateDlgFre++)
{
//UpdateDlgFre=0;
myDataExch->m_PKE_INPUT=m_PbproComm.Input_data[bShowSlave][0]; //PKE
myDataExch->m_PKE_INPUT<<=8;
myDataExch->m_PKE_INPUT+=m_PbproComm.Input_data[bShowSlave][1];
myDataExch->m_INT_INPUT=m_PbproComm.Input_data[bShowSlave][2]; // INT
myDataExch->m_INT_INPUT<<=8;
myDataExch->m_INT_INPUT+=m_PbproComm.Input_data[bShowSlave][3];
myDataExch->m_PWE_INPUT=m_PbproComm.Input_data[bShowSlave][4]; //PWE
myDataExch->m_PWE_INPUT<<=8;
myDataExch->m_PWE_INPUT+=m_PbproComm.Input_data[bShowSlave][5];
myDataExch->m_PWE_INPUT<<=8;
myDataExch->m_PWE_INPUT+=m_PbproComm.Input_data[bShowSlave][6];
myDataExch->m_PWE_INPUT<<=8;
myDataExch->m_PWE_INPUT+=m_PbproComm.Input_data[bShowSlave][7];
myDataExch->m_ZSW1=m_PbproComm.Input_data[bShowSlave][8]; //ZSW!
myDataExch->m_ZSW1<<=8;
myDataExch->m_ZSW1+=m_PbproComm.Input_data[bShowSlave][9];
myDataExch->m_NIST_B=m_PbproComm.Input_data[bShowSlave][10]; // NIST_B
myDataExch->m_NIST_B<<=8;
myDataExch->m_NIST_B+=m_PbproComm.Input_data[bShowSlave][11];
myDataExch->m_NIST_B<<=8;
myDataExch->m_NIST_B+=m_PbproComm.Input_data[bShowSlave][12];
myDataExch->m_NIST_B<<=8;
myDataExch->m_NIST_B+=m_PbproComm.Input_data[bShowSlave][13];
myDataExch->m_ZSW2=m_PbproComm.Input_data[bShowSlave][14]; //ZSW2
myDataExch->m_ZSW2<<=8;
myDataExch->m_ZSW2+=m_PbproComm.Input_data[bShowSlave][15];
myDataExch->m_G1_ZSW=m_PbproComm.Input_data[bShowSlave][16]; //G1_ZSW
myDataExch->m_G1_ZSW<<=8;
myDataExch->m_G1_ZSW+=m_PbproComm.Input_data[bShowSlave][17];
myDataExch->m_G1_XIST1=m_PbproComm.Input_data[bShowSlave][18]; // G1_XIST1
myDataExch->m_G1_XIST1<<=8;
myDataExch->m_G1_XIST1+=m_PbproComm.Input_data[bShowSlave][19];
myDataExch->m_G1_XIST1<<=8;
myDataExch->m_G1_XIST1+=m_PbproComm.Input_data[bShowSlave][20];
myDataExch->m_G1_XIST1<<=8;
myDataExch->m_G1_XIST1+=m_PbproComm.Input_data[bShowSlave][21];
myDataExch->m_G1_XIST2=m_PbproComm.Input_data[bShowSlave][22]; //G1_XIST2
myDataExch->m_G1_XIST2<<=8;
myDataExch->m_G1_XIST2+=m_PbproComm.Input_data[bShowSlave][23];
myDataExch->m_G1_XIST2<<=8;
myDataExch->m_G1_XIST2+=m_PbproComm.Input_data[bShowSlave][24];
myDataExch->m_G1_XIST2<<=8;
myDataExch->m_G1_XIST2+=m_PbproComm.Input_data[bShowSlave][25];
//myDataExch.ChangeZSW1(myDataExch->m_ZSW1);
// myDataExchg.UpdateData(FALSE);
}
}
}
/*
UINT SetMultimediaTimer(UINT uDelay,UINT uResolution )
{ UINT TimerId1;
TimerId1=timeSetEvent(uDelay, uResolution,
(LPTIMECALLBACK) MultimediaTimerProc,
(DWORD)this,TIME_PERIODIC);
return TimerId1;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -