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.Tasks; using System.Windows.Forms; namespace HRT_Measure { public partial class FrmPLC_M04M05 : Sunny.UI.UIForm { public FrmPLC_M04M05() { InitializeComponent(); } public List listCylinder = new List(); public List listAxisPos = new List(); public List listAxis = new List(); private void FrmPLC_Load(object sender, EventArgs e) { uiSplitContainer1.SplitterDistance = this.Width / 2; LoadPLCValue(); LoadAxisPos(); LoadAxis(); tabControlAxis.SelectedIndex = 0; } private void LoadPLCValue() { listCylinder.Clear(); for (int i = 0; i < PLCCylinder.listM04M05_ST0进口门工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_ST0进口门工位[i], PLCCylinder.dictM04M05_ST0进口门工位); if(i < 11) uiTableLayoutPanelST0进口门工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanelST0进口门工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_取出工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_取出工位[i], PLCCylinder.dictM04M05_取出工位); if (i < 11) uiTableLayoutPanel取出工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel取出工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_清洗工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_清洗工位[i], PLCCylinder.dictM04M05_清洗工位); if (i < 11) uiTableLayoutPanel清洗工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel清洗工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_提升机工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_提升机工位[i], PLCCylinder.dictM04M05_提升机工位); if (i < 11) uiTableLayoutPanel提升机工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel提升机工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_测量工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_测量工位[i], PLCCylinder.dictM04M05_测量工位); if (i < 11) uiTableLayoutPanel测量工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel测量工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_装盘工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_装盘工位[i], PLCCylinder.dictM04M05_装盘工位); if (i < 11) uiTableLayoutPanel装盘工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel装盘工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_出盘工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_出盘工位[i], PLCCylinder.dictM04M05_出盘工位); if (i < 11) uiTableLayoutPanel出盘工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel出盘工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_下流线工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_下流线工位[i], PLCCylinder.dictM04M05_下流线工位); if (i < 11) uiTableLayoutPanel下流线工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel下流线工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } for (int i = 0; i < PLCCylinder.listM04M05_下料站工位.Count; i++) { UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_下料站工位[i], PLCCylinder.dictM04M05_下料站工位); if (i < 11) uiTableLayoutPanel下料站工位.Controls.Add(uCCylinder, 0, i); else uiTableLayoutPanel装盘工位.Controls.Add(uCCylinder, 1, i - 11); listCylinder.Add(uCCylinder); uCCylinder.thMonitor.Start(); } } private void LoadAxisPos() { listAxisPos.Clear(); for (int i = 0; i < PLCAxisPos.dictM04M05_取料X轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_取料X轴[i], PLCAxisPos.dictM04M05_取料X轴); if (i < 9) uiTableLayoutPanel取料X轴Pos.Controls.Add(uCAxisPos, 0, i); else uiTableLayoutPanel取料X轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); //uCAxisPos.timer1.Enabled = true; uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_取料Y轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_取料Y轴[i], PLCAxisPos.dictM04M05_取料Y轴); if (i < 9) uiTableLayoutPanel1取料Y轴Pos.Controls.Add(uCAxisPos, 0, i); else uiTableLayoutPanel1取料Y轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); //uCAxisPos.timer1.Enabled = true; uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_装盘X轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_装盘X轴[i], PLCAxisPos.dictM04M05_装盘X轴); if (i < 9) uiTableLayoutPanel装盘X轴Pos.Controls.Add(uCAxisPos, 0, i); else uiTableLayoutPanel装盘X轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); //uCAxisPos.timer1.Enabled = true; uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_装盘Y轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_装盘Y轴[i], PLCAxisPos.dictM04M05_装盘Y轴); if (i < 9) uiTableLayoutPanel装盘Y轴Pos.Controls.Add(uCAxisPos, 0, i); else uiTableLayoutPanel装盘Y轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); //uCAxisPos.timer1.Enabled = true; uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_装盘Z轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_装盘Z轴[i], PLCAxisPos.dictM04M05_装盘Z轴); if (i < 9) uiTableLayoutPanel装盘Z轴Pos.Controls.Add(uCAxisPos, 0, i); else uiTableLayoutPanel装盘Z轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_下料站X轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_下料站X轴[i], PLCAxisPos.dictM04M05_下料站X轴); if(PLCAxisPos.listM04M05_下料站X轴[i].Contains("放盘位")) { string str = PLCAxisPos.listM04M05_下料站X轴[i].Split(',')[0]; int index = Convert.ToInt32(str.Remove(0, 3)); if(index < 11) uiTableLayoutPanel下料站X轴放盘Pos.Controls.Add(uCAxisPos, 0, index - 1); else uiTableLayoutPanel下料站X轴放盘Pos.Controls.Add(uCAxisPos, 1, index - 11); } else if(PLCAxisPos.listM04M05_下料站X轴[i].Contains("取箱位")) { string str = PLCAxisPos.listM04M05_下料站X轴[i].Split(',')[0]; int index = Convert.ToInt32(str.Remove(0, 3)); if (index < 11) uiTableLayoutPanel下料站X轴取箱Pos.Controls.Add(uCAxisPos, 0, index - 1); else uiTableLayoutPanel下料站X轴取箱Pos.Controls.Add(uCAxisPos, 1, index - 11); } else { uiTableLayoutPanel下料站X轴Pos.Controls.Add(uCAxisPos, 0, i); } //if (i < 9) uiTableLayoutPanel下料站X轴Pos.Controls.Add(uCAxisPos, 0, i); //else uiTableLayoutPanel下料站X轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_下料站Y轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_下料站Y轴[i], PLCAxisPos.dictM04M05_下料站Y轴); if (PLCAxisPos.listM04M05_下料站Y轴[i].Contains("放盘位")) { string str = PLCAxisPos.listM04M05_下料站Y轴[i].Split(',')[0]; int index = Convert.ToInt32(str.Remove(0, 3)); if (index < 11) uiTableLayoutPanel下料站Y轴放盘Pos.Controls.Add(uCAxisPos, 0, index - 1); else uiTableLayoutPanel下料站Y轴放盘Pos.Controls.Add(uCAxisPos, 1, index - 11); } else if (PLCAxisPos.listM04M05_下料站Y轴[i].Contains("取箱位")) { string str = PLCAxisPos.listM04M05_下料站Y轴[i].Split(',')[0]; int index = Convert.ToInt32(str.Remove(0, 3)); if (index < 11) uiTableLayoutPanel下料站Y轴取箱Pos.Controls.Add(uCAxisPos, 0, index - 1); else uiTableLayoutPanel下料站Y轴取箱Pos.Controls.Add(uCAxisPos, 1, index - 11); } else { uiTableLayoutPanel下料站Y轴Pos.Controls.Add(uCAxisPos, 0, i); } //if (i < 9) uiTableLayoutPanel下料站Y轴Pos.Controls.Add(uCAxisPos, 0, i); //else uiTableLayoutPanel下料站Y轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); uCAxisPos.thMonitor.Start(); } for (int i = 0; i < PLCAxisPos.dictM04M05_下料站Z轴.Count; i++) { UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_下料站Z轴[i], PLCAxisPos.dictM04M05_下料站Z轴); if (i < 9) uiTableLayoutPanel下料站Z轴Pos.Controls.Add(uCAxisPos, 0, i); else uiTableLayoutPanel下料站Z轴Pos.Controls.Add(uCAxisPos, 1, i - 9); listAxisPos.Add(uCAxisPos); uCAxisPos.thMonitor.Start(); } } private void LoadAxis() { listAxis.Clear(); UCAxis uCAxis取料X轴 = new UCAxis("M04M05", "取料X轴", PLCAxis.listM04M05_轴[0], PLCAxis.dictM04M05_轴); panel取料X轴.Controls.Clear(); panel取料X轴.Controls.Add(uCAxis取料X轴); //uCAxis取料X轴.timer1.Enabled = true; uCAxis取料X轴.thMonitor.Start(); listAxis.Add(uCAxis取料X轴); UCAxis uCAxis取料Y轴 = new UCAxis("M04M05", "取料Y轴", PLCAxis.listM04M05_轴[1], PLCAxis.dictM04M05_轴); panel取料Y轴.Controls.Clear(); panel取料Y轴.Controls.Add(uCAxis取料Y轴); uCAxis取料Y轴.thMonitor.Start(); listAxis.Add(uCAxis取料Y轴); UCAxis uCAxis装盘X轴 = new UCAxis("M04M05", "装盘X轴", PLCAxis.listM04M05_轴[2], PLCAxis.dictM04M05_轴); panel装盘X轴.Controls.Clear(); panel装盘X轴.Controls.Add(uCAxis装盘X轴); uCAxis装盘X轴.thMonitor.Start(); listAxis.Add(uCAxis装盘X轴); UCAxis uCAxis装盘Y轴 = new UCAxis("M04M05", "装盘Y轴", PLCAxis.listM04M05_轴[3], PLCAxis.dictM04M05_轴); panel装盘Y轴.Controls.Clear(); panel装盘Y轴.Controls.Add(uCAxis装盘Y轴); uCAxis装盘Y轴.thMonitor.Start(); listAxis.Add(uCAxis装盘Y轴); UCAxis uCAxis装盘Z轴 = new UCAxis("M04M05", "装盘Z轴", PLCAxis.listM04M05_轴[4], PLCAxis.dictM04M05_轴); panel装盘Z轴.Controls.Clear(); panel装盘Z轴.Controls.Add(uCAxis装盘Z轴); uCAxis装盘Z轴.thMonitor.Start(); listAxis.Add(uCAxis装盘Z轴); UCAxis uCAxis下料站X轴 = new UCAxis("M04M05", "下料站X轴", PLCAxis.listM04M05_轴[5], PLCAxis.dictM04M05_轴); panel下料站X轴.Controls.Clear(); panel下料站X轴.Controls.Add(uCAxis下料站X轴); uCAxis下料站X轴.thMonitor.Start(); listAxis.Add(uCAxis下料站X轴); UCAxis uCAxis下料站Y轴 = new UCAxis("M04M05", "下料站Y轴", PLCAxis.listM04M05_轴[6], PLCAxis.dictM04M05_轴); panel下料站Y轴.Controls.Clear(); panel下料站Y轴.Controls.Add(uCAxis下料站Y轴); uCAxis下料站Y轴.thMonitor.Start(); listAxis.Add(uCAxis下料站Y轴); UCAxis uCAxis下料站Z轴 = new UCAxis("M04M05", "下料站Z轴", PLCAxis.listM04M05_轴[7], PLCAxis.dictM04M05_轴); panel下料站Z轴.Controls.Clear(); panel下料站Z轴.Controls.Add(uCAxis下料站Z轴); uCAxis下料站Z轴.thMonitor.Start(); listAxis.Add(uCAxis下料站Z轴); } private void Timer1_Tick(object sender, EventArgs e) { } private void FrmPLC_FormClosing(object sender, FormClosingEventArgs e) { timer1.Enabled = false; foreach (var item in listCylinder) { try { item.timer1.Enabled = false; item.thMonitor.Abort(); } catch (Exception) { } } foreach (var item in listAxisPos) { try { item.timer1.Enabled = false; item.thMonitor.Abort(); } catch (Exception) { } } foreach (var item in listAxis) { try { item.timer1.Enabled = false; item.thMonitor.Abort(); } catch (Exception) { } } } private void tabControlM04M05_SelectedIndexChanged(object sender, EventArgs e) { ReadPLCHelp.iM04M05IOStation = tabControlM04M05.SelectedIndex; } private void tabControlAxis_SelectedIndexChanged(object sender, EventArgs e) { ReadPLCHelp.iM04M05AxisStation = tabControlAxis.SelectedIndex; //for (int i = 0; i < listAxis.Count; i++) //{ // if (i == tabControlAxis.SelectedIndex) listAxis[tabControlAxis.SelectedIndex].Enabled = true; // else listAxis[tabControlAxis.SelectedIndex].Enabled = false; //} } private void tabControl下料X轴_SelectedIndexChanged(object sender, EventArgs e) { switch(tabControl下料X轴.SelectedIndex) { case 0: ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.32", 1, out string str); break; case 1: ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.32", 4, out str); break; case 2: ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.32", 8, out str); break; } } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { switch (tabControl1.SelectedIndex) { case 0: ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.38", 1, out string str); break; case 1: ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.38", 3, out str); break; case 2: ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.38", 8, out str); break; } } } }