📄 demomotocon.h
字号:
#define MAX_SIZE_DI 256
#define MAX_SIZE_AI 64
#define MAX_SIZE_DO 128
#define MIN_SIZE_DVC 0x00
#define MAX_SIZE_DVC 0xFF
#define MIN_SIZE_FC 0x00
#define MAX_SIZE_FC 0xFF
#define MIN_SIZE_PS 0x10
#define MAX_SIZE_PS 0xF0
#define MAX_OFFSET_PS 0x0F
#define MAX_COUNT_DVC 16
#define MAX_SIZE_FLT_DO1S 16
#define MAX_SIZE_MSG 100000
#define SIZEOF_FRAME 0x0D
#define CAN_VDL_NULL 0x00 //有效数据长度空
#define CAN_VDL_FIXED 0x07 //有效数据长度
// Function Constrain
#define FC_CAN_F 0x80 //CAN帧格式MASK
#define FC_CAN_DL 0x0F //数据长度MASK
#define FC_PF_DVC_REG 0xEE //设备入网申请功能码
#define FC_PF_DVC_PS 0xFF //设备启用参数组功能码
#define FC_DA_MD 0x00 //总控管理地址
#define FC_DA_BRD 0xFF //广播地址
#define FC_PDU 0xF0 //PDU格式分级
#define FC_PS_DI 0x10
#define FC_PS_AI 0x30
#define FC_PS_DO_S1 0x20 //控制输出后返回状态
#define FC_PS_DO_S2 0xA0 //控制输出通道工作状态
#define FC_PS_DO_C 0x40
#define FC_PS_DO_S1_SYN 0x60
#define FC_PS_EVT_DI 0x80
#define FC_PS_EVT_DO_S1 0x00 // 未定义
#define FC_PS_EVT_DO_S2 0x90
#define BIT_MASK1 0x01
#define BIT_MASK2 0xFF
#define SIZEOF_DATA (CAN_VDL_FIXED*8)
#define WSIZEOF_DATA ((CAN_VDL_FIXED+1)/sizeof(WORD))
//------------------------------------------------------------------------------
struct CAN_DATA
{
BYTE Data[7];
};
struct CAN_MSG
{
BYTE FC[5];
CAN_DATA canData;
BYTE CS;
};
//--------------------------------------------- CMyUnitCanCM -------------------
class CMyUnitCanCM : public CMyUnit
{
protected:
DECLARE_SERIAL(CMyUnitCanCM);
CMyUnitCanCM();
~CMyUnitCanCM();
protected:
int m_nSizeDI;
int m_nSizeAI;
int m_nSizeDO;
BYTE m_bEnabledDvc[MAX_COUNT_DVC];
BYTE m_DvcAddrDest[MAX_COUNT_DVC];
BYTE m_bDvcAddrDestOK;
BYTE m_bDvcRegistered[MAX_COUNT_DVC];
BYTE m_bCanDataDOS1OK[(MAX_OFFSET_PS+1)*MAX_COUNT_DVC];
BYTE m_bDvcDOS1FlickerCfg[MAX_SIZE_DI*MAX_COUNT_DVC];
int m_nCountMsg[MAX_COUNT_DVC];
int m_nCountMsgAllDvc;
BYTE m_bClockDO1SFlickerSynRcvOK;
WORD m_wClockDO1SFlickerSynRcv;
WORD m_wClockDO1SFlickerSynSlf;
DWORD m_dwClock100ms;
DWORD m_dwClock100msDO1S;
protected:
CMyDataSwitch* m_pDI[MAX_SIZE_DI*MAX_COUNT_DVC];
CMyDataSwitch* m_pDO1S[MAX_SIZE_DO*MAX_COUNT_DVC];
CMyDataSwitch* m_pDO2S[MAX_SIZE_DO*MAX_COUNT_DVC];
CMyDataAnalog* m_pAI[MAX_SIZE_AI*MAX_COUNT_DVC];
CMyDataOperateYKYT* m_pDO[MAX_SIZE_DO*MAX_COUNT_DVC];
CMyDataSetpoint* m_pDvcAddr[MAX_COUNT_DVC];
CMyDataFloat* m_pDvcInfo[MAX_COUNT_DVC];
CAN_MSG m_canMsg;
CAN_DATA m_canDataDOS1[(MAX_OFFSET_PS+1)*MAX_COUNT_DVC];
public:
virtual BOOL OnCreate(void);
virtual BOOL OnCreateData(CMyData* pData);
virtual void OnPortOpen(void);
virtual void ExchangeComData(COMCONTROL* pCC);
virtual void OnTimerFast(void);
virtual void Serialize(CArchive& ar);
protected:
void OnInitDvcCfgInfo(void);
void DoExchangeComDataAcquest(COMCONTROL* pCC);
void DoExchangeComDataCtrl(COMCONTROL* pCC);
BOOL DoReadData(COMCONTROL* pCC);
BOOL DoWriteData(COMCONTROL* pCC,BYTE DvcAddrDest,BYTE FCParamGrp,BYTE* pData,BYTE VldDL,BYTE Precedence);
void ReveiveDvcAddrDest(void);
void ReveiveDvcInfo(void);
void ReveiveMonitorInfo(void);
void ReveiveDvcData(BYTE DvcAddrDest,BYTE FCParamGrp);
void ReveiveDataDI(BYTE DvcAddrDest,BYTE FCParamGrp);
void ReveiveDataAI(BYTE DvcAddrDest,BYTE FCParamGrp);
void ReveiveDataDOS1(BYTE DvcAddrDest,BYTE FCParamGrp);
void ReveiveDataDOS2(BYTE DvcAddrDest,BYTE FCParamGrp);
void ReveiveDataDO1SSyn(BYTE DvcAddrDest,BYTE FCParamGrp);
void ReveiveSOESelf(CString strType,CString strMsg);
void ReveiveSOE(BYTE DvcAddrDest,BYTE FCParamGrp);
void OnPrintMsgFile(BYTE DvcAddrDest,BOOL bSendFlag);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -