687 lines
25 KiB
C#
687 lines
25 KiB
C#
using AuroraPLC;
|
|
using Hermes;
|
|
using ILSOS_PrismaticGun.Process;
|
|
using OpenCvSharp.Flann;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ILSOS_PrismaticGun.Device
|
|
{
|
|
partial class PLCControllerPrismaticGun
|
|
{
|
|
// 70600 PLC -> PC
|
|
public enum eBitInput : int
|
|
{
|
|
PLC_LIVE_STATUS = 0X00,
|
|
PLC_AUTO_STATUS,
|
|
PLC_AUTO_REQ,
|
|
PLC_MANUAL_REQ,
|
|
PLC_LIGHT_ALARM_STATUS,
|
|
PLC_HEAVY_ALARM_STATUS,
|
|
PLC_DOOR_INTERLOCK,
|
|
PLC_EMO_STATUS,
|
|
PLC_PAGE_CHANGE_REQ,
|
|
PLC_RMS_USED,
|
|
PLC_USE_DISPLACEMENT_SENSOR,
|
|
DRY_RUN,
|
|
PLC_STAGE_A_LOAD_ENABLE,
|
|
PLC_STAGE_A_UNLOAD_ENABLE,
|
|
PLC_STAGE_B_LOAD_ENABLE,
|
|
PLC_STAGE_B_UNLOAD_ENABLE,
|
|
PLC_STAGE_A_LOAD_REQUEST,
|
|
EMPTY_17,
|
|
PLC_STAGE_A_UNLOAD_COMPLETE_ACK,
|
|
PLC_STAGE_B_LOAD_REQUEST,
|
|
EMPTY_20,
|
|
PLC_STAGE_B_UNLOAD_COMPLETE_ACK,
|
|
PLC_STAGE_A_UNLOAD_REQUEST_ACK,
|
|
PLC_STAGE_B_UNLOAD_REQUEST_ACK,
|
|
EMPTY_24,
|
|
EMPTY_25,
|
|
PLC_STAGE_A_ONLY_USE,
|
|
PLC_STAGE_B_ONLY_USE,
|
|
EMPTY_28,
|
|
EMPTY_29,
|
|
PLC_ALARM_RESET,
|
|
EMPTY_31,
|
|
EMPTY_32,
|
|
EMPTY_33,
|
|
EMPTY_34,
|
|
EMPTY_35,
|
|
EMPTY_36,
|
|
PLC_RMS_PARAMETER_READ_REQUEST,
|
|
EMPTY_38,
|
|
EMPTY_39,
|
|
EMPTY_40,
|
|
EMPTY_41,
|
|
PLC_STAGE_A_LOAD_COMPLETE_ACK,
|
|
PLC_STAGE_B_LOAD_COMPLETE_ACK,
|
|
PLC_STAGE_A_INBUFFER_EXIST_FALLET = 50,
|
|
EMPTY_51,
|
|
PLC_STAGE_B_INBUFFER_EXIST_FALLET = 75,
|
|
EMPTY_76,
|
|
EMPTY_99
|
|
}
|
|
|
|
//70100 PC -> PLC
|
|
public enum eBitOutput : int
|
|
{
|
|
PC_LIVE_STATUS = 0X00,
|
|
PC_AUTO_STATUS,
|
|
PC_AUTO_COMPLETE,
|
|
PC_MANUAL_COMPLETE,
|
|
PC_LIGHT_ALARM_STATUS,
|
|
PC_HEAVY_ALARM_STATUS,
|
|
EMPTY_06,
|
|
EMPTY_07,
|
|
PC_PAGE_CHANGE_COMPLETE,
|
|
EMPTY_09,
|
|
EMPTY_10,
|
|
EMPTY_11,
|
|
PC_STAGE_A_LOAD_ENABLE,
|
|
PC_STAGE_A_UNLOAD_ENABLE,
|
|
PC_STAGE_B_LOAD_ENABLE,
|
|
PC_STAGE_B_UNLOAD_ENABLE,
|
|
EMPTY_16,
|
|
PC_STAGE_A_WELDING_BUSY,
|
|
PC_STAGE_A_UNLOAD_COMPLETE,
|
|
PC_STAGE_A_WORK_COMPLETE,
|
|
PC_STAGE_B_WELDING_BUSY,
|
|
PC_STAGE_B_UNLOAD_COMPLETE,
|
|
PC_STAGE_B_WORK_COMPLETE,
|
|
EMPTY_23,
|
|
EMPTY_24,
|
|
EMPTY_25,
|
|
EMPTY_26,
|
|
EMPTY_27,
|
|
EMPTY_28,
|
|
EMPTY_29,
|
|
EMPTY_30,
|
|
PC_STAGE_A_UNLOAD_REQUEST,
|
|
PC_STAGE_B_UNLOAD_REQUEST,
|
|
EMPTY_33,
|
|
EMPTY_34,
|
|
EMPTY_35,
|
|
EMPTY_36,
|
|
PC_RMS_PARAMETER_READ_REQUEST_ACK,
|
|
EMPTY_38,
|
|
EMPTY_39,
|
|
EMPTY_40,
|
|
EMPTY_41,
|
|
PC_STAGE_A_LOAD_REQUEST_ACK,
|
|
PC_STAGE_B_LOAD_REQUEST_ACK,
|
|
PC_STAGE_A_LOAD_COMPLETE,
|
|
PC_STAGE_B_LOAD_COMPLETE,
|
|
EMPTY_46,
|
|
EMPTY_47,
|
|
EMPTY_48,
|
|
EMPTY_49,
|
|
EMPTY_50,
|
|
EMPTY_51,
|
|
EMPTY_52,
|
|
EMPTY_53,
|
|
EMPTY_54,
|
|
EMPTY_55,
|
|
EMPTY_56,
|
|
EMPTY_57,
|
|
EMPTY_58,
|
|
EMPTY_59,
|
|
EMPTY_60,
|
|
EMPTY_61,
|
|
EMPTY_62,
|
|
EMPTY_63,
|
|
EMPTY_64,
|
|
EMPTY_65,
|
|
EMPTY_66,
|
|
EMPTY_67,
|
|
EMPTY_68,
|
|
EMPTY_69,
|
|
EMPTY_70,
|
|
EMPTY_71,
|
|
EMPTY_72,
|
|
EMPTY_73,
|
|
EMPTY_74,
|
|
EMPTY_75,
|
|
EMPTY_76,
|
|
EMPTY_77,
|
|
EMPTY_78,
|
|
EMPTY_79,
|
|
EMPTY_80,
|
|
EMPTY_81,
|
|
EMPTY_82,
|
|
EMPTY_83,
|
|
EMPTY_84,
|
|
EMPTY_85,
|
|
EMPTY_86,
|
|
EMPTY_87,
|
|
EMPTY_88,
|
|
EMPTY_89,
|
|
EMPTY_90,
|
|
EMPTY_91,
|
|
EMPTY_92,
|
|
EMPTY_93,
|
|
EMPTY_94,
|
|
EMPTY_95,
|
|
EMPTY_96,
|
|
EMPTY_97,
|
|
EMPTY_98,
|
|
EMPTY_99,
|
|
}
|
|
|
|
//70600 PLC -> PC
|
|
public enum eWordInput : int
|
|
{
|
|
PLC_ERROR_CODE = 0X00,
|
|
PLC_PAGE_NO,
|
|
PLC_STEP_NO,
|
|
EMPTY_03,
|
|
EMPTY_04,
|
|
EMPTY_05,
|
|
EMPTY_06,
|
|
EMPTY_07,
|
|
EMPTY_08,
|
|
EMPTY_09,
|
|
USED_BITMASKING_EXIST_PALLET_IN_BUFFER,
|
|
USED_BITMASKING_EXIST_PALLET,
|
|
USED_BITMASKING_EXIST_PALLET_OUT_BUFFER,
|
|
EMPTY_13,
|
|
EMPTY_14,
|
|
EMPTY_15,
|
|
EMPTY_16,
|
|
EMPTY_17,
|
|
EMPTY_18,
|
|
EMPTY_19,
|
|
PLC_CELL_ID_STAGE_A_01,
|
|
PLC_CELL_ID_STAGE_A_02,
|
|
PLC_CELL_ID_STAGE_A_03,
|
|
PLC_CELL_ID_STAGE_A_04,
|
|
PLC_CELL_ID_STAGE_A_05,
|
|
PLC_CELL_ID_STAGE_B_01,
|
|
PLC_CELL_ID_STAGE_B_02,
|
|
PLC_CELL_ID_STAGE_B_03,
|
|
PLC_CELL_ID_STAGE_B_04,
|
|
PLC_CELL_ID_STAGE_B_05,
|
|
PLC_LOT_ID_01,
|
|
PLC_LOT_ID_02,
|
|
PLC_LOT_ID_03,
|
|
PLC_LOT_ID_04,
|
|
PLC_LOT_ID_05,
|
|
PLC_LOT_ID_06,
|
|
PLC_LOT_ID_07,
|
|
PLC_LOT_ID_08,
|
|
EMPTY_38,
|
|
EMPTY_39,
|
|
EMPTY_40,
|
|
EMPTY_41,
|
|
EMPTY_42,
|
|
EMPTY_43,
|
|
EMPTY_44,
|
|
EMPTY_45,
|
|
EMPTY_46,
|
|
EMPTY_47,
|
|
EMPTY_48,
|
|
PLC_STAGE_A_CELL_NO,
|
|
USED_BITMASKING_CELL_EXIST_STAGE_A,
|
|
USED_BITMASKING_RECV_NG_STAGE_A,
|
|
USED_REWORK_STAGE_A, // rework : 1(rework) / 0(none)
|
|
USED_PROCESS_COMPLETE_STAGE_A, // processComplete : 1(용접하지 않고 배출) : 0(용접 후 배출)
|
|
CELL_DATA_04,
|
|
CELL_DATA_05,
|
|
CELL_DATA_06,
|
|
CELL_DATA_07,
|
|
CELL_DATA_08,
|
|
CELL_DATA_09,
|
|
STAGE_A_MFC_N2,
|
|
STAGE_A_HEIGHT_REF1,
|
|
STAGE_A_HEIGHT_REF2,
|
|
STAGE_A_HEIGHT_REF3,
|
|
STAGE_A_HEIGHT_REF4,
|
|
STAGE_A_HEIGHT_REF5,
|
|
STAGE_A_HEIGHT1,
|
|
STAGE_A_HEIGHT2,
|
|
STAGE_A_HEIGHT3,
|
|
STAGE_A_HEIGHT4,
|
|
STAGE_A_HEIGHT5,
|
|
CELL_DATA_21,
|
|
CELL_DATA_22,
|
|
CELL_DATA_23,
|
|
PLC_STAGE_B_CELL_NO,
|
|
USED_BITMASKING_CELL_EXIST_STAGE_B,
|
|
USED_BITMASKING_RECV_NG_STAGE_B,
|
|
USED_REWORK_STAGE_B, // rework : 1(rework) / 0(none)
|
|
USED_PROCESS_COMPLETE_STAGE_B, // processComplete : 1(용접하지 않고 배출) : 0(용접 후 배출)
|
|
CELL_DATA_29,
|
|
CELL_DATA_30,
|
|
CELL_DATA_31,
|
|
CELL_DATA_32,
|
|
CELL_DATA_33,
|
|
CELL_DATA_34,
|
|
STAGE_B_MFC_N2,
|
|
STAGE_B_HEIGHT_REF1,
|
|
STAGE_B_HEIGHT_REF2,
|
|
STAGE_B_HEIGHT_REF3,
|
|
STAGE_B_HEIGHT_REF4,
|
|
STAGE_B_HEIGHT_REF5,
|
|
STAGE_B_HEIGHT1,
|
|
STAGE_B_HEIGHT2,
|
|
STAGE_B_HEIGHT3,
|
|
STAGE_B_HEIGHT4,
|
|
STAGE_B_HEIGHT5,
|
|
CELL_DATA_46,
|
|
CELL_DATA_47,
|
|
CELL_DATA_48,
|
|
CELL_DATA_49,
|
|
}
|
|
|
|
//70100 PC -> PLC
|
|
public enum eWordOutput : int
|
|
{
|
|
PC_ERROR_CODE = 0X00,
|
|
PC_PAGE_NO,
|
|
EMPTY_02,
|
|
EMPTY_03,
|
|
EMPTY_04,
|
|
EMPTY_05,
|
|
EMPTY_06,
|
|
EMPTY_07,
|
|
PC_WELD_OFFSET_X,
|
|
EMPTY_09,
|
|
PC_WELD_OFFSET_Y,
|
|
EMPTY_11,
|
|
PC_DISPLACEMENT1_MEASUREMENT,
|
|
EMPTY_13,
|
|
PC_DISPLACEMENT2_MEASUREMENT = 0X0E,
|
|
EMPTY_15,
|
|
EMPTY_16,
|
|
EMPTY_17,
|
|
EMPTY_18,
|
|
EMPTY_19,
|
|
PC_CELL_ID_STAGE_A_01,
|
|
PC_CELL_ID_STAGE_A_02,
|
|
PC_CELL_ID_STAGE_A_03,
|
|
PC_CELL_ID_STAGE_A_04,
|
|
PC_CELL_ID_STAGE_A_05,
|
|
PC_CELL_ID_STAGE_B_01,
|
|
PC_CELL_ID_STAGE_B_02,
|
|
PC_CELL_ID_STAGE_B_03,
|
|
PC_CELL_ID_STAGE_B_04,
|
|
PC_CELL_ID_STAGE_B_05,
|
|
PC_LOT_ID_01,
|
|
PC_LOT_ID_02,
|
|
PC_LOT_ID_03,
|
|
PC_LOT_ID_04,
|
|
PC_LOT_ID_05,
|
|
PC_LOT_ID_06,
|
|
PC_LOT_ID_07,
|
|
PC_LOT_ID_08,
|
|
EMPTY_38,
|
|
EMPTY_39,
|
|
EMPTY_40,
|
|
EMPTY_41,
|
|
EMPTY_42,
|
|
EMPTY_43,
|
|
EMPTY_44,
|
|
EMPTY_45,
|
|
EMPTY_46,
|
|
EMPTY_47,
|
|
EMPTY_48,
|
|
STAGE_A_CELL_NO,
|
|
//Stage A 영역
|
|
USED_BITMASKING_WORK_COMPLETE_STAGE_A, // WriteLaserWorkComplete
|
|
USED_BITMASKING_CELL_NG_STAGE_A, // WriteCellJudgeNG
|
|
CELL_DATA_02,
|
|
CELL_DATA_03,
|
|
CELL_DATA_04,
|
|
CELL_DATA_05,
|
|
CELL_DATA_06,
|
|
CELL_DATA_07,
|
|
CELL_DATA_08,
|
|
CELL_DATA_09,
|
|
USED_STAGE_A_N2_FLOWRATE,
|
|
USED_STAGE_A_DISPLACEMENT_REF1,
|
|
USED_STAGE_A_DISPLACEMENT_REF2,
|
|
USED_STAGE_A_DISPLACEMENT_REF3,
|
|
USED_STAGE_A_DISPLACEMENT_REF4,
|
|
USED_STAGE_A_DISPLACEMENT_REF5,
|
|
USED_STAGE_A_DISPLACEMENT_1,
|
|
USED_STAGE_A_DISPLACEMENT_2,
|
|
USED_STAGE_A_DISPLACEMENT_3,
|
|
USED_STAGE_A_DISPLACEMENT_4,
|
|
USED_STAGE_A_DISPLACEMENT_5,
|
|
CELL_DATA_21,
|
|
CELL_DATA_22,
|
|
CELL_DATA_23,
|
|
STAGE_B_CELL_NO,
|
|
//Stage B 영역
|
|
USED_BITMASKING_WORK_COMPLETE_STAGE_B, // WriteLaserWorkComplete
|
|
USED_BITMASKING_CELL_NG_STAGE_B, // WriteCellJudgeNG
|
|
CELL_DATA_27,
|
|
CELL_DATA_28,
|
|
CELL_DATA_29,
|
|
CELL_DATA_30,
|
|
CELL_DATA_31,
|
|
CELL_DATA_32,
|
|
CELL_DATA_33,
|
|
CELL_DATA_34,
|
|
USED_STAGE_B_N2_FLOWRATE,
|
|
USED_STAGE_B_DISPLACEMENT_REF1,
|
|
USED_STAGE_B_DISPLACEMENT_REF2,
|
|
USED_STAGE_B_DISPLACEMENT_REF3,
|
|
USED_STAGE_B_DISPLACEMENT_REF4,
|
|
USED_STAGE_B_DISPLACEMENT_REF5,
|
|
USED_STAGE_B_DISPLACEMENT_1,
|
|
USED_STAGE_B_DISPLACEMENT_2,
|
|
USED_STAGE_B_DISPLACEMENT_3,
|
|
USED_STAGE_B_DISPLACEMENT_4,
|
|
USED_STAGE_B_DISPLACEMENT_5,
|
|
CELL_DATA_46,
|
|
CELL_DATA_47,
|
|
CELL_DATA_48,
|
|
CELL_DATA_49,
|
|
|
|
//Stage A 영역
|
|
USED_STAGE_A_WELDING_N2_PURGE_FLOW = 100,
|
|
USED_STAGE_A_WELDING_RECIPE_NO = 101,
|
|
USED_STAGE_A_ZAXIS_FOCUS_DISTANCE_2W = 102,
|
|
USED_STAGE_A_LINE_SPEED_2W = 104,
|
|
USED_STAGE_A_CORNER_SPEED_2W = 106,
|
|
USED_STAGE_A_LINE_POWER_CORE_2W = 108,
|
|
USED_STAGE_A_LINE_POWER_RING_2W = 110,
|
|
USED_STAGE_A_CORNER_POWER_CORE_2W = 112,
|
|
USED_STAGE_A_CORNER_POWER_RING_2W = 114,
|
|
USED_STAGE_A_RAMPING_POWER_START = 116,
|
|
USED_STAGE_A_RAMPING_LENGTH_START_2W = 118,
|
|
USED_STAGE_A_RAMPING_POWER_OVERPATH = 120,
|
|
USED_STAGE_A_RAMPING_LENGTH_OVERPATH_2W = 122,
|
|
|
|
//FDC
|
|
USED_STAGE_A_FDC_LASER_POWER = 130,
|
|
USED_STAGE_A_FDC_X_VELOCITY = 131,
|
|
USED_STAGE_A_FDC_Y_VELOCITY = 132,
|
|
USED_STAGE_A_FDC_X_LOADFACTOR = 133,
|
|
USED_STAGE_A_FDC_Y_LOADFACTOR = 134,
|
|
|
|
//Stage B 영역
|
|
USED_STAGE_B_WELDING_N2_PURGE_FLOW = 150,
|
|
USED_STAGE_B_WELDING_RECIPE_NO = 151,
|
|
USED_STAGE_B_ZAXIS_FOCUS_DISTANCE_2W = 152,
|
|
USED_STAGE_B_LINE_SPEED_2W = 154,
|
|
USED_STAGE_B_CORNER_SPEED_2W = 156,
|
|
USED_STAGE_B_LINE_POWER_CORE_2W = 158,
|
|
USED_STAGE_B_LINE_POWER_RING_2W = 160,
|
|
USED_STAGE_B_CORNER_POWER_CORE_2W = 162,
|
|
USED_STAGE_B_CORNER_POWER_RING_2W = 164,
|
|
USED_STAGE_B_RAMPING_POWER_START = 166,
|
|
USED_STAGE_B_RAMPING_LENGTH_START_2W = 168,
|
|
USED_STAGE_B_RAMPING_POWER_OVERPATH = 170,
|
|
USED_STAGE_B_RAMPING_LENGTH_OVERPATH_2W = 172,
|
|
|
|
//FDC
|
|
USED_STAGE_B_FDC_LASER_POWER = 180,
|
|
USED_STAGE_B_FDC_X_VELOCITY = 181,
|
|
USED_STAGE_B_FDC_Y_VELOCITY = 182,
|
|
USED_STAGE_B_FDC_X_LOADFACTOR = 183,
|
|
USED_STAGE_B_FDC_Y_LOADFACTOR = 184,
|
|
}
|
|
|
|
/// <summary>
|
|
/// D70650.0 Cell [A] Exist -> 1: 용접 가능 (공운전 모드 1이어도 출사 x)
|
|
/// D70675.0 Cell [B] Exist -> 1: 용접 가능(공운전 모드 1이어도 출사 x)
|
|
///
|
|
/// ### 250604 추가
|
|
/// D70605.0 I_Lift_ZPallet Exist
|
|
/// D70605.1 InBufferPallet Exist
|
|
/// D70605.2 Loader Pallet Exist
|
|
/// D70605.3 CapPressPallet Exist
|
|
/// D70606.0 Pre_WeldPallet Exist
|
|
/// D70606.1 Buffer_1Pallet Exist
|
|
/// D70606.2 M_In_SHTPallet Exist
|
|
/// D70606.3
|
|
/// D70607.0 M_OutSHTPallet Exist
|
|
/// D70607.1 3D_InpsXPallet Exist
|
|
/// D70607.2 3D_InpsYPallet Exist
|
|
/// D70607.3 Hi_inspcPallet Exist
|
|
/// D70608.0 X-ray_1 Pallet Exist
|
|
/// D70608.1 X-ray_2 Pallet Exist
|
|
/// D70608.2 Buffer_2Pallet Exist
|
|
/// D70608.3 O_Lift_ZPallet Exist
|
|
/// D70609.0
|
|
/// D70609.1
|
|
/// D70609.2
|
|
/// D70609.3
|
|
/// D70610.0 InGrip_APallet Exist
|
|
/// D70610.1 InGrip_BPallet Exist
|
|
/// D70610.2 InBuff_APallet Exist
|
|
/// D70610.3 InBuff_BPallet Exist
|
|
/// D70611.0 MainWd_APallet Exist
|
|
/// D70611.1 MainWd_BPallet Exist
|
|
/// D70611.2 OTGrip_APallet Exist
|
|
/// D70611.3 OTGrip_BPallet Exist
|
|
/// D70612.0 OTBuff_APallet Exist
|
|
/// D70612.1 OTBuff_BPallet Exist
|
|
///
|
|
/// D70156.2 Cell [A] Laser Work Complete(패스시에는On) 1: Comp 0: 미완료
|
|
/// D70163.0 Cell [A] Laser NG (OK, 패스시에는 OFF) 1: NG 0: OK
|
|
/// D70163.3 Cell [B] Laser Work Complete(패스시에는 상시 On) 1: Comp 0: 미완료
|
|
/// D70178.1 Cell [B] Laser NG (OK, 패스시에는 OFF) 1: NG 0: OK
|
|
/// </summary>
|
|
///
|
|
|
|
#region Read Info From PLC
|
|
public int CellJudgeNG(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWord(eWordInput.USED_BITMASKING_RECV_NG_STAGE_A).data; // 651
|
|
else
|
|
return ReadWord(eWordInput.USED_BITMASKING_RECV_NG_STAGE_B).data; // 676
|
|
|
|
}
|
|
public bool ExistCell(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_CELL_EXIST_STAGE_A, 0)); // 650
|
|
else
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_CELL_EXIST_STAGE_B, 0)); // 675
|
|
}
|
|
public bool ReworkCell(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWordToBit((eWordInput.USED_REWORK_STAGE_A, 0)); // 652
|
|
else
|
|
return ReadWordToBit((eWordInput.USED_REWORK_STAGE_B, 0)); // 677
|
|
}
|
|
public bool AlreadyWeldingCell(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWordToBit((eWordInput.USED_PROCESS_COMPLETE_STAGE_A, 0)); // 653
|
|
else
|
|
return ReadWordToBit((eWordInput.USED_PROCESS_COMPLETE_STAGE_B, 0)); // 678
|
|
}
|
|
public bool ExistPallet(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_EXIST_PALLET, 0));
|
|
else
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_EXIST_PALLET, 1));
|
|
}
|
|
public bool ExistPalletInBuffer(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_EXIST_PALLET_IN_BUFFER, 2));
|
|
else
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_EXIST_PALLET_IN_BUFFER, 3));
|
|
}
|
|
public bool ExistRealPalletInBuffer(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadBit(eBitInput.PLC_STAGE_A_INBUFFER_EXIST_FALLET).data;
|
|
else
|
|
return ReadBit(eBitInput.PLC_STAGE_B_INBUFFER_EXIST_FALLET).data;
|
|
}
|
|
public bool ExistPalletOutBuffer(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_EXIST_PALLET_OUT_BUFFER, 0));
|
|
else
|
|
return ReadWordToBit((eWordInput.USED_BITMASKING_EXIST_PALLET_OUT_BUFFER, 1));
|
|
}
|
|
#endregion
|
|
|
|
#region Write Cell Info To PLC
|
|
// 작업을 완료했다는 의미로 사용하는 데이터
|
|
public bool WriteLaserWorkComplete(eStage stage, bool complete)
|
|
{
|
|
if (stage is eStage.A) return WriteWordToBit((eWordOutput.USED_BITMASKING_WORK_COMPLETE_STAGE_A, 0), complete) == E1.OK; // 156.2 >> 150.0
|
|
else return WriteWordToBit((eWordOutput.USED_BITMASKING_WORK_COMPLETE_STAGE_B, 0), complete) == E1.OK; // 163.3 >> 175.0
|
|
}
|
|
public bool WriteCellJudgeNG(eStage stage, int judge)
|
|
{
|
|
if (stage is eStage.A) return WriteWord(eWordOutput.USED_BITMASKING_CELL_NG_STAGE_A, (short)judge) == E1.OK; //163.0 >> 151.0 NG=1
|
|
else return WriteWord(eWordOutput.USED_BITMASKING_CELL_NG_STAGE_B, (short)judge) == E1.OK; //178.1 >> 176.0 NG=1
|
|
}
|
|
|
|
//internal void WriteWeldingN2PurgeFlow(eStage stage, double weldingN2PurgeFlow)
|
|
//{
|
|
// if (stage is eStage.A) WriteWord(eWordOutput.USED_STAGE_B_WELDING_N2_PURGE_FLOW, (short)(weldingN2PurgeFlow * Math.Pow(10, 2)));
|
|
// else WriteWord(eWordOutput.USED_STAGE_B_WELDING_N2_PURGE_FLOW, (short)(weldingN2PurgeFlow * Math.Pow(10, 2)));
|
|
//}
|
|
|
|
//internal void WriteZAxisFocusDistance(eStage stage, double zAxisFocusDistance)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_ZAXIS_FOCUS_DISTANCE_2W, (int)(zAxisFocusDistance * Math.Pow(10, 3)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_A_ZAXIS_FOCUS_DISTANCE_2W, (int)(zAxisFocusDistance * Math.Pow(10, 3)));
|
|
//}
|
|
|
|
//internal void WriteLineSpeed(eStage stage, double lineSpeed)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_LINE_SPEED_2W, (int)(lineSpeed * Math.Pow(10, 1)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_LINE_SPEED_2W, (int)(lineSpeed * Math.Pow(10, 1)));
|
|
//}
|
|
|
|
//internal void WriteCornerSpeed(eStage stage, double cornerSpeed)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_CORNER_SPEED_2W, (int)(cornerSpeed * Math.Pow(10, 1)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_CORNER_SPEED_2W, (int)(cornerSpeed * Math.Pow(10, 1)));
|
|
//}
|
|
|
|
|
|
//internal void WriteLinePowerCore(eStage stage, double linePowerCore)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_LINE_POWER_CORE_2W, (int)(linePowerCore * Math.Pow(10, 2)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_LINE_POWER_CORE_2W, (int)(linePowerCore * Math.Pow(10, 2)));
|
|
//}
|
|
|
|
//internal void WriteLinePowerRing(eStage stage, double linePowerRing)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_LINE_POWER_RING_2W, (int)(linePowerRing * Math.Pow(10, 2)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_LINE_POWER_RING_2W, (int)(linePowerRing * Math.Pow(10, 2)));
|
|
//}
|
|
|
|
//internal void WriteCornerPowerCore(eStage stage, double cornerPowerCore)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_CORNER_POWER_CORE_2W, (int)(cornerPowerCore * Math.Pow(10, 2)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_CORNER_POWER_CORE_2W, (int)(cornerPowerCore * Math.Pow(10, 2)));
|
|
//}
|
|
//internal void WriteCornerPowerRing(eStage stage, double cornerPowerRing)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_CORNER_POWER_RING_2W, (int)(cornerPowerRing * Math.Pow(10, 2)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_CORNER_POWER_RING_2W, (int)(cornerPowerRing * Math.Pow(10, 2)));
|
|
//}
|
|
|
|
//internal void WriteRampingPowerStart(eStage stage, int rampingPowerStart)
|
|
//{
|
|
// if (stage is eStage.A) WriteWord(eWordOutput.USED_STAGE_B_RAMPING_POWER_START, (short)(rampingPowerStart));
|
|
// else WriteWord(eWordOutput.USED_STAGE_B_RAMPING_POWER_START, (short)(rampingPowerStart));
|
|
//}
|
|
//internal void WriteRampingLengthStart(eStage stage, double rampingLengthStart)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_RAMPING_LENGTH_START_2W, (int)(rampingLengthStart * Math.Pow(10, 3)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_RAMPING_LENGTH_START_2W, (int)(rampingLengthStart * Math.Pow(10, 3)));
|
|
//}
|
|
|
|
//internal void WriteRampingPowerOverPath(eStage stage, int rampingPowerOverPath)
|
|
//{
|
|
// if (stage is eStage.A) WriteWord(eWordOutput.USED_STAGE_A_RAMPING_POWER_OVERPATH, (short)(rampingPowerOverPath));
|
|
// else WriteWord(eWordOutput.USED_STAGE_B_RAMPING_POWER_OVERPATH, (short)(rampingPowerOverPath));
|
|
//}
|
|
|
|
//internal void WriteRampingLengthOverPath(eStage stage, double rampingLengthOverPath)
|
|
//{
|
|
// if (stage is eStage.A) WriteDWord(eWordOutput.USED_STAGE_A_RAMPING_LENGTH_OVERPATH_2W, (int)(rampingLengthOverPath * Math.Pow(10, 3)));
|
|
// else WriteDWord(eWordOutput.USED_STAGE_B_RAMPING_LENGTH_OVERPATH_2W, (int)(rampingLengthOverPath * Math.Pow(10, 3)));
|
|
//}
|
|
|
|
internal int CellNo(eStage stage)
|
|
{
|
|
if (stage is eStage.A)
|
|
return ReadWord(eWordInput.PLC_STAGE_A_CELL_NO).data;
|
|
else
|
|
return ReadWord(eWordInput.PLC_STAGE_B_CELL_NO).data;
|
|
}
|
|
|
|
internal void WriteCellNo(eStage stage, int CellNo)
|
|
{
|
|
if (stage is eStage.A) WriteWord(eWordOutput.STAGE_A_CELL_NO, (short)CellNo);
|
|
else WriteWord(eWordOutput.STAGE_B_CELL_NO, (short)CellNo);
|
|
}
|
|
|
|
internal string CellId(eStage stage)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
if (stage is eStage.A){
|
|
var item = ReadWords(eWordInput.PLC_CELL_ID_STAGE_A_01, eWordInput.PLC_CELL_ID_STAGE_A_05);
|
|
foreach(var word in item.datas)
|
|
sb.Append(Conv_ReadData(PLCBase.eDataType.Type_Ascii, word, 0, false, false));
|
|
}
|
|
else{
|
|
var item = ReadWords(eWordInput.PLC_CELL_ID_STAGE_B_01, eWordInput.PLC_CELL_ID_STAGE_B_05);
|
|
foreach (var word in item.datas)
|
|
sb.Append(Conv_ReadData(PLCBase.eDataType.Type_Ascii, word, 0, false, false));
|
|
}
|
|
|
|
return sb.ToString();
|
|
}
|
|
|
|
internal void WriteCellId(eStage stage, string cellId)
|
|
{
|
|
// PC_CELL_ID_STAGE_A_01~10 : 10 words = 20 chars (1 word = 2 ASCII chars)
|
|
// 문자열이 짧으면 WriteWordBlockForAscii 내부에서 \0으로 자동 패딩됨
|
|
var strData = new[] { cellId };
|
|
if (stage is eStage.A)
|
|
base.WriteWordBlockForAscii(
|
|
(int)eWordOutput.PC_CELL_ID_STAGE_A_01,
|
|
eWordOutput.PC_CELL_ID_STAGE_A_05 - eWordOutput.PC_CELL_ID_STAGE_A_01 + 1,
|
|
ref strData, ePLCDevice.D);
|
|
else
|
|
base.WriteWordBlockForAscii(
|
|
(int)eWordOutput.PC_CELL_ID_STAGE_B_01,
|
|
eWordOutput.PC_CELL_ID_STAGE_B_05 - eWordOutput.PC_CELL_ID_STAGE_B_01 + 1,
|
|
ref strData, ePLCDevice.D);
|
|
}
|
|
|
|
internal string LotId()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
var item = ReadWords(eWordInput.PLC_LOT_ID_01, eWordInput.PLC_LOT_ID_08);
|
|
foreach (var word in item.datas)
|
|
sb.Append(Conv_ReadData(PLCBase.eDataType.Type_Ascii, word, 0, false, false));
|
|
|
|
return sb.ToString();
|
|
}
|
|
internal void WriteLotId(string LotId)
|
|
{
|
|
// PC_CELL_ID_STAGE_A_01~10 : 10 words = 20 chars (1 word = 2 ASCII chars)
|
|
// 문자열이 짧으면 WriteWordBlockForAscii 내부에서 \0으로 자동 패딩됨
|
|
var strData = new[] { LotId };
|
|
base.WriteWordBlockForAscii(
|
|
(int)eWordOutput.PC_LOT_ID_01,
|
|
eWordOutput.PC_LOT_ID_08 - eWordOutput.PC_LOT_ID_01 + 1,
|
|
ref strData, ePLCDevice.D);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|