SystemSimulator.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using Aitex.Common.Util;
  2. using Aitex.Core.RT.DataCenter;
  3. using Aitex.Core.Util;
  4. using athosSimulator.IO;
  5. using athosSimulator.LoadPort;
  6. using athosSimulator.PreAligner;
  7. using IOs = Aitex.Core.RT.IOCore.IO;
  8. namespace athosSimulator
  9. {
  10. public class SystemSimulator : Singleton<SystemSimulator>
  11. {
  12. public SimulatorPlc Plc { get; set; }
  13. private PeriodicJob _task;
  14. public SystemSimulator()
  15. {
  16. //Robot
  17. //RorzeRobot751Simulator robotSimulator = new RorzeRobot751Simulator();
  18. //LP
  19. Hirata _hirataSimulator1 = new Hirata("COM11");
  20. _hirataSimulator1.Enable();//打开端口
  21. Hirata _hirataSimulator2 = new Hirata("COM1");
  22. _hirataSimulator2.Enable();
  23. Hirata _hirataSimulator3 = new Hirata("COM4");
  24. _hirataSimulator3.Enable();
  25. //PA
  26. Rorze _rorzePASimulator1 = new Rorze(10118);
  27. _rorzePASimulator1.Enable();//打开socket口
  28. Rorze _rorzePASimulator2 = new Rorze(10119);
  29. _rorzePASimulator2.Enable();
  30. //IO
  31. Plc = new SimulatorPlc(16731, "Simulator->IO", PathManager.GetCfgDir() + "_ioDefineCardNew.xml", "IO");
  32. }
  33. public void Initialize()
  34. {
  35. SetDefaultValue();
  36. Singleton<DataManager>.Instance.Initialize(false);
  37. _task = new PeriodicJob(50, onMonitor, "Simulator", true);
  38. }
  39. private bool onMonitor()
  40. {
  41. //控制Flipper
  42. //控制Flipper TurnOver
  43. if (IOs.DO["IO.DO_FlipperTurnOverMotorModeSW"].Value)
  44. {
  45. if (IOs.DO["IO.DO_FlipperTurnOverStartStop/HOME"].Value &&
  46. (IOs.DO["IO.DO_FlipperTurnOverSEL0/JOGP"].Value ||
  47. IOs.DO["IO.DO_FlipperTurnOverSEL1/JOGN"].Value ||
  48. IOs.DO["IO.DO_FlipperTurnOverSEL2/JOG0"].Value))
  49. {
  50. IOs.DI["IO.DI_FlipperTurnOverMotorPosCompleted"].Value = true;
  51. }
  52. }
  53. //控制Flipper Clamp
  54. if (IOs.DO["IO.DO_FlipperClampMotorModeSW"].Value)
  55. {
  56. if (IOs.DO["IO.DO_FlipperClampSTART-STOP/HOME"].Value &&
  57. (IOs.DO["IO.DO_FlipperClampSEL0/JOGP"].Value ||
  58. IOs.DO["IO.DO_FlipperClampSEL1/JOGN"].Value ||
  59. IOs.DO["IO.DO_FlipperClampSEL2/JOG0"].Value))
  60. {
  61. IOs.DI["IO.DI_FlipperClampMotorPosCompleted"].Value = true;
  62. }
  63. }
  64. //控制Robot
  65. //控制LP
  66. return true;
  67. }
  68. //设置初始值
  69. private void SetDefaultValue()
  70. {
  71. IOs.DI["IO.DI_LightCurtainSensor"].Value = true;
  72. IOs.DI["IO.DI_FlipperTurnOverHorizontalSensor"].Value = true;//运动中为false 正反面时为true
  73. IOs.DI["IO.DI_FlipperTurnOverOriginSensor"].Value = true;//
  74. IOs.DI["IO.DI_FlipperTurnOverMotorPosCompleted"].Value = false;
  75. IOs.DI["IO.DI_FlipperTurnOverMotorAlarm"].Value = false;
  76. IOs.DI["IO.DI_FlipperEnableToRobot"].Value = true;
  77. IOs.DI["IO.DI_FlipperClampClosedSensor"].Value = false;//是否闭合
  78. IOs.DI["IO.DI_FlipperClampOpenedSensor"].Value = true;
  79. IOs.DI["IO.DI_FlipperClampMotorPosCompleted"].Value = false;//动作是否完成
  80. IOs.DI["IO.DI_FFUSIGNAL"].Value = true;
  81. IOs.DI["IO.DI_CDAPressureSW"].Value = true;
  82. IOs.DI["IO.DI_VACPressureSW"].Value = true;
  83. IOs.DI["IO.DI_IONCDAPressureSW"].Value = false;
  84. IOs.DI["IO.DI_IONSIGNAL"].Value = false;
  85. IOs.DI["IO.DI_SideDoorOpened"].Value = false;//侧门是否打开 一般情况不可以打开
  86. IOs.DI["IO.DI_OuterSideDoorClosed"].Value = false;//外侧们是否打开
  87. IOs.DI["IO.DI_RunMode"].Value = true;
  88. IOs.DI["IO.DI_EFEMPowerON"].Value = true;
  89. IOs.DI["IO.DI_PreAlignerEnableToRobot"].Value = true;
  90. IOs.DI["IO.DI_RobotEMSToEFEM"].Value = true;
  91. IOs.DI["IO.DI_RBNotExtendToPMA"].Value = true;
  92. IOs.DI["IO.DI_RBNotExtendToPMB"].Value = true;
  93. IOs.DI["IO.DI_RBNotExtendToLP1"].Value = true;
  94. IOs.DI["IO.DI_RBNotExtendToLP2"].Value = true;
  95. IOs.DI["IO.DI_RBNotExtendToLP2"].Value = true;
  96. IOs.DI["IO.DI_RBNotExtendPreAligner"].Value = true;
  97. IOs.DI["IO.DI_RBNotExtendFlipper"].Value = true;
  98. IOs.DI["IO.DI_LP1OperationStatus"].Value = true;
  99. IOs.DI["IO.DI_LP2OperationStatus"].Value = true;
  100. }
  101. }
  102. }