/******************************************************************************


*******************************************************************************/
#ifndef PROTOCOL_H
#define PROTOCOL_H


#include "f28002x_device.h"
//-----------------------------------------------------------------------------
// Conditional Definitions
//-----------------------------------------------------------------------------
#ifdef Protocol_C
	#define Protocol_PUBLIC
	#define Protocol_CONST
#else
	#define Protocol_PUBLIC	extern
	#define Protocol_CONST 	const
#endif

//-----------------------------------------------------------------------------
// Public Constants and Macro Definitions
//-----------------------------------------------------------------------------





////#define     BmsAnalogBeginID1              ((Uint16)4096 )




























// Public Constants and Macro Definitions
#define DIGITAL_NUM              128                     //数字量个数
#define GBMSStartAddr           BmsAnalogBeginID1        //  GBMS信息                0x1000
#define CBMSStartAddr           BmsAnalogBeginID2        //  CBMS信息                0x2000
#define DCDCStartAddr           BmsAnalogBeginID3        //  DCDC信息                0x7530
#define DCDCSetStartAddr        BmsSetDataBeginID1       //  DCDC参数设置         0x0000
#define BMSSetStartAddr         BmsSetDataBeginID2       //  BMS参数设置           0x4000

//-----------------------------------------------------------------------------

// Analog Table List 
enum
{
    eAnalogDataBeginID=0x10                            ,
    eAnalogDataFirmwareBeginID= eAnalogDataBeginID     ,
    eInvSN1CodeAnalogID  = eAnalogDataFirmwareBeginID  , // 0   逆变器SN码1
    eInvSN2CodeAnalogID                                , // 1   逆变器SN码2
    eInvSN3CodeAnalogID                                , // 2   逆变器SN码3
    eInvSN4CodeAnalogID                                , // 3   逆变器SN码4
    AnalogDataRES0                                                , // 4   B保留
    AnalogDataRES1                                , // 5   B保留
    AnalogDataRES2                                , // 6   B保留
    AnalogDataRES3                                , // 7   B保留
    eHardVersionID1                               , // 0x18   软件版本
    eHardVersionID2                               , // 0x19   硬件版本
    eHardVersionID3                               , // 0x1A  预留110
    AnalogDataRES4                               , // 1B  预留111
    AnalogDataRES5                               , // 1C  预留112
    AnalogDataRES6                               , // 1D  预留113
    AnalogDataRES7                               , // 1E  预留114
    AnalogDataRES8                                    , // 1F
    eFirmwareVer1                          , // 20 固件版本1
    eFirmwareVer2                          , // 21 固件版本2
    eFirmwareVer3                          , // 22 固件版本3
    AnalogDataRES9                                  , // 23
    AnalogDataRES10                                  , // 24
    AnalogDataRES11                                  , // 25
    eBootVer1                                    , // 26 
    eBootVer2                                    , // 27 
    eBootVer3                                    , // 28 
    AnalogDataRES12                                  , // 29
    AnalogDataRES13                                  , // 2a
    AnalogDataRES14                                  , // 2b
    eFirwADDR1                                    , // 2c
    eFirwADDR2                                    , // 2d
    AnalogDataRES15                                  , // 2e
    RESID                                  , // 2f 
    eAnalogDataFirmwareEndID =  RESID      , // 30
    
};

//-----------------------------------------------------------------------------
// Set Table List
enum
{
    eSetDataBeginID                                , // 0  (2000)
    eSetDataFirmwareBeginID= eSetDataBeginID      , // 0  (2000)
    eInvSN1CodeSetID=eSetDataFirmwareBeginID      , // 0  产品SN1
    eInvSN2CodeSetID                               , // 1  产品SN2
    eInvSN3CodeSetID                               , // 2  产品SN3
    eInvSN4CodeSetID                               , // 3  产品SN4
    eInvSN5CodeSetID                               , // 4  产品SN5
    eInvSN6CodeSetID                               , // 5  产品SN6
    eInvSN7CodeSetID                               , // 6  产品SN7
    eInvSN8CodeSetID                               , // 7  产品SN8
    eSoftVersionSetID                              , // 8  硬件版本
    eHardVersionSetID                              , // 9  软件版本号
    eReserved2010SetID                             , // 10 预留2010
    eReserved2011SetID                             , // 11 预留2011
    eReserved2012SetID                             , // 12 预留2012
    eReserved2013SetID                             , // 13 预留2013
    eReserved2014SetID                             , // 14 预留2014
    eSetDataFirmwareEndID = eReserved2014SetID     , // 14

