SDC C-Project CF Review 프로그램
LYW
2021-06-28 cf6a4019e9efbc0503bd3fbcf6f951565d028972
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#pragma once
 
#include "motorcontrol.h"
#include "MotionInfo_Axis.h"
 
class AFX_EXT_CLASS CMotorControl_Simulation : public CMotorControl
{
public:
    CMotorControl_Simulation(int nIndex, DWORD dwPeriod=100,int nThreadCount = 1);
    virtual ~CMotorControl_Simulation(void);
 
public:
    // CMotorControl
    virtual int        Connect(const CMotorControlInfo* pControlInfo);
    virtual void    Disconnect();
    virtual BOOL    ReadAddressValue(int nAddress, long &nValue);
    virtual BOOL    WriteAddressValue(int nAddress, long nValue);
    virtual BOOL    ReadAddressValue(int nAddress, float &fValue);
    virtual BOOL    WriteAddressValue(int nAddress, float fValue);
    virtual BOOL    ReadAddressValue(int nAddress, double &dValue);
    virtual BOOL    WriteAddressValue(int nAddress, double dValue);
 
    virtual void    IMT2P_RunThreadProcess(const CMotionData& motionData);
 
protected:
    virtual BOOL    ReadAxisPosition(float *pAxisPos, int nAxisCount);
    virtual BOOL    ReadAxisStatus(long *pAxisStatus, int nAxisCount);
    virtual BOOL    ReadThetaAxisPosition( float& fAxisPos);
    virtual BOOL    ReadThetaAxisStatus(long& nAxisStatus);
 
    virtual BOOL    ReadAddressValue(long nAddress, long *pArrayData, int nArrayCount);
    virtual BOOL    WriteAddressValue(long nAddress, long *pArrayData, int nArrayCount);
    virtual BOOL    ReadAddressValue(long nAddress, float *pArrayData, int nArrayCount);
    virtual BOOL    WriteAddressValue(long nAddress, float *pArrayData, int nArrayCount);
 
public:
    // common
    virtual BOOL    CommonSetAutoStop();
 
    // axis
    virtual BOOL    AxisManualGo(int nAxisIdx, double dPosition);
    virtual BOOL    AxisJogPlus(int nAxisIdx);
    virtual BOOL    AxisJogMinus(int nAxisIdx);
    virtual BOOL    AxisJogStop(int nAxisIdx);
    virtual BOOL    AxisManualGoSpeed(int nAxisIdx, double dSpeed);
    virtual BOOL    AxisJogSpeed(int nAxisIdx, double dSpeed);
    virtual BOOL    AxisManualGoAccel(int nAxisIdx, int nAccel);
 
    // gantry
    virtual BOOL    GantryManualGo(int nGantryIdx, const VectorDouble& vectorPos);
    virtual BOOL    GantryManualGo(int nGantryIdx, const VectorDouble& vectorPos, int nMoveType);
    virtual BOOL    GantryManualGo(int nGantryIdx, double dPosX, double dPosY);
 
    //Theta Motor
    virtual BOOL    AxisThetaManualGo(double dPosition);
    virtual BOOL    AxisThetaJogPlus();
    virtual BOOL    AxisThetaJogMinus();
    virtual BOOL    AxisThetaJogStop();
 
    // review
    virtual BOOL    GantryAutoGo(int nGantryIdx, const VectorDouble& vectorPosX, const VectorDouble& vectorPosY, BOOL bCommand=FALSE);    
protected:
    virtual void    Process_AxisManualGo(const CMotionData& motionData);        // For Simulation Thread
    virtual void    Process_JogGo(const CMotionData& motionData);                // For Simulation Thread
    virtual void    Process_GantryGo(const CMotionData& motionData);            // For Simulation Thread
    virtual void    Process_AutoGo(const CMotionData& motionData);                // For Simulation Thread    
    CMotionInfo_Axis*    GetMotionInfo_Axis(int nAxisIndex);
    float*                GetCurAxisPosition(int nAxisIndex);
    float*                GetCurAxisVelocity(int nAxisIndex);
    long*                GetCurAxisStatus(int nAxisIndex);
 
 
protected:
    CMotionInfo_Axis    *m_pMotionInfo_Axis;
    long                *m_pCurAxisStatus;
    float                *m_pCurAxisPosition;
    float                *m_pCurAxisVelocity;
 
    CMotionInfo_Axis    m_MotionInfo_ThetaAxis;
    long                m_lCurThetaAxisStatus;
    float                m_fCurThetaAxisPosition;
    float                m_fCurThetaAxisVelocity;
};