280 lines
10 KiB
C#
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,
|
|
}
|
|
}
|
|
}
|