PlcHelper.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using ACTMULTILib;
  2. using ProjectBase.Data.BaseDAL;
  3. using SIMDP.BLL;
  4. using SIMDP.Device;
  5. using SIMDP.Model;
  6. using SIMDP.Util;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. namespace SIMDP.Project
  10. {
  11. public class PlcHelper
  12. {
  13. public static PlcHelper Instance { get; private set; }
  14. static PlcHelper()
  15. {
  16. Instance = new PlcHelper();
  17. }
  18. public static List<AbstractBaseDevice> plcList = new List<AbstractBaseDevice>();
  19. private List<MoPlcInfo> plcInfoList = new List<MoPlcInfo>();
  20. /// <summary>
  21. /// 连接PLC
  22. /// </summary>
  23. public void Connect()
  24. {
  25. if (plcList.Count > 0)
  26. Close();
  27. plcInfoList = BLLFactory<BlPlcInfo>.Instance.GetAll();
  28. if (plcInfoList.Count <= 0)
  29. return;
  30. foreach (var plcInfo in plcInfoList)
  31. {
  32. List<MoDataPoint> opcPoints = BLLFactory<BlDataPoint>.Instance.GetDataPointsByPlcID(plcInfo.PlcId);
  33. if (opcPoints.Count == 0) continue;
  34. string DeviceType = SysEnvironment.dirPlcLinkType.FirstOrDefault(p => p.Key == plcInfo.LinkType.ToString()).Value;
  35. if (DeviceType == "SiemensPLC")
  36. {
  37. }
  38. else if (DeviceType == "OPCDA")
  39. {
  40. }
  41. else if (DeviceType == "MX-Compoment")
  42. {
  43. MXComponent_FEM plc = new MXComponent_FEM();
  44. plcList.Add(plc);
  45. plc.Start(plcInfo, opcPoints);
  46. }
  47. else if (DeviceType == "ModbusRTU")
  48. {
  49. }
  50. else if (DeviceType == "OPCUA")
  51. {
  52. }
  53. }
  54. }
  55. /// <summary>
  56. /// 断开连接
  57. /// </summary>
  58. public void Close()
  59. {
  60. foreach (var plc in plcList)
  61. {
  62. plc.Stop();
  63. }
  64. plcList.Clear();
  65. }
  66. }
  67. }