예제 #1
0
        private ApiOpcParameter GetCommonParameter(OpcHelper.TagNames tagName)
        {
            var currentTaskIdParameter = CommonOpcParametersReader.GetCommonOpcParameterByName(OpcHelper.GetTagName(tagName));

            return(currentTaskIdParameter);
        }
예제 #2
0
        private decimal GetMixerVolume()
        {
            var mixerVolumeParam = CommonOpcParametersReader.GetCommonOpcParameterByName(OpcHelper.GetTagName(OpcHelper.TagNames.MixerVolume));

            if (mixerVolumeParam != null)
            {
                var mixerVolumeValue = OpcHelper.ReadTag(NewOpcServer.OpcList.Rbu, mixerVolumeParam.Tag);
                var mixerVolume      = Convert.ToDecimal(OpcHelper.GetParameterValue(mixerVolumeValue, mixerVolumeParam));
                if (mixerVolume != 0)
                {
                    return(mixerVolume);
                }

                Logger.Error("Объем миксера не может быть равен 0.");
                MessageBox.Show("Объем миксера не может быть равен 0.");
                return((decimal)0.2);
            }

            Logger.Error("Остутствует название тега - MixerVolume.");
            MessageBox.Show("Остутствует название тега - MixerVolume.");
            return((decimal)0.2);
        }
예제 #3
0
        private Dictionary <ApiOpcParameter, string> GetValues(ApiTask task, ApiRecipe recipe, Dictionary <long, ApiRecipeMaterial> containers)
        {
            var result   = new Dictionary <ApiOpcParameter, string>();
            var isOk     = true;
            var batchers = BatchersReader.ListBatchers();

            foreach (var batcher in batchers)
            {
                foreach (var dosingSource in batcher.DosingSources)
                {
                    containers.TryGetValue(dosingSource.Container.Id, out var recipeMaterial);
                    if (recipeMaterial != null)
                    {
                        var materialSetParameter = dosingSource.DosingSourceOpcParameters.FirstOrDefault(x =>
                                                                                                         x.Name == OpcHelper.GetTagName(OpcHelper.TagNames.MaterialSet));
                        if (materialSetParameter != null)
                        {
                            var volume = Math.Round(recipeMaterial.Volume * task.BatchVolume, 1);
                            result.Add(materialSetParameter, volume.ToString(CultureInfo.InvariantCulture));
                        }
                        else
                        {
                            isOk = false;
                            Logger.Error($"У дозатора {batcher.Name} - источник дозирования {dosingSource.Name} отсутствует параметр - MaterialSet.");
                        }
                        var materialIdParameter = dosingSource.DosingSourceOpcParameters.FirstOrDefault(x =>
                                                                                                        x.Name == OpcHelper.GetTagName(OpcHelper.TagNames.MaterialId));
                        if (materialIdParameter != null)
                        {
                            result.Add(materialIdParameter, recipeMaterial.Material.Id.ToString(CultureInfo.InvariantCulture));
                        }
                        else
                        {
                            isOk = false;
                            Logger.Error($"У дозатора {batcher.Name} - источник дозирования {dosingSource.Name} отсутствует параметр - MaterialId.");
                        }
                        var containerIdParameter = dosingSource.DosingSourceOpcParameters.FirstOrDefault(x =>
                                                                                                         x.Name == OpcHelper.GetTagName(OpcHelper.TagNames.ContainerId));
                        if (containerIdParameter != null)
                        {
                            result.Add(containerIdParameter, dosingSource.Container.Id.ToString(CultureInfo.InvariantCulture));
                        }
                        else
                        {
                            isOk = false;
                            Logger.Error($"У дозатора {batcher.Name} - источник дозирования {dosingSource.Name} отсутствует параметр - ContainerId.");
                        }
                    }
                }
            }
            var batchesAmount = GetCommonParameter(OpcHelper.TagNames.BatchesAmount);

            if (batchesAmount != null)
            {
                result.Add(batchesAmount, task.BatchesAmount.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                isOk = false;
                Logger.Error("Отсутствует параметр - BatchesAmount.");
            }
            var mixingTime = GetCommonParameter(OpcHelper.TagNames.MixingTime);

            if (mixingTime != null)
            {
                result.Add(mixingTime, recipe.MixingTime.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                isOk = false;
                Logger.Error("Отсутствует параметр - MixingTime.");
            }
            var percentOpenGate = GetCommonParameter(OpcHelper.TagNames.PercentOpenGate);

            if (percentOpenGate != null)
            {
                result.Add(percentOpenGate, recipe.PercentOpenGate.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                isOk = false;
                Logger.Error("Отсутствует параметр - PercentOpenGate.");
            }
            var timeFullUnload = GetCommonParameter(OpcHelper.TagNames.TimeFullUnload);

            if (timeFullUnload != null)
            {
                result.Add(timeFullUnload, recipe.TimeFullUnload.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                isOk = false;
                Logger.Error("Отсутствует параметр - TimeFullUnload.");
            }
            var timePartialUnload = GetCommonParameter(OpcHelper.TagNames.TimePartialUnload);

            if (timePartialUnload != null)
            {
                result.Add(timePartialUnload, recipe.TimePartialUnload.ToString(CultureInfo.InvariantCulture));
            }
            else
            {
                isOk = false;
                Logger.Error("Отсутствует параметр - TimePartialUnload.");
            }
            return(isOk ? result : null);
        }