예제 #1
0
        public static DeviceStates AnalysisData(Rs485ModelForParal rs485ModelForParal)
        {
            string[]  strArray1  = new string[4];
            States[]  partStates = new States[5];
            int       num1       = ((IEnumerable <string>)Rs485Parse.WorkState).ToList <string>().IndexOf(rs485ModelForParal.WorkState);
            CurOrited curOrited;

            switch (num1)
            {
            case 2:
            case 3:
            case 4:
            case 6:
                string[] strArray2 = strArray1;
                curOrited = CurOrited.ELtoR;
                string str1 = curOrited.ToString();
                strArray2[2] = str1;
                break;
            }
            int    result1;
            double numFromString;

            if (int.TryParse(Regex.Match(rs485ModelForParal.PGrid, "\\d+").Value, out result1))
            {
                numFromString = StringParse.GetNumFromString(rs485ModelForParal.RatedPower);
                double result2;
                int    num2 = double.TryParse(numFromString.ToString((IFormatProvider)CultureInfo.InvariantCulture), out result2) ? 1 : 0;
                numFromString = StringParse.GetNumFromString(rs485ModelForParal.InverterSoftwareVersion.Replace(".", ""));
                double result3;
                bool   flag = double.TryParse(numFromString.ToString((IFormatProvider)CultureInfo.InvariantCulture), out result3);
                int    num3 = (int)result2;
                int    num4 = (int)result3;
                int    num5 = flag ? 1 : 0;
                if ((num2 & num5) != 0 && num4 > 20000 && (num3 == 20000 || num3 == 3000) && (num1 == 3 || num1 == 4 || num1 == 6))
                {
                    string[] strArray3 = strArray1;
                    curOrited = CurOrited.NTtoB;
                    string str2 = curOrited.ToString();
                    strArray3[1] = str2;
                }
                else if (num1 == 6)
                {
                    string[] strArray3 = strArray1;
                    curOrited = CurOrited.NTtoB;
                    string str2 = curOrited.ToString();
                    strArray3[1] = str2;
                }
                else
                {
                    if (result1 > 0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = CurOrited.NBtoT;
                        string str2 = curOrited.ToString();
                        strArray3[1] = str2;
                    }
                    if (result1 < 0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = CurOrited.NTtoB;
                        string str2 = curOrited.ToString();
                        strArray3[1] = str2;
                    }
                }
            }
            numFromString = StringParse.GetNumFromString(rs485ModelForParal.BattCurrent);
            double result4;

            if (double.TryParse(numFromString.ToString((IFormatProvider)CultureInfo.InvariantCulture), out result4))
            {
                if (num1 == 6)
                {
                    string[] strArray3 = strArray1;
                    curOrited = CurOrited.SBtoT;
                    string str2 = curOrited.ToString();
                    strArray3[3] = str2;
                }
                else
                {
                    if (result4 > 0.0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = CurOrited.SBtoT;
                        string str2 = curOrited.ToString();
                        strArray3[3] = str2;
                    }
                    if (result4 < 0.0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = CurOrited.STtoB;
                        string str2 = curOrited.ToString();
                        strArray3[3] = str2;
                    }
                    if (result1 == 0 && Math.Abs(result4) < 0.1)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = CurOrited.SBtoT;
                        string str2 = curOrited.ToString();
                        strArray3[3] = str2;
                    }
                }
            }
            numFromString = StringParse.GetNumFromString(rs485ModelForParal.ChargerPower);
            double result5;

            if (double.TryParse(numFromString.ToString((IFormatProvider)CultureInfo.InvariantCulture), out result5) && (int)result5 != 0)
            {
                string[] strArray3 = strArray1;
                curOrited = CurOrited.WLtoR;
                string str2 = curOrited.ToString();
                strArray3[0] = str2;
            }
            double?soc = new double?(100.0);

            string[] curOrient = strArray1;
            return(new DeviceStates(partStates, soc, curOrient));
        }