    eAdjustBeginSetID                             , // 15
    eBatVoltRatioSetID = eAdjustBeginSetID        , // 15 电池电压变比校准系数
    eBatVoltOffSetID                             , // 16 电池电压偏置校准系数
    eDCCurrRatioSetID                            , // 17 直流电流采样变比校准系数
    eDCCurrOffSetID                              , // 18 直流电流采样偏置校准系数
    eBusPosVoltRatioSetID                        , // 19 正母线电压变比校准系数
    eBusPosVoltOffSetID                          , // 20 正母线电压偏置校准系数
    eBusNegVoltRatioSetID                        , // 21 负母线电压变比校准系数
    eBusNegVoltOffSetID                          , // 22 负母线电压偏置校准系数
    eBlanceCurrRatioSetID                        , // 23 平衡电路电感电流采样变比校准系数
    eBlanceCurrOffSetID                          , // 24 平衡电路电感电流采样偏置校准系数
    eGrideVaRatioSetID                           , // 25 电网A相电压变比校准系数
    eGrideVaOffSetID                             , // 26 电网A相A相电压偏置校准系数
    eGrideVbRatioSetID                           , // 27 电网B相电压变比校准系数
    eGrideVbOffSetID                             , // 28 电网B相电压偏置校准系数
    eGrideVcRatioSetID                           , // 29 预留/电网C相电压变比校准系数
    eGrideVcOffSetID                             , // 30 预留/电网C相电压偏置校准系数
    eInvVaRatioSetID                             , // 31 A相逆变电压变比校准系数
    eInvVaOffSetID                               , // 32 A相逆变电压偏置校准系数
    eInvVbRatioSetID                             , // 33 B相逆变电压变比校准系数
    eInvVbOffSetID                               , // 34 B相逆变电压偏置校准系数
    eInvVcRatioSetID                             , // 35 预留/C相逆变电压变比校准系数
    eInvVcOffSetID                               , // 36 预留/C相逆变电压偏置校准系数
    eInvIaRatioSetID                             , // 37 A相电感电流变比校准系数
    eInvIaOffSetID                               , // 38 A相电感电流偏置校准系数
    eInvIbRatioSetID                             , // 39 B相电感电流变比校准系数
    eInvIbOffSetID                               , // 40 B相电感电流偏置校准系数
    eInvIcRatioSetID                             , // 41 预留/C相电感电流变比校准系数
    eInvIcOffSetID                               , // 42 预留/C相电感电流偏置校准系数
    eInvIaDcCompRatioSetID                       , // 43 A相逆变电流直流分量变比校准系数
    eInvIaDcCompOffSetID                         , // 44 A相逆变电流直流分量偏置校准系数
    eInvIbDcCompRatioSetID                       , // 45 B相逆变电流直流分量变比校准系数
    eInvIbDcCompOffSetID                         , // 46 B相逆变电流直流分量偏置校准系数
    eInvIcDcCompRatioSetID                       , // 47 预留/C相逆变电流直流分量变比校准系数
    eInvIcDcCompOffSetID                         , // 48 预留/C相逆变电流直流分量偏置校准系数
    eInvVaDcCompRatioSetID                       , // 49 A相逆变电压直流分量采样变比校准系数
    eInvVaDcCompOffSetID                         , // 50 A相逆变电压直流分量采样偏置校准系数
    eInvVbDcCompRatioSetID                       , // 51 B相逆变电压直流分量采样变比校准系数
    eInvVbDcCompOffSetID                         , // 52 B相逆变电压直流分量采样偏置校准系数
    eInvVcDcCompRatioSetID                       , // 53 预留C相逆变电压直流分量采样变比校准系数
    eInvVcDcCompOffSetID                         , // 54 预留C相逆变电压直流分量采样偏置校准系数
    eInvTempRatioSetID                           , // 55 散热器温度采样变比校准系数
    eInvTempOffSetID                             , // 56 散热器温度采样偏置校准系数
    eAmbientTempRatioSetID                       , // 57 机箱内部环境温度采样变比校准系数
    eAmbientTempOffSetID                         , // 58 机箱内部环境温度采样偏置校准系数
    eLeakageCurrRatioSetID                       , // 59 漏电流采样变比校准系数
    eLeakageCurrOffSetID                         , // 60 漏电流采样偏置校准系数
    eZeroGroundVoltRatioSetID                    , // 61 零地电压采样变比校准系数
    eZeroGroundVoltOffSetID                      , // 62 零地电压采样偏置校准系数
    eLoadOutPutVaRatioSetID                      , // 63 负载输出A相电压变比校准系数
    eLoadOutPutVaOffSetID                        , // 64 负载输出A相电压偏置校准系数
    eLoadOutPutVbRatioSetID                      , // 65 负载输出B相电压变比校准系数
    eLoadOutPutVbOffSetID                        , // 66 负载输出B相电压偏置校准系数
    eLoadOutPutVcRatioSetID                      , // 67 预留/负载输出C相电压变比校准系数
    eLoadOutPutVcOffSetID                        , // 68 预留/负载输出C相电压偏置校准系数
    eLoadOutPutIaRatioSetID                      , // 69 负载输出A相电流变比校准系数
    eLoadOutPutIaOffSetID                        , // 70 负载输出A相电流偏置校准系数
    eLoadOutPutIbRatioSetID                      , // 71 预留/负载输出B相电流变比校准系数
    eLoadOutPutIbOffSetID                        , // 72 预留/负载输出B相电流偏置校准系数
    eLoadOutPutIcRatioSetID                      , // 73 预留/负载输出C相电流变比校准系数
    eLoadOutPutIcOffSetID                        , // 74 预留/负载输出C相电流偏置校准系数
    eGrideIaRatioSetID                           , // 75 预留/电网A相电流变比校准系数
    eGrideIaOffSetID                             , // 76 预留/电网A相电流偏置校准系数
    eGrideIbRatioSetID                           , // 77 预留/电网B相电流变比校准系数
    eGrideIbOffSetID                             , // 78 预留/电网B相电流偏置校准系数
    eGrideIcRatioSetID                           , // 79 预留/电网C相电流变比校准系数
    eGrideIcOffSetID                             , // 80 预留/电网C相电流偏置校准系数
    eReserved2081SetID                           , // 81 预留2081
    eReserved2082SetID                           , // 82 预留2082
    eReserved2083SetID                           , // 83 预留2083
    eReserved2084SetID                           , // 84 预留2084
    eAdjustEndSetID=eReserved2084SetID             , // 89

    eSetDataControlDebugBeginSetID                 , // 85
    eBusVoltLoopKpSetID=eSetDataControlDebugBeginSetID    ,// 85  母线电压环比例系数
    eBusVoltLoopKiSetID                            , // 86  母线电压环积分系数
    eInvILCurrLoopKpSetID                          , // 87  电感电流环比例系数
    eInvILCurrLoopKiSetID                          , // 88  电感电流环积分系数
    eVFLoopKpSetID                                 , // 89  VF电压环比例系数
    eVFLoopKiSetID                                 , // 90  VF电压环积分系数
    eDroopKpSetID                                  , // 91  Droop环比例系数
    eDroopKiSetID                                  , // 92  Droop环积分系数
    eDroopCoeff_MSetID                             , // 93  Droop有功下垂系数m
    eDroopCoeff_NSetID                             , // 94  Droop无功下垂系数n
    eVirtResCoeffSetID                             , // 95  虚拟阻抗系数
    eInvVoltDCCompLoopKpSetID                      , // 96  逆变电压直流分量电压环比例系数
    eInvVoltDCCompLoopKiSetID                      , // 97  逆变电压直流分量电压环积分系数
    eInvCurrDCCompLoopKpSetID                      , // 98  逆变电流直流分量电流环比例系数
    eInvCurrDCCompLoopKiSetID                      , // 99  逆变电流直流分量电流环积分系数
    eReserved2105SetID                             , // 100 预留2105
    eReserved2106SetID                             , // 101 预留2106
    eReserved2107SetID                             , // 102 预留2107
    eReserved2108SetID                             , // 103 预留2108
    eReserved2109SetID                             , // 104 预留2109
    eReserved2110SetID                             , // 105 预留2110
    eReserved2111SetID                             , // 106 预留2111
    eReserved2112SetID                             , // 107 预留2112
    eReserved2113SetID                             , // 108 预留2113
    eReserved2114SetID                             , // 109 预留2114
    eReserved2115SetID                             , // 110 预留2115
    eSetDataControlDebugEndSetID=eReserved2115SetID, //


