Beispiel #1
0
 private static void DumpSolarMax(MaxComm.SolarMaxData data)
 {
     System.Console.Out.WriteLine("Power: {0} W, {1} %; {2}°C", data.PowerAC, data.PowerRelative, data.ConverterTemperature);
     System.Console.Out.WriteLine("AC: {0} V, {1} A", data.VoltageAC, data.CurrentAC);
     System.Console.Out.WriteLine("DC: {0} V, {1} A", data.VoltageDC, data.CurrentDC);
     System.Console.Out.WriteLine("Energy: {0} kWh/day, {1} kWh/month, {2} kWh/year, {3} h, total {4} kWh", data.EnergyDay, data.EnergyMonth, data.EnergyYear, data.TotalTime, data.TotalEnergy);
 }
Beispiel #2
0
 public SolarMaxSample(MaxComm.SolarMaxData data)
 {
     this.dailyProduction = data.EnergyDay;
     this.voltageDC       = data.VoltageDC;
     this.currentDC       = data.CurrentDC;
     this.powerAC         = data.PowerAC;
     this.voltageAC       = data.VoltageAC;
     this.currentAC       = data.CurrentAC;
     this.temperature     = data.ConverterTemperature;
     this.period          = data.LinePeriod;
 }
Beispiel #3
0
        private static void DumpSolarMax()
        {
            MaxComm.Port port = new MaxComm.Port("COM3");

            MaxComm.SolarMaxData solarMaxData1 = new MaxComm.SolarMaxData(1, port.ExchangeData(1, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP"));
            MaxComm.SolarMaxData solarMaxData2 = new MaxComm.SolarMaxData(2, port.ExchangeData(2, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP"));

            System.Console.Out.WriteLine("SolarMax #1:");
            Program.DumpSolarMax(solarMaxData1);
            System.Console.Out.WriteLine("SolarMax #2:");
            Program.DumpSolarMax(solarMaxData2);
        }
Beispiel #4
0
        private void Publish(MaxComm.SolarMaxData data)
        {
            switch (data.Id)
            {
            case 1:
                this.solarMaxData1 = data.TotalEnergy <= 0 ? null : data;
                break;

            case 2:
                this.solarMaxData2 = data.TotalEnergy <= 0 ? null : data;
                break;
            }
        }
Beispiel #5
0
        public void Acquire()
        {
            try
            {
                MaxComm.SolarMaxData solarMaxData1 = new MaxComm.SolarMaxData(1, this.port.ExchangeData(1, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP"));
                MaxComm.SolarMaxData solarMaxData2 = new MaxComm.SolarMaxData(2, this.port.ExchangeData(2, 100, "PAC;PRL;TKK;KHR;KYR;KMT;KDY;KT0;UDC;IDC;UL1;IL1;TNP"));

                this.Publish(solarMaxData1);
                this.Publish(solarMaxData2);
            }
            catch
            {
                this.solarMaxData1 = null;
                this.solarMaxData2 = null;
            }
        }
Beispiel #6
0
        public void RunThread()
        {
            try
            {
                System.Threading.Thread.Sleep(Settings.Default.PollInterval * 1000);

                while (true)
                {
                    try
                    {
                        MaxComm.SolarMaxData   solarMaxData1 = this.maxComm.SolarMaxData1;
                        MaxComm.SolarMaxData   solarMaxData2 = this.maxComm.SolarMaxData2;
                        ResolVBus.DeltaSolData deltaSolData  = this.resol.DeltaSolData;

                        //	TODO: store resulting data...

                        System.Console.WriteLine(System.DateTime.Now.ToShortTimeString());

                        if (deltaSolData != null)
                        {
                            lock (this.exclusion)
                            {
                                this.deltaSolSamples.Add(new Data.DeltaSolSample(deltaSolData));

                                while (this.deltaSolSamples.Count > Settings.Default.LogSampleCount)
                                {
                                    this.deltaSolSamples.RemoveAt(0);
                                }
                            }

                            System.Console.WriteLine("DeltaSol: {0}°C, {1}°C, {2}°C, {3}%, {4}h", deltaSolData.TemperatureSensor1, deltaSolData.TemperatureSensor2, deltaSolData.TemperatureSensor3, deltaSolData.Pump, deltaSolData.TotalPumpTime);
                        }
                        else
                        {
                            lock (this.exclusion)
                            {
                                if (this.deltaSolSamples.Count > 0)
                                {
                                    this.deltaSolSamples.RemoveAt(0);
                                }
                            }
                        }

                        if (solarMaxData1 != null)
                        {
                            lock (this.exclusion)
                            {
                                this.solarMaxSamples1.Add(new Data.SolarMaxSample(solarMaxData1));

                                while (this.solarMaxSamples1.Count > Settings.Default.LogSampleCount)
                                {
                                    this.solarMaxSamples1.RemoveAt(0);
                                }
                            }

                            System.Console.WriteLine("SolarMax{0}: {1}W, DC: {2}V {3}A, AC: {4}V {5}A", solarMaxData1.Id, solarMaxData1.PowerAC, solarMaxData1.VoltageDC, solarMaxData1.CurrentDC, solarMaxData1.VoltageAC, solarMaxData1.CurrentAC);
                        }
                        else
                        {
                            lock (this.exclusion)
                            {
                                if (this.solarMaxSamples1.Count > 0)
                                {
                                    this.solarMaxSamples1.RemoveAt(0);
                                }
                            }
                        }

                        if (solarMaxData2 != null)
                        {
                            lock (this.exclusion)
                            {
                                this.solarMaxSamples2.Add(new Data.SolarMaxSample(solarMaxData2));

                                while (this.solarMaxSamples2.Count > Settings.Default.LogSampleCount)
                                {
                                    this.solarMaxSamples2.RemoveAt(0);
                                }
                            }

                            System.Console.WriteLine("SolarMax{0}: {1}W, DC: {2}V {3}A, AC: {4}V {5}A", solarMaxData2.Id, solarMaxData2.PowerAC, solarMaxData2.VoltageDC, solarMaxData2.CurrentDC, solarMaxData2.VoltageAC, solarMaxData2.CurrentAC);
                        }
                        else
                        {
                            lock (this.exclusion)
                            {
                                if (this.solarMaxSamples2.Count > 0)
                                {
                                    this.solarMaxSamples2.RemoveAt(0);
                                }
                            }
                        }
                    }
                    catch
                    {
                    }

                    System.Threading.Thread.Sleep(System.Math.Max(Settings.Default.LogInterval, 10) * 1000);
                }
            }
            catch (System.Threading.ThreadInterruptedException)
            {
            }
        }