初步界面测试

This commit is contained in:
TD 2025-03-25 13:56:48 +08:00
parent fabc7606e7
commit 2a6019bfbd
4 changed files with 585 additions and 107 deletions

View File

@ -71,38 +71,45 @@ namespace DH.Commons.Enums
public enum EnumPLCOutputIO
{
=0,
=1,
使=2,
=3,
=4,
绿=5,
=6,
=7,
=8,
=9,
=10,
1=11,
2=12,
3=13,
4=14,
5=15,
6 = 16,
7 = 17,
8 = 18,
9 = 19,
10 = 20,
OK料盒 =21,
NG料盒=22,
OK吹气时间=23,
NG吹气时间=24,
=25,
=26,
=27,
=28,
=29,
=30,
,
使,
,
,
绿,
,
,
,
,
,
1,
2,
3,
4,
5,
6 ,
7 ,
8 ,
9 ,
10 ,
OK料盒 ,
NG料盒,
OK吹气时间,
NG吹气时间,
,
,
,
,
,
,
,
,
,
,
,
,
OK脉冲,
NG脉冲,

View File

@ -13,6 +13,7 @@ using DH.Commons.Enums;
using HslCommunication;
using HslCommunication.Enthernet;
using HslCommunication.Profinet.XINJE;
using OpenCvSharp;
namespace DH.Devices.PLC
{
@ -59,7 +60,7 @@ namespace DH.Devices.PLC
TcpNet.Write("M122", true);
MonitorPieces();
TurntableStop();
PrepareMotion();//心跳监听
return true;
}
else
@ -440,6 +441,22 @@ namespace DH.Devices.PLC
OnNewPieces?.Invoke(axisIndex, pieceNumber);
});
}
public async Task HeartbeatAsync1()
{
while (Connected)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "心跳地址");
if (pLCItem == null)
return;
string HeartbeatAddress = pLCItem.Type + pLCItem.Address;
TcpNet.Write(HeartbeatAddress, true);
await Task.Delay(900); // 非阻塞等待1秒
}
}
/// <summary>
/// 入料监听
@ -451,6 +468,7 @@ namespace DH.Devices.PLC
PLCItem pLCItem= PLCItemList.FirstOrDefault(u => u.Name == "产品计数");
if (pLCItem == null)
return;
string Count = pLCItem.Type + pLCItem.Address;
DateTime startTime = DateTime.Now;
DateTime endTime = startTime;
TimeSpan timeSpan = endTime - startTime;
@ -462,7 +480,8 @@ namespace DH.Devices.PLC
uint tmpPieceNumber = 0;
sw.Start();
var ret = TcpNet.ReadUInt16("D1016");
// var ret = TcpNet.ReadUInt16("D1016");
var ret = TcpNet.ReadUInt16(Count);
sw.Stop();
if (ret.IsSuccess)
@ -504,51 +523,539 @@ namespace DH.Devices.PLC
/// <summary>
/// 转盘开启操作
/// </summary>
public void TurntableOpen(int speed, bool Direction)
public void TurntableOpen()
{
WriteBool("M122", true);
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "计数清零");
if (pLCItem == null)
return;
string CountToZero = pLCItem.Type + pLCItem.Address;
PLCItem DiskSpeedItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘速度");
if (DiskSpeedItem == null)
return;
string diskSpeedadress = DiskSpeedItem.Type + DiskSpeedItem.Address;
int diskSpeedValue= Convert.ToInt32( DiskSpeedItem.Value);
PLCItem DiskDirectionItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘方向");
if (DiskDirectionItem == null)
return;
string diskDirectionadress = DiskDirectionItem.Type + DiskDirectionItem.Address;
bool Direction =Convert.ToBoolean( DiskDirectionItem.Value);
PLCItem DiskOpenItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘使能");
if (DiskOpenItem == null)
return;
string diskopenadress = DiskOpenItem.Type + DiskOpenItem.Address;
PLCItem DiskRunItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘启动");
if (DiskRunItem == null)
return;
string diskadress = DiskRunItem.Type + DiskRunItem.Address;
WriteBool(CountToZero, true);
Thread.Sleep(10);
WriteBool("M10", false);
Thread.Sleep(10);
//速度
TcpNet.Write("HD10", (ushort)speed);
TcpNet.Write(diskSpeedadress, (ushort)diskSpeedValue);
Thread.Sleep(10);
//方向
WriteBool("M1", Direction);
WriteBool(diskDirectionadress, Direction);
Thread.Sleep(10);
//使能
WriteBool("M2", true);
WriteBool(diskopenadress, true);
Thread.Sleep(10);
//启动
WriteBool("M0", true);
WriteBool(diskadress, true);
//WriteBool("M122", true);
//Thread.Sleep(10);
//WriteBool("M10", false);
//Thread.Sleep(10);
////速度
//TcpNet.Write("HD10", (ushort)10000);
//Thread.Sleep(10);
////方向
//WriteBool("M1", Direction);
//Thread.Sleep(10);
////使能
//WriteBool("M2", true);
//Thread.Sleep(10);
////启动
//WriteBool("M0", true);
Thread.Sleep(10);
// _mainMotion.CurrentState = DeviceState.DSOpen;
piecesCount = 0;
}
/// <summary>
/// 转盘停止操作
/// </summary>
public void TurntableStop()
{
WriteBool("M122", true);
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "计数清零");
if (pLCItem == null)
return;
string CountToZero = pLCItem.Type + pLCItem.Address;
PLCItem DiskRunItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘启动");
if (DiskRunItem == null)
return;
string diskadress = DiskRunItem.Type + DiskRunItem.Address;
PLCItem DiskOpenItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘使能");
if (DiskOpenItem == null)
return;
string diskopenadress = DiskOpenItem.Type + DiskOpenItem.Address;
WriteBool(CountToZero, true);
Thread.Sleep(50);
WriteBool("M0", false);
WriteBool(diskadress, false);
Thread.Sleep(50);
WriteBool("M2", false);
WriteBool(diskopenadress, false);
Thread.Sleep(50);
WriteBool("M50", false);
WriteBool("M10", false);
//WriteBool("M122", true);
//Thread.Sleep(50);
//WriteBool("M0", false);
//Thread.Sleep(50);
//WriteBool("M2", false);
//Thread.Sleep(50);
//WriteBool("M50", false);
piecesCount = 0;
}
private void PrepareMotion()
{
//心跳
//if (X018PLCConfig.Heartbeat)
//{
Task.Run(async () => await HeartbeatAsync1());
//}
////写入工件最大值、最小值
ProjectValue();
////写入工位脉冲
Workstation1Pulse();
Workstation2Pulse();
Workstation3Pulse();
Workstation4Pulse();
Workstation5Pulse();
////写入吹气时间
ChuiQiTime();
////写入吹气脉冲
OKPulse();
NGPulse();
//if (_GC01Driver == null)
//{
// _GC01Driver = DeviceCollection.FirstOrDefault(u => u is GC01Driver) as GC01Driver;
//}
//if (_GC01Driver == null)
//{
// throw new ProcessException($"未能获取激光位移传感器驱动");
//}
//if (_vibrationDriver == null)
//{
// _vibrationDriver = DeviceCollection.FirstOrDefault(u => u is JYDAMDriver) as JYDAMDriver;
//}
//if (_vibrationDriver == null)
//{
// throw new ProcessException($"未能获取振动盘控制器驱动");
//}
// ResetTimer = new Timer(FullResetProcessExcute, null, -1, -1);
//feedingProductTimer = new Timer(FeedingProductTriggerExcute, null, -1, -1);
//feedingProductTimerTimer = new Timer(UpdateFeedingProductTrigger, null, -1, -1);
//_mainMotion.OnAxisPositionChanged -= MainMotion_OnAxisPositionChanged;
//_mainMotion.OnAxisPositionChanged += MainMotion_OnAxisPositionChanged;
//_mainMotion.OnCapturePositionChanged -= MainMotion_OnCapturePositionChanged;
//_mainMotion.OnCapturePositionChanged += MainMotion_OnCapturePositionChanged;
// _mainMotion.OnNewPieces -= MainMotion_NewPieces;
// _mainMotion.OnNewPieces += MainMotion_NewPieces;
//_mainMotion.OnAlarmVibrationDisk -= MainMotion_AlarmVibrationDisk;
//_mainMotion.OnAlarmVibrationDisk += MainMotion_AlarmVibrationDisk;
// PrepareLightIndexes();
}
/// <summary>
/// 挡料电机操作
/// true: 顺时针
/// False: 逆时针
/// </summary>
/// <param name="u"></param>
public void FeedingMotor( bool direction)
{
// 设置最大等待时间,假设为 3 秒
int timeout = 3000;
int elapsedTime = 0;
int checkInterval = 100; // 每次检查等待 100ms
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "挡料电机回原点");
if (pLCItem == null)
return;
PLCItem zerospeeditem = PLCItemList.FirstOrDefault(u => u.Name == "挡料电机回原点速度");
if (zerospeeditem == null)
return;
PLCItem CunSpeed = PLCItemList.FirstOrDefault(u => u.Name == "挡料电机速度");
if (CunSpeed == null)
return;
PLCItem CunClockwiseItem = PLCItemList.FirstOrDefault(u => u.Name == "挡料电机顺时针");
if (CunClockwiseItem == null)
return;
PLCItem CunCounterclockwiseItem = PLCItemList.FirstOrDefault(u => u.Name == "挡料电机逆时针");
if (CunCounterclockwiseItem == null)
return;
PLCItem CunPosItem = PLCItemList.FirstOrDefault(u => u.Name == "挡料电机位置");
if (CunPosItem == null)
return;
string CunToZero = pLCItem.Type + pLCItem.Address;
string CunToZeroSpeed = zerospeeditem.Type + zerospeeditem.Address;
string CunSpeedadress = CunSpeed.Type + CunSpeed.Address;
string CunClockwise = CunClockwiseItem.Type + CunClockwiseItem.Address;
string CunCounterclockwise = CunCounterclockwiseItem.Type + CunCounterclockwiseItem.Address;
string CunPos = CunPosItem.Type + CunPosItem.Address;
short zerospeed = (short)Convert.ToInt32(zerospeeditem.Value);
short cunSpeed = (short)Convert.ToInt32(CunSpeed.Value);
short u = (short)Convert.ToInt32(CunPosItem.Value);
// WriteBool(CountToZero, true);
// 检查是否不在原点,如果不在,则回原点
if (!ReadBool(CunToZero))
{
WriteShort(CunToZeroSpeed, (short)zerospeed); // 速度
Thread.Sleep(10);
// 发送回原点指令
WriteBool(CunToZero, true);
Thread.Sleep(1000); // 给设备一些时间响应
// 等待回到原点
while (!ReadBool(CunToZero))
{
if (elapsedTime >= timeout)
{
break;
}
Thread.Sleep(checkInterval);
elapsedTime += checkInterval;
}
}
// 无论是刚回到原点还是已经在原点,执行目标位置、速度和方向设置
WriteShort(CunSpeedadress, (short)cunSpeed);
Thread.Sleep(2000);
string dir = string.Empty;
if (direction)
{
WriteBool(CunClockwise, true); // 顺时针转动
dir = "顺时针";
}
else
{
WriteBool(CunCounterclockwise, true); // 逆时针转动
dir = "逆时针";
}
Thread.Sleep(10);
WriteShort(CunPos, (short)u); // 目标位置
Thread.Sleep(2000);
}
/// <summary>
/// 计数清零
/// </summary>
public void CountToZero()
{
WriteBool("M120", true);
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "计数清零");
if (pLCItem == null)
return;
string CountToZero = pLCItem.Type + pLCItem.Address;
WriteBool(CountToZero, true);
Thread.Sleep(10);
}
public void RedLight(bool b)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "指示灯红");
if (pLCItem == null)
return;
string RedLight = pLCItem.Type + pLCItem.Address;
WriteBool(RedLight, b);
Thread.Sleep(10);
}
public void GreenLight(bool b)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "指示灯绿");
if (pLCItem == null)
return;
string Light = pLCItem.Type + pLCItem.Address;
WriteBool(Light, b);
// WriteBool(IIConfig.GreenLight, b);
Thread.Sleep(10);
}
public void YellowLight(bool b)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "指示灯黄");
if (pLCItem == null)
return;
string Light = pLCItem.Type + pLCItem.Address;
WriteBool(Light, b);
Thread.Sleep(10);
}
public void Buzzer(bool b)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "蜂鸣器");
if (pLCItem == null)
return;
string Light = pLCItem.Type + pLCItem.Address;
WriteBool(Light, b);
Thread.Sleep(10);
}
public void Belt(bool b)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "皮带");
if (pLCItem == null)
return;
string Light = pLCItem.Type + pLCItem.Address;
WriteBool(Light, b);
Thread.Sleep(10);
}
public void Workstation1Pulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "工位1");
if (pLCItem == null)
return;
string Workstation1Pulse = pLCItem.Type + pLCItem.Address;
int Pulse=Convert.ToInt32(pLCItem.Value);
string result = Regex.Replace(Workstation1Pulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(Workstation1Pulse, low);
Thread.Sleep(10);
}
public void Workstation2Pulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "工位2");
if (pLCItem == null)
return;
string Workstation1Pulse = pLCItem.Type + pLCItem.Address;
int Pulse=Convert.ToInt32(pLCItem.Value);
string result = Regex.Replace(Workstation1Pulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(Workstation1Pulse, low);
Thread.Sleep(10);
}
public void Workstation3Pulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "工位3");
if (pLCItem == null)
return;
string Workstation1Pulse = pLCItem.Type + pLCItem.Address;
int Pulse = Convert.ToInt32(pLCItem.Value);
string result = Regex.Replace(Workstation1Pulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(Workstation1Pulse, low);
Thread.Sleep(10);
}
public void Workstation4Pulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "工位4");
if (pLCItem == null)
return;
string Workstation1Pulse = pLCItem.Type + pLCItem.Address;
int Pulse = Convert.ToInt32(pLCItem.Value);
string result = Regex.Replace(Workstation1Pulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(Workstation1Pulse, low);
Thread.Sleep(10);
}
public void Workstation5Pulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "工位5");
if (pLCItem == null)
return;
string Workstation1Pulse = pLCItem.Type + pLCItem.Address;
int Pulse = Convert.ToInt32(pLCItem.Value);
string result = Regex.Replace(Workstation1Pulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(Workstation1Pulse, low);
Thread.Sleep(10);
}
public void ProjectValue()
{
PLCItem pLCItemmax = PLCItemList.FirstOrDefault(u => u.Name == "工件最大值");
if (pLCItemmax == null)
return;
PLCItem pLCItemmin = PLCItemList.FirstOrDefault(u => u.Name == "工件最小值");
if (pLCItemmin == null)
return;
int productMax =Convert.ToInt32( pLCItemmax.Value);
int productMin = Convert.ToInt32( pLCItemmin.Value);
string ProductMax = pLCItemmax.Type + pLCItemmax.Address;
string ProductMin = pLCItemmin.Type + pLCItemmin.Address;
WriteShort(ProductMax, (short)productMax);
Thread.Sleep(10);
WriteShort(ProductMin, (short)productMin);
Thread.Sleep(10);
}
public void OKPulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "OK脉冲");
if (pLCItem == null)
return;
string OKPulse = pLCItem.Type + pLCItem.Address;
int Pulse =Convert.ToInt32( pLCItem.Value);
string result = Regex.Replace(OKPulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(OKPulse, low);
Thread.Sleep(10);
}
public void NGPulse()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "NG脉冲");
if (pLCItem == null)
return;
string NGPulse = pLCItem.Type + pLCItem.Address;
int Pulse=Convert.ToInt32(pLCItem.Value);
string result = Regex.Replace(NGPulse, @"\D", "");
int r = Convert.ToInt32(result) + 1;
result = "HD" + r.ToString();
short high = (short)(Pulse >> 16); // 高 16 位
short low = (short)(Pulse & 0xFFFF); // 低 16 位
WriteShort(result, high);
Thread.Sleep(10);
WriteShort(NGPulse, low);
Thread.Sleep(10);
}
public void TurnClear(bool b)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "转盘清料");
if (pLCItem == null)
return;
string TurnClear = pLCItem.Type + pLCItem.Address;
WriteBool(TurnClear, b);
Thread.Sleep(10);
}
public void OpenHeartbeat(bool v)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "心跳功能");
if (pLCItem == null)
return;
string Heartbeat = pLCItem.Type + pLCItem.Address;
WriteBool(Heartbeat, v);
Thread.Sleep(10);
}
public void Vibratory(bool v)
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "振动盘");
if (pLCItem == null)
return;
string Vibratory = pLCItem.Type + pLCItem.Address;
WriteBool(Vibratory, v);
Thread.Sleep(10);
}
public void ChuiQiTime()
{
PLCItem pLCItem = PLCItemList.FirstOrDefault(u => u.Name == "吹气时间");
if (pLCItem == null)
return;
string ChuiQiTime = pLCItem.Type + pLCItem.Address;
short time = (short)Convert.ToInt32(pLCItem.Value);
WriteShort(ChuiQiTime, time);
Thread.Sleep(10);
}
}
}

