using Modbus.Device; using Sunny.UI; using System; using System.Threading.Tasks; using System.Windows.Forms; using 口罩泄露定制款; namespace 口罩泄露测试仪控制系统_定制款.窗体 { public partial class frm_ExperSetting : UIForm { ModbusMaster _master; ExperData experData = new ExperData(); Function fc; public frm_ExperSetting(ModbusMaster master) { InitializeComponent(); _master = master; if (_master != null) { Task.Run(() => { Read_PLCdata(); }); fc=new Function(_master); } } #region DataChange dc = new DataChange(); ushort[] data_D1310_D1330 = new ushort[21]; ushort[] data_D1360_D1380 = new ushort[21]; ushort[] data_D1410_D1430 = new ushort[21]; ushort[] data_D1460_D1480 = new ushort[21]; ushort[] data_D1510_D1530 = new ushort[21]; ushort[] data_D1560_D1580 = new ushort[21]; bool[] data_M6_M7 = new bool[2]; bool[] data_M14_M24 = new bool[11]; float 室内CO2基数; float 室内CO2系数; float 口罩CO2基数; float 口罩CO2系数; float 室内O2基数; float 室内O2系数; float 室内温度基数; float 室内温度系数; float 室内湿度基数; float 室内湿度系数; void Read_PLCdata() { while (true) { if (this.IsDisposed || _master == null) break; try { data_D1310_D1330 = _master.ReadHoldingRegisters(1, 1310, 21); data_D1360_D1380 = _master.ReadHoldingRegisters(1, 1360, 21); data_D1410_D1430 = _master.ReadHoldingRegisters(1, 1410, 21); data_D1460_D1480 = _master.ReadHoldingRegisters(1, 1460, 21); data_D1510_D1530 = _master.ReadHoldingRegisters(1, 1510, 21); data_D1560_D1580 = _master.ReadHoldingRegisters(1, 1560, 21); data_M14_M24 = _master.ReadInputs(1, 14, 12); data_M6_M7 = _master.ReadInputs(1, 6, 2); 口罩CO2基数 = dc.UshortToFloat(data_D1360_D1380[15], data_D1360_D1380[14]); 口罩CO2系数 = dc.UshortToFloat(data_D1360_D1380[19], data_D1360_D1380[18]); 室内CO2基数 = dc.UshortToFloat(data_D1410_D1430[15], data_D1410_D1430[14]); 室内CO2系数 = dc.UshortToFloat(data_D1410_D1430[19], data_D1410_D1430[18]); 室内O2基数 = dc.UshortToFloat(data_D1460_D1480[15], data_D1460_D1480[14]); 室内O2系数 = dc.UshortToFloat(data_D1460_D1480[19], data_D1460_D1480[18]); 室内温度基数 = dc.UshortToFloat(data_D1510_D1530[15], data_D1510_D1530[14]); 室内温度系数 = dc.UshortToFloat(data_D1510_D1530[19], data_D1510_D1530[18]); 室内湿度基数 = dc.UshortToFloat(data_D1560_D1580[15], data_D1560_D1580[14]); 室内湿度系数 = dc.UshortToFloat(data_D1560_D1580[19], data_D1560_D1580[18]); } catch { break; // MessageBox.Show(ex.Message, "读取失败"); } } } #endregion private void timer_UpdateUI_Tick(object sender, EventArgs e) { lb_室内CO2.Text = experData.CO2NongDu_Indoor.ToString("F2") + "%"; lb_室外CO2.Text = experData.Mask_CO2NongDu.ToString("F2") + "%"; lb_O2浓度.Text = experData.O2NongDu.ToString("F2") + "%"; lb_湿度.Text = experData.HuanJingShiDu.ToString("F2") + "%RH"; lb_温度.Text = experData.HuanJingWenDu.ToString("F2") + "℃"; lb_室内TSI.Text = experData.InDoor_TSINongDu.ToString("F3") + "mg/m³"; lb_室外TSI.Text = experData.Mask_TSINongDu.ToString("F3") + "mg/m³"; tb_室内CO2.Text= experData.CO2NongDu_Indoor.ToString("F2"); tb_室内CO2基数.Text= 室内CO2基数.ToString("F2"); tb_室内CO2系数.Text= 室内CO2系数.ToString("F2"); tb_口罩CO2.Text= experData.Mask_CO2NongDu.ToString("F2"); tb_口罩CO2基数.Text= 口罩CO2基数.ToString("F2"); tb_口罩CO2系数.Text= 口罩CO2系数.ToString("F2"); tb_室内02.Text= experData.O2NongDu.ToString("F2"); tb_室内02基数.Text= 室内O2基数.ToString("F2"); tb_室内02系数.Text= 室内O2系数.ToString("F2"); tb_室内温度.Text = experData.HuanJingShiDu.ToString("F2"); tb_室内温度基数.Text = 室内温度基数.ToString("F2"); tb_室内温度系数.Text = 室内温度系数.ToString("F2"); tb_室内湿度.Text= experData.HuanJingShiDu.ToString("F2"); tb_室内湿度基数.Text= 室内湿度基数.ToString("F2"); tb_室内湿度系数.Text= 室内湿度系数.ToString("F2"); if (data_M14_M24[2])//M16 { lb_气溶胶进气阀.Text = " 气溶胶进气阀:开"; lb_气溶胶进气阀.ForeColor = System.Drawing.Color.Red; } else { lb_气溶胶进气阀.Text = " 气溶胶进气阀:关"; lb_气溶胶进气阀.ForeColor = System.Drawing.Color.Black; } if (data_M6_M7[0]) { lb_换风系统.Text = " 换风系统:开"; lb_换风系统.ForeColor = System.Drawing.Color.Red; } else { lb_换风系统.Text = " 换风系统:关"; lb_换风系统.ForeColor = System.Drawing.Color.Black; } if (data_M14_M24[0]) { lb_室内取样阀.Text = " 室内取样阀:开"; lb_室内取样阀.ForeColor = System.Drawing.Color.Red; } else { lb_室内取样阀.Text = " 室内取样阀:关"; lb_室内取样阀.ForeColor = System.Drawing.Color.Black; } if (data_M14_M24[1]) { lb_口罩取样阀.Text = " 口罩取样阀:开"; lb_口罩取样阀.ForeColor = System.Drawing.Color.Red; } else { lb_口罩取样阀.Text = " 口罩取样阀:关"; lb_口罩取样阀.ForeColor = System.Drawing.Color.Black; } if (data_M14_M24[11]) { lb_口罩取样泵.Text = " 口罩取样泵:开"; lb_口罩取样泵.ForeColor = System.Drawing.Color.Red; } else { lb_口罩取样泵.Text = " 口罩取样泵:关"; lb_口罩取样泵.ForeColor = System.Drawing.Color.Black; } } private void Valve_气溶胶进气阀_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.切换型, 16); } private void Motor_换风系统_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.切换型, 6); } private void Valve_室内取样阀_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.切换型, 14); } private void Valve_口罩取样阀_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.切换型, 15); } private void Motor_口罩取样泵_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.切换型, 25); } private void frm_ExperSetting_FormClosing(object sender, FormClosingEventArgs e) { this.Dispose(); } private void tb_室内CO2基数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内CO2基数.Text,1424,Function.DataType.浮点型); } private void tb_室内CO2系数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内CO2系数.Text, 1428, Function.DataType.浮点型); } private void tb_口罩CO2基数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_口罩CO2基数.Text, 1374, Function.DataType.浮点型); } private void tb_口罩CO2系数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_口罩CO2系数.Text, 1378, Function.DataType.浮点型); } private void tb_室内02基数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内02基数.Text, 1474, Function.DataType.浮点型); } private void tb_室内02系数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内02系数.Text, 1478, Function.DataType.浮点型); } private void tb_室内温度基数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内温度基数.Text, 1524, Function.DataType.浮点型); } private void tb_室内温度系数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内温度系数.Text, 1528, Function.DataType.浮点型); } private void tb_室内湿度基数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内湿度基数.Text, 1574, Function.DataType.浮点型); } private void tb_室内湿度系数_ButtonClick(object sender, EventArgs e) { fc.WriteToPLC(tb_室内湿度系数.Text, 1578, Function.DataType.浮点型); } private void btn_室内CO2_清零_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.复归型,122); } private void btn_口罩CO2清零_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.复归型, 121); } private void btn_室内02清零_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.复归型, 123); } private void btn_室内温度清零_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.复归型, 124); } private void btn_室内湿度清零_Click(object sender, EventArgs e) { fc.BtnClickFunction(Function.ButtonType.复归型, 125); } } }