Код:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
EFDbContext f = new EFDbContext();
try
{
serialPort1.Open();
}
catch { }
var mbus = ModbusSerialMaster.CreateRtu(serialPort1);
PLC p = new PLC();
for (int i = 1; i < 8; i++)
try
{
p.Addres = i;
p.Date = DateTime.UtcNow;
try
{
mbus.ReadHoldingRegisters((byte)p.Addres, 1, 1).ToString();
}
catch { break; }
p.Tnv = mbus.ReadHoldingRegisters((byte)p.Addres, 24, 1)[0].ToString();
p.T1 = mbus.ReadHoldingRegisters((byte)p.Addres, 28, 1)[0].ToString();
p.Tgv = mbus.ReadHoldingRegisters((byte)p.Addres, 30, 1)[0].ToString();
p.OT_r = mbus.ReadHoldingRegisters((byte)p.Addres, 32, 1)[0].ToString();
p.GV_r = mbus.ReadHoldingRegisters((byte)p.Addres, 34, 1)[0].ToString();
p.Ts = mbus.ReadHoldingRegisters((byte)p.Addres, 86, 1)[0].ToString();
p.MaxTime = mbus.ReadHoldingRegisters((byte)p.Addres, 334, 1)[0].ToString();
p.Err_Code = mbus.ReadHoldingRegisters((byte)p.Addres, 333, 1)[0].ToString();
p.OT_percent = mbus.ReadHoldingRegisters((byte)p.Addres, 88, 1)[0].ToString();
p.VtempUst = mbus.ReadHoldingRegisters((byte)p.Addres, 82, 1)[0].ToString();
p.LimCloseOT = mbus.ReadHoldingRegisters((byte)p.Addres, 90, 1)[0].ToString();
p.LimOpenOT = mbus.ReadHoldingRegisters((byte)p.Addres, 92, 1)[0].ToString();
p.OTmission = mbus.ReadHoldingRegisters((byte)p.Addres, 94, 1)[0].ToString();
p.LimObrTemp = mbus.ReadHoldingRegisters((byte)p.Addres, 96, 1)[0].ToString();
p.TimeEn = mbus.ReadHoldingRegisters((byte)p.Addres, 335, 1)[0].ToString();
p.Gvenable = mbus.ReadHoldingRegisters((byte)p.Addres, 336, 1)[0].ToString();
p.GV_percent = mbus.ReadHoldingRegisters((byte)p.Addres, 98, 1)[0].ToString();
p.LimCloseGV = mbus.ReadHoldingRegisters((byte)p.Addres, 100, 1)[0].ToString();
p.LimOpenGV = mbus.ReadHoldingRegisters((byte)p.Addres, 102, 1)[0].ToString();
p.GVtempUst = mbus.ReadHoldingRegisters((byte)p.Addres, 104, 1)[0].ToString();
p.WinterTempUst = mbus.ReadHoldingRegisters((byte)p.Addres, 106, 1)[0].ToString();
p.SummerTempUst = mbus.ReadHoldingRegisters((byte)p.Addres, 108, 1)[0].ToString();
p.Seazon = mbus.ReadHoldingRegisters((byte)p.Addres, 337, 1)[0].ToString();
f.Plcs.Add(p);
f.SaveChanges();
MessageBox.Show("ПЛК №"+i+" успешно опрошен");
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
}
serialPort1.Close();
}