    eSetDataUserParamBeginSetID                             , // 111  ( 2500 )
    ePowerChangeModeSetID =eSetDataUserParamBeginSetID   , // 111 功率调节模式选择
    eLVRTEnableSetID                               , // 112 LVRT 低电压穿越使能
    eHVRTEnableSetID                               , // 118 HVRT 高电压穿越使能
    eIslandCheckEnableSetID                        , // 119 孤岛检测使能
    eRemotShutdownSetID                            , // 120 DRED/远程关机使能
    eReserved2505SetID                             , // 121 预留2505
    eReserved2506SetID                             , // 122 预留2506
    eReserved2507SetID                             , // 123 预留2507
    eReserved2508SetID                             , // 124 预留2508
    eLocalPowerOnOrOffSetID                        , // 125 本地开关机
    eFaultClearSetID                               , // 126 故障清除
    eCountryCodeSetID                              , // 127 国家码
    eLimitPowerEnableSetID                         , // 128 限功率使能
    eLimitPowerValueSetID                          , // 129 功率限幅（百分比）
    eHardLimitPowerEnableSetID                     , // 130 预留/DRED电网法规硬件现幅使能
    eActivePowerPerSetID                           , // 131 逆变有功设定（百分比）
    eReactPowerPerSetID                            , // 132 逆变无功设定（百分比）
    eReserved2517SetID                             , // 133 预留2517
    eOverVoltProtectSetID                          , // 134 过压阀值
    eUnderVoltProtectSetID                         , // 135 欠压阀值
    eOverFreqProtectSetID                          , // 136 过频阀值
    eUnderFreqProtectSetID                         , // 137 欠频阀值
    eWaitGridConnectTimeSetID                      , // 138 等待连接电网时间
    eRecovOverVoltSetID                            , // 139 恢复过压阀值
    eRecovUnderVoltSetID                           , // 140 恢复欠压阀值
    eRecovOverFreqSetID                            , // 141 恢复过频阀值
    eRecovUnderFreqSetID                           , // 142 恢复欠频阀值
    eRecovFaultTimeSetID                           , // 143 故障恢复时间
    OutOnGridePowerSlopeEnableSetID                , // 144 输出并网功率斜率坡度使能
    OutOnGridePowerSlopeTimeSetID                  , // 145 输出并网功率电力坡度
    eRecovFaultPowerSlopeTimeSetID                 , // 146 故障恢复后并网功率坡度
    eAntiCounterCurrEnableSetID                    , // 147 防逆流使能
    eReserved2532SetID                             , // 148 预留2532
    eReserved2533SetID                             , // 149 预留2533
    eCVTBusVoltSetID                               , // 150 直流母线电压设定
    eRateGrideVoltSetID                            , // 151 额定电网电压
    eRateGrideFreqSetID                            , // 152 额定电网频率
    eRateOutVoltSetID                              , // 153 额定输出电压
    eRateOutFreqSetID                              , // 154 额定输出频率
    eRatePowerSetID                                , // 155 额定功率
    eWorkModeSetID                                 , // 156 工作模式
    eOffGrideWorkModeSetID                         , // 157 离网工作模式
    eOnOrOffGrideEnableSetID                       , // 158 并离网切换使能
    eDebugModeEnableSetID                          , // 159 调试模式使能
    eActiveIslandStepSetID                         , // 160 主动孤岛扰动步长
    eReserved2545SetID                             , // 161 预留2545
    eReserved2546SetID                             , // 162 预留2546
    eReserved2547SetID                             , // 163 预留2547
    eReserved2548SetID                             , // 164 预留2548
    eReserved2549SetID                             , // 165 预留2549
    eReserved2550SetID                             , // 166 预留2550
    eOver1VoltProtectSetID                         , // 167 电网一段过压阀值
    eOver1VoltTimeSetID                            , // 168 电网一段过压时间
    eOver2VoltProtectSetID                         , // 169 电网二段过压阀值
    eOver2VoltTimeSetID                            , // 170 电网二段过压时间
    eOver3VoltProtectSetID                         , // 171 电网三段过压阀值（预留）
    eOver3VoltTimeSetID                            , // 172 电网三段过压时间（预留）
    eUnder1VoltProtectSetID                        , // 173 电网一段欠压阀值
    eUnder1VoltTimeSetID                           , // 174 电网一段欠压时间
    eUnder2VoltProtectSetID                        , // 175 电网二段欠压阀值
    eUnder2VoltTimeSetID                           , // 176 电网二段欠压时间
    eUnder3VoltProtectSetID                        , // 177 电网三段欠压阀值（预留）
    eUnder3VoltTimeSetID                           , // 178 电网三段欠压时间（预留）
    e10MinRmsOverVoltSetID                         , // 179 10min Rms 过压值
    eOver1FreqProtectSetID                         , // 180 电网一段过频阀值
    eOver1FreqTimeSetID                            , // 181 电网一段过频时间
    eOver2FreqProtectSetID                         , // 182 电网二段过频阀值
    eOver2FreqTimeSetID                            , // 183 电网二段过频时间
    eUnder1FreqProtectSetID                        , // 184 电网一段欠频阀值
    eUnder1FreqTimeSetID                           , // 185 电网一段欠频时间
    eUnder2FreqProtectSetID                        , // 186 电网二段欠频阀值
    eUnder2FreqTimeSetID                           , // 187 电网二段欠频时间
    ePowerModeSetID                                , // 188 功率调节模式选择
    ePowerFactorCurveEnableSetID                   , // 189 使用功率因数Cosφ (P)曲线功能使能
    eActivePowerAPerSetID                          , // 190 输出A相有功功率百分比
    eFactorCosASetID                               , // 191 输出A相功率因数
    eActivePowerBPerSetID                          , // 192 输出B相有功功率百分比
    eFactorCosBSetID                               , // 193 输出B相功率因数
    eActivePowerCPerSetID                          , // 194 预留/输出C相有功功率百分比
    eFactorCosCSetID                               , // 195留/输出C相功率因数
    eLowerLimitVoltOfFactorSetID                   , // 196 满足Cosφ 功率因数电压下限
    eUpperLimitVoltOfFactorSetID                   , // 197 满足Cosφ 功率因数电压上限
    eLowerLimitActivePowerOfFactorSetID            , // 198 满足Cosφ (P)曲线最低有功功率百分比
    eQ_UCurveEnableSetID                           , // 199 Q(U)曲线功能使能
    eVoltRefSetID                                  , // 200 VRef
    eQ_U2SetID                                     , // 201 V2 电压设置点
    eReacPowerPerAtV2SetID                         , // 202 V2 处无功功率百分比
    eQ_U1SetID                                     , // 203 V1 电压设置点
    eReacPowerPerAtV1SetID                         , // 204 V1 处无功功率百分比
    eQ_U3SetID                                     , // 205 V3 电压设置点
    eReacPowerPerAtV3SetID                         , // 206 V3 处无功功率百分比
    eQ_U4SetID                                     , // 207 V4 电压设置点
    eReacPowerPerAtV4SetID                         , // 208 V4 处无功功率百分比
    eQ_URespondTimeSetID                           , // 209 响应时间
    eP_UCurveEnableSetID                           , // 210 P(U) Curve曲线功能使能
    eP_U1SetID                                     , // 211 V1 电压设置点
    esendActPowerPerAtV1SetID                      , // 212 P1 在V1处发出有功功率百分比
    eabsorbActPowerPerAtV1SetID                    , // 213 P1` 在V1处吸收有功功率百分比
    eP_U2SetID                                     , // 214 V2 电压设置点
    esendActPowerPerAtV2SetID                      , // 215 P2 在V2处发出有功功率百分比
    eabsorbActPowerPerAtV2SetID                    , // 216 P2` 在V2处吸收有功功率百分比
    eP_URespondTimeSetID                           , // 217 响应时间
    eP_FCurveEnableSetID                           , // 218 FP Curve曲线功能使能
    eOverFreqStartPointSetID                       , // 219 电网频率大于频率起始点（功率下降)
    eOverFreqEndPointSetID                         , // 220 电网频率大于频率结束点（功率下降）
    ePowerReduceSlopeTimeSetID                     , // 221 功率下降的斜率
    eLowerFreqStartPointSetID                      , // 222 电网频率小于频率起始点（功率上升）
    eLowerFreqEndPointSetID                        , // 223 电网频率小于频率结束点（功率上升）
    ePowerAddSlopeTimeSetID                        , // 224 功率上升的斜率
    eP_FRespondTimeSetID                           , // 225 检测时间
    eRecovFreqAfterOverFreqSetID                   , // 226 过频功率下降后，频率恢复值
    eRecovFreqAfterUnderFreqSetID                  , // 227 欠频功率上升后，频率恢复值
    eP_FRecovTimeSetID                             , // 228 恢复时间
    eP_FPowerRecovSlopeTimeSetID                   , // 229 功率恢复的斜率
    ePQCurveEnableSetID                            , // 230 PQ曲线功能使能
    eDischarPowerPerAtP3SetID                      , // 231 P3放电有功功率百分比
    eDischarPowerPerAtP2SetID                      , // 232 P2放电有功功率百分比
    eDischarPowerPerAtP1SetID                      , // 233 P1放电有功功率百分比
    eChargPowerPerAtP1SetID                        , // 234 P`1充电有功功率百分比
    eChargPowerPerAtP2SetID                        , // 235 P`2充电有功功率百分比
    eChargPowerPerAtP3SetID                        , // 236 P`3充电有功功率百分比
    eRecPowerPerAtQ3SetID                          , // 237 Q3无功功率百分比(send)
    eRecPowerPerAtQ2SetID                          , // 238 Q2无功功率百分比
    eRecPowerPerAtQ1SetID                          , // 239 Q1无功功率百分比
    eAbsorbRecPowerPerAtQ1SetID                    , // 240 Q`1无功功率百分比(吸收）
    eAbsorbRecPowerPerAtQ2SetID                    , // 241 Q`2无功功率百分比
    eAbsorbRecPowerPerAtQ3SetID                    , // 242 Q`3无功功率百分比
    eLVRTStartPointSetID                           , // 243 低电压穿越起点
    eLVRTEndPointSetID                             , // 244 低电压穿越终点
    eLVRTStartPointMaxConnectTimeSetID             , // 245 低电压起点电网连接保持最长时间
    eLVRTEndPointMaxConnectTimeSetID               , // 246 低电压终点电网连接保持最长时间
    eStartLVRTVoltSetID                            , // 247 LVRT穿越电压阀值
    eHVRTStartPointSetID                           , // 248 高电压穿越起点
    eHVRTEndPointSetID                             , // 249 高电压穿越终点
    eHVRTStartPointMaxConnectTimeSetID             , // 250 高电压起点电网连接保持最长时间
    eHVRTEndPointMaxConnectTimeSetID               , // 251 高电压终点电网连接保持最长时间
    eStartHVRTVoltSetID                            , // 252 HVRT穿越电压阀值
    eReserved2637SetID                             , // 253 预留2637
    eReserved2638SetID                             , // 254 预留2638
    eReserved2639SetID                             , // 255 预留2639
    eReserved2640SetID                             , // 256 预留2640
    eReserved2641SetID                             , // 257 预留2641
    eReserved2642SetID                             , // 258 预留2642
    eReserved2643SetID                             , // 259 预留2643
    eReserved2644SetID                             , // 260 预留2644
    eReserved2645SetID                             , // 261 预留2645
    eArmToDspHostFlagSetID                         , // 262 ARM给DSP下发非主机标志

