MitsubishiServer.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using EZSockets;
  2. using RequestServer.HttpServer;
  3. using ResponseServer.HttpServer;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Net.NetworkInformation;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. namespace HttpServer.mitsubishi
  12. {
  13. class MitsubishiServer
  14. {
  15. private static string ON_LINE_STATE = "在线";
  16. public static Dictionary<string, MitCom> deviceList { get; set; } = new Dictionary<string, MitCom>();
  17. public static ResponseBody requestHttpServer(RequestBody requestBody)
  18. {
  19. string ip = requestBody.serverUrl;
  20. string port = requestBody.port;
  21. string fun = requestBody.type;
  22. ResponseBody responseBody = new ResponseBody();
  23. MitCom mitCom = null;
  24. //先ping
  25. Ping pingSender = new Ping();
  26. PingReply reply = pingSender.Send(requestBody.serverUrl);
  27. if (reply.Status != IPStatus.Success)
  28. {
  29. //responseBody.result = true;
  30. responseBody.msg = "调用失败";
  31. }
  32. else
  33. {
  34. if (deviceList == null || (deviceList.Where(m => m.Key == requestBody.serverUrl).Count() == 0))
  35. {
  36. try
  37. {
  38. mitCom = new MitCom(requestBody.serverUrl);
  39. mitCom.GetSimConnect("M700M", "1", "10", requestBody.serverUrl);
  40. //deviceList.Add(requestBody.serverUrl, mitCom);
  41. responseBody.deviceState = ON_LINE_STATE;
  42. }
  43. catch (Exception e)
  44. {
  45. YG.Log.Instance.WriteLogAdd($"三菱连接结果-ex-->> " + e.Message);
  46. }
  47. Thread.Sleep(100);
  48. }
  49. else
  50. {
  51. mitCom = deviceList.Where(m => m.Key == requestBody.serverUrl).FirstOrDefault().Value;
  52. }
  53. if (mitCom != null)
  54. {
  55. try
  56. {
  57. responseBody.deviceState = ON_LINE_STATE;
  58. if (fun == ActionTypeEnum.Collect.ToString())
  59. {
  60. int pdata;
  61. string loadstr;
  62. double pdspeed, pdspeedFM, pdspeedFS, pdspeedFE, pdspeedFE1;
  63. mitCom.GetSpindleInfo(2, 1, out pdata, out loadstr);//主轴转速
  64. // mitCom.GetSpindleInfo(3, 1, out pdata, out loadstr);//主轴负载
  65. //mitCom.GetSpindleInfo(4, 1, out pdata, out loadstr);//转速
  66. if(pdata != 0)
  67. {
  68. responseBody.actSpindle = (pdata + 300).ToString();
  69. responseBody.spindleMagnification = ((pdata+300) * 100 / 2000).ToString();
  70. }
  71. else
  72. {
  73. responseBody.actSpindle = "0";
  74. responseBody.spindleMagnification = "0";
  75. }
  76. mitCom.GetFeedSpeed(0, out pdspeed, "GetFeedSpeedFA"); //获取指令进给速度
  77. mitCom.GetFeedSpeed(3, out pdspeedFE, "GetFeedSpeedFE");//攻丝(FE);
  78. mitCom.GetFeedSpeed(4, out pdspeedFE1, "GetFeedSpeedFE1");//攻丝(FE);
  79. responseBody.actFeed = pdspeedFE.ToString();
  80. responseBody.feedRateOvr= ((Convert.ToInt32(pdspeedFE) / pdspeed ) * 100).ToString();
  81. string programNumber;
  82. mitCom.GetProgramNumber(out programNumber);
  83. responseBody.mainProg = programNumber;
  84. // int pvValue;
  85. // mitCom.GetParaValue(30, 8002, 1, 1, out pvValue);
  86. //mitCom.GetPLCPar(210, out pvValue);
  87. int runTime;
  88. mitCom.GetRunTime(out runTime);
  89. mitCom.SimClose();
  90. responseBody.powerOnTime = (runTime/60).ToString();
  91. }
  92. }
  93. catch (Exception e)
  94. {
  95. YG.Log.Instance.WriteLogAdd($"三菱连接结果-ex-->> " + e.Message);
  96. deviceList.Remove(requestBody.serverUrl);
  97. }
  98. }
  99. }
  100. return responseBody;
  101. }
  102. }
  103. }