View File

@ -30,7 +30,6 @@
{
AntdUI.Tabs.StyleCard styleCard1 = new AntdUI.Tabs.StyleCard();
AntdUI.Tabs.StyleCard styleCard2 = new AntdUI.Tabs.StyleCard();
AntdUI.Tabs.StyleCard styleCard3 = new AntdUI.Tabs.StyleCard();
AntdUI.SegmentedItem segmentedItem1 = new AntdUI.SegmentedItem();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow));
AntdUI.SegmentedItem segmentedItem2 = new AntdUI.SegmentedItem();
@ -49,9 +48,6 @@
splitContainer1 = new SplitContainer();
splitContainer2 = new SplitContainer();
tabImgDisplay = new AntdUI.Tabs();
tabMain = new AntdUI.TabPage();
tabsStas = new AntdUI.Tabs();
tabPage3 = new AntdUI.TabPage();
richTextBox1 = new RichTextBox();
tabsConfig = new AntdUI.Tabs();
tabPage2 = new AntdUI.TabPage();
@ -76,9 +72,6 @@
splitContainer2.Panel1.SuspendLayout();
splitContainer2.Panel2.SuspendLayout();
splitContainer2.SuspendLayout();
tabImgDisplay.SuspendLayout();
tabsStas.SuspendLayout();
tabPage3.SuspendLayout();
tabsConfig.SuspendLayout();
panel1.SuspendLayout();
panel3.SuspendLayout();
@ -130,7 +123,7 @@
// label1
//
label1.AutoSize = true;
label1.Location = new Point(979, 10);
label1.Location = new Point(59, 10);
label1.Name = "label1";
label1.Size = new Size(64, 21);
label1.TabIndex = 1;
@ -203,7 +196,7 @@
splitContainer1.Panel2.BackColor = SystemColors.ButtonFace;
splitContainer1.Panel2.Controls.Add(tabsConfig);
splitContainer1.Size = new Size(1024, 500);
splitContainer1.SplitterDistance = 580;
splitContainer1.SplitterDistance = 606;
splitContainer1.SplitterIncrement = 2;
splitContainer1.SplitterWidth = 10;
splitContainer1.TabIndex = 0;
@ -221,8 +214,8 @@
//
// splitContainer2.Panel2
//
splitContainer2.Panel2.Controls.Add(tabsStas);
splitContainer2.Size = new Size(580, 500);
splitContainer2.Panel2.Controls.Add(richTextBox1);
splitContainer2.Size = new Size(606, 500);
splitContainer2.SplitterDistance = 320;
splitContainer2.TabIndex = 0;
//
@ -231,46 +224,17 @@
tabImgDisplay.Dock = DockStyle.Fill;
tabImgDisplay.Location = new Point(0, 0);
tabImgDisplay.Name = "tabImgDisplay";
tabImgDisplay.Pages.Add(tabMain);
tabImgDisplay.Size = new Size(580, 320);
tabImgDisplay.Size = new Size(606, 320);
tabImgDisplay.Style = styleCard1;
tabImgDisplay.TabIndex = 1;
tabImgDisplay.Text = "tabs1";
//
// tabMain
//
tabMain.Location = new Point(3, 28);
tabMain.Name = "tabMain";
tabMain.Size = new Size(574, 289);
tabMain.TabIndex = 0;
tabMain.Text = "检测";
//
// tabsStas
//
tabsStas.Dock = DockStyle.Fill;
tabsStas.Location = new Point(0, 0);
tabsStas.Name = "tabsStas";
tabsStas.Pages.Add(tabPage3);
tabsStas.Size = new Size(580, 176);
tabsStas.Style = styleCard2;
tabsStas.TabIndex = 3;
tabsStas.Text = "tabs3";
//
// tabPage3
//
tabPage3.Controls.Add(richTextBox1);
tabPage3.Location = new Point(3, 28);
tabPage3.Name = "tabPage3";
tabPage3.Size = new Size(574, 145);
tabPage3.TabIndex = 0;
tabPage3.Text = "日志";
//
// richTextBox1
//
richTextBox1.Dock = DockStyle.Fill;
richTextBox1.Location = new Point(0, 0);
richTextBox1.Name = "richTextBox1";
richTextBox1.Size = new Size(574, 145);
richTextBox1.Size = new Size(606, 176);
richTextBox1.TabIndex = 0;
richTextBox1.Text = "";
//
@ -280,8 +244,8 @@
tabsConfig.Location = new Point(0, 0);
tabsConfig.Name = "tabsConfig";
tabsConfig.Pages.Add(tabPage2);
tabsConfig.Size = new Size(434, 500);
tabsConfig.Style = styleCard3;
tabsConfig.Size = new Size(408, 500);
tabsConfig.Style = styleCard2;
tabsConfig.TabIndex = 2;
tabsConfig.Text = "tabs2";
//
@ -289,7 +253,7 @@
//
tabPage2.Location = new Point(3, 28);
tabPage2.Name = "tabPage2";
tabPage2.Size = new Size(428, 469);
tabPage2.Size = new Size(402, 469);
tabPage2.TabIndex = 0;
tabPage2.Text = "配置";
//
@ -467,9 +431,6 @@
splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)splitContainer2).EndInit();
splitContainer2.ResumeLayout(false);
tabImgDisplay.ResumeLayout(false);
tabsStas.ResumeLayout(false);
tabPage3.ResumeLayout(false);
tabsConfig.ResumeLayout(false);
panel1.ResumeLayout(false);
panel3.ResumeLayout(false);
@ -492,10 +453,6 @@
private SplitContainer splitContainer1;
private SplitContainer splitContainer2;
private AntdUI.Tabs tabImgDisplay;
private AntdUI.TabPage tabMain;
private AntdUI.Tabs tabsStas;
private AntdUI.TabPage tabPage3;
private RichTextBox richTextBox1;
private AntdUI.Tabs tabsConfig;
private AntdUI.TabPage tabPage2;
private AntdUI.Label lbName;
@ -504,5 +461,6 @@
private AntdUI.Button btnAddProject;
private AntdUI.Button btnLoadProject;
public AntdUI.Select sltProjects;
private RichTextBox richTextBox1;
}
}