예제 #2
0
        public static Rs485ModelForParal GetPartData(int chargerId, int inverterId, SerialPort sp)
        {
            Rs485ModelForParal rs485ModelForParal1 = new Rs485ModelForParal(chargerId, inverterId);

            byte[] crcb1 = Rs485ComServer.Operator.GenerateCRCB(string.Format("{0} 03 27 11 00 0A", (object)chargerId.ToString().PadLeft(2, '0')));
            byte[] crcb2 = Rs485ComServer.Operator.GenerateCRCB(string.Format("{0} 03 27 75 00 0C", (object)chargerId.ToString().PadLeft(2, '0')));
            byte[] crcb3 = Rs485ComServer.Operator.GenerateCRCB(string.Format("{0} 03 3B 61 00 15", (object)chargerId.ToString().PadLeft(2, '0')));
            byte[] crcb4 = Rs485ComServer.Operator.GenerateCRCB(string.Format("{0} 03 4E 21 00 10", (object)inverterId.ToString().PadLeft(2, '0')));
            byte[] crcb5 = Rs485ComServer.Operator.GenerateCRCB(string.Format("{0} 03 4E 85 00 2B", (object)inverterId.ToString().PadLeft(2, '0')));
            byte[] crcb6 = Rs485ComServer.Operator.GenerateCRCB(string.Format("{0} 03 62 71 00 4A", (object)inverterId.ToString().PadLeft(2, '0')));
            if (!sp.IsOpen)
            {
                sp.Open();
            }
            string[] partArr1 = Rs485ComServer.GetPartArr(sp, crcb1, 10, 20);
            if (partArr1 != null && partArr1.Length == 10)
            {
                string[] partArr2 = Rs485ComServer.GetPartArr(sp, crcb2, 12, 20);
                Thread.Sleep(100);
                string[] partArr3 = Rs485ComServer.GetPartArr(sp, crcb3, 21, 20);
                Thread.Sleep(100);
                string[] partArr4 = Rs485ComServer.GetPartArr(sp, crcb4, 16, 20);
                Thread.Sleep(100);
                string[] partArr5 = Rs485ComServer.GetPartArr(sp, crcb5, 43, 20);
                Thread.Sleep(100);
                string[] partArr6 = Rs485ComServer.GetPartArr(sp, crcb6, 74, 40);
                rs485ModelForParal1.MachineType  = partArr1[0];
                rs485ModelForParal1.SerialNumber = partArr1[1] + partArr1[2];
                int int16_1 = (int)Convert.ToInt16(partArr1[3], 16);
                rs485ModelForParal1.HardwareVersion = string.IsNullOrEmpty(partArr1[3]) ? string.Empty : (partArr1[3] == "0" || int16_1 == 0 ? "1.00.00" : Convert.ToInt16(partArr1[3], 16).ToString().Insert(3, ".").Insert(1, "."));
                int int16_2 = (int)Convert.ToInt16(partArr1[4], 16);
                rs485ModelForParal1.SoftwareVersion = string.IsNullOrEmpty(partArr1[4]) ? string.Empty : (partArr1[4] == "0" || int16_2 == 0 ? "1.00.00" : Convert.ToInt16(partArr1[4], 16).ToString().Insert(3, ".").Insert(1, "."));
                rs485ModelForParal1.PvVoltageC      = partArr1[5];
                rs485ModelForParal1.BatteryVoltageC = partArr1[6];
                rs485ModelForParal1.ChargerCurrentC = partArr1[7];
                double num;
                if (partArr2 != null && partArr2.Length == 12)
                {
                    rs485ModelForParal1.ChargerWorkEnable = Convert.ToInt16(partArr2[0], 16).ToString();
                    rs485ModelForParal1.AbsorbVoltage     = ((double)Convert.ToInt16(partArr2[1], 16) * 0.1).ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal1.FloatVoltage      = ((double)Convert.ToInt16(partArr2[2], 16) * 0.1).ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal1.AbsorptionVoltage = ((double)Convert.ToInt16(partArr2[3], 16) * 0.1).ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal1.BatteryLowVoltage = ((double)Convert.ToInt16(partArr2[4], 16) * 0.1).ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    Rs485ModelForParal rs485ModelForParal2 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr2[6], 16) * 0.1;
                    string str1 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal2.BatteryHighVoltage = str1;
                    Rs485ModelForParal rs485ModelForParal3 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr2[7], 16) * 0.1;
                    string str2 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal3.MaxChargerCurrent = str2;
                    Rs485ModelForParal rs485ModelForParal4 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr2[8], 16) * 0.1;
                    string str3 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal4.AbsorbChargerCurrent     = str3;
                    rs485ModelForParal1.BatteryType              = Convert.ToInt16(partArr2[9], 16).ToString();
                    rs485ModelForParal1.BatteryAh                = Convert.ToInt16(partArr2[10], 16).ToString();
                    rs485ModelForParal1.RemoveTheAccumulatedData = Convert.ToInt16(partArr2[11], 16).ToString();
                }
                short int16_3;
                if (partArr3 != null && partArr3.Length == 21)
                {
                    rs485ModelForParal1.ChargerWorkstate = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr3[0], 16), Rs485Parse.ChargerWorkstate);
                    rs485ModelForParal1.MpptState        = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr3[1], 16), Rs485Parse.MpptState);
                    rs485ModelForParal1.ChargingState    = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr3[2], 16), Rs485Parse.ChargingState);
                    Rs485ModelForParal rs485ModelForParal2 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr3[4], 16) * 0.1;
                    string str1 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " V";
                    rs485ModelForParal2.PvVoltage = str1;
                    Rs485ModelForParal rs485ModelForParal3 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr3[5], 16) * 0.1;
                    string str2 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " V";
                    rs485ModelForParal3.BatteryVoltage = str2;
                    Rs485ModelForParal rs485ModelForParal4 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr3[6], 16) * 0.1;
                    string str3 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);             // + "A";
                    rs485ModelForParal4.ChargerCurrent      = str3;
                    rs485ModelForParal1.ChargerPower        = Convert.ToInt16(partArr3[7], 16).ToString(); // + " W";
                    rs485ModelForParal1.RadiatorTemperature = Convert.ToInt16(partArr3[8], 16).ToString(); // + " ℃";
                    rs485ModelForParal1.ExternalTemperature = Convert.ToInt16(partArr3[9], 16).ToString(); // + " ℃";
                    rs485ModelForParal1.BatteryRelay        = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr3[10], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.PvRelay             = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr3[11], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.ErrorMessage        = Rs485ComServer.Operator.AnalyBitMessage(partArr3[12], Rs485Parse.ChargerError);
                    rs485ModelForParal1.WarningMessage      = Rs485ComServer.Operator.AnalyBitMessage(partArr3[13], Rs485Parse.ChargerWarning);
                    rs485ModelForParal1.BattVolGrade        = Convert.ToInt16(partArr3[14], 16).ToString();// + " V";
                    Rs485ModelForParal rs485ModelForParal5 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr3[15], 16) * 0.1;
                    string str4 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " A";
                    rs485ModelForParal5.RatedCurrent = str4;
                    Rs485ModelForParal rs485ModelForParal6 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr3[16], 16) * 1000) + (double)Convert.ToInt16(partArr3[17], 16) * 0.1;
                    string str5 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " KWH";
                    rs485ModelForParal6.AccumulatedPower = str5;
                    Rs485ModelForParal rs485ModelForParal7 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr3[18], 16);
                    string str6 = int16_3.ToString().PadLeft(2, '0');
                    int16_3 = Convert.ToInt16(partArr3[19], 16);
                    string str7 = int16_3.ToString().PadLeft(2, '0');
                    int16_3 = Convert.ToInt16(partArr3[20], 16);
                    string str8 = int16_3.ToString().PadLeft(2, '0');
                    string str9 = string.Format("{0}:{1}:{2}", (object)str6, (object)str7, (object)str8);
                    rs485ModelForParal7.AccumulatedTime = str9;
                }
                if (partArr4 != null && partArr4.Length == 16)
                {
                    int    int16_4 = (int)Convert.ToInt16(partArr1[4], 16);
                    int    int16_5 = (int)Convert.ToInt16(partArr1[0], 16);
                    string str1    = string.Empty;
                    switch (int16_5)
                    {
                    case 1600:
                        str1 = "PC1600";
                        break;

                    case 1800:
                        str1 = int16_4 > 20000 ? "PV1800" : "PH1800";
                        break;

                    case 3000:
                        str1 = "PH3000";
                        break;

                    case 3500:
                        str1 = "PV3500";
                        break;
                    }
                    rs485ModelForParal1.InverterMachineType  = str1;
                    rs485ModelForParal1.InverterSerialNumber = partArr4[1] + partArr4[2];
                    int int16_6 = (int)Convert.ToInt16(partArr4[3], 16);
                    Rs485ModelForParal rs485ModelForParal2 = rs485ModelForParal1;
                    string             str2;
                    if (!string.IsNullOrEmpty(partArr4[3]))
                    {
                        if (!(partArr4[3] == "0") && int16_6 != 0)
                        {
                            int16_3 = Convert.ToInt16(partArr4[3], 16);
                            str2    = int16_3.ToString().Insert(3, ".").Insert(1, ".");
                        }
                        else
                        {
                            str2 = "1.00.00";
                        }
                    }
                    else
                    {
                        str2 = string.Empty;
                    }
                    rs485ModelForParal2.InverterHardwareVersion = str2;
                    int int16_7 = (int)Convert.ToInt16(partArr4[4], 16);
                    Rs485ModelForParal rs485ModelForParal3 = rs485ModelForParal1;
                    string             str3;
                    if (!string.IsNullOrEmpty(partArr4[4]))
                    {
                        if (!(partArr4[4] == "0") && int16_7 != 0)
                        {
                            int16_3 = Convert.ToInt16(partArr4[4], 16);
                            str3    = int16_3.ToString().Insert(3, ".").Insert(1, ".");
                        }
                        else
                        {
                            str3 = "1.00.00";
                        }
                    }
                    else
                    {
                        str3 = string.Empty;
                    }
                    rs485ModelForParal3.InverterSoftwareVersion = str3;
                    rs485ModelForParal1.InverterBatteryVoltageC = partArr4[8];
                    rs485ModelForParal1.InverterVoltageC        = partArr4[9];
                    rs485ModelForParal1.GridVoltageC            = partArr4[10];
                    rs485ModelForParal1.BusVoltageC             = partArr4[11];
                    rs485ModelForParal1.ControlCurrentC         = partArr4[12];
                    rs485ModelForParal1.InverterCurrentC        = partArr4[13];
                    rs485ModelForParal1.GridCurrentC            = partArr4[14];
                    rs485ModelForParal1.LoadCurrentC            = partArr4[15];
                }
                if (partArr5 != null && partArr5.Length == 43)
                {
                    Rs485ModelForParal rs485ModelForParal2 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[0], 16);
                    string str1 = int16_3.ToString();
                    rs485ModelForParal2.InverterOffgridWorkEnable = str1;
                    Rs485ModelForParal rs485ModelForParal3 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[1], 16) * 0.1;
                    string str2 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal3.InverterOutputVoltageSet = str2;
                    Rs485ModelForParal rs485ModelForParal4 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[2], 16);
                    string str3 = int16_3.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal4.InverterOutputFrequencySet = str3;
                    Rs485ModelForParal rs485ModelForParal5 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[3], 16);
                    string str4 = int16_3.ToString();
                    rs485ModelForParal5.InverterSearchModeEnable = str4;
                    Rs485ModelForParal rs485ModelForParal6 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[7], 16);
                    string str5 = int16_3.ToString();
                    rs485ModelForParal6.InverterDischargerToGridEnable = str5;
                    Rs485ModelForParal rs485ModelForParal7 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[8], 16);
                    string str6 = int16_3.ToString();
                    rs485ModelForParal7.EnergyUseMode = str6;
                    Rs485ModelForParal rs485ModelForParal8 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[10], 16);
                    string str7 = int16_3.ToString();
                    rs485ModelForParal8.GridProtectStandard = str7;
                    Rs485ModelForParal rs485ModelForParal9 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[11], 16);
                    string str8 = int16_3.ToString();
                    rs485ModelForParal9.SolarUseAim = str8;
                    Rs485ModelForParal rs485ModelForParal10 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[12], 16) * 0.1;
                    string str9 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal10.InverterMaxDischargerCurrent = str9;
                    Rs485ModelForParal rs485ModelForParal11 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[17], 16) * 0.1;
                    string str10 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal11.NormalVoltagePoint = str10;
                    Rs485ModelForParal rs485ModelForParal12 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[18], 16) * 0.1;
                    string str11 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal12.StartSellVoltagePoint = str11;
                    Rs485ModelForParal rs485ModelForParal13 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[24], 16) * 0.1;
                    string str12 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal13.GridMaxChargerCurrentSet = str12;
                    Rs485ModelForParal rs485ModelForParal14 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[26], 16) * 0.1;
                    string str13 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal14.InverterBatteryLowVoltage = str13;
                    Rs485ModelForParal rs485ModelForParal15 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[27], 16) * 0.1;
                    string str14 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal15.InverterBatteryHighVoltage = str14;
                    Rs485ModelForParal rs485ModelForParal16 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr5[31], 16) * 0.1;
                    string str15 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);
                    rs485ModelForParal16.MaxCombineChargerCurrent = str15;
                    rs485ModelForParal1.SystemSetting             = Rs485ComServer.Operator.AnalyBitMessage(partArr5[41]);
                    Rs485ModelForParal rs485ModelForParal17 = rs485ModelForParal1;
                    int16_3 = Convert.ToInt16(partArr5[42], 16);
                    string str16 = int16_3.ToString();
                    rs485ModelForParal17.ChargerSourcePriority = str16;
                }
                if (partArr6 != null && partArr6.Length == 74)
                {
                    rs485ModelForParal1.WorkState      = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[0], 16), Rs485Parse.WorkState);
                    rs485ModelForParal1.AcVoltageGrade = Convert.ToInt16(partArr6[1], 16).ToString();// + " V";
                    int    int16_4             = (int)Convert.ToInt16(partArr6[2], 16);
                    string inverterMachineType = rs485ModelForParal1.InverterMachineType;
                    //string str1 = inverterMachineType == "PV1800" || inverterMachineType == "PH1800" ? int16_4.ToString() + " VA" : (inverterMachineType == "PH3000" ? int16_4.ToString() + " W" : int16_4.ToString() + "W");
                    string str1 = inverterMachineType == "PV1800" || inverterMachineType == "PH1800" ? int16_4.ToString() : (inverterMachineType == "PH3000" ? int16_4.ToString() : int16_4.ToString());
                    rs485ModelForParal1.RatedPower = str1;
                    Rs485ModelForParal rs485ModelForParal2 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[4], 16) * 0.1;
                    string str2 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " V";
                    rs485ModelForParal2.InverterBatteryVoltage = str2;
                    Rs485ModelForParal rs485ModelForParal3 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[5], 16) * 0.1;
                    string str3 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " V";
                    rs485ModelForParal3.InverterVoltage = str3;
                    Rs485ModelForParal rs485ModelForParal4 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[6], 16) * 0.1;
                    string str4 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " V";
                    rs485ModelForParal4.GridVoltage = str4;
                    Rs485ModelForParal rs485ModelForParal5 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[7], 16) * 0.1;
                    string str5 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " V";
                    rs485ModelForParal5.BusVoltage = str5;
                    Rs485ModelForParal rs485ModelForParal6 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[8], 16) * 0.1;
                    string str6 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " A";
                    rs485ModelForParal6.ControlCurrent = str6;
                    Rs485ModelForParal rs485ModelForParal7 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[9], 16) * 0.1;
                    string str7 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " A";
                    rs485ModelForParal7.InverterCurrent = str7;
                    Rs485ModelForParal rs485ModelForParal8 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[10], 16) * 0.1;
                    string str8 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " A";
                    rs485ModelForParal8.GridCurrent = str8;
                    Rs485ModelForParal rs485ModelForParal9 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[11], 16) * 0.1;
                    string str9 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);      // + " A";
                    rs485ModelForParal9.LoadCurrent = str9;
                    rs485ModelForParal1.PInverter   = Convert.ToInt16(partArr6[12], 16).ToString(); // + " W";
                    rs485ModelForParal1.PGrid       = Convert.ToInt16(partArr6[13], 16).ToString(); // + " W";
                    rs485ModelForParal1.PLoad       = Convert.ToInt16(partArr6[14], 16).ToString(); // + " W";
                    rs485ModelForParal1.LoadPercent = Convert.ToInt16(partArr6[15], 16).ToString(); // + " %";
                    rs485ModelForParal1.SInverter   = Convert.ToInt16(partArr6[16], 16).ToString(); // + " VA";
                    rs485ModelForParal1.SGrid       = Convert.ToInt16(partArr6[17], 16).ToString(); // + " VA";
                    rs485ModelForParal1.Sload       = Convert.ToInt16(partArr6[18], 16).ToString(); // + " VA";
                    rs485ModelForParal1.Qinverter   = Convert.ToInt16(partArr6[20], 16).ToString(); // + " var";
                    rs485ModelForParal1.Qgrid       = Convert.ToInt16(partArr6[21], 16).ToString(); // + " var";
                    rs485ModelForParal1.Qload       = Convert.ToInt16(partArr6[22], 16).ToString(); // + " var";
                    Rs485ModelForParal rs485ModelForParal10 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[24], 16) * 0.01;
                    string str10 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " Hz";
                    rs485ModelForParal10.InverterFrequency = str10;
                    Rs485ModelForParal rs485ModelForParal11 = rs485ModelForParal1;
                    num = (double)Convert.ToInt16(partArr6[25], 16) * 0.01;
                    string str11 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " Hz";
                    rs485ModelForParal11.GridFrequency         = str11;
                    rs485ModelForParal1.InverterMaxNumber      = partArr6[28];
                    rs485ModelForParal1.CombineType            = partArr6[29];
                    rs485ModelForParal1.InverterNumber         = partArr6[30];
                    rs485ModelForParal1.AcRadiatorTemperature  = Convert.ToInt16(partArr6[32], 16).ToString(); // + " ℃";
                    rs485ModelForParal1.TransformerTemperature = Convert.ToInt16(partArr6[33], 16).ToString(); // + " ℃";
                    rs485ModelForParal1.DcRadiatorTemperature  = Convert.ToInt16(partArr6[34], 16).ToString(); // + " ℃";
                    rs485ModelForParal1.InverterRelayState     = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[36], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.GridRelayState         = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[37], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.LoadRelayState         = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[38], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.N_LineRelayState       = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[39], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.DCRelayState           = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[40], 16), Rs485Parse.ConnectStates);
                    rs485ModelForParal1.EarthRelayState        = Rs485ComServer.GetValue((int)Convert.ToInt16(partArr6[41], 16), Rs485Parse.ConnectStates);
                    Rs485ModelForParal rs485ModelForParal12 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[44], 16) * 1000) + (double)Convert.ToInt16(partArr6[45], 16) * 0.1;
                    string str12 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " KWH";
                    rs485ModelForParal12.AccumulatedChargerPower = str12;
                    Rs485ModelForParal rs485ModelForParal13 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[46], 16) * 1000) + (double)Convert.ToInt16(partArr6[47], 16) * 0.1;
                    string str13 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + " KWH";
                    rs485ModelForParal13.AccumulatedDischargerPower = str13;
                    Rs485ModelForParal rs485ModelForParal14 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[48], 16) * 1000) + (double)Convert.ToInt16(partArr6[49], 16) * 0.1;
                    string str14 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + "KWH";
                    rs485ModelForParal14.AccumulatedBuyPower = str14;
                    Rs485ModelForParal rs485ModelForParal15 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[50], 16) * 1000) + (double)Convert.ToInt16(partArr6[51], 16) * 0.1;
                    string str15 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + "KWH";
                    rs485ModelForParal15.AccumulatedSellPower = str15;
                    Rs485ModelForParal rs485ModelForParal16 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[52], 16) * 1000) + (double)Convert.ToInt16(partArr6[53], 16) * 0.1;
                    string str16 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + "KWH";
                    rs485ModelForParal16.AccumulatedLoadPower = str16;
                    Rs485ModelForParal rs485ModelForParal17 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[54], 16) * 1000) + (double)Convert.ToInt16(partArr6[55], 16) * 0.1;
                    string str17 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + "KWH";
                    rs485ModelForParal17.AccumulatedSelf_usePower = str17;
                    Rs485ModelForParal rs485ModelForParal18 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[56], 16) * 1000) + (double)Convert.ToInt16(partArr6[57], 16) * 0.1;
                    string str18 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + "KWH";
                    rs485ModelForParal18.AccumulatedPV_sellPower = str18;
                    Rs485ModelForParal rs485ModelForParal19 = rs485ModelForParal1;
                    num = (double)((int)Convert.ToInt16(partArr6[58], 16) * 1000) + (double)Convert.ToInt16(partArr6[59], 16) * 0.1;
                    string str19 = num.ToString((IFormatProvider)CultureInfo.InvariantCulture);// + "KWH";
                    rs485ModelForParal19.AccumulatedGrid_chargerPower = str19;
                    rs485ModelForParal1.InverterErrorMessage          = Rs485ComServer.Operator.AnalyBitMessage(partArr6[60], Rs485Parse.InverterError1) + Rs485ComServer.Operator.AnalyBitMessage(partArr6[61], Rs485Parse.InverterError2);
                    rs485ModelForParal1.InverterWarningMessage        = Rs485ComServer.Operator.AnalyBitMessage(partArr6[64], Rs485Parse.InverterWarning);
                    rs485ModelForParal1.BattPower   = Convert.ToInt16(partArr6[72], 16).ToString(); // + "W";
                    rs485ModelForParal1.BattCurrent = Convert.ToInt16(partArr6[73], 16).ToString(); // + "A";
                }
            }
            return(rs485ModelForParal1);
        }
