221 lines
7.9 KiB
C#
221 lines
7.9 KiB
C#
|
|
using Modbus.Device;
|
|||
|
|
using Sunny.UI;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.ComponentModel;
|
|||
|
|
using System.Data;
|
|||
|
|
using System.Drawing;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using System.Windows.Forms;
|
|||
|
|
|
|||
|
|
namespace 口罩泄露定制款
|
|||
|
|
{
|
|||
|
|
public partial class frm_Motor : UIForm
|
|||
|
|
{
|
|||
|
|
ModbusMaster _master;
|
|||
|
|
DataChange dc = new DataChange();
|
|||
|
|
Function fc;
|
|||
|
|
public frm_Motor(ModbusMaster master)
|
|||
|
|
{
|
|||
|
|
InitializeComponent();
|
|||
|
|
_master = master;
|
|||
|
|
if (_master != null)
|
|||
|
|
{
|
|||
|
|
Task.Run(() => ReadPLCData());
|
|||
|
|
fc=new Function(_master);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#region 读取PLC数据
|
|||
|
|
ushort[] data_D410_D411 = new ushort[2];
|
|||
|
|
ushort[] data_D420_D423 = new ushort[4];
|
|||
|
|
ushort[] data_D442_D443 = new ushort[2];
|
|||
|
|
ushort[] data_D450_D451 = new ushort[2];
|
|||
|
|
ushort[] data_D460_D465 = new ushort[6];
|
|||
|
|
ushort[] data_D480_D481 = new ushort[2];
|
|||
|
|
ushort[] data_D488_D489 = new ushort[2];
|
|||
|
|
ushort[] data_D502_D507 = new ushort[6];
|
|||
|
|
|
|||
|
|
bool[] data_M90_M92 = new bool[3];
|
|||
|
|
bool[] data_M60_M62 = new bool[3];
|
|||
|
|
|
|||
|
|
float _huxipinglv;
|
|||
|
|
float _huxiliang;
|
|||
|
|
float _huxibeishu;
|
|||
|
|
float _hushoudongsudu;
|
|||
|
|
float _xishoudongsudu;
|
|||
|
|
float _huweizhi;
|
|||
|
|
float _xiweizhi;
|
|||
|
|
float _huliang;
|
|||
|
|
float _xiliang;
|
|||
|
|
|
|||
|
|
int _huxishijian;
|
|||
|
|
int _ceshifen;
|
|||
|
|
int _ceshimiao;
|
|||
|
|
void ReadPLCData()
|
|||
|
|
{
|
|||
|
|
while (true)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (this.IsDisposed || _master == null)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
data_D410_D411 = _master.ReadHoldingRegisters(1, 410, 2);
|
|||
|
|
data_D420_D423 = _master.ReadHoldingRegisters(1, 420, 4);
|
|||
|
|
data_D442_D443 = _master.ReadHoldingRegisters(1, 442, 2);
|
|||
|
|
data_D450_D451 = _master.ReadHoldingRegisters(1, 450, 2);
|
|||
|
|
data_D460_D465 = _master.ReadHoldingRegisters(1, 460, 6);
|
|||
|
|
data_D480_D481 = _master.ReadHoldingRegisters(1, 480, 2);
|
|||
|
|
data_D488_D489 = _master.ReadHoldingRegisters(1, 488, 2);
|
|||
|
|
data_D502_D507 = _master.ReadHoldingRegisters(1, 502, 6);
|
|||
|
|
|
|||
|
|
data_M90_M92 = _master.ReadInputs(1, 90, 3);
|
|||
|
|
data_M60_M62 = _master.ReadInputs(1, 60, 3);
|
|||
|
|
|
|||
|
|
_huxipinglv = dc.UshortToFloat(data_D410_D411[1], data_D410_D411[0]);
|
|||
|
|
_huxiliang = dc.UshortToFloat(data_D420_D423[1], data_D420_D423[0]);
|
|||
|
|
_huxibeishu = dc.UshortToFloat(data_D420_D423[3], data_D420_D423[2]);
|
|||
|
|
_hushoudongsudu = dc.UshortToFloat(data_D450_D451[1], data_D450_D451[0]);
|
|||
|
|
_xishoudongsudu = dc.UshortToFloat(data_D442_D443[1], data_D442_D443[0]);
|
|||
|
|
_huweizhi = dc.UshortToFloat(data_D460_D465[1], data_D460_D465[0]);
|
|||
|
|
_xiweizhi = dc.UshortToFloat(data_D460_D465[5], data_D460_D465[4]);
|
|||
|
|
_huliang = dc.UshortToFloat(data_D480_D481[1], data_D480_D481[0]);
|
|||
|
|
_xiliang = dc.UshortToFloat(data_D488_D489[1], data_D488_D489[0]);
|
|||
|
|
_huxishijian = dc.UshortToInt1(data_D502_D507[4], data_D502_D507[5]);
|
|||
|
|
_ceshifen = dc.UshortToInt1(data_D502_D507[2], data_D502_D507[3]);
|
|||
|
|
_ceshimiao = dc.UshortToInt1(data_D502_D507[0], data_D502_D507[1]);
|
|||
|
|
Thread.Sleep(100);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch { break; }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
private void timerUI_Tick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
tb_呼吸频率.Text = _huxipinglv.ToString("F2");
|
|||
|
|
tb_呼吸量.Text = _huxiliang.ToString("F2");
|
|||
|
|
tb_呼吸倍数.Text = _huxibeishu.ToString("F2");
|
|||
|
|
tb_呼手动速度.Text = _hushoudongsudu.ToString("F2");
|
|||
|
|
tb_吸手动速度.Text = _xishoudongsudu.ToString("F2");
|
|||
|
|
tb_呼吸时间.Text = _huxishijian.ToString();
|
|||
|
|
|
|||
|
|
tb_呼位置.Text = _huweizhi.ToString("F2");
|
|||
|
|
tb_吸位置.Text = _xiweizhi.ToString("F2");
|
|||
|
|
tb_呼量.Text = _huliang.ToString("F2");
|
|||
|
|
tb_吸量.Text = _xiliang.ToString("F2");
|
|||
|
|
tb_测试分.Text = _ceshifen.ToString();
|
|||
|
|
tb_测试秒.Text = _ceshimiao.ToString();
|
|||
|
|
if (data_M60_M62[1])
|
|||
|
|
{ btn_测试开始.Text = "测试中";btn_测试开始.FillColor = Color.Red; }
|
|||
|
|
else
|
|||
|
|
{ btn_测试开始.Text = "测试开始";btn_测试开始.FillColor = Color.FromArgb(80, 160, 255);}
|
|||
|
|
if (data_M90_M92[1])
|
|||
|
|
{ btn_复位.Text = "复位中"; btn_复位.FillColor = Color.Red; }
|
|||
|
|
else
|
|||
|
|
{ btn_复位.Text = "复位"; btn_复位.FillColor = Color.FromArgb(80, 160, 255); }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void tb_呼吸频率_ButtonClick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.WriteToPLC(tb_呼吸频率.Text,410, Function.DataType.浮点型);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void tb_呼吸量_ButtonClick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.WriteToPLC(tb_呼吸量.Text, 420, Function.DataType.浮点型);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void tb_呼吸倍数_ButtonClick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.WriteToPLC(tb_呼吸倍数.Text, 422, Function.DataType.浮点型);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void tb_呼手动速度_ButtonClick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.WriteToPLC(tb_呼手动速度.Text, 450, Function.DataType.浮点型);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void tb_吸手动速度_ButtonClick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.WriteToPLC(tb_吸手动速度.Text, 442, Function.DataType.浮点型);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void tb_呼吸时间_ButtonClick(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.WriteToPLC(tb_呼吸时间.Text, 506, Function.DataType.整形);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_复位_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复归型, 90);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_呼前_MouseDown(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.置位型, 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_呼前_MouseUp(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复位型, 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_呼后_MouseDown(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.置位型, 2);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_呼后_MouseUp(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复位型, 2);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_吸前_MouseDown(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.置位型, 3);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_吸前_MouseUp(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复位型, 3);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_吸后_MouseDown(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.置位型,4);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_吸后_MouseUp(object sender, MouseEventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复位型, 4);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_测试开始_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复归型, 60);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btn_测试停止_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
fc.BtnClickFunction(Function.ButtonType.复归型, 62);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void frm_Motor_FormClosing(object sender, FormClosingEventArgs e)
|
|||
|
|
{
|
|||
|
|
this.Dispose();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|