Files
EgtMachKernel/MachineStruConst.h
T
Dario Sassi 21459f66d7 EgtMachKernel 2.7g5 :
- modifiche per controllo punto medio nel calcolo assi robot.
2025-07-30 07:47:12 +02:00

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" ;