EgtMachKernel 1.6l9 :

- aggiunta funzione per Info su extra-corse
- aggiunte funzioni GetOperationMode e GetOperationStatus
- migliorata simulazione con sole rotazioni
- in simulazione, quando si incontra una extra-corsa è possibile richiedere info relative.
This commit is contained in:
Dario Sassi
2016-01-18 08:01:58 +00:00
parent b23c5c5699
commit a449bd16cc
9 changed files with 128 additions and 29 deletions
+14 -6
View File
@@ -145,9 +145,14 @@ Simulator::Move( int& nStatus)
switch ( pCamData->GetAxesStatus()) {
case CamData::AS_OK :
break ;
case CamData::AS_OUTSTROKE :
case CamData::AS_OUTSTROKE : {
DBLVECTOR OutAxes = pCamData->GetAxisVal() ;
for ( size_t i = OutAxes.size() ; i < 5 ; ++ i)
OutAxes.emplace_back( 0) ;
int nStat ;
m_pMchMgr->VerifyOutstroke( OutAxes[0], OutAxes[1], OutAxes[2], OutAxes[3], OutAxes[4], nStat) ;
nStatus = MCH_SIM_OUTSTROKE ;
return false ;
return false ; }
case CamData::AS_DIR_ERR :
nStatus = MCH_SIM_DIR_ERR ;
return false ;
@@ -159,10 +164,13 @@ Simulator::Move( int& nStatus)
// Verifico se movimento in rapido
bool bRapid = ( pCamData->GetFeed() < EPS_SMALL) ;
// Calcolo distanza di movimento
double dDist = 0 ;
for ( size_t i = 0 ; i < m_AxesName.size() ; ++ i)
dDist += ( AxesEnd[i] - m_AxesVal[i]) * ( AxesEnd[i] - m_AxesVal[i]) ;
dDist = sqrt( dDist) ;
double dSqDist = 0 ;
for ( size_t i = 0 ; i < m_AxesName.size() ; ++ i) {
// coefficiente moltiplicativo per differenziare assi lineari (primi3) e rotanti (altri)
double dSqCoeff = (( i >= 3) ? 100 : 1) ;
dSqDist += dSqCoeff * ( AxesEnd[i] - m_AxesVal[i]) * ( AxesEnd[i] - m_AxesVal[i]) ;
}
double dDist = sqrt( dSqDist) ;
m_dCoeff += ( bRapid ? 4 : 1) * m_dStep / dDist ;
if ( m_dCoeff > 1)
m_dCoeff = 1 ;