private ApiOpcParameter GetCommonParameter(OpcHelper.TagNames tagName) { var currentTaskIdParameter = CommonOpcParametersReader.GetCommonOpcParameterByName(OpcHelper.GetTagName(tagName)); return(currentTaskIdParameter); }
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); }
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); }