예제 #3
0
        public static DeviceStates AnalysisData(Rs485ModelForParal rs485ModelForParal)
        {
            string[] strArray1  = new string[4];
            States[] partStates = new States[5];
            int      num1       = 0;
            int      num2       = ((IEnumerable <string>)Rs485Parse.WorkState).ToList <string>().IndexOf(rs485ModelForParal.WorkState);

            Rs485Parse.CurOrited curOrited;
            switch (num2)
            {
            case 2:
            case 3:
            case 4:
            case 6:
                string[] strArray2 = strArray1;
                curOrited = Rs485Parse.CurOrited.ELtoR;
                string str1 = curOrited.ToString();
                strArray2[2] = str1;
                break;
            }
            (double dNo, int iNo, string dNoStr, string iNoStr, bool isConverted)num3 = StringParse.GetNum(rs485ModelForParal.PGrid, 1);
            if (num3.isConverted)
            {
                num1 = num3.iNo;
                double result1;
                int    num4 = double.TryParse(StringParse.GetNumFromString(rs485ModelForParal.RatedPower).ToString((IFormatProvider)CultureInfo.InvariantCulture), out result1) ? 1 : 0;
                double result2;
                bool   flag = double.TryParse(StringParse.GetNumFromString(rs485ModelForParal.InverterSoftwareVersion.Replace(".", "")).ToString((IFormatProvider)CultureInfo.InvariantCulture), out result2);
                int    num5 = (int)result1;
                int    num6 = (int)result2;
                int    num7 = flag ? 1 : 0;
                if ((num4 & num7) != 0 && num6 > 20000 && (num5 == 20000 || num5 == 3000) && (num2 == 3 || num2 == 4 || num2 == 6))
                {
                    string[] strArray3 = strArray1;
                    curOrited = Rs485Parse.CurOrited.NTtoB;
                    string str2 = curOrited.ToString();
                    strArray3[1] = str2;
                }
                else if (num2 == 6)
                {
                    string[] strArray3 = strArray1;
                    curOrited = Rs485Parse.CurOrited.NTtoB;
                    string str2 = curOrited.ToString();
                    strArray3[1] = str2;
                }
                else
                {
                    if (num1 > 0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = Rs485Parse.CurOrited.NBtoT;
                        string str2 = curOrited.ToString();
                        strArray3[1] = str2;
                    }
                    if (num1 < 0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = Rs485Parse.CurOrited.NTtoB;
                        string str2 = curOrited.ToString();
                        strArray3[1] = str2;
                    }
                }
            }
            double result;

            if (double.TryParse(StringParse.GetNumFromString(rs485ModelForParal.BattCurrent).ToString((IFormatProvider)CultureInfo.InvariantCulture), out result))
            {
                if (num2 == 6)
                {
                    string[] strArray3 = strArray1;
                    curOrited = Rs485Parse.CurOrited.SBtoT;
                    string str2 = curOrited.ToString();
                    strArray3[3] = str2;
                }
                else
                {
                    if (result > 0.0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = Rs485Parse.CurOrited.SBtoT;
                        string str2 = curOrited.ToString();
                        strArray3[3] = str2;
                    }
                    if (result < 0.0)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = Rs485Parse.CurOrited.STtoB;
                        string str2 = curOrited.ToString();
                        strArray3[3] = str2;
                    }
                    if (num1 == 0 && Math.Abs(result) < 0.1)
                    {
                        string[] strArray3 = strArray1;
                        curOrited = Rs485Parse.CurOrited.SBtoT;
                        string str2 = curOrited.ToString();
                        strArray3[3] = str2;
                    }
                }
            }
            if (((IEnumerable <string>)Rs485Parse.ChargerWorkstate).ToList <string>().IndexOf(rs485ModelForParal.ChargerWorkstate) == 2)
            {
                string[] strArray3 = strArray1;
                curOrited = Rs485Parse.CurOrited.WLtoR;
                string str2 = curOrited.ToString();
                strArray3[0] = str2;
            }
            double?soc = new double?(100.0);

            string[] curOrient = strArray1;
            return(new DeviceStates(partStates, soc, curOrient));
        }