Ejemplo n.º 1
0
        public bool UpdateBatchReport(LiveRelevantDataDO liveRelevantData)
        {
            bool success = false;

            using (DataContext context = new DataContext())
            {
                //Returns the latest Batch report saved in the database.
                BatchDO batchReport = context.BatchReports.Find(liveRelevantData.BatchID);
                //Update batchReport data
                batchReport.ProducedProducts  = liveRelevantData.ProducedProducts;
                batchReport.DefectProducts    = liveRelevantData.DefectProducts;
                batchReport.ProductionEndTime = System.DateTime.Now;

                //Create a new entry of environmental log
                EnvironmentalLogDO environmentalLog = new EnvironmentalLogDO
                {
                    BatchReportID = batchReport.BatchReportID,
                    Temperature   = liveRelevantData.Temperature,
                    Vibration     = liveRelevantData.Vibration,
                    Humidity      = liveRelevantData.Humidity,
                    Time          = System.DateTime.Now
                };
                //Save environmental log entry
                batchReport.EnvironmentalLogs.Add(environmentalLog);

                StateLogDO stateLog = context.StateLogs.FirstOrDefault(s => s.BatchReportID == batchReport.BatchReportID);
                stateLog.SetTimeInStates(liveRelevantData.StateDictionary);

                context.SaveChanges();

                success = true;
            }
            return(success);
        }
Ejemplo n.º 2
0
        private void UpdateLiveRelevantData(object sender, EventArgs e)
        {
            try
            {
                LiveRelevantDataDO data = logicFacade.UpdateData();
                temperatureLabel.Text       = data.Temperature.ToString();
                humidityLabel.Text          = data.Humidity.ToString();
                vibrationLabel.Text         = data.Vibration.ToString();
                batchIDLabel.Text           = data.BatchID.ToString();
                productsPerMinuteLabel.Text = data.ActualMachineSpeed.ToString();
                batchSizeLabel.Text         = data.BatchSize.ToString();
                producedLabel.Text          = data.ProducedProducts.ToString();
                defectLabel.Text            = data.DefectProducts.ToString();
                acceptableLabel.Text        = data.AcceptableProducts.ToString();
                var state = (MachineState)data.CurrentState;
                currentStateLabel.Text               = state.ToString();
                verticalProgressBarBarley.Value      = (int)data.Barley;
                verticalProgressBarHops.Value        = (int)data.Hops;
                verticalProgressBarMalt.Value        = (int)data.Malt;
                verticalProgressBarWheat.Value       = (int)data.Wheat;
                verticalProgressBarYeast.Value       = (int)data.Yeast;
                verticalProgressBarMaintenance.Value = (int)data.MaintainenceMeter;

                if (currentStateLabel.Text.Equals("Execute"))
                {
                    BatchProgressBar.Value = ((Int32)data.ProducedProducts * 100) / (Int32)data.BatchSize;
                }
                else if (currentStateLabel.Text.Equals("Complete"))
                {
                    BatchProgressBar.Value = 100;
                }
            }
            catch (Exception ex)
            {
                if (ex is InvalidOperationException || ex is Opc.UaFx.OpcException)
                {
                    if (!logicFacade.CheckMachineConnection())
                    {
                        disconnectedLabel.Visible  = true;
                        disconnectedLabel2.Visible = true;
                        tabPage.Enabled            = false;

                        if (logicFacade.ConnectToMachine(""))
                        {
                            disconnectedLabel.Visible  = false;
                            disconnectedLabel2.Visible = false;
                            tabPage.Enabled            = true;
                        }
                    }
                    else
                    {
                        Debug.WriteLine(ex.StackTrace);
                    }
                }
                else
                {
                    throw;
                }
            }
        }
Ejemplo n.º 3
0
        public LiveRelevantDataDO GetUpdateData()
        {
            LiveRelevantDataDO liveRelevantData = new LiveRelevantDataDO(
                machineReadData.ReadTemperature(accessPoint),
                machineReadData.ReadHumidity(accessPoint),
                machineReadData.ReadVibration(accessPoint),
                machineReadData.ReadActualMachineSpeed(accessPoint),
                machineReadData.ReadProducedProducts(accessPoint),
                machineReadData.ReadDefectProducts(accessPoint),
                machineReadData.ReadBarleyAmount(accessPoint),
                machineReadData.ReadHopsAmount(accessPoint),
                machineReadData.ReadMaltAmount(accessPoint),
                machineReadData.ReadWheatAmount(accessPoint),
                machineReadData.ReadYeastAmount(accessPoint),
                machineReadData.ReadMaintenanceCounter(accessPoint),
                machineReadData.ReadCurrentState(accessPoint)
                );

            return(liveRelevantData);
        }
Ejemplo n.º 4
0
        public LiveRelevantDataDO UpdateData()
        {
            LiveRelevantDataDO liveRelevantData = persistenceFacade.GetUpdateData();

            currentState                        = (MachineState)liveRelevantData.CurrentState;
            liveRelevantData.BatchID            = batchManager.CurrentBatch == null ? (ushort)0 : batchManager.CurrentBatch.BatchReportID;
            liveRelevantData.BatchSize          = batchManager.CurrentBatch == null ? (ushort)0 : batchManager.CurrentBatch.BatchSize;
            liveRelevantData.AcceptableProducts = (liveRelevantData.ProducedProducts - liveRelevantData.DefectProducts);
            if (productionRunning)
            {
                Task task = Task.Run(() =>
                {
                    TimeSpan timeSpan = DateTime.Now.Subtract(startTime);
                    liveRelevantData.StateDictionary[(int)currentState] += timeSpan;
                    startTime = DateTime.Now;

                    persistenceFacade.UpdateBatchReport(liveRelevantData);
                });
            }
            return(liveRelevantData);
        }
Ejemplo n.º 5
0
 public bool UpdateBatchReport(LiveRelevantDataDO liveRelevantData)
 {
     return(databaseManager.UpdateBatchReport(liveRelevantData));
 }