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 { 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.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; } /// /// 设置初始值 /// 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; } /// /// 设置DI值 /// private void SetDIValue(string ioName, bool value) { IOs.DI[$"IO.{ioName}"].Value = value; } /// /// 设置DO值 /// private void SetDOValue(string ioName, bool value) { IOs.DO[$"IO.{ioName}"].Value = value; } } }