    eDateTime0SetID                                , //  130  日期时间0
    eDateTime1SetID                                , //  131  日期时间1
    eDateTime2SetID                                , //  132  日期时间2
    eMachineTypeNumSetID                           , //  133 机器型号       1
    eDefaultVersionSetID                           , //  134 默认值版本号       1
    eSetDataEnd                                    , //  135
    eFaultRecordAllowTranPfcSetID                  , //  136    故障记录允许传输标志
    eReceiveRecordIDPfcSetID                       , //  137 接收到的记录ID

    eSetDataUserParamEndSetID=eReceiveRecordIDPfcSetID    , // 252
    eSciSetDataEndID=eSetDataUserParamEndSetID,


};

//-----------------------------------------------------------------
//----------------------数字量ID表---------------------------------
//添加一个数字量，除非有预留位，否则要加16位为一个单位
//-----------------------------------------------------------------
//---------------------------------------------------------------------------//
//***************************************************************************//
//---------------------------------------------------------------------------//



union UnionUserFault {
       Uint16 UnionUserFault[2];            // 数字量,每1bit代表一个数字量
       struct
       {
           Uint16   bInvRunState                       :1;// 0   Bit0  运行状态
           Uint16   bInvILCurrOverFault                :1;// 1   Bit1  逆变电感过流
           Uint16   bInvBalanceCurrOverFault           :1;// 2   Bit2  平衡桥电感过流
           Uint16   bDCCurrOverFault                   :1;// 3   Bit3  直流过流
           Uint16   bBusVoltOverFault                  :1;// 4   Bit4  母线过压
           Uint16   bBusVoltLowFault                   :1;// 5   Bit5  母线欠压
           Uint16   bBusVoltUnbalanceFault             :1;// 6   Bit6  母线不平衡
           Uint16   bBusReverseConnectFault            :1;// 7   Bit7  母线接反故障
           Uint16   bGridVoltOverFault                 :1;// 8   Bit8  电网过压
           Uint16   bGridVoltLowFault                  :1;// 9   Bit9  电网欠压
           Uint16   bGridFreqOverFault                 :1;// 10  Bit10 电网过频
           Uint16   bGridFreqLowFault                  :1;// 11  Bit11 电网欠频
           Uint16   bOutIRmsCurrOverFault              :1;// 12  Bit12 输出过流
           Uint16   bOutPutLoadOverFault               :1;// 13  Bit13 输出过载
           Uint16   bOutPutShortFault                  :1;// 14  Bit14 输出短路
           Uint16   bRelayFault                        :1;// 15  Bit15 继电器故障
           Uint16   bGridCurrDCCompFault               :1;// 16  Bit16 电网电流直流分量故障
           Uint16   bIslandFault                       :1;// 17  Bit17 电网孤岛故障
           Uint16   bSelfCheckFault                    :1;// 18  Bit18 自检故障
           Uint16   bTempOverFault                     :1;// 19  Bit19 过温
           Uint16   bLeakageCurrOverFault              :1;// 20  Bit20 漏电流过大
           Uint16   bZeroGroundVoltOverFault           :1;// 21  Bit21 零地电压故障
           Uint16   bPLLFault                          :1;// 22  Bit22 锁相故障
           Uint16   bCANCommunFault                    :1;// 23  Bit23 CAN 通信异常
           Uint16   bSCICommunFault                    :1;// 24  Bit24 监控SCI通信异常
           Uint16   bReserved25Fault                   :1;// 25  Bit25 预留
           Uint16   bReserved26Fault                   :1;// 26  Bit26 预留
           Uint16   bReserved27Fault                   :1;// 27  Bit27 预留
           Uint16   bReserved28Fault                   :1;// 28  Bit28 预留
           Uint16   bReserved29Fault                   :1;// 29  Bit29 预留
           Uint16   bReserved30Fault                   :1;// 30  Bit30 预留
           Uint16   bReserved31Fault                   :1;// 31  Bit31 预留
       }bit;


};



union UnionAdminFault {
       Uint16 UnionAdminFault[5];            // 数字量,每1bit代表一个数字量
       struct
       {
            Uint16  bAdcIntInvILAFastOverCurrFault         :1;  //  0   Bit0 :A相电感快速过流
            Uint16  bAdcIntInvILBFastOverCurrFault         :1;  //  1   Bit1 :B相电感快速过流
            Uint16  bAdcIntInvILCFastOverCurrFault         :1;  //  2   Bit2 :预留/C相电感快速过流
            Uint16  bAdcIntBalanceILFastOverCurrFault      :1;  //  3   Bit3 :平衡桥电感快速过流
            Uint16  bAdc1msBusFastOverVoltFault            :1;  //  4   Bit4 :母线快速过压
            Uint16  bAdc1msPosBusFastOverVoltFault         :1;  //  5   Bit5 :正母线快速过压
            Uint16  bAdc1msNegBusFastOverVoltFault         :1;  //  6   Bit6 :负母线快速过压
            Uint16  bAdc1msGridAFastOverVoltFault          :1;  //  7   Bit7 :电网A相快速过压
            Uint16  bAdc1msGridBFastOverVoltFault          :1;  //  8   Bit8 :电网B相快速过压
            Uint16  bAdc1ms_Reserved9Fault                 :1;  //  9   Bit9 :预留/电网C相快速过压
            Uint16  bIo1msILACurrLimitFault                :1;  //  10  Bit10:A相电感逐波限流故障
            Uint16  bIo1msILBCurrLimitFault                :1;  //  11  Bit11:B相电感逐波限流故障
            Uint16  bIo1ms_Reserved12Fault                 :1;  //  12  Bit12:预留/C相电感逐波限流故障
            Uint16  bIo1msBalanceCurrLimitFault            :1;  //  13  Bit13:平衡桥电感逐波限流故障
            Uint16  b1msDCOverCurrFault                    :1;  //  14  Bit14:直流过流
            Uint16  bIo1msReserved15Fault                  :1;  //  15  Bit15:预留15
            Uint16  bAdc1msInvAFastOverVoltFault           :1;  //  16  Bit16:逆变A相快速过压
            Uint16  bAdc1msGrideBFastOverVoltFault         :1;  //  17  Bit17:逆变B相快速过压
            Uint16  bAdc1ms_Reserved18Fault                :1;  //  18  Bit18:预留/逆变C相快速过压
            Uint16  bAdc5msDCBusVoltSlowOverFault          :1;  //  19  Bit19:母线慢速过压
            Uint16  bAdc5msPosBusVoltSlowOverFault         :1;  //  20  Bit20:正母线慢速过压
            Uint16  bAdc5msNegBusVoltSlowOverFault         :1;  //  21  Bit21:负母线慢速过压
            Uint16  bAdc5msDCBusVoltSlowLowerFault         :1;  //  22  Bit22:母线欠压
            Uint16  bAdc5msPosBusVoltSlowLowerFault        :1;  //  23  Bit23:正母线欠压
            Uint16  bAdc5msNegBusVoltSlowLowerFault        :1;  //  24  Bit24:负母线欠压
            Uint16  bIo5msDCBusVoltUnbalanceFault          :1;  //  25  Bit25:母线不平衡
            Uint16  bIo5msDCBusReverseConnectFault         :1;  //  26  Bit26:母线接反故障
            Uint16  bIo5msGridARmsOverVoltFault            :1;  //  27  Bit27:电网A相有效值过压
            Uint16  bIo5msGridBRmsOverVoltFault            :1;  //  28  Bit28:电网B相有效值过压
            Uint16  bIo5ms_Reserved29Fault                 :1;  //  29  Bit29:预留/电网C相有效值过压
            Uint16  bIo5ms_Reserved30Fault                 :1;  //  30  Bit30:预留30
            Uint16  bIo5ms_Reserved31Fault                 :1;  //  31  Bit31:预留31
            Uint16  bIo5msGridARmsLowerVoltFault           :1;  //  32  Bit32:电网A相有效值欠压
            Uint16  bIo5msGridBRmsLowerVoltFault           :1;  //  33  Bit33:电网B相有效值欠压
            Uint16  bIo5ms_Reserved34Fault                 :1;  //  34  Bit34:预留/电网C相有效值欠压
            Uint16  bIo5msGridOverFreqFault                :1;  //  35  Bit35:电网过频
            Uint16  bIo5msGridLowerFreqFault               :1;  //  36  Bit36:电网欠频
            Uint16  bIo5msGridARmsOverCurrFault            :1;  //  37  Bit37:电网A相有效值过流
            Uint16  bIo5msGridBRmsOverCurrFault            :1;  //  38  Bit38:电网B相有效值过流
            Uint16  bIo5ms_Reserved39Fault                 :1;  //  39  Bit39:预留/电网C有效值过流
            Uint16  bIo5msOutPut105LoadOverFault           :1;  //  40  Bit40:输出105%过载
            Uint16  bIo5msOutPut125LoadOverFault           :1;  //  41  Bit41:输出125%过载
            Uint16  bIo5msOutPut150LoadOverFault           :1;  //  42  Bit42:输出150%过载
            Uint16  bIo5msGridARelayFault                  :1;  //  43  Bit43:电网A相继电器故障
            Uint16  bIo5msGridBRelayFault                  :1;  //  44  Bit44:电网B相继电器故障
            Uint16  bIo5msReserved45Fault                  :1;  //  45  Bit45:预留/电网C相继电器故障
            Uint16  bIo5msSoftStartFault                   :1;  //  46  Bit46:软启故障
            Uint16  bIo5msOutPutShortFault                 :1;  //  47  Bit47:输出短路
            Uint16  bIo5msSelfCheckFault                   :1;  //  48  Bit48:逆变自检失败
            Uint16  bIo5msLeakageCurrOverFault             :1;  //  49  Bit49:漏电流过大
            Uint16  bIo5msZeroGroundVoltOverFault          :1;  //  50  Bit50:零地电压故障
            Uint16  bIo5msInvACurrDCCompFault              :1;  //  51  Bit51:A相逆变电流直流分量过大
            Uint16  bIo5msInvBCurrDCCompFault              :1;  //  52  Bit52:B相逆变电流直流分量过大
            Uint16  bIo5ms_Reserved53Fault                 :1;  //  53  Bit53:预留/C相逆变电流直流分量过大
            Uint16  bIo5msIslandFault                      :1;  //  54  Bit54:孤岛故障
            Uint16  bIo5msPLLFault                         :1;  //  55  Bit55:锁相故障
            Uint16  bAdc20msInvTempOverFault               :1;  //  56  Bit56:逆变温度过温
            Uint16  bAdc20msAmbientTempOverFault           :1;  //  57  Bit57:环境温度过温
            Uint16  bIo20msEepromFault                     :1;  //  58  Bit58:EEPROM 故障
            Uint16  bIo20msCANCommunFault                  :1;  //  59  Bit59:CAN 通信异常
            Uint16  bIo20msSCICommunFault                  :1;  //  60  Bit60:监控SCI通信异常
            Uint16  bAdmin_Reserved61Fault                 :1;  //  61  Bit61:预留61
            Uint16  bAdmin_Reserved62Fault                 :1;  //  62  Bit62:预留62
            Uint16  bAdmin_Reserved63Fault                 :1;  //  63  Bit63:预留63
            Uint16  bAdmin_Reserved64Fault                 :1;  //  64  Bit64:预留64
            Uint16  bAdmin_Reserved65Fault                 :1;  //  65  Bit65:预留65
            Uint16  bAdmin_Reserved66Fault                 :1;  //  66  Bit66:预留66
            Uint16  bAdmin_Reserved67Fault                 :1;  //  67  Bit67:预留67
            Uint16  bAdmin_Reserved68Fault                 :1;  //  68  Bit68:预留68
            Uint16  bAdmin_Reserved69Fault                 :1;  //  69  Bit69:预留69
            Uint16  bAdmin_Reserved70Fault                 :1;  //  70  Bit70:预留70
            Uint16  bAdmin_Reserved71Fault                 :1;  //  71  Bit71:预留71
            Uint16  bAdmin_Reserved72Fault                 :1;  //  72  Bit72:预留72
            Uint16  bAdmin_Reserved73Fault                 :1;  //  73  Bit73:预留73
            Uint16  bAdmin_Reserved74Fault                 :1;  //  74  Bit74:预留74
            Uint16  bAdmin_Reserved75Fault                 :1;  //  75  Bit75:预留75
            Uint16  bAdmin_Reserved76Fault                 :1;  //  76  Bit76:预留76
            Uint16  bAdmin_Reserved77Fault                 :1;  //  77  Bit77:预留77
            Uint16  bAdmin_Reserved78Fault                 :1;  //  78  Bit78:预留78
            Uint16  bAdmin_Reserved79Fault                 :1;  //  79  Bit79:预留79
       }bit;

};




//
//typedef struct  {
//    union   UnionUserFault                      UserFault;                      //用户故障量
//    union   UnionAdminFault                     AdminFault;                     //管理故障量
//    Uint16                                      rsvd1[10];
//
//}User_AdminFault;
//



typedef union
{
    Uint16 uiDigital[(DIGITAL_NUM>>4) + 1];            // 数字量,每1bit代表一个数字量
    struct
    {
    union   UnionUserFault                      UserFault;                      //用户故障量
    union   UnionAdminFault                     AdminFault;                     //管理故障量
    }Fault;

}SumUserAdminFault;




Protocol_PUBLIC SumUserAdminFault  UserAdminFault     ;




//-----------------------------------------------------------------
//----------------------控制命令ID表-------------------------------
//-----------------------------------------------------------------
enum
{
    eDCOutVoltSetCmdID          ,   //  0   直流输出电压设定值
    eDCOutCurrLimitSetCmdID     ,   //  1   直流输出限流点设定值
    eACCurrLimitEnCmdID         ,   //  2   交流限流使能
    eModOutVoltTypeSet0CmdID    ,   //  3   模块输出电压类型设置0
    eModOutVoltTypeSet1CmdID    ,   //  4   模块输出电压类型设置1
    eModOnOffCmdID              ,   //  5   模块开关机控制
    eModVoltOverLockResetCmdID  ,   //  6   模块过压锁死复位控制
    eModCommLedCmdID            ,   //  7   模块通信绿灯闪烁控制
    eModAddrCfgCmdID            ,   //  8   模块进行地址分配控制
    eIndicateLedCmdID           ,   //  9   指示灯控制
//    bit0~bit1:控制绿灯
//        00：自动
//        01：绿灯慢闪（0.5Hz）
//        10：绿灯快闪（4Hz）
//        11：绿灯长亮
//    bit2~bit3:控制黄灯
//        00：自动
//        01：黄灯慢闪（0.5Hz）
//        10：黄灯快闪（4Hz）
//        11：黄灯长亮
//    bit4~bit5:控制红灯
//        00：自动
//        01：红灯慢闪（0.5Hz）
//        10：红灯快闪（4Hz）
//        11：红灯长亮
//    bit6~bit15：保留
    eMaskAlarm1CmdID           ,   //  10  屏蔽告警1   // 1：屏蔽；0：自动
//    bit0:输出过压
//    bit1:过温
//    bit2:预留
//    bit3:预留
//    bit4:风扇故障
//    bit5~bit15:预留
    eMaskAlarm2CmdID           ,   //  11  屏蔽告警2   // 1：屏蔽；0：自动
//    bit0:预留
//    bit1:模块输入欠压告警
//    bit2:模块交流不平衡告警
//    bit3:模块交流缺相告警
//    bit4:模块不能带载造成的严重不均流
//    bit5:预留
//    bit6:模块输入过压
//    bit7:模块PFC故障
//    bit8:模块不均流
//    bit9:掉中线告警
//    bit10:模块内部通信异常告警
//    bit11:模块输出熔丝断告警
//    bit12:预留
//    bit13:模块输入停电告警
//    bit14:母线电压严重不平衡告警
//    bit15:机柜地址冲突
    eMaskAlarm3CmdID           ,   //  12  屏蔽告警3   // 1：屏蔽；0：自动
//    bit0:模块硬件地址异常
//    bit1:模块输入共模电压异常
//    bit2:主继电器线圈短路告警
//    bit3:输入反接告警
//    bit4~bit15:预留
    eMaskAlarm4CmdID           ,   //  13  屏蔽告警4   // 1：屏蔽；0：自动
//    bit0~bit15:预留
    eFaultClearCmdID           ,   //  14  故障清除命令
    eRecoverSetDefaultCmdID    ,   //  15  恢复默认值,111:除校准系数外全部恢复默认值 222，全部恢复默认值 333:恢复SOC计算默认值
	eSysControl1CmdID          ,   //  16     系统控制指令1
	eSysControl2CmdID          ,   //  17     系统控制指令2
	eOutputVoltAdjustCmdID     ,   //  18     输出电压微调量
	eDateTimeCalib1CmdID       ,   //  19     日期时间校准：bit0-bit9:毫秒(0~999);bit10-bit15:秒(0~59)
	eDateTimeCalib2CmdID       ,   //  20     日期时间校准：bit0-bit5:分(0~59);bit6-bit10:时(0~23);bit11-bit15:日(1~31)
	eDateTimeCalib3CmdID       ,   //  21     日期时间校准：bit0-bit3:月(1~12);bit4-bit15:年(0~4096)
	//eSciCommdEndID,
};