View File

@ -176,11 +176,11 @@ namespace DHSoftware
InitData();
//绑定事件
BindEventHandler();
UserConfigFrm userControlFrm = new UserConfigFrm();
//UserConfigFrm userControlFrm = new UserConfigFrm();
userControlFrm.Window = this;
userControlFrm.Dock = DockStyle.Fill;
tabPage2.Controls.Add(userControlFrm);
//userControlFrm.Window = this;
//userControlFrm.Dock = DockStyle.Fill;
//tabPage2.Controls.Add(userControlFrm);
}
/// <summary>
@ -267,7 +267,7 @@ namespace DHSoftware
cam.CameraIP = cameraBase.CameraIP;
cam.IsEnabled = cameraBase.IsEnabled;
Cameras.Add(cam);
//cam.CameraConnect();
cam.CameraConnect();
cam.OnHImageOutput += OnCameraHImageOutput;
}
else if (cameraBase.CamType == EnumCamType.hik)
@ -294,6 +294,7 @@ namespace DHSoftware
if (plcBase.PLCType == EnumPLCType.XC网口)
{
PLC.IP = plcBase.IP;
PLC.PLCType = plcBase.PLCType;
PLC.Enable = plcBase.Enable;
PLC.PLCName = plcBase.PLCName;
PLC.PLCItemList = plcBase.PLCItemList;
@ -321,8 +322,10 @@ namespace DHSoftware
detectionConfig.ModelHeight = detection.ModelHeight;
detectionConfig.In_lable_path = detection.In_lable_path;
detectionConfig.IsEnabled = detection.IsEnabled;
detectionConfig.ShowLocation.X = detection.ShowLocation.X;
detectionConfig.ShowLocation.Y = detection.ShowLocation.Y;
detectionConfig.ShowLocation.X = (i + 1) % 5+ (i + 1) / 5;
// detectionConfig.ShowLocation.X = detection.ShowLocation.X;
detectionConfig.ShowLocation.Y = (i + 1) / 5+1;
// detectionConfig.ShowLocation.Y = detection.ShowLocation.Y;
DetectionConfigs.Add(detectionConfig);
}
}
@ -354,6 +357,7 @@ namespace DHSoftware
//初始化模型 加载模型
_visionEngine.Init();
CtrlVisionRunBase ctrlVisionRun = new CtrlVisionRunBase(_visionEngine);
ctrlVisionRun.Dock = DockStyle.Fill;
tabImgDisplay.Controls.Add(ctrlVisionRun);
}
@ -581,10 +585,12 @@ namespace DHSoftware
PieceCount = 0;
//吹气点位归置
currentRegister = 411;
if (_PLCConfig?.Enable == true)
if (PLC?.Enable == true)
{
PLC.CountToZero();
PLC.OnNewPieces -= MainMotion_NewPieces;
PLC.OnNewPieces += MainMotion_NewPieces;
}
ConfigModel.CameraBaseList.ForEach(d =>
@ -691,7 +697,7 @@ namespace DHSoftware
PLCItem itemSpeed = PLC.PLCItemList.FirstOrDefault(u => u.Name == "转盘速度");
if (itemSpeed != null)
{
PLC.TurntableOpen(Convert.ToInt32(itemSpeed.Value), true);
PLC.TurntableOpen();
}
Thread.Sleep(500);