📄 common.cpp
字号:
/////////////////////////////////////////////////
///
///
//2008-5-10-18
#include <windows.h>
#include "keywords.h"
#include "pb_type.h"
#include "pb_conf.h"
#include "pb_dp.h"
#include "pb_err.h"
#include "PidReg.h"
#include "Err.h"
#include "pb_if.h"
#include "PbproComm.h"
#include "common.h"
#include "stdio.h"
//////////////////////////////////
//2008-5-11
FILE *fp;
void OutputLog(char *str)
{
fp = fopen("log.txt","at+");
if (fp!=NULL)
{
fprintf(fp,"%s",str);
}
}
char s[200]; //2008-5-11
/////////////////////////////////
///////////////////////////////////////
//2008-5-10
///////////////////////////////////////////////
//DATA_EXCHANGE_POSITION中参数
////////////////////////////////////////////
unsigned char SlaveX;
unsigned char SlaveY;
double Acc;
double V_Current;
double V0;
double Vmax;
double Dt;
double X_Current;
double Y_Current;
double X_Pre;
double Y_Pre;
double X_Pre_double;
double Y_Pre_double;
double Y_fb_pre_double;
double X_fb_pre_double;
double dY_fb_double;
double dX_fb_double;
long dX_Current;
long dY_Current;
long Y_fb0;
long X_fb0;
long Y_fb_pre;
long X_fb_pre;
long dY_fb;
long dX_fb;
long X_fb;
long Y_fb;
CPidReg PidReg_X;
CPidReg PidReg_Y;
UINT TimerId;
unsigned char OperateFlag;
/////////////////////////////
////2008-5-10
int DataExchangeFlag; //2008-5-10
// END
//////////////////////////////////////
#define MASTERPRM 1
#define SLAVEPRM 2
#define BUSPRM 3
#define DATA_EXCHANGE 4
#define DATA_EXCHANGE_POSITION 5
////////////////
///////////
///////////////////////////
unsigned int UpdateDlgFre; //2008-5-10
unsigned short bShowSlave; //2008-5-10
UINT m_STW1;//2008-4-30
BOOL Data_Exchange_Postion_Flag; //2008-4-30
CPbproComm m_PbproComm;
int ScanSlaves()
{
BOOL bSlaveFlag=0;
// MsgDisplayFlag=0; //2008-4-19
m_PbproComm.read_dp_master_default();
if( m_PbproComm.dp_init_master_req()==PB_TRUE)
{
m_PbproComm.read_dp_bus_default();
if(m_PbproComm.dp_download_bus_req()==PB_TRUE)
{
if(m_PbproComm.dp_act_param_loc_req( DP_OP_MODE_STOP)==PB_TRUE)
{
bSlaveFlag=m_PbproComm.dp_slave_scan();
// if(!m_PbproComm.exit_communication ( ))
if(m_PbproComm.exit_communication ( )==E_OK)
{
Sleep(110);
OnInitApply();
if( m_PbproComm.fmb_set_configuration_req()==PB_TRUE&&bSlaveFlag)
{
return SUCCESS;
}
else
{
return ERROR_SET_CONFIGURATION_REQ_STOP;
}
}
else
{
return ERROR_EXIT_COMMUNICATION;
}
}
else
{
return ERROR_ACT_PARAM_LOC_REQ;
}
}
else
{
return ERROR_DOWNLOAD_BUS_REQ;
}
}
//MsgDisplayFlag=1;
else
{
return ERROR_INIT_MASTER_REQ;
}
}
int OnInitApply()
{
if(m_PbproComm.initialize_application()==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_INIT_APPLICATION ;
}
}
int OnGetOffsets()
{
if(m_PbproComm.dp_io_offsets( )==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_OFFSET;
}
}
int OnOfflStop()
{
if(m_PbproComm.dp_act_param_loc_req( DP_OP_MODE_STOP)==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_SET_CONFIGURATION_REQ_STOP;
}
}
///////////////////////////////////////////////////////////////////////
int OnStopClear()
{
if(m_PbproComm.dp_act_param_loc_req(DP_OP_MODE_CLEAR)==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_SET_CONFIGURATION_REQ_CLEAR;
}
}
//////////////////////////////////////////////////////////////////////////////////////
int OnClearOperate()
{
if(m_PbproComm.dp_act_param_loc_req( DP_OP_MODE_OPERATE)==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_SET_CONFIGURATION_REQOPERATE;
}
}
int OnStopCommunication()
{
if(m_PbproComm.exit_communication()==E_OK)
{
return SUCCESS;
}
else
{
return ERROR_STOPWORK;
}
}
void OnButtonExchange(USIGN16 funselect)
{
//UpdateData(TRUE);
m_STW1=0;
m_STW1|=funselect;
/*if(m_switchOn.GetChecked( ))
m_STW1|=0x0001;
if(m_inhibitVoltage.GetChecked( ))
m_STW1|=0x0002;
if(m_fastStopSw.GetChecked( ))
m_STW1|=0x0004;
if(m_operationEn.GetChecked( ))
m_STW1|=0x0008;
if(m_fastStopIn.GetChecked( ))
m_STW1|=0x0010;
if(m_Pause.GetChecked( ))
m_STW1|=0x0020;
if(m_resetFault.GetChecked( ))
m_STW1|=0x0040;
if(m_setPointEn.GetChecked( ))
m_STW1|=0x0080;
if(m_jogging.GetChecked( ))
m_STW1|=0x0100;
if(m_rezerved.GetChecked( ))
m_STW1|=0x0200;
if(m_PZDEn.GetChecked( ))
m_STW1|=0x0400;
if(m_startHome.GetChecked( ))
m_STW1|=0x0800;
if(m_manufactureSpec1.GetChecked( ))
m_STW1|=0x1000;
if(m_manufactureSpec2.GetChecked( ))
m_STW1|=0x2000;
if(m_manufactureSpec3.GetChecked( ))
m_STW1|=0x4000;
if(m_manufactureSpec4.GetChecked( ))
m_STW1|=0x8000;
m_stw1Str.Format("%d",m_STW1);
UpdateData(FALSE);
::SendMessage(MessageWnd,WM_GETDLGPRM,DATA_EXCHANGE,255);*/
}
void OnButtonPositionControl()
{
//::SendMessage(MessageWnd,WM_GETDLGPRM,DATA_EXCHANGE_POSITION,0);
}
BOOL SendSlavePrm(T_DP_ACTIVE_SLAVES ActiveSlave)
{
if(m_PbproComm.dp_download_slave_req(ActiveSlave))
{
return TRUE;
}
else
{
return FALSE;
}
}
/////////////////////////////////////////////////////////////////////
/// //2008-4-29
///////////////////////////////
int OnSetMasterPrm(struct MasterPrm* myMasterPrm)
{
//USIGN16 temp;
int CurrentSlaveAdd=255;
int j=0;
int k=0;
m_PbproComm.read_dp_master_default();//2008-4-29
m_PbproComm.init_master_req.master_default_address=myMasterPrm->m_masterAddressEdit;
m_PbproComm.init_master_req.master_class2=myMasterPrm->m_masterClassMode;
m_PbproComm.init_master_req.lowest_slave_address =myMasterPrm->m_lowestSlaveAddStr;
m_PbproComm.init_master_req.cyclic_data_transfer=myMasterPrm->m_cylicDataTransfer;
if( m_PbproComm.dp_init_master_req()==PB_TRUE)
{
return SUCCESS;
}
else
{
return ERROR_INIT_MASTER_REQ;
}
//SendMasterPrm();
}
int OnSetSlavePrm(struct CSlavePrmSet* mySlavePrmSet)
{
USIGN16 temp;
int CurrentSlaveAdd=255;
int j=0;
int k=0;
m_PbproComm.read_dp_slave_default (3);
//j=m_PbproComm.Activeslaves.GetSize();//2008-5-9
//j=m_PbproComm.AtciveslavesGetSize;//2008-5-9
j=m_PbproComm.ActiveslavesSize;//2008-5-10
if(j<=0)
{
// AfxMessageBox("未检测到从站");
// return ;
;
}
temp=mySlavePrmSet->m_prmDataLength;
m_PbproComm.slave_para_set_ptr->prm_data.prm_data_len=SWAP16(temp);
temp=mySlavePrmSet->m_identNumber;
m_PbproComm.slave_para_set_ptr->prm_data.ident_number=SWAP16(temp);
temp=mySlavePrmSet->m_groupIdent;
m_PbproComm.slave_para_set_ptr->prm_data.group_ident=(OCTET)temp;
temp=mySlavePrmSet->m_watchDogFact1;
m_PbproComm.slave_para_set_ptr->prm_data.wd_fact_1=(OCTET)temp;
temp=mySlavePrmSet->m_watchDogFact2;
m_PbproComm.slave_para_set_ptr->prm_data.wd_fact_2=(OCTET)temp;
temp=mySlavePrmSet->m_configDataLength;
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data_len=SWAP16(temp);
temp=mySlavePrmSet->m_aatDataLength;
m_PbproComm.slave_para_set_ptr->aat_data.aat_data_len=SWAP16(temp);
temp=mySlavePrmSet->m_offsetInputs;
temp=mySlavePrmSet->m_offsetOutput;
m_PbproComm.slave_para_set_ptr->prm_data.user_prm_data [0]=mySlavePrmSet->Prm[0];
m_PbproComm.slave_para_set_ptr->prm_data.user_prm_data [1]=mySlavePrmSet->Prm[1];
m_PbproComm.slave_para_set_ptr->prm_data.user_prm_data [2]=mySlavePrmSet->Prm[2];
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[0]=mySlavePrmSet->Con[0];
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[1]=mySlavePrmSet->Con[1];
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[2]=mySlavePrmSet->Con[2];
//////////////////////////////////////////////////////////////////////////
////2008-5-4
mySlavePrmSet->Prm[0]=0;
mySlavePrmSet->Prm[1]=0;
mySlavePrmSet->Prm[2]=0;
m_PbproComm.slave_para_set_ptr->prm_data.user_prm_data [0]=mySlavePrmSet->Prm[0];
m_PbproComm.slave_para_set_ptr->prm_data.user_prm_data [1]=mySlavePrmSet->Prm[1];
m_PbproComm.slave_para_set_ptr->prm_data.user_prm_data [2]=mySlavePrmSet->Prm[2];
mySlavePrmSet->Con[0]=193;
mySlavePrmSet->Con[1]=200;
mySlavePrmSet->Con[2]=204;
mySlavePrmSet->Con[3]=1;
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[0]=mySlavePrmSet->Con[0];
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[1]= mySlavePrmSet->Con[1];
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[2]=mySlavePrmSet->Con[2];
m_PbproComm.slave_para_set_ptr->cfg_data.cfg_data[3]=mySlavePrmSet->Con[3];
///////////////////////////////////////////////
///此处为判断是否按下设置slave按钮 2008-5-10
//if(mySlavePrmSet->m_slavePrmCheck.GetCheck()) //?2008-4-20
// {
k=0;
for(int i=0;i<DP_MAX_SLAVE_ADDRESS;i++)
{
if(m_PbproComm.Activeslaves[i].ind==1)
{
m_PbproComm.Activeslaves[i].SlavePrmSet=m_PbproComm.slave_para_set_ptr;
if(SendSlavePrm(m_PbproComm.Activeslaves[i]))
{
k++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -