Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

emcio.hh

Go to the documentation of this file.
00001 #ifndef EMCIO_HH
00002 #define EMCIO_HH
00003 
00004 /*
00005   emcio.hh
00006 
00007   Decls for EMC control modules in discrete I/O hierarchy
00008 
00009   Modification history:
00010 
00011   23-Apr-1998  FMP took out iniLoad(), used iniTool() instead
00012   24-Mar-1998  FMP changed ERROR() to REPORT_ERROR() due to conflict
00013   in VC++
00014   20-Feb-1998  FMP added spindle brake release,engage in tool module
00015   11-Dec-1997  FMP created from nce stuff
00016   */
00017 
00018 #include "emc.hh"               // EMC NML
00019 #include "nml_mod.hh"           // NML_MODULE
00020 #include "inifile.h"            // INIFILE
00021 
00022 // how long an inifile name can be
00023 #define EMCIO_INIFILE_NAME_LEN 256
00024 
00025 // default ini file name
00026 #define DEFAULT_EMCIO_INIFILE_NAME "emc.ini"
00027 
00028 // this should be defined in main file, set by argv
00029 extern char EMCIO_INIFILE[EMCIO_INIFILE_NAME_LEN];
00030 
00031 // EMC dicrete I/O control module classes
00032 
00033 // top level is tool controller
00034 class EMC_TOOL_MODULE: public NML_MODULE
00035 {
00036  public:
00037 
00038   EMC_TOOL_MODULE(void);
00039   ~EMC_TOOL_MODULE(void);
00040 
00041   void DECISION_PROCESS(void);
00042   void PRE_PROCESS(void);
00043   void POST_PROCESS(void);
00044 
00045   /*
00046     EMC tool controller decomposes higher-level I/O commands into
00047     sequences of actions for spindle, coolant, and auxiliary controllers.
00048 
00049     Tool commands are handled directly.
00050 
00051     Spindle commands are given as on (with a signed speed) or off; they
00052     are converted to brake-on,off, spindle forward,reverse for the lower
00053     level spindle controller.
00054 
00055     Coolant functions are checked for estop-on status, then passed to
00056     the coolant controller.
00057 
00058     Auxiliary (estop) functions are checked so that when coming out of
00059     estop, all systems are in a safe state (spindle off, brake on, coolant
00060     off).
00061     */
00062 
00063   // generic functions
00064   void INIT(EMC_TOOL_INIT *);
00065   void HALT(EMC_TOOL_HALT *);
00066   void ABORT(EMC_TOOL_ABORT *);
00067   void REPORT_ERROR(RCS_CMD_MSG *);
00068 
00069   // tool functions
00070   void TOOL_PREPARE(EMC_TOOL_PREPARE *);
00071   void TOOL_LOAD(EMC_TOOL_LOAD *);
00072   void TOOL_UNLOAD(EMC_TOOL_UNLOAD *);
00073   void TOOL_LOAD_TOOL_TABLE(EMC_TOOL_LOAD_TOOL_TABLE *);
00074   void TOOL_SET_OFFSET(EMC_TOOL_SET_OFFSET *);
00075 
00076   // spindle functions
00077   void SPINDLE_ON(EMC_SPINDLE_ON *);
00078   void SPINDLE_OFF(EMC_SPINDLE_OFF *);
00079   void SPINDLE_INCREASE(EMC_SPINDLE_INCREASE *);
00080   void SPINDLE_DECREASE(EMC_SPINDLE_DECREASE *);
00081   void SPINDLE_CONSTANT(EMC_SPINDLE_CONSTANT *);
00082   void SPINDLE_BRAKE_RELEASE(EMC_SPINDLE_BRAKE_RELEASE *);
00083   void SPINDLE_BRAKE_ENGAGE(EMC_SPINDLE_BRAKE_ENGAGE *);
00084   void SPINDLE_ENABLE(EMC_SPINDLE_ENABLE *);
00085   void SPINDLE_DISABLE(EMC_SPINDLE_DISABLE *);
00086 
00087   // coolant functions
00088   void COOLANT_MIST_ON(EMC_COOLANT_MIST_ON *);
00089   void COOLANT_MIST_OFF(EMC_COOLANT_MIST_OFF *);
00090   void COOLANT_FLOOD_ON(EMC_COOLANT_FLOOD_ON *);
00091   void COOLANT_FLOOD_OFF(EMC_COOLANT_FLOOD_OFF *);
00092 
00093   // auxiliary functions
00094   void AUX_ESTOP_ON(EMC_AUX_ESTOP_ON *);
00095   void AUX_ESTOP_OFF(EMC_AUX_ESTOP_OFF *);
00096   void AUX_DIO_WRITE(EMC_AUX_DIO_WRITE *);
00097   void AUX_AIO_WRITE(EMC_AUX_AIO_WRITE *);
00098 
00099   // lube functions
00100   void LUBE_ON(EMC_LUBE_ON *);
00101   void LUBE_OFF(EMC_LUBE_OFF *);
00102 
00103   // subordinate ids
00104   int spindleSubNum;
00105   int coolantSubNum;
00106   int auxSubNum;
00107   int lubeSubNum;
00108 
00109   // aggregate status information
00110   EMC_IO_STAT ioStatus;
00111 
00112   // local data
00113   double deltaClock;            // load and decrement for time delays
00114 };
00115 
00116 // spindle controller is subordinate to tool controller
00117 class EMC_SPINDLE_MODULE: public NML_MODULE
00118 {
00119  public:
00120 
00121   EMC_SPINDLE_MODULE(void);
00122   ~EMC_SPINDLE_MODULE(void);
00123 
00124   void DECISION_PROCESS(void);
00125   void PRE_PROCESS(void);
00126   void POST_PROCESS(void);
00127 
00128   void INIT(EMC_SPINDLE_INIT *);
00129   void HALT(EMC_SPINDLE_HALT *);
00130   void ABORT(EMC_SPINDLE_ABORT *);
00131   void REPORT_ERROR(RCS_CMD_MSG *);
00132 
00133   // spindle functions
00134   void SPINDLE_FORWARD(EMC_SPINDLE_FORWARD *);
00135   void SPINDLE_REVERSE(EMC_SPINDLE_REVERSE *);
00136   void SPINDLE_ON(EMC_SPINDLE_ON *);
00137   void SPINDLE_STOP(EMC_SPINDLE_STOP *);
00138   void SPINDLE_INCREASE(EMC_SPINDLE_INCREASE *);
00139   void SPINDLE_DECREASE(EMC_SPINDLE_DECREASE *);
00140   void SPINDLE_CONSTANT(EMC_SPINDLE_CONSTANT *);
00141   void SPINDLE_BRAKE_RELEASE(EMC_SPINDLE_BRAKE_RELEASE *);
00142   void SPINDLE_BRAKE_ENGAGE(EMC_SPINDLE_BRAKE_ENGAGE *);
00143   void SPINDLE_ENABLE(EMC_SPINDLE_ENABLE *);
00144   void SPINDLE_DISABLE(EMC_SPINDLE_DISABLE *);
00145 
00146   // status information
00147   EMC_SPINDLE_STAT spindleStatus;
00148 };
00149 
00150 // coolant controller is subordinate to tool controller
00151 class EMC_COOLANT_MODULE: public NML_MODULE
00152 {
00153  public:
00154 
00155   EMC_COOLANT_MODULE(void);
00156   ~EMC_COOLANT_MODULE(void);
00157 
00158   void DECISION_PROCESS(void);
00159   void PRE_PROCESS(void);
00160   void POST_PROCESS(void);
00161 
00162   void INIT(EMC_COOLANT_INIT *);
00163   void HALT(EMC_COOLANT_HALT *);
00164   void ABORT(EMC_COOLANT_ABORT *);
00165   void REPORT_ERROR(RCS_CMD_MSG *);
00166 
00167   // coolant functions
00168   void MIST_ON(EMC_COOLANT_MIST_ON *);
00169   void MIST_OFF(EMC_COOLANT_MIST_OFF *);
00170   void FLOOD_ON(EMC_COOLANT_FLOOD_ON *);
00171   void FLOOD_OFF(EMC_COOLANT_FLOOD_OFF *);
00172 
00173   // status information
00174   EMC_COOLANT_STAT coolantStatus;
00175 };
00176 
00177 // auxiliary controller is subordinate to tool controller
00178 class EMC_AUX_MODULE: public NML_MODULE
00179 {
00180  public:
00181 
00182   EMC_AUX_MODULE(void);
00183   ~EMC_AUX_MODULE(void);
00184 
00185   void DECISION_PROCESS(void);
00186   void PRE_PROCESS(void);
00187   void POST_PROCESS(void);
00188 
00189   void INIT(EMC_AUX_INIT *);
00190   void HALT(EMC_AUX_HALT *);
00191   void ABORT(EMC_AUX_ABORT *);
00192   void REPORT_ERROR(RCS_CMD_MSG *);
00193 
00194   // aux functions
00195   void ESTOP_ON(EMC_AUX_ESTOP_ON *);
00196   void ESTOP_OFF(EMC_AUX_ESTOP_OFF *);
00197   void DIO_WRITE(EMC_AUX_DIO_WRITE *);
00198   void AIO_WRITE(EMC_AUX_AIO_WRITE *);
00199 
00200   // status information
00201   EMC_AUX_STAT auxStatus;
00202 };
00203 
00204 // lube controller is subordinate to tool controller
00205 class EMC_LUBE_MODULE: public NML_MODULE
00206 {
00207  public:
00208 
00209   EMC_LUBE_MODULE(void);
00210   ~EMC_LUBE_MODULE(void);
00211 
00212   void DECISION_PROCESS(void);
00213   void PRE_PROCESS(void);
00214   void POST_PROCESS(void);
00215 
00216   void INIT(EMC_LUBE_INIT *);
00217   void HALT(EMC_LUBE_HALT *);
00218   void ABORT(EMC_LUBE_ABORT *);
00219   void REPORT_ERROR(RCS_CMD_MSG *);
00220 
00221   // lube functions
00222   void LUBE_ON(EMC_LUBE_ON *);
00223   void LUBE_OFF(EMC_LUBE_OFF *);
00224 
00225   // status information
00226   EMC_LUBE_STAT lubeStatus;
00227 };
00228 
00229 #endif // EMCIO_HH

Generated on Sun Dec 2 15:27:38 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001