123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- using Aitex.Common.Util;
- using Aitex.Core.RT.DataCenter;
- using Aitex.Core.Util;
- using athosSimulator.Robot;
- using athosSimulator.IO;
- using athosSimulator.LoadPort;
- using athosSimulator.PreAligner;
- using IOs = Aitex.Core.RT.IOCore.IO;
- namespace athosSimulator
- {
- public class SystemSimulator : Singleton<SystemSimulator>
- {
-
- private RorzeRobot751Simulator _robotSimulator;
- private Hirata _lp1Simulator;
- private Hirata _lp2Simulator;
- private Hirata _lp3Simulator;
- private PeriodicJob _task;
- public SimulatorPlc Plc { get; set; }
- public RorzeRobot751Simulator RobotSimulator { get { return _robotSimulator; } }
- public Hirata LP1Simulator { get { return _lp1Simulator; } }
- public Hirata LP2Simulator { get { return _lp2Simulator; } }
- public Hirata LP3Simulator { get { return _lp3Simulator; } }
- public SystemSimulator()
- {
- //Robot
- _robotSimulator = new RorzeRobot751Simulator(10110);
- _robotSimulator.Enable();//打开port
- //LP1
- _lp1Simulator = new Hirata("COM12");
- _lp1Simulator.Enable();//打开port
- //LP2
- _lp2Simulator = new Hirata("COM14");
- _lp2Simulator.Enable();//打开port
- //_lp3Simulator = new Hirata("COM16");
- //_lp3Simulator.Enable();//打开port
- //PA
- //Rorze _rorzePASimulator1 = new Rorze(10118);
- //_rorzePASimulator1.Enable();//打开port
- //Rorze _rorzePASimulator2 = new Rorze(10119);
- //_rorzePASimulator2.Enable();//打开port
- //IO
- Plc = new SimulatorPlc(16731, "Simulator->IO", PathManager.GetCfgDir() + "_ioDefineCardNew.xml", "IO");
- }
- public void Initialize()
- {
- SetDefaultValue();
- Singleton<DataManager>.Instance.Initialize(false);
- _task = new PeriodicJob(50, onMonitor, "Simulator", true);
- }
- private bool onMonitor()
- {
- //控制Flipper
- //控制Flipper TurnOver
- if (IOs.DO["IO.DO_FlipperTurnOverMotorModeSW"].Value)
- {
- if (IOs.DO["IO.DO_FlipperTurnOverStartStop/HOME"].Value &&
- (IOs.DO["IO.DO_FlipperTurnOverSEL0/JOGP"].Value ||
- IOs.DO["IO.DO_FlipperTurnOverSEL1/JOGN"].Value ||
- IOs.DO["IO.DO_FlipperTurnOverSEL2/JOG0"].Value))
- {
- IOs.DI["IO.DI_FlipperTurnOverMotorPosCompleted"].Value = true;
- }
- }
- //控制Flipper Clamp
- if (IOs.DO["IO.DO_FlipperClampMotorModeSW"].Value)
- {
- if (IOs.DO["IO.DO_FlipperClampSTART-STOP/HOME"].Value &&
- (IOs.DO["IO.DO_FlipperClampSEL0/JOGP"].Value ||
- IOs.DO["IO.DO_FlipperClampSEL1/JOGN"].Value ||
- IOs.DO["IO.DO_FlipperClampSEL2/JOG0"].Value))
- {
- IOs.DI["IO.DI_FlipperClampMotorPosCompleted"].Value = true;
- }
- }
- //控制Robot
- //控制LP
- return true;
- }
- /// <summary>
- /// 设置初始值
- /// </summary>
- private void SetDefaultValue()
- {
- IOs.DI["IO.DI_LightCurtainSensor"].Value = true;
- IOs.DI["IO.DI_FlipperTurnOverHorizontalSensor"].Value = true;//运动中为false 正反面时为true
- IOs.DI["IO.DI_FlipperTurnOverOriginSensor"].Value = true;//
- IOs.DI["IO.DI_FlipperTurnOverMotorPosCompleted"].Value = false;
- IOs.DI["IO.DI_FlipperTurnOverMotorAlarm"].Value = false;
- IOs.DI["IO.DI_FlipperEnableToRobot"].Value = true;
- IOs.DI["IO.DI_FlipperClampClosedSensor"].Value = false;//是否闭合
- IOs.DI["IO.DI_FlipperClampOpenedSensor"].Value = true;
- IOs.DI["IO.DI_FlipperClampMotorPosCompleted"].Value = false;//动作是否完成
- IOs.DI["IO.DI_FFUSIGNAL"].Value = true;
- IOs.DI["IO.DI_CDAPressureSW"].Value = true;
- IOs.DI["IO.DI_VACPressureSW"].Value = true;
- IOs.DI["IO.DI_IONCDAPressureSW"].Value = false;
- IOs.DI["IO.DI_IONSIGNAL"].Value = false;
- IOs.DI["IO.DI_SideDoorOpened"].Value = false;//侧门是否打开 一般情况不可以打开
- IOs.DI["IO.DI_OuterSideDoorClosed"].Value = false;//外侧们是否打开
- IOs.DI["IO.DI_RunMode"].Value = true;
- IOs.DI["IO.DI_EFEMPowerON"].Value = true;
- IOs.DI["IO.DI_PreAlignerEnableToRobot"].Value = true;
- IOs.DI["IO.DI_RobotEMSToEFEM"].Value = true;
- IOs.DI["IO.DI_RBNotExtendToPMA"].Value = true;
- IOs.DI["IO.DI_RBNotExtendToPMB"].Value = true;
- IOs.DI["IO.DI_RBNotExtendToLP1"].Value = true;
- IOs.DI["IO.DI_RBNotExtendToLP2"].Value = true;
- IOs.DI["IO.DI_RBNotExtendToLP2"].Value = true;
- IOs.DI["IO.DI_RBNotExtendPreAligner"].Value = true;
- IOs.DI["IO.DI_RBNotExtendFlipper"].Value = true;
- IOs.DI["IO.DI_LP1OperationStatus"].Value = true;
- IOs.DI["IO.DI_LP2OperationStatus"].Value = true;
- IOs.DI["IO.DI_LP1Ready"].Value = true;
- }
- /// <summary>
- /// 设置DI值
- /// </summary>
- private void SetDIValue(string ioName, bool value)
- {
- IOs.DI[$"IO.{ioName}"].Value = value;
- }
- /// <summary>
- /// 设置DO值
- /// </summary>
- private void SetDOValue(string ioName, bool value)
- {
- IOs.DO[$"IO.{ioName}"].Value = value;
- }
- }
- }
|