//----------------------------------------------------------------------------------
//特殊参数位解析
//----------------------------------------------------------------------------------
typedef union
{
    Uint16 uiDigital;            // 数字量
    struct
    {
    	Uint16	bReserved0		:2;		//    bit0~bit1:保留
    	Uint16	bHardMainVer	:3;		//    bit2~bit4:硬件大版本,001～111分别表示第一代到第7代产品；
    	Uint16	bHardSubVer		:4;		//    bit5~bit8:硬件小版本,每个模块的硬件小版本需根据具体情况定义；
    	Uint16	bEfficiencyType	:4;		//    bit9~bit12:效率类型
										//        0000：<90%
										//        0001：90～91%
										//        0010：91～92%
										//        0011：92～93%
										//        0100：93～94%
										//        0101：94～95%
										//        0110：95～96%
										//        0111：96～97%
										//        1000：97～98%
										//        1001：98～99%
										//        1010：>99%
    	Uint16	bOutVoltType	:3;		//    bit13~bit15:输出电压类型
										//        000:48V
										//        001:24V
										//        010:60V
										//        011:48V/60V
										//        100:240V
										//        101:336V

    }bit;
}Union_CharWord1;


typedef union
{
    Uint16 uiDigital;            // 数字量
    struct
    {
    	Uint16	bRateOutCurrent	:10;	//    bit0~bit9:额定输出电流,数字量1表示0.5A,0~1023表示电流0～511.5A
    	Uint16	bInputVolt		:2;		//    bit10~bit11:输入电压
										//        00: 220V  AC
										//        01: 110V  AC
										//        11: 支持交流输入、直流输入、太阳能输入
    	Uint16	bACPhaseNum		:2;		//    bit12~bit13:交流相数,00：单相,01：三相
    	Uint16	bSupplyPowerMode:2;		//    bit14~bit15:供电方式,00：单供电,01：双供电

    }bit;
}Union_CharWord2;


typedef union
{
    Uint16 uiDigital;            // 数字量
    struct
    {
    	Uint16	bGreenLedCmd	:2;		//	0	bit0~bit1：	绿灯控制
    	Uint16	bYellowLedCmd	:2;		//	1	bit2~bit3：	黄灯控制
    	Uint16	bRedLedCmd		:2;		//	2	bit4~bit5：	红灯控制
    	Uint16	bReservedCmd	:10;	//	3	bit6~bit15：	预留

    }bit;
}Union_IndicateLedCmd;


typedef union
{
    Uint16 uiDigital[4];            // 数字量,每1bit代表一个数字量
    struct
    {
    	Uint16	bOutVoltOverLockFault	    :1;	//	0	bit0：	输出过压锁死
    	Uint16	bEnviTempOverFault	        :1;	//	1	bit1：	环温过温
    	Uint16	bReserved2Fault	            :1;	//	2	bit2：	预留
    	Uint16	bReserved3Fault	            :1;	//	3	bit3：	预留
    	Uint16	bFanFault	                :1;	//	4	bit4：	风扇故障
    	Uint16	bReserved5Fault	            :1;	//	5	bit5：	预留
    	Uint16	bReserved6Fault	            :1;	//	6	bit6：	预留
    	Uint16	bReserved7Fault	            :1;	//	7	bit7：	预留
    	Uint16	bReserved8Fault	            :1;	//	8	bit8：	预留
    	Uint16	bReserved9Fault	            :1;	//	9	bit9：	预留
    	Uint16	bReserved10Fault	        :1;	//	10	bit10：	预留
    	Uint16	bReserved11Fault	        :1;	//	11	bit11：	预留
    	Uint16	bReserved12Fault	        :1;	//	12	bit12：	预留
    	Uint16	bReserved13Fault	        :1;	//	13	bit13：	预留
    	Uint16	bReserved14Fault	        :1;	//	14	bit14：	预留
    	Uint16	bReserved15Fault	        :1;	//	15	bit15：	预留
    	Uint16	bReserved16Fault	        :1;	//	16	bit0：	预留
    	Uint16	bModInputVoltLowAlarm	    :1;	//	17	bit1：	模块输入欠压告警
    	Uint16	bModACVoltUnbalanceAlarm	:1;	//	18	bit2：	模块交流不平衡告警
    	Uint16	bModACLossPhaseAlarm	    :1;	//	19	bit3：	模块交流缺相告警
    	Uint16	bModUnloadToUnevenCurrAlarm	:1;	//	20	bit4：	模块不能带载造成的严重不均流
    	Uint16	bReserved21Fault	        :1;	//	21	bit5：	预留
    	Uint16	bModInputVoltOverFault	    :1;	//	22	bit6：	模块输入过压
    	Uint16	bModPFCFault	            :1;	//	23	bit7：	模块PFC故障
    	Uint16	bModUnevenCurrAlarm	        :1;	//	24	bit8：	模块不均流
    	Uint16	bLossNLineAlarm	            :1;	//	25	bit9：	掉中线告警
    	Uint16	bModInnerCommFault	        :1;	//	26	bit10：	模块内部通信异常告警
    	Uint16	bModOutputFuseFault	        :1;	//	27	bit11：	模块输出熔丝断告警
    	Uint16	bReserved28Fault	        :1;	//	28	bit12：	预留
    	Uint16	bModInputPowerOffAlarm	    :1;	//	29	bit13：	模块输入停电告警
    	Uint16	bBusVoltUnbalanceAlarm	    :1;	//	30	bit14：	母线电压严重不平衡告警
    	Uint16	bCabinAddrConflictAlarm	    :1;	//	31	bit15：	机柜地址冲突
    	Uint16	bModHardAddrFault	        :1;	//	32	bit0：	模块硬件地址异常
    	Uint16	bModInputCMVFault	        :1;	//	33	bit1：	模块输入共模电压异常
    	Uint16	bMainRelayShortAlarm	    :1;	//	34	bit2：	主继电器线圈短路告警
    	Uint16	bInputReverseConnectAlarm	:1;	//	35	bit3：	输入反接告警
    	Uint16	bReserved36Fault	        :1;	//	36	bit4：	预留
    	Uint16	bReserved37Fault	        :1;	//	37	bit5：	预留
    	Uint16	bReserved38Fault	        :1;	//	38	bit6：	预留
    	Uint16	bReserved39Fault	        :1;	//	39	bit7：	预留
    	Uint16	bReserved40Fault	        :1;	//	40	bit8：	预留
    	Uint16	bReserved41Fault	        :1;	//	41	bit9：	预留
    	Uint16	bReserved42Fault	        :1;	//	42	bit10：	预留
    	Uint16	bReserved43Fault	        :1;	//	43	bit11：	预留
    	Uint16	bReserved44Fault	        :1;	//	44	bit12：	预留
    	Uint16	bReserved45Fault	        :1;	//	45	bit13：	预留
    	Uint16	bReserved46Fault	        :1;	//	46	bit14：	预留
    	Uint16	bReserved47Fault	        :1;	//	47	bit15：	预留
    	Uint16	bReserved48Fault	        :1;	//	48	bit0：	预留
    	Uint16	bReserved49Fault	        :1;	//	49	bit1：	预留
    	Uint16	bReserved50Fault	        :1;	//	50	bit2：	预留
    	Uint16	bReserved51Fault	        :1;	//	51	bit3：	预留
    	Uint16	bReserved52Fault	        :1;	//	52	bit4：	预留
    	Uint16	bReserved53Fault	        :1;	//	53	bit5：	预留
    	Uint16	bReserved54Fault	        :1;	//	54	bit6：	预留
    	Uint16	bReserved55Fault	        :1;	//	55	bit7：	预留
    	Uint16	bReserved56Fault	        :1;	//	56	bit8：	预留
    	Uint16	bReserved57Fault	        :1;	//	57	bit9：	预留
    	Uint16	bReserved58Fault	        :1;	//	58	bit10：	预留
    	Uint16	bReserved59Fault	        :1;	//	59	bit11：	预留
    	Uint16	bReserved60Fault	        :1;	//	60	bit12：	预留
    	Uint16	bReserved61Fault	        :1;	//	61	bit13：	预留
    	Uint16	bReserved62Fault	        :1;	//	62	bit14：	预留
    	Uint16	bReserved63Fault	        :1;	//	63	bit15：	预留

    }bit;
}Union_FaultMask;



