You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitlib.pub/MITLIB/IODll/MotionController.h

115 lines
3.2 KiB
C++

// MotionController.h: interface for the CMotionController class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MOTIONCONTROLLER_H__65E8EEA5_D76F_11D7_89B3_000629A6E157__INCLUDED_)
#define AFX_MOTIONCONTROLLER_H__65E8EEA5_D76F_11D7_89B3_000629A6E157__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <map>
#include "Motor.h"
#include "MotionControllerBase.h"
#ifdef BUILD_IODLL
#define IODLLCLASS __declspec(dllexport)
#else
#define IODLLCLASS __declspec(dllimport)
#endif
class IODLLCLASS CMotionController : public CCard
{
public:
// static void SetGalilMotionInt(int nAxisNo);
BOOL IsInPosition(CMtrProfile mtrProfile);
unsigned short GetMotionIOStatus(CMtrProfile mtrProfile);
CMotionController();
virtual ~CMotionController();
BOOL InitController(int iNoOfMtr);
// check if negative limit hit
//BOOL IsNegLimHit(int iMotorNo);
BOOL IsNegLimHit(CMtrProfile mtrProfile);
// check if positive limit hit
//BOOL IsPosLimHit(int iMotorNo);
BOOL IsPosLimHit(CMtrProfile mtrProfile);
// check if motor at home position
//BOOL IsHomed(int iMotorNo);
BOOL IsHomed(CMtrProfile mtrProfile);
// check if servo ready
//BOOL IsServoReady(int iMotorNo);
BOOL IsServoReady(CMtrProfile mtrProfile);
// check if servo alarm
//BOOL IsServoAlarm(int iMotorNo);
BOOL IsServoAlarm(CMtrProfile mtrProfile);
// get Motor Pos value
//double GetMtrPos(int iMotorNo);
double GetMtrPos(CMtrProfile mtrProfile);
// get Motion status of motor
//int GetMotionStatus(int iMotorNo);
int GetMotionStatus(CMtrProfile mtrProfile);
// get proportional gain value
double GetPValue(int iMotorNo);
// get Integral gain value
double GetIValue(int iMotorNo);
// get Deriative gain value
double GetDValue(int iMotorNo);
// get position error value
//double GetPosErr(int iMotorNo);
double GetPosErr(CMtrProfile mtrProfile);
// check if Motor type is servo motor
BOOL IsServoMtrType(CMtrProfile mtrProfile);
// copy all motor status
void CopyMtrStatus();
// check if motor position changed
bool IsMtrPosChanged(int iMtrNo, int &iPos);
// check if motor On/Off States changed
bool IsMtrOnOffStateChanged(int iMtrNo, bool &bOnOffState);
// check if motor is on
BOOL IsMtrOn(CMtrProfile mtrProfile);
/* Return Motor(specify by iMtrNo) on or off state.
Function Return true = Motor specify by iMtrNo Is On, else return false = Motor is off */
bool GetMtrOnOffState(int iMtrNo);
// int m_nCurrentGalilCard;
private:
/**
* @brief all the various motion controller objects indexed by the controller ID.
*/
std::map<int, CMotionControllerBase*> m_motionControllerBase;
CMtrPos m_mtrPos; // object to keep track of current motor position
CMtrOnOff m_mtrOnOff; // object to keep track of current motor On/Off States
int *m_ipMtrCurPos; // array to store motor position before maintenance mode
bool *m_bpMtrCurOnOff; // array to store motor On/Off States before maintenance mode
int m_iNoOfMtr; // total no of motor
int m_nNoOfCardType;
CHardwareIni m_iniHardware;
bool m_bBenchDebugWithActualHardware;
};
#endif // !defined(AFX_MOTIONCONTROLLER_H__65E8EEA5_D76F_11D7_89B3_000629A6E157__INCLUDED_)