private void PublishScadaData(Topic topic, SCADAMessage scadaMessage) { SCADAPublication scadaPublication = new SCADAPublication(topic, scadaMessage); using (PublisherProxy publisherProxy = proxyFactory.CreateProxy <PublisherProxy, IPublisher>(EndpointNames.PublisherEndpoint)) { if (publisherProxy == null) { string errMsg = "PublisherProxy is null."; Logger.LogWarn(errMsg); throw new NullReferenceException(errMsg); } publisherProxy.Publish(scadaPublication, "SCADA_PUBLISHER"); Logger.LogInfo($"SCADA service published data from topic: {scadaPublication.Topic}"); StringBuilder sb = new StringBuilder(); sb.AppendLine("MeasurementCache content: "); foreach (long gid in MeasurementsCache.Keys) { IModbusData data = MeasurementsCache[gid]; if (data is AnalogModbusData analogModbusData) { sb.AppendLine($"Analog data line: [gid] 0x{gid:X16}, [value] {analogModbusData.Value}, [alarm] {analogModbusData.Alarm}"); } else if (data is DiscreteModbusData discreteModbusData) { sb.AppendLine($"Discrete data line: [gid] 0x{gid:X16}, [value] {discreteModbusData.Value}, [alarm] {discreteModbusData.Alarm}"); } else { sb.AppendLine($"UNKNOWN data type: {data.GetType()}"); } } Logger.LogDebug(sb.ToString()); } }
public SCADAPublication(Topic topic, SCADAMessage message) : base(topic, message) { }