typedef union
{
	volatile Uint16 uiDigital[2];                    // 数字量,每1bit代表一个数字量
    struct
    {
    	Uint16	bSysCommand             :4;	//	bit0~3:控制指令
    	Uint16	bModLimitDisChrOrChr	:2;	//	bit4~5: 0-无效 1-不可充电可放电 2-可充电不可放电 3-不可充电不可放电
    	Uint16	bCalibCapDischg         :1;	//	bit6  : 0-无效，1-核容放电使能

    }bit;
}Union_SysCommand;

typedef union
{
    volatile Uint16 uiDigital[2];                    // 数字量,每1bit代表一个数字量
    struct
    {
    	Uint16 bModDisState         :4; //bit0~3  : 模块状态:  1-待机  2-运行  3-故障
    	Uint16 bCalibCapSts         :2; //bit4~5  : 核容状态:0-未核容 1-核容中 2-核容成功 3-核容失败
    	Uint16 bChgOrDisChgSts      :2; //bit6~7  : 充放电状态:0-浮充 1-均充 2-放电 3-非充非放
    	Uint16 bDisChargeLimit      :1; //bit8    : 放电限流 0-无效  1-限流
    	Uint16 bChargeLimit	        :1; //bit9	  : 充电限流 0-无效  1-限流
    	Uint16 bBatEod	            :1; //bit10	  : 电池EOD 0-无效   1-EOD
    }bit;
}Union_ModState;

enum
{
    eAnlgBeginID,
    eGBmsAnlgID = eAnlgBeginID          ,   //  0   GBMS信息
    eCBmsAnlgID                         ,   //  1   CBMS信息
    eDCDCAnlgID                         ,   //  2   DCDC信息
    eAnlgEndID                          ,

    eSetBeginID = eAnlgEndID            ,
    eDCDCSetID = eSetBeginID            ,   //  3   DCDC设置参数
    eBMSSetID                           ,   //  4   BMS设置参数
    eSetEndID,

    eCommCfgEndID = eSetEndID,
};

typedef struct
{
    Uint16  uiPtlStartAddr;     //  协议开始地址
    Uint16  uiDspStartAddr;     //  DSP开始地址
    Uint16  uiLen;              //  长度
    Uint16  *puiCfgDest;        //  目标地址

}Struct_CommCfgTbl;

//-----------------------------------------------------------------------------
// Public Variables
//-----------------------------------------------------------------------------


Protocol_PUBLIC float fceshisavenum1  ;  //模拟量
Protocol_PUBLIC float fceshisavenum2  ;  //模拟量
Protocol_PUBLIC float fceshisavenum3  ;  //模拟量
Protocol_PUBLIC float fceshisavenum4  ;  //模拟量


Protocol_PUBLIC Uint32 ceshisavenum1  ;
Protocol_PUBLIC Uint32 ceshisavenum2  ;

Protocol_PUBLIC Uint16  uiAnalogDataBag[];      //模拟量
Protocol_PUBLIC Uint16  uiCommandDataBag[];    //控制量


//Protocol_PUBLIC Union_UserFault              unUserFault;                //用户故障量
//Protocol_PUBLIC Union_AdminFault   	         unAdminFault;				//管理故障量


Protocol_PUBLIC volatile Union_ModState      unModState;        //模块各种运行状态
Protocol_PUBLIC volatile Union_SysCommand    unSysCommand;      //系统控制指令

Protocol_PUBLIC const Struct_CommCfgTbl strCommCfgTbl[];

Protocol_PUBLIC Union_CharWord1			unCharWord1;			//模块特征字1
Protocol_PUBLIC Union_CharWord2			unCharWord2;			//模块特征字2
Protocol_PUBLIC Union_IndicateLedCmd  	unIndicateLedCmd;		//指示灯控制
Protocol_PUBLIC Union_FaultMask 		unFaultMask;         	//故障屏蔽
//-----------------------------------------------------------------------------
// Public Function Prototypes
//-----------------------------------------------------------------------------
Protocol_PUBLIC void Protocol_Task_RealTime(void);
Protocol_PUBLIC void Protocol_Task_1ms(void);
Protocol_PUBLIC void Protocol_Task_5ms(void);
Protocol_PUBLIC void Protocol_Task_20ms(void);
Protocol_PUBLIC void Protocol_Task_100ms(void);

#endif //PROTOCOL_H
//===========================================================================
// End of file.
//===========================================================================
