using Aurora; using Aurora.Util.HislogPlus; using AuroraACS; using AuroraIO; using Hermes; using ILSOS_PrismaticGun.Process; using ILSOS_PrismaticGun.Settings; using LiveChartsCore.SkiaSharpView.WPF; using OpenCvSharp.Dnn; using PAIX_NMF_DEV; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; namespace ILSOS_PrismaticGun.Device.ACS { public class PrismaticGunACSIO : IODevice { private TeachingPositionSetting _teachingSetting; private PrismaticGunACS _acs; public PrismaticGunACSIO(IAuroraEnvironment auroraEnv, string deviceId, bool isSimul, PrismaticGunACS aCS) : base(auroraEnv, deviceId, isSimul, aCS) { _acs = aCS; _teachingSetting = auroraEnv.SettingEntry[SettingIds.TeachingPos] as TeachingPositionSetting; } public int WriteDoBit(OutputIO index, bool bit) => _iOUnit.WriteDoBit((int)index, bit); public bool ReadDiBit(InputIO index) => _iOUnit.ReadDiBit((int)index); public bool JigUp(eStage stage) { if (stage is eStage.A) { return WriteDoBit(OutputIO.A_JIG_UP, true) + WriteDoBit(OutputIO.A_JIG_DOWN, false) == 0; } else { return WriteDoBit(OutputIO.B_JIG_UP, true) + WriteDoBit(OutputIO.B_JIG_DOWN, false) == 0; } } public bool JigDown(eStage stage) { if (stage is eStage.A) { return WriteDoBit(OutputIO.A_JIG_UP, false) + WriteDoBit(OutputIO.A_JIG_DOWN, true) == 0; } else { return WriteDoBit(OutputIO.B_JIG_UP, false) + WriteDoBit(OutputIO.B_JIG_DOWN, true) == 0; } } public bool CheckJigUp(eStage stage) { if (IsSimul) return true; if (stage is eStage.A) { return ReadDiBit(InputIO.A_JIG_UP_SEN) & !ReadDiBit(InputIO.A_JIG_DOWN_SEN); } else { return ReadDiBit(InputIO.B_JIG_UP_SEN) & !ReadDiBit(InputIO.B_JIG_DOWN_SEN); } } public bool CheckJigDown(eStage stage) { if (IsSimul) return true; if (stage is eStage.A) { return !ReadDiBit(InputIO.A_JIG_UP_SEN) & ReadDiBit(InputIO.A_JIG_DOWN_SEN); } else { return !ReadDiBit(InputIO.B_JIG_UP_SEN) & ReadDiBit(InputIO.B_JIG_DOWN_SEN); } } public bool CheckClampComp(eStage stage) { if (IsSimul) return true; var ret = true; if (stage is eStage.A) { ret &= ReadDiBit(InputIO.A_Y_CLAMP_PUSH_SEN); ret &= ReadDiBit(InputIO.A_X_CLAMP_PUSH_SHORT_SEN); ret &= ReadDiBit(InputIO.A_CYLINDER_UP_SEN); } else { ret &= ReadDiBit(InputIO.B_Y_CLAMP_PUSH_SEN); ret &= ReadDiBit(InputIO.B_X_CLAMP_PUSH_SHORT_SEN); ret &= ReadDiBit(InputIO.B_CYLINDER_UP_SEN); } return ret; } public bool CheckUnclampComp(eStage stage) { if (IsSimul) return true; var ret = true; if (stage is eStage.A) { ret &= ReadDiBit(InputIO.A_Y_CLAMP_BACK_SEN); ret &= ReadDiBit(InputIO.A_X_CLAMP_BACK_SHORT_SEN); ret &= ReadDiBit(InputIO.A_CYLINDER_DOWN_SEN); } else { ret &= ReadDiBit(InputIO.B_Y_CLAMP_BACK_SEN); ret &= ReadDiBit(InputIO.B_X_CLAMP_BACK_SHORT_SEN); ret &= ReadDiBit(InputIO.B_CYLINDER_DOWN_SEN); } return ret; } #region Laser IO Synario /// /// OutputIO.TRUMPF_LASER_EXT_ACTIVATION_LASER_ON_REQUEST_LASER >> On /// InputIO.TRUMPF_LASER_READY >> On /// OutputIO.TRUMPF_LASER_PROGRAM_No >> On /// OutputIO.TRUMPF_LASER_PSTART_STATICAL >> On /// InputIO.TRUMPF_LASER_READY >> Off /// InputIO.TRUMPF_LASER_PROG_ACTIVE >> On /// ---------running /// Output.TRUMPF_LASER_PSTART_STATICAL >> Off /// Input.TRUMPF_LASER_PROG_COMPLETED >> Off after 5sec /// public bool SetEnableLaser(bool on) => WriteDoBit(OutputIO.TRUMPF_LASER_EXT_ACTIVATION_LASER_ON_REQUEST_LASER, on) > 0; public bool CheckLaserReady() => ReadDiBit(InputIO.TRUMPF_LASER_READY); public bool SetLaserProgramNo(int no) { int ok = 0; ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_0, (no & (1 << 0)) != 0); ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_1, (no & (1 << 1)) != 0); ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_2, (no & (1 << 2)) != 0); ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_3, (no & (1 << 3)) != 0); ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_4, (no & (1 << 4)) != 0); ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_5, (no & (1 << 5)) != 0); ok += WriteDoBit(OutputIO.TRUMPF_LASER_PROGRAM_NO_BIT_6, (no & (1 << 6)) != 0); return ok == 0; } public bool SetLaserPStart(bool on) => WriteDoBit(OutputIO.TRUMPF_LASER_PSTART_STATICAL, on) > 0; public bool CheckLaserProgramActived() => ReadDiBit(InputIO.TRUMPF_LASER_PROG_ACTIVE); public bool CheckLaserProgramComp() => ReadDiBit(InputIO.TRUMPF_LASER_PROG_COMPLETED); public bool PilotLaser(eStage stage, bool on) => WriteDoBit(OutputIO.TRUMPF_LASER_PILOT_LASER_ON, on) == 0; public bool CheckPilotLaser(eStage stage) => ReadDiBit(InputIO.TRUMPF_LASER_PILOT_LASER_IS_ON); #endregion public enum InputIO { MAIN_LASER_MC_01_ON, MAIN_LASER_MC_02_ON, EMPTY_02, MOTOR_MC_01_ON, MOTOR_MC_02_ON, ELECTRIC_BOX_TEMP_ALARM, TRUMPF_LASER_PROG_COMPLETED, TRUMPF_LASER_READY, TRUMPF_LASER_PROG_ACTIVE, TRUMPF_LASER_PILOT_LASER_IS_ON, TRUMPF_LASER_WARNING_LAMP_IS_ON, EMPTY_11, A_OUTPUT_VISION_READY, A_JUDGE, OPTIC_MODULE_SPARE_01, OPTIC_MODULE_SPARE_02, MAIN_CHILLER_Leak_Sensor, EMPTY_17, B_OUTPUT_VISION_READY, B_JUDGE, OPTIC_MODULE_SPARE_03, OPTIC_MODULE_SPARE_04, LASER_IO_INPUT_01_TO_PLC, LASER_IO_INPUT_02_TO_PLC, LASER_IO_INPUT_03_TO_PLC, LASER_IO_INPUT_04_TO_PLC, FAN_1_ALARM, FAN_2_ALARM, FAN_3_ALARM, FAN_4_ALARM, FAN_5_ALARM, FAN_6_ALARM, A_JIG_UP_SEN, A_JIG_DOWN_SEN, A_X_CLAMP_PUSH_SHORT_SEN, A_X_CLAMP_BACK_SHORT_SEN, A_Y_CLAMP_PUSH_SEN, A_Y_CLAMP_BACK_SEN, A_Z_AXIS_POSITION_SENSOR, EMPTY_41, B_JIG_UP_SEN, B_JIG_DOWN_SEN, B_X_CLAMP_PUSH_SHORT_SEN, B_X_CLAMP_BACK_SHORT_SEN, B_Y_CLAMP_PUSH_SEN, B_Y_CLAMP_BACK_SEN, B_Z_AXIS_POSITION_SENSOR, EMPTY_49, A_CYLINDER_STOPPER_DOWN_SEN, A_CYLINDER_STOPPER_UP_SEN, A_CYLINDER_STOPPER_TOP_PUSH_SEN, A_CYLINDER_STOPPER_TOP_BACK_SEN, A_CYLINDER_STOPPER_BOTTOM_PUSH_SEN, A_CYLINDER_STOPPER_BOTTOM_BACK_SEN, A_CYLINDER_UP_SEN, A_CYLINDER_DOWN_SEN, B_CYLINDER_STOPPER_DOWN_SEN, B_CYLINDER_STOPPER_UP_SEN, B_CYLINDER_STOPPER_TOP_PUSH_SEN, B_CYLINDER_STOPPER_TOP_BACK_SEN, B_CYLINDER_STOPPER_BOTTOM_PUSH_SEN, B_CYLINDER_STOPPER_BOTTOM_BACK_SEN, B_CYLINDER_UP_SEN, B_CYLINDER_DOWN_SEN, } public enum OutputIO { TRUMPF_LASER_EXT_ACTIVATION_LASER_ON_REQUEST_LASER, TRUMPF_LASER_PROGRAM_NO_BIT_0, TRUMPF_LASER_PROGRAM_NO_BIT_1, TRUMPF_LASER_PROGRAM_NO_BIT_2, TRUMPF_LASER_PSTART_STATICAL, TRUMPF_LASER_PROGRAM_NO_BIT_3, TRUMPF_LASER_PROGRAM_NO_BIT_4, TRUMPF_LASER_PILOT_LASER_ON, TRUMPF_LASER_FAULT_EXT, TRUMPF_LASER_PROGRAM_NO_BIT_5, TRUMPF_LASER_PROGRAM_NO_BIT_6, EMPTY_11, A_INPUT_PLC_READY, A_INPUT_WELDING_TRIGGER, A_INPUT_WELDING_STOP, A_INPUT_JUDGE_ACK, MAIN_LASER_ON_LAMP_ON, EMPTY_17, B_INPUT_PLC_READY, B_INPUT_WELDING_TRIGGER, B_INPUT_WELDING_STOP, B_INPUT_JUDGE_ACK, LASER_IO_OUTPUT_01_TO_PLC, LASER_IO_OUTPUT_02_TO_PLC, LASER_IO_OUTPUT_03_TO_PLC, LASER_IO_OUTPUT_04_TO_PLC, EMPTY_26, EMPTY_27, WELDING_X_01_BREAK_ON_RELAY, WELDING_Y_01_BREAK_ON_RELAY, WELDING_X_02_BREAK_ON_RELAY, WELDING_Y_02_BREAK_ON_RELAY, A_JIG_UP, A_JIG_DOWN, A_X_CLAMP_PUSH, A_X_CLAMP_BACK, A_Y_CLAMP_PUSH, A_Y_CLAMP_BACK, EMPTY_38, EMPTY_39, B_JIG_UP, B_JIG_DOWN, B_X_CLAMP_PUSH, B_X_CLAMP_BACK, B_Y_CLAMP_PUSH, B_Y_CLAMP_BACK, EMPTY_46, EMPTY_47, A_SOL_STOPPER_DOWN, A_SOL_STOPPER_UP, A_SOL_STOPPER_TOP_PUSH, A_SOL_STOPPER_TOP_BACK, A_SOL_STOPPER_BOTTOM_PUSH, A_SOL_STOPPER_BOTTOM_BACK, A_SOL_UP, A_SOL_DOWN, B_SOL_STOPPER_DOWN, B_SOL_STOPPER_UP, B_SOL_STOPPER_TOP_PUSH, B_SOL_STOPPER_TOP_BACK, B_SOL_STOPPER_BOTTOM_PUSH, B_SOL_STOPPER_BOTTOM_BACK, B_SOL_UP, B_SOL_DOWN, } } }