FrmPLC_M04M05.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. using Sunny.UI;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace HRT_Measure
  12. {
  13. public partial class FrmPLC_M04M05 : Sunny.UI.UIForm
  14. {
  15. public FrmPLC_M04M05()
  16. {
  17. InitializeComponent();
  18. }
  19. public List<UCCylinder> listCylinder = new List<UCCylinder>();
  20. public List<UCAxisPos> listAxisPos = new List<UCAxisPos>();
  21. public List<UCAxis> listAxis = new List<UCAxis>();
  22. private void FrmPLC_Load(object sender, EventArgs e)
  23. {
  24. uiSplitContainer1.SplitterDistance = this.Width / 2;
  25. LoadPLCValue();
  26. LoadAxisPos();
  27. LoadAxis();
  28. tabControlAxis.SelectedIndex = 0;
  29. }
  30. private void LoadPLCValue()
  31. {
  32. listCylinder.Clear();
  33. for (int i = 0; i < PLCCylinder.listM04M05_ST0进口门工位.Count; i++)
  34. {
  35. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_ST0进口门工位[i], PLCCylinder.dictM04M05_ST0进口门工位);
  36. if(i < 11) uiTableLayoutPanelST0进口门工位.Controls.Add(uCCylinder, 0, i);
  37. else uiTableLayoutPanelST0进口门工位.Controls.Add(uCCylinder, 1, i - 11);
  38. listCylinder.Add(uCCylinder);
  39. uCCylinder.thMonitor.Start();
  40. }
  41. for (int i = 0; i < PLCCylinder.listM04M05_取出工位.Count; i++)
  42. {
  43. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_取出工位[i], PLCCylinder.dictM04M05_取出工位);
  44. if (i < 11) uiTableLayoutPanel取出工位.Controls.Add(uCCylinder, 0, i);
  45. else uiTableLayoutPanel取出工位.Controls.Add(uCCylinder, 1, i - 11);
  46. listCylinder.Add(uCCylinder);
  47. uCCylinder.thMonitor.Start();
  48. }
  49. for (int i = 0; i < PLCCylinder.listM04M05_清洗工位.Count; i++)
  50. {
  51. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_清洗工位[i], PLCCylinder.dictM04M05_清洗工位);
  52. if (i < 11) uiTableLayoutPanel清洗工位.Controls.Add(uCCylinder, 0, i);
  53. else uiTableLayoutPanel清洗工位.Controls.Add(uCCylinder, 1, i - 11);
  54. listCylinder.Add(uCCylinder);
  55. uCCylinder.thMonitor.Start();
  56. }
  57. for (int i = 0; i < PLCCylinder.listM04M05_提升机工位.Count; i++)
  58. {
  59. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_提升机工位[i], PLCCylinder.dictM04M05_提升机工位);
  60. if (i < 11) uiTableLayoutPanel提升机工位.Controls.Add(uCCylinder, 0, i);
  61. else uiTableLayoutPanel提升机工位.Controls.Add(uCCylinder, 1, i - 11);
  62. listCylinder.Add(uCCylinder);
  63. uCCylinder.thMonitor.Start();
  64. }
  65. for (int i = 0; i < PLCCylinder.listM04M05_测量工位.Count; i++)
  66. {
  67. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_测量工位[i], PLCCylinder.dictM04M05_测量工位);
  68. if (i < 11) uiTableLayoutPanel测量工位.Controls.Add(uCCylinder, 0, i);
  69. else uiTableLayoutPanel测量工位.Controls.Add(uCCylinder, 1, i - 11);
  70. listCylinder.Add(uCCylinder);
  71. uCCylinder.thMonitor.Start();
  72. }
  73. for (int i = 0; i < PLCCylinder.listM04M05_装盘工位.Count; i++)
  74. {
  75. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_装盘工位[i], PLCCylinder.dictM04M05_装盘工位);
  76. if (i < 11) uiTableLayoutPanel装盘工位.Controls.Add(uCCylinder, 0, i);
  77. else uiTableLayoutPanel装盘工位.Controls.Add(uCCylinder, 1, i - 11);
  78. listCylinder.Add(uCCylinder);
  79. uCCylinder.thMonitor.Start();
  80. }
  81. for (int i = 0; i < PLCCylinder.listM04M05_出盘工位.Count; i++)
  82. {
  83. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_出盘工位[i], PLCCylinder.dictM04M05_出盘工位);
  84. if (i < 11) uiTableLayoutPanel出盘工位.Controls.Add(uCCylinder, 0, i);
  85. else uiTableLayoutPanel出盘工位.Controls.Add(uCCylinder, 1, i - 11);
  86. listCylinder.Add(uCCylinder);
  87. uCCylinder.thMonitor.Start();
  88. }
  89. for (int i = 0; i < PLCCylinder.listM04M05_下流线工位.Count; i++)
  90. {
  91. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_下流线工位[i], PLCCylinder.dictM04M05_下流线工位);
  92. if (i < 11) uiTableLayoutPanel下流线工位.Controls.Add(uCCylinder, 0, i);
  93. else uiTableLayoutPanel下流线工位.Controls.Add(uCCylinder, 1, i - 11);
  94. listCylinder.Add(uCCylinder);
  95. uCCylinder.thMonitor.Start();
  96. }
  97. for (int i = 0; i < PLCCylinder.listM04M05_下料站工位.Count; i++)
  98. {
  99. UCCylinder uCCylinder = new UCCylinder("M04M05", PLCCylinder.listM04M05_下料站工位[i], PLCCylinder.dictM04M05_下料站工位);
  100. if (i < 11) uiTableLayoutPanel下料站工位.Controls.Add(uCCylinder, 0, i);
  101. else uiTableLayoutPanel装盘工位.Controls.Add(uCCylinder, 1, i - 11);
  102. listCylinder.Add(uCCylinder);
  103. uCCylinder.thMonitor.Start();
  104. }
  105. }
  106. private void LoadAxisPos()
  107. {
  108. listAxisPos.Clear();
  109. for (int i = 0; i < PLCAxisPos.dictM04M05_取料X轴.Count; i++)
  110. {
  111. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_取料X轴[i], PLCAxisPos.dictM04M05_取料X轴);
  112. if (i < 9) uiTableLayoutPanel取料X轴Pos.Controls.Add(uCAxisPos, 0, i);
  113. else uiTableLayoutPanel取料X轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  114. listAxisPos.Add(uCAxisPos);
  115. //uCAxisPos.timer1.Enabled = true;
  116. uCAxisPos.thMonitor.Start();
  117. }
  118. for (int i = 0; i < PLCAxisPos.dictM04M05_取料Y轴.Count; i++)
  119. {
  120. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_取料Y轴[i], PLCAxisPos.dictM04M05_取料Y轴);
  121. if (i < 9) uiTableLayoutPanel1取料Y轴Pos.Controls.Add(uCAxisPos, 0, i);
  122. else uiTableLayoutPanel1取料Y轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  123. listAxisPos.Add(uCAxisPos);
  124. //uCAxisPos.timer1.Enabled = true;
  125. uCAxisPos.thMonitor.Start();
  126. }
  127. for (int i = 0; i < PLCAxisPos.dictM04M05_装盘X轴.Count; i++)
  128. {
  129. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_装盘X轴[i], PLCAxisPos.dictM04M05_装盘X轴);
  130. if (i < 9) uiTableLayoutPanel装盘X轴Pos.Controls.Add(uCAxisPos, 0, i);
  131. else uiTableLayoutPanel装盘X轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  132. listAxisPos.Add(uCAxisPos);
  133. //uCAxisPos.timer1.Enabled = true;
  134. uCAxisPos.thMonitor.Start();
  135. }
  136. for (int i = 0; i < PLCAxisPos.dictM04M05_装盘Y轴.Count; i++)
  137. {
  138. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_装盘Y轴[i], PLCAxisPos.dictM04M05_装盘Y轴);
  139. if (i < 9) uiTableLayoutPanel装盘Y轴Pos.Controls.Add(uCAxisPos, 0, i);
  140. else uiTableLayoutPanel装盘Y轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  141. listAxisPos.Add(uCAxisPos);
  142. //uCAxisPos.timer1.Enabled = true;
  143. uCAxisPos.thMonitor.Start();
  144. }
  145. for (int i = 0; i < PLCAxisPos.dictM04M05_装盘Z轴.Count; i++)
  146. {
  147. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_装盘Z轴[i], PLCAxisPos.dictM04M05_装盘Z轴);
  148. if (i < 9) uiTableLayoutPanel装盘Z轴Pos.Controls.Add(uCAxisPos, 0, i);
  149. else uiTableLayoutPanel装盘Z轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  150. listAxisPos.Add(uCAxisPos);
  151. uCAxisPos.thMonitor.Start();
  152. }
  153. for (int i = 0; i < PLCAxisPos.dictM04M05_下料站X轴.Count; i++)
  154. {
  155. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_下料站X轴[i], PLCAxisPos.dictM04M05_下料站X轴);
  156. if(PLCAxisPos.listM04M05_下料站X轴[i].Contains("放盘位"))
  157. {
  158. string str = PLCAxisPos.listM04M05_下料站X轴[i].Split(',')[0];
  159. int index = Convert.ToInt32(str.Remove(0, 3));
  160. if(index < 11) uiTableLayoutPanel下料站X轴放盘Pos.Controls.Add(uCAxisPos, 0, index - 1);
  161. else uiTableLayoutPanel下料站X轴放盘Pos.Controls.Add(uCAxisPos, 1, index - 11);
  162. }
  163. else if(PLCAxisPos.listM04M05_下料站X轴[i].Contains("取箱位"))
  164. {
  165. string str = PLCAxisPos.listM04M05_下料站X轴[i].Split(',')[0];
  166. int index = Convert.ToInt32(str.Remove(0, 3));
  167. if (index < 11) uiTableLayoutPanel下料站X轴取箱Pos.Controls.Add(uCAxisPos, 0, index - 1);
  168. else uiTableLayoutPanel下料站X轴取箱Pos.Controls.Add(uCAxisPos, 1, index - 11);
  169. }
  170. else
  171. {
  172. uiTableLayoutPanel下料站X轴Pos.Controls.Add(uCAxisPos, 0, i);
  173. }
  174. //if (i < 9) uiTableLayoutPanel下料站X轴Pos.Controls.Add(uCAxisPos, 0, i);
  175. //else uiTableLayoutPanel下料站X轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  176. listAxisPos.Add(uCAxisPos);
  177. uCAxisPos.thMonitor.Start();
  178. }
  179. for (int i = 0; i < PLCAxisPos.dictM04M05_下料站Y轴.Count; i++)
  180. {
  181. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_下料站Y轴[i], PLCAxisPos.dictM04M05_下料站Y轴);
  182. if (PLCAxisPos.listM04M05_下料站Y轴[i].Contains("放盘位"))
  183. {
  184. string str = PLCAxisPos.listM04M05_下料站Y轴[i].Split(',')[0];
  185. int index = Convert.ToInt32(str.Remove(0, 3));
  186. if (index < 11) uiTableLayoutPanel下料站Y轴放盘Pos.Controls.Add(uCAxisPos, 0, index - 1);
  187. else uiTableLayoutPanel下料站Y轴放盘Pos.Controls.Add(uCAxisPos, 1, index - 11);
  188. }
  189. else if (PLCAxisPos.listM04M05_下料站Y轴[i].Contains("取箱位"))
  190. {
  191. string str = PLCAxisPos.listM04M05_下料站Y轴[i].Split(',')[0];
  192. int index = Convert.ToInt32(str.Remove(0, 3));
  193. if (index < 11) uiTableLayoutPanel下料站Y轴取箱Pos.Controls.Add(uCAxisPos, 0, index - 1);
  194. else uiTableLayoutPanel下料站Y轴取箱Pos.Controls.Add(uCAxisPos, 1, index - 11);
  195. }
  196. else
  197. {
  198. uiTableLayoutPanel下料站Y轴Pos.Controls.Add(uCAxisPos, 0, i);
  199. }
  200. //if (i < 9) uiTableLayoutPanel下料站Y轴Pos.Controls.Add(uCAxisPos, 0, i);
  201. //else uiTableLayoutPanel下料站Y轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  202. listAxisPos.Add(uCAxisPos);
  203. uCAxisPos.thMonitor.Start();
  204. }
  205. for (int i = 0; i < PLCAxisPos.dictM04M05_下料站Z轴.Count; i++)
  206. {
  207. UCAxisPos uCAxisPos = new UCAxisPos(PLCAxisPos.listM04M05_下料站Z轴[i], PLCAxisPos.dictM04M05_下料站Z轴);
  208. if (i < 9) uiTableLayoutPanel下料站Z轴Pos.Controls.Add(uCAxisPos, 0, i);
  209. else uiTableLayoutPanel下料站Z轴Pos.Controls.Add(uCAxisPos, 1, i - 9);
  210. listAxisPos.Add(uCAxisPos);
  211. uCAxisPos.thMonitor.Start();
  212. }
  213. }
  214. private void LoadAxis()
  215. {
  216. listAxis.Clear();
  217. UCAxis uCAxis取料X轴 = new UCAxis("M04M05", "取料X轴", PLCAxis.listM04M05_轴[0], PLCAxis.dictM04M05_轴);
  218. panel取料X轴.Controls.Clear();
  219. panel取料X轴.Controls.Add(uCAxis取料X轴);
  220. //uCAxis取料X轴.timer1.Enabled = true;
  221. uCAxis取料X轴.thMonitor.Start();
  222. listAxis.Add(uCAxis取料X轴);
  223. UCAxis uCAxis取料Y轴 = new UCAxis("M04M05", "取料Y轴", PLCAxis.listM04M05_轴[1], PLCAxis.dictM04M05_轴);
  224. panel取料Y轴.Controls.Clear();
  225. panel取料Y轴.Controls.Add(uCAxis取料Y轴);
  226. uCAxis取料Y轴.thMonitor.Start();
  227. listAxis.Add(uCAxis取料Y轴);
  228. UCAxis uCAxis装盘X轴 = new UCAxis("M04M05", "装盘X轴", PLCAxis.listM04M05_轴[2], PLCAxis.dictM04M05_轴);
  229. panel装盘X轴.Controls.Clear();
  230. panel装盘X轴.Controls.Add(uCAxis装盘X轴);
  231. uCAxis装盘X轴.thMonitor.Start();
  232. listAxis.Add(uCAxis装盘X轴);
  233. UCAxis uCAxis装盘Y轴 = new UCAxis("M04M05", "装盘Y轴", PLCAxis.listM04M05_轴[3], PLCAxis.dictM04M05_轴);
  234. panel装盘Y轴.Controls.Clear();
  235. panel装盘Y轴.Controls.Add(uCAxis装盘Y轴);
  236. uCAxis装盘Y轴.thMonitor.Start();
  237. listAxis.Add(uCAxis装盘Y轴);
  238. UCAxis uCAxis装盘Z轴 = new UCAxis("M04M05", "装盘Z轴", PLCAxis.listM04M05_轴[4], PLCAxis.dictM04M05_轴);
  239. panel装盘Z轴.Controls.Clear();
  240. panel装盘Z轴.Controls.Add(uCAxis装盘Z轴);
  241. uCAxis装盘Z轴.thMonitor.Start();
  242. listAxis.Add(uCAxis装盘Z轴);
  243. UCAxis uCAxis下料站X轴 = new UCAxis("M04M05", "下料站X轴", PLCAxis.listM04M05_轴[5], PLCAxis.dictM04M05_轴);
  244. panel下料站X轴.Controls.Clear();
  245. panel下料站X轴.Controls.Add(uCAxis下料站X轴);
  246. uCAxis下料站X轴.thMonitor.Start();
  247. listAxis.Add(uCAxis下料站X轴);
  248. UCAxis uCAxis下料站Y轴 = new UCAxis("M04M05", "下料站Y轴", PLCAxis.listM04M05_轴[6], PLCAxis.dictM04M05_轴);
  249. panel下料站Y轴.Controls.Clear();
  250. panel下料站Y轴.Controls.Add(uCAxis下料站Y轴);
  251. uCAxis下料站Y轴.thMonitor.Start();
  252. listAxis.Add(uCAxis下料站Y轴);
  253. UCAxis uCAxis下料站Z轴 = new UCAxis("M04M05", "下料站Z轴", PLCAxis.listM04M05_轴[7], PLCAxis.dictM04M05_轴);
  254. panel下料站Z轴.Controls.Clear();
  255. panel下料站Z轴.Controls.Add(uCAxis下料站Z轴);
  256. uCAxis下料站Z轴.thMonitor.Start();
  257. listAxis.Add(uCAxis下料站Z轴);
  258. }
  259. private void Timer1_Tick(object sender, EventArgs e)
  260. {
  261. }
  262. private void FrmPLC_FormClosing(object sender, FormClosingEventArgs e)
  263. {
  264. timer1.Enabled = false;
  265. foreach (var item in listCylinder)
  266. {
  267. try
  268. {
  269. item.timer1.Enabled = false;
  270. item.thMonitor.Abort();
  271. }
  272. catch (Exception)
  273. {
  274. }
  275. }
  276. foreach (var item in listAxisPos)
  277. {
  278. try
  279. {
  280. item.timer1.Enabled = false;
  281. item.thMonitor.Abort();
  282. }
  283. catch (Exception)
  284. {
  285. }
  286. }
  287. foreach (var item in listAxis)
  288. {
  289. try
  290. {
  291. item.timer1.Enabled = false;
  292. item.thMonitor.Abort();
  293. }
  294. catch (Exception)
  295. {
  296. }
  297. }
  298. }
  299. private void tabControlM04M05_SelectedIndexChanged(object sender, EventArgs e)
  300. {
  301. ReadPLCHelp.iM04M05IOStation = tabControlM04M05.SelectedIndex;
  302. }
  303. private void tabControlAxis_SelectedIndexChanged(object sender, EventArgs e)
  304. {
  305. ReadPLCHelp.iM04M05AxisStation = tabControlAxis.SelectedIndex;
  306. //for (int i = 0; i < listAxis.Count; i++)
  307. //{
  308. // if (i == tabControlAxis.SelectedIndex) listAxis[tabControlAxis.SelectedIndex].Enabled = true;
  309. // else listAxis[tabControlAxis.SelectedIndex].Enabled = false;
  310. //}
  311. }
  312. private void tabControl下料X轴_SelectedIndexChanged(object sender, EventArgs e)
  313. {
  314. switch(tabControl下料X轴.SelectedIndex)
  315. {
  316. case 0:
  317. ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.32", 1, out string str);
  318. break;
  319. case 1:
  320. ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.32", 4, out str);
  321. break;
  322. case 2:
  323. ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.32", 8, out str);
  324. break;
  325. }
  326. }
  327. private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
  328. {
  329. switch (tabControl1.SelectedIndex)
  330. {
  331. case 0:
  332. ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.38", 1, out string str);
  333. break;
  334. case 1:
  335. ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.38", 3, out str);
  336. break;
  337. case 2:
  338. ProgramHelp.Instance.commPLC_M04M05.WriteUShort("DB10.38", 8, out str);
  339. break;
  340. }
  341. }
  342. }
  343. }