21459f66d7
- modifiche per controllo punto medio nel calcolo assi robot.
167 lines
6.2 KiB
C++
167 lines
6.2 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2015-2024
|
|
//----------------------------------------------------------------------------
|
|
// File : MachineStruConst.h Data : 15.01.24 Versione : 2.5l6
|
|
// Contenuto : Strutture e costanti di macchina.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 25.05.15 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "/EgtDev/Include/EGkPoint3d.h"
|
|
#include "/EgtDev/Include/EGkGdbConst.h"
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Corsa utile di un asse
|
|
union STROKE {
|
|
struct {
|
|
double Min ;
|
|
double Max ;
|
|
} ;
|
|
double v[2] ;
|
|
} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Dati di uscita
|
|
struct MuExit {
|
|
Point3d ptPos ;
|
|
Vector3d vtTDir ;
|
|
MuExit( const Point3d& ptP, const Vector3d& vtTD)
|
|
: ptPos( ptP), vtTDir( vtTD) {}
|
|
} ;
|
|
typedef std::vector<MuExit> MUEXITVECTOR ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Dati asse per catena cinematica
|
|
struct KinAxis {
|
|
int nGrpId ;
|
|
bool bLinear ;
|
|
bool bHead ;
|
|
int nInd ;
|
|
Point3d ptPos ;
|
|
Vector3d vtDir ;
|
|
STROKE stroke ;
|
|
double dHomeVal ;
|
|
bool bFixed ;
|
|
double dFixVal ;
|
|
KinAxis( void)
|
|
: nGrpId( GDB_ID_NULL), bLinear( true), bHead( true), nInd( 0), ptPos(), vtDir(), dHomeVal( 0), bFixed( false), dFixVal( 0)
|
|
{ stroke.Min = 0 ; stroke.Max = 0 ; }
|
|
} ;
|
|
typedef std::vector<KinAxis> KINAXISVECTOR ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Dati extra corsa di un asse
|
|
struct OutStroke {
|
|
std::string sAxName ;
|
|
std::string sAxToken ;
|
|
bool bLinear ;
|
|
double dExtra ;
|
|
std::string sAuxInfo ;
|
|
OutStroke( void) : bLinear( false), dExtra( 0) {}
|
|
void Clear( void)
|
|
{ sAxName.clear() ; sAxToken.clear() ; bLinear = false ; dExtra = 0 ; sAuxInfo.clear() ; }
|
|
} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Tipo di tavola della macchina
|
|
enum MchTabType { MCH_TT_NONE = 0,
|
|
MCH_TT_FLAT = 1} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Tipo di assi della macchina
|
|
enum MchAxisType { MCH_AT_NONE = 0,
|
|
MCH_AT_LINEAR = 1,
|
|
MCH_AT_ROTARY = 2} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Uso di assi della macchina
|
|
enum MchAxisUse { MCH_AU_NONE = 0,
|
|
MCH_AU_GENERAL = 1,
|
|
MCH_AU_DISPOSITION = 2,
|
|
MCH_AU_AUXILIAR = 3} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Tipo di testa della macchina
|
|
enum MchHeadType { MCH_HT_NONE = 0,
|
|
MCH_HT_STD = 1,
|
|
MCH_HT_MULTI = 2,
|
|
MCH_HT_SPECIAL = 3} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Tipo di selezione ammessa per le uscite
|
|
enum MchSelType { MCH_SLT_FIXEDEXITS = 0,
|
|
MCH_SLT_ONEEXIT = 1,
|
|
MCH_SLT_MULTIEXITS = 2} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Tipo della catena cinematica
|
|
enum KinChainType { KIN_CHAIN_NONE = 0,
|
|
KIN_CHAIN_MCENT = 1,
|
|
KIN_CHAIN_ROBOT = 2} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Identificativo iniziale riferimenti di tavola
|
|
const std::string MCH_TREF = "R" ;
|
|
// Identificativo iniziale area di tavola
|
|
const std::string MCH_TAREA ="A" ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Identificativo vettore ausiliario di testa
|
|
const std::string MCH_AUX_VECT = "AV" ;
|
|
// Identificativo iniziale gruppo uscita di teste
|
|
const std::string MCH_EXIT = "T" ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Info di testa per forzare risalita alla rotazione
|
|
const std::string MCH_ZMAXONROT = "ZMAXONROT" ;
|
|
// Info di testa per una extra risalita in Z
|
|
const std::string MCH_ZEXTRA = "ZEXTRA" ;
|
|
// Info di testa per abilitare rotazione a Zmax
|
|
const std::string MCH_ROTATZMAX = "ROTATZMAX" ;
|
|
// Info di testa per dichiarazione Home Z in basso
|
|
const std::string MCH_ZHOMEDOWN = "ZHOMEDOWN" ;
|
|
// Info di testa per dichiarazione Da Sopra
|
|
const std::string MCH_ABOVE = "ABOVE" ;
|
|
// Info di testa per una variazione alla Z di sicurezza globale
|
|
const std::string MCH_ZSAFEDELTA = "ZSAFEDELTA" ;
|
|
// Info di tavola per dichiarare che va considerata come basculante
|
|
const std::string MCH_TILTINGLIKE = "TiltingLike" ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Dati aggregato rotante da sotto
|
|
struct AggrBottom {
|
|
int nType ;
|
|
double dDMax ;
|
|
double dEncH ;
|
|
double dEncV ;
|
|
Vector3d vtMDir ;
|
|
AggrBottom( void) : nType( 0), dDMax( 0), dEncH( 0), dEncV( 0) {}
|
|
void Clear( void)
|
|
{ nType = 0 ; dDMax= 0 ; dEncH = 0 ; dEncV = 0 ; vtMDir = V_NULL ; }
|
|
} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Info in rinvio rotante da sotto con dichiarazione dello stesso
|
|
const std::string MCH_AGB_TYPE = "AGB_TYPE" ;
|
|
// Info in rinvio rotante da sotto con massima distanza di lavorazione dal bordo
|
|
const std::string MCH_AGB_DMAX = "AGB_DMAX" ;
|
|
// Info in rinvio rotante da sotto con ingombro orizzontale
|
|
const std::string MCH_AGB_ENCH = "AGB_ENCH" ;
|
|
// Info in rinvio rotante da sotto con ingombro verticale
|
|
const std::string MCH_AGB_ENCV = "AGB_ENCV" ;
|
|
// Info in rinvio rotante da sotto per definire la direzione di approccio preferenziale (consentito delta max di 95deg)
|
|
const std::string MCH_AGB_MDIR = "AGB_MDIR" ;
|
|
const double MCH_AGB_DELTAMAX_MDIR = cos( 95 * DEGTORAD) ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Info di uscita per indicare quanto mossa lungo la sua Z locale
|
|
const std::string MCH_EXIT_VAL = "Val" ;
|