2026-06-05 13:44:39 +09:00

280 lines
10 KiB
C#

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
/// <summary>
/// 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
/// </summary>
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,
}
}
}