private static void ImportModbusGeneric() { using (FacilityContext context = new FacilityContext()) { GenericMonitorBox monitorBox = new GenericMonitorBox(); monitorBox.IpAddress = "172.21.100.30"; monitorBox.Port = 502; monitorBox.Identifier = "GasBay"; monitorBox.SlaveAddress = 0; monitorBox.Status = "Okay"; monitorBox.AnalogChannelCount = 16; monitorBox.DigitalInputChannelCount = 39; monitorBox.DigitalOutputChannelCount = 10; monitorBox.ModbusComAddr = 39; monitorBox.SoftwareMaintAddr = 40; monitorBox.WarningAddr = 41; monitorBox.AlarmAddr = 42; monitorBox.ReadInterval = 10; monitorBox.SaveInterval = 30; context.ModbusDevices.Add(monitorBox); context.SaveChanges(); if (ImportModbusSettings.ImportSensorType(monitorBox, context)) { Console.WriteLine("Success: Sensor Types Imported"); } else { Console.WriteLine("Error: Sensor Import Failed"); } if (ImportModbusSettings.ImportAnalog(monitorBox, context)) { Console.WriteLine("Success: Analog Channels Imported"); } else { Console.WriteLine("Error: Analog Import Failed"); } if (ImportModbusSettings.ImportDigital(monitorBox, context)) { Console.WriteLine("Success: Digital Channels Imported"); } else { Console.WriteLine("Error: Digital Import Failed"); } if (ImportModbusSettings.ImportOutput(monitorBox, context)) { Console.WriteLine("Success: Output Channels Imported"); } else { Console.WriteLine("Error: Output Import Failed"); } Console.WriteLine(); Console.WriteLine("Done, Press any key to exit"); Console.ReadKey(); } }
public static bool ImportDigital(GenericMonitorBox box, FacilityContext context) { if (File.Exists(digitalFile)) { try { List <DigitalInputChannel> channels = new List <DigitalInputChannel>(); var lines = File.ReadAllLines(digitalFile); foreach (var line in lines) { var row = line.Split('\t'); bool connected = (row[4] == "TRUE") ? true : false; LogicType type = (row[3] == "HIGH") ? LogicType.HIGH : LogicType.LOW; DigitalInputChannel channel = new DigitalInputChannel(row[0], Convert.ToInt32(row[1]), Convert.ToInt32(row[2]), connected, row[5], type); channel.AlarmAction = RegisterConverters.GetAction(row[7]); channel.Bypass = (row[6] == "TRUE") ? false : true; channel.Device = box; box.Registers.Add(channel); context.Registers.Add(channel); } context.SaveChanges(); return(true); } catch { return(false); } } else { return(false); } }
public static bool ImportSensorType(GenericMonitorBox box, FacilityContext context) { if (File.Exists(sensorFile)) { try { var lines = File.ReadAllLines(sensorFile); foreach (var line in lines) { var row = line.Split('\t'); SensorType sensor = new SensorType(); sensor.Name = row[0]; sensor.ZeroPoint = Convert.ToDouble(row[1]); sensor.MaxPoint = Convert.ToDouble(row[2]); sensor.Units = row[3]; context.Categories.Add(sensor); } context.SaveChanges(); return(true); } catch { return(false); } } else { return(false); } }
public async Task <bool> AddReadingAsync(GenericMonitorBox monitorBox) { try { using var context = new FacilityContext(); var device = await context.ModbusDevices.FindAsync(monitorBox.Id); if (device != null) { monitorBox.LastRead.GenericMonitorBoxId = monitorBox.Id; context.GenericBoxAlerts.Add(monitorBox.LastRead.GenericMonitorBoxAlert); context.GenericBoxReadings.Add(monitorBox.LastRead); context.Entry <ModbusDevice>(device).State = EntityState.Modified; await context.SaveChangesAsync(); return(true); } else { return(false); } } catch (Exception e) { StringBuilder builder = new StringBuilder(); builder.AppendFormat("{0} Save Failed", monitorBox.Identifier) .AppendFormat("Exception: {0}", e.Message).AppendLine(); if (e.InnerException != null) { builder.AppendFormat("Inner Exception: {0}", e.InnerException.Message).AppendLine(); } return(false); } }
public async Task <bool> AddReadingAsync(GenericMonitorBox monitorBox) { try { using var context = new FacilityContext(); var device = await context.ModbusDevices.FindAsync(monitorBox.Id); if (device != null) { monitorBox.LastRead.GenericMonitorBoxId = monitorBox.Id; context.GenericBoxAlerts.Add(monitorBox.LastRead.GenericMonitorBoxAlert); context.GenericBoxReadings.Add(monitorBox.LastRead); context.Entry <ModbusDevice>(device).State = EntityState.Modified; await context.SaveChangesAsync(); this._logger.LogInformation("{0} Save Succeeded, In-Memory Read: {1}", monitorBox.Identifier, monitorBox.BoxReadings.Count); return(true); } else { this._logger.LogError("{0} Device Not Found", monitorBox.Identifier); return(false); } } catch (Exception e) { StringBuilder builder = new StringBuilder(); builder.AppendFormat("{0} Save Failed", monitorBox.Identifier) .AppendFormat("Exception: {0}", e.Message).AppendLine(); if (e.InnerException != null) { builder.AppendFormat("Inner Exception: {0}", e.InnerException.Message).AppendLine(); } this._logger.LogError(builder.ToString()); return(false); } }
public static bool ImportAnalog(GenericMonitorBox box, FacilityContext context) { if (File.Exists(analogFile)) { try { List <AnalogChannel> channels = new List <AnalogChannel>(); var lines = File.ReadAllLines(analogFile); foreach (var line in lines) { var row = line.Split('\t'); bool connected = (row[3] == "TRUE") ? true : false; AnalogChannel channel = new AnalogChannel(row[0], Convert.ToInt32(row[1]), Convert.ToInt32(row[2]), connected, row[4]); channel.Slope = Convert.ToDouble(row[5]); channel.Offset = Convert.ToDouble(row[6]); channel.Resistance = Convert.ToDouble(row[7]); channel.ZeroValue = Convert.ToDouble(row[8]); channel.MaxValue = Convert.ToDouble(row[9]); channel.Alarm1SetPoint = Convert.ToDouble(row[10]); channel.Alarm1Enabled = (row[11] == "TRUE") ? true : false; channel.Alarm1Action = RegisterConverters.GetAction(row[12]); channel.Alarm2SetPoint = Convert.ToDouble(row[13]); channel.Alarm2Enabled = (row[14] == "TRUE") ? true : false; channel.Alarm2Action = RegisterConverters.GetAction(row[15]); channel.Alarm3SetPoint = Convert.ToDouble(row[16]); channel.Alarm3Enabled = (row[17] == "TRUE") ? true : false; channel.Alarm3Action = RegisterConverters.GetAction(row[18]); string sname = row[19]; channel.ValueDivisor = Convert.ToDouble(row[20]); var sensor = context.Categories.OfType <SensorType>().Include(e => e.Registers).FirstOrDefault(e => e.Name == sname); if (sensor != null) { channel.SensorType = sensor; } channel.Device = box; box.Registers.Add(channel); context.Registers.Add(channel); } context.SaveChanges(); return(true); } catch { return(false); } } else { return(false); } }