BOOK-IQ4TD9B9LB\DIT-930
2023-05-15 f5120e92b525474f6b4e50130797946986c28eed
Version 001.000.000
679개 파일 추가됨
1개 파일 변경됨
140139 ■■■■■ 파일 변경됨
README.md 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Alarms.csv 2001 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/MotorData/MotorData.xml 159 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/MotorData/MotorData_old.xml 69 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Parameter/InterlockParameter.xml 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Parameter/ModeParameter.xml 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Parameter/SettingParameter.xml 27 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Parameter/SystemParameter.xml 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Parameter/UserParameter.xml 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Config/Setting/Scanner.xml 23 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/AttenuatorCal.csv 23 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.xml 93 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Equipment/EquipmentInfo.xml 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/FoupRecipe/TEST.xml 31 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/123.xml 4987 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/180180.xml 10298 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/4INCH.xml 16246 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/AA.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/AAA.xml 1843 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/BB.xml 2894 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/TE.xml 4887 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/TEST.xml 10298 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Recipe/한글.xml 10607 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/User/1.xml 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/User/DIT.xml 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/User/Operator.xml 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A1.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A10.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A11.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A12.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A13.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A14.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A15.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A16.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A17.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A18.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A19.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A2.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A20.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A21.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A22.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A23.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A24.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A25.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A3.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A4.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A5.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A6.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A7.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A8.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/A9.xml 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B1.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B10.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B11.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B12.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B13.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B14.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B15.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B16.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B17.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B18.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B19.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B2.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B20.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B21.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B22.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B23.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B24.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B25.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B3.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B4.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B5.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B6.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B7.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B8.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/B9.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Chamber.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_1.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_10.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_11.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_12.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_13.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_14.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_15.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_16.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_17.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_18.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_19.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_2.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_20.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_21.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_22.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_23.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_24.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_25.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_3.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_4.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_5.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_6.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_7.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_8.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port1_9.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_1.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_10.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_11.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_12.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_13.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_14.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_15.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_16.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_17.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_18.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_19.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_2.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_20.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_21.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_22.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_23.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_24.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_25.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_3.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_4.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_5.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_6.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_7.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_8.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Port2_9.xml 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/PreAligner.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Info/Wafer/Robot.xml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_230508/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back1213/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Back230214/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_Usb/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230220/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back230330/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT/Program_back232023/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/.vs/SA_LTT_UI/v14/.suo 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/.vs/SA_LTT_UI/v15/.suo 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/db.lock 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-shm 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-wal 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Alarm/Alarm.cs 176 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Alarm/AlarmCode.cs 2023 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Alarm/AlarmManager.cs 271 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Base/ComPort.cs 385 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Base/SequenceTimer.cs 64 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Base/SocketClient.cs 323 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Base/XmlManager.cs 131 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/OphirLMMeasurement.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Dll/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Equipment.cs 1382 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalData.cs 68 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.cs 188 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/EquipmentInfo/EquipmentInfo.cs 63 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/FoupInfo/Foup.cs 34 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipe.cs 53 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipeManager.cs 121 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/RecipeInfo/Recipe.cs 758 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/RecipeInfo/RecipeManager.cs 121 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/UserInfo/User.cs 80 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/UserInfo/UserManager.cs 154 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfo.cs 58 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfoManager.cs 243 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Log/EquipmentLogManager.cs 122 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Log/LogCreater.cs 64 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/MessageBox.Designer.cs 76 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/MessageBox.cs 37 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/MessageBox.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Attenuator.cs 472 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Chamber.cs 425 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Chiller.cs 1784 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Crevis.cs 372 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/E5CC.cs 222 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/FFU.cs 451 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/GR200.cs 173 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/ModuleBase.cs 488 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Motor.cs 75 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/PiLaser.cs 3640 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/PowerMeter.cs 468 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/PowerPmacCtrl.cs 1497 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/PreAligner.cs 1053 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/RTC5/RTC5Wrap.cs 6286 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Robot.cs 1609 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/Scanner.cs 1281 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Module/VisionControl.cs 736 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Parameter/ModeParameter.cs 24 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Parameter/ModeParameterManager.cs 58 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Parameter/SettingParameter.cs 55 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Parameter/SettingParameterManager.cs 59 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Properties/AssemblyInfo.cs 36 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/SA_LTT.csproj 136 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/Sequence.cs 2517 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/bin/Debug/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/bin/Debug/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferences.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.MessageBoxPad.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CopyComplete 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CoreCompileInputs.cache 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.FileListAbsolute.txt 119 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.GenerateResource.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.ResolveComReference.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csprojAssemblyReference.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI.sln 28 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/App.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/MainFrame.Designer.cs 731 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/MainFrame.cs 296 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/MainFrame.resx 123 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Program.cs 60 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Properties/AssemblyInfo.cs 36 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Properties/Resources.Designer.cs 203 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Properties/Resources.resx 163 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Properties/Settings.Designer.cs 30 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Properties/Settings.settings 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Alarm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/BuzzerOff.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/DIT_Logo.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Lamp.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/LoadPort.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Hand.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj 537 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj.user 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/SA_LTT_UI_k5iwqdhu_wpftmp.csproj 529 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.Designer.cs 86 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.cs 50 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml 113 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml.cs 388 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml 38 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml.cs 64 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/IoBar.Designer.cs 87 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/IoBar.cs 52 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/IoBar.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml.cs 28 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.Designer.cs 115 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.cs 118 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.Designer.cs 265 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.cs 298 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.Designer.cs 844 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.cs 454 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.resx 129 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.Designer.cs 197 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.cs 297 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.Designer.cs 1493 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.cs 624 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.resx 126 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.Designer.cs 139 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.cs 59 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.Designer.cs 1879 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.cs 2035 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.Designer.cs 1510 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.cs 550 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.resx 126 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.Designer.cs 1361 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.cs 908 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.Designer.cs 157 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.cs 145 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml 14 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml.cs 242 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.Designer.cs 177 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.cs 135 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.resx 132 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.Designer.cs 838 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.cs 370 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.resx 123 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.Designer.cs 496 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.cs 211 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.Designer.cs 1278 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.cs 542 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.resx 123 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.Designer.cs 1610 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.cs 243 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.Designer.cs 146 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.cs 90 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.Designer.cs 775 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.cs 321 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.Designer.cs 114 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.cs 38 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.Designer.cs 103 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.cs 83 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.Designer.cs 136 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.cs 106 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.Designer.cs 143 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.cs 83 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.Designer.cs 84 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.cs 32 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.Designer.cs 76 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.cs 26 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.Designer.cs 195 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.cs 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.Designer.cs 1848 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.cs 620 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.Designer.cs 338 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.cs 100 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.Designer.cs 361 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.cs 168 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.Designer.cs 246 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.cs 154 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.Designer.cs 824 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.cs 610 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.Designer.cs 991 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.cs 542 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.Designer.cs 1427 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.cs 437 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.Designer.cs 590 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.cs 161 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.Designer.cs 696 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.cs 426 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.resx 120 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor1746.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1_old.ct5 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/EasyModbus.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DAT.dat 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLL.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLLx64.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5OUT.out 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5RBF.rbf 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Aligner.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Chamber.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/RecipeImage.PNG 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm1.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm2.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Body.png 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/log4net.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/padDLLBW.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferences.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.MainFrame.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Properties.Resources.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.AnalogBar.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.IoBar.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenAlarmSetting.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenIO.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLaser.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLog.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMain.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMaintenance.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMotionMaintenance.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenParameter.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenRecipe.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenSetting.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AlarmViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorCalViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChamberViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChillerViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.CreateUserViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyMeterViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EquipmentInfoViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.LogInViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MaintenanceViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MessageBoxPad.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ModifyUserViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PiLaserViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PreAlignViwer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RecipeCreateViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RobotViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ScannerViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.SequenceViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.VisionViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.WaferInfoViewer.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CopyComplete 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CoreCompileInputs.cache 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.FileListAbsolute.txt 801 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.GenerateResource.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.ResolveComReference.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csprojAssemblyReference.cache 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.g.resources 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.cs 13 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.i.cs 13 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.cache 20 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.i.cache 20 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.lref 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.baml 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.cs 464 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.i.cs 464 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.baml 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.cs 134 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.i.cs 134 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.baml 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.cs 76 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.i.cs 76 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.baml 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.cs 115 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.i.cs 115 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_Content.g.i.cs 13 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.cache 20 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.lref 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/가공 설명 Program/TestRec.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/가공 설명 Program/TestRec.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/가공 설명 Program/TestRec.pdb 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe.config 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe.manifest 11 ●●●●● 패치 | 보기 | raw | blame | 히스토리
README.md
@@ -2,3 +2,10 @@
SA_LTT Program
==========
SA_LTT í´ë”
- í”„로그램 ì„¤ì • ë° Parameter íŒŒì¼ë“¤.
- ìœ„치 : C ë“œë¼ì´ë¸Œ
SA_LTT_UI
- ì„¤ë¹„ SW í”„로그램.
SA_LTT/Config/Alarms.csv
»õ ÆÄÀÏ
@@ -0,0 +1,2001 @@
AL_0000_,None,Heavy,True,2022.11.15 10:01:42.811
AL_0001_EMO_STOP_1,None,Heavy,True,2022.11.16 09:00:54.716
AL_0002_EMO_STOP_2,None,Heavy,True,2022.11.16 09:00:54.716
AL_0003_EMO_STOP_3,None,Heavy,True,2022.11.16 09:00:54.716
AL_0004_EMO_STOP_4,None,Heavy,True,2022.11.16 09:00:54.716
AL_0005_SMOKE_DETECTOR_ON,None,Heavy,True,2022.11.16 09:00:54.716
AL_0006_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0007_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0008_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0009_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0010_DOOR_OPEN_1,None,Heavy,False,2023.02.23 14:31:22.274
AL_0011_DOOR_OPEN_2,None,Heavy,False,2023.02.23 14:31:22.274
AL_0012_DOOR_OPEN_3,None,Heavy,False,2023.02.23 14:31:22.274
AL_0013_DOOR_OPEN_4,None,Heavy,False,2023.02.23 14:31:22.274
AL_0014_DOOR_OPEN_CP,None,Heavy,False,2022.11.16 09:00:54.716
AL_0015_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0016_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0017_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0018_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0019_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0020_SERVO_MC_OFF,None,Heavy,True,2022.11.16 09:00:56.094
AL_0021_VACUUM_MC_OFF,None,Heavy,True,2022.11.16 09:00:54.716
AL_0022_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0023_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0024_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0025_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0026_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0027_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0028_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0029_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0030_LASER_WATER_LEAK,None,Heavy,True,2022.11.16 09:00:56.094
AL_0031_CHILLER_WATER_LEAK,None,Heavy,True,2022.11.16 09:00:56.094
AL_0032_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0033_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0034_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0035_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0036_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0037_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0038_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0039_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0040_MAIN_CDA_PRESSURE,Main Valve를 ì—´ì–´ ì£¼ì„¸ìš”.,Heavy,True,2022.11.16 17:33:55.314
AL_0041_MAIN_VAC_PRESSURE,Main Valve를 ì—´ì–´ ì£¼ì„¸ìš”.,Heavy,False,2022.11.16 17:33:55.413
AL_0042_MAIN_CDA_FLOW,None,Heavy,True,2022.11.16 09:00:54.716
AL_0043_CMB_VAC_PRESSURE,None,Heavy,True,2022.11.16 09:00:56.094
AL_0044_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0045_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0046_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0047_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0048_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0049_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0050_CREVIS_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0051_PRE_ALIGNER_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0052_ROBOT_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0053_ATTENUATOR_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0054_TEMPCONTROLER_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0055_FFU_DISCONNECTED,None,Light,True,2022.11.23 09:10:30.116
AL_0056_POWER_PMAC_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0057_UV_LASER_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0058_GR200_DISCONNECTED,None,Heavy,True,2022.11.16 09:00:54.716
AL_0059_POWERMETER_DISCONNECTED,None,Heavy,False,2022.11.17 15:28:24.238
AL_0060_POWER_PMAC_DISCONNECTED,None,Heavy,True,2022.11.16 14:12:51.185
AL_0061_CHILLER_DISCONNECTED,None,Heavy,True,2022.11.30 13:13:00.173
AL_0062_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0063_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0064_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0065_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0066_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0067_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0068_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0069_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0070_PORT1_IS_NOT_DETECTED,None,Heavy,True,2022.11.16 14:12:51.185
AL_0071_PORT2_IS_NOT_DETECTED,None,Heavy,True,2022.11.16 14:12:51.185
AL_0072_PREALIGNER_HAS_NOT_WAFER,None,Heavy,True,2022.11.16 14:12:51.185
AL_0073_CHAMBER_HAS_NOT_WAFER,None,Heavy,True,2022.11.16 14:12:51.185
AL_0074_ROBOT_HAS_NOT_WAFER,None,Heavy,True,2022.11.16 14:12:51.185
AL_0075_PREALIGNER_HAS_WAFER,None,Heavy,True,2022.11.16 14:12:51.185
AL_0076_CHAMBER_HAS_WAFER,None,Heavy,True,2022.11.16 14:12:51.185
AL_0077_ROBOT_HAS_WAFER,None,Heavy,True,2022.11.16 14:12:51.185
AL_0078_LDD_IS_NOT_ON,None,Heavy,True,2022.11.16 14:12:51.185
AL_0079_SHUTTER_IS_NOT_OPEN,None,Heavy,True,2022.11.16 14:12:51.185
AL_0080_SET_CURRENT_IS_NOT_ZERO,None,Heavy,True,2022.11.16 14:12:51.185
AL_0081_ENERGY_MEASUREMENT_FAIL,None,Heavy,True,2022.12.19 14:19:31.570
AL_0082_,None,Heavy,True,2022.12.19 14:19:31.570
AL_0083_,None,Heavy,True,2022.12.19 14:19:31.570
AL_0084_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0085_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0086_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0087_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0088_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0089_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0090_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0091_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0092_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0093_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0094_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0095_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0096_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0097_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0098_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0099_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0100_LASER_SOFT_FAULT_HFSYNC,None,Heavy,True,2023.02.09 15:54:06.609
AL_0101_LASER_SOFT_FAULT_LDD_INTERLOCK,None,Heavy,True,2023.02.09 15:54:06.609
AL_0102_LASER_SOFT_FAULT_SHUTTER_INTERLOCK,None,Heavy,True,2023.02.09 15:54:06.609
AL_0103_LASER_SOFT_FAULT_LOW_EXT_FREQUENCY,None,Heavy,True,2023.02.09 15:54:06.609
AL_0104_LASER_BOARD_FAULT_MAIN,None,Heavy,True,2023.02.09 15:54:06.609
AL_0105_LASER_BOARD_FAULT_COMMON,None,Heavy,True,2023.02.09 15:54:06.609
AL_0106_LASER_BOARD_FAULT_TEMPERATURE,None,Heavy,True,2023.02.09 15:54:06.609
AL_0107_LASER_BOARD_FAULT_SENSOR,None,Heavy,True,2023.02.09 15:54:06.609
AL_0108_LASER_BOARD_FAULT_POWER_MONITOR,None,Heavy,True,2023.02.09 15:54:06.609
AL_0109_LASER_BOARD_FAULT_PULSE,None,Heavy,True,2023.02.09 15:54:06.609
AL_0110_LASER_BOARD_FAULT_LDD,None,Heavy,True,2023.02.09 15:54:06.609
AL_0111_LASER_BOARD_FAULT_MOTOR,None,Heavy,True,2023.02.09 15:54:06.609
AL_0112_LASER_SYSTEM_FAULT_MEMORY,None,Heavy,True,2023.02.09 15:54:06.609
AL_0113_LASER_SYSTEM_FAULT_SDCARD,None,Heavy,True,2023.02.09 15:54:06.609
AL_0114_LASER_SYSTEM_FAULT_BOARD_COMMUNICATION,None,Heavy,True,2023.02.09 15:54:06.609
AL_0115_LASER_SYSTEM_FAULT_BOARD_STATE,None,Heavy,True,2023.02.09 15:54:06.609
AL_0116_LASER_GENERAL_ALARM_LDD1,None,Heavy,True,2023.02.09 15:54:06.609
AL_0117_LASER_GENERAL_ALARM_LDD2,None,Heavy,True,2023.02.09 15:54:06.609
AL_0118_LASER_GENERAL_ALARM_QSW,None,Heavy,True,2023.02.09 15:54:06.609
AL_0119_LASER_GENERAL_ALARM_FLOW,None,Heavy,True,2023.02.09 15:54:06.609
AL_0120_LASER_GENERAL_ALARM_WET,None,Heavy,True,2023.02.09 15:54:06.609
AL_0121_LASER_GENERAL_ALARM_HUMIDITY,None,Heavy,True,2023.02.09 15:54:06.609
AL_0122_LASER_GENERAL_ALARM_HFSYNC,None,Heavy,True,2023.02.09 15:54:06.609
AL_0123_LASER_TEMPERATURE_FAULT_0,None,Heavy,True,2023.02.09 15:54:06.609
AL_0124_LASER_TEMPERATURE_FAULT_1,None,Heavy,True,2023.02.09 15:54:06.609
AL_0125_LASER_TEMPERATURE_FAULT_2,None,Heavy,True,2023.02.09 15:54:06.609
AL_0126_LASER_TEMPERATURE_FAULT_3,None,Heavy,True,2023.02.09 15:54:06.609
AL_0127_LASER_TEMPERATURE_FAULT_4,None,Heavy,True,2023.02.09 15:54:06.609
AL_0128_LASER_TEMPERATURE_FAULT_5,None,Heavy,True,2023.02.09 15:54:06.609
AL_0129_LASER_TEMPERATURE_FAULT_6,None,Heavy,True,2023.02.09 15:54:06.609
AL_0130_LASER_TEMPERATURE_FAULT_7,None,Heavy,True,2023.02.09 15:54:06.609
AL_0131_LASER_SOFT_FAULT,None,Heavy,True,2023.02.09 15:54:06.609
AL_0132_LASER_HARD_FAULT,None,Heavy,True,2023.02.09 15:54:06.609
AL_0133_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0134_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0135_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0136_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0137_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0138_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0139_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0140_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0141_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0142_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0143_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0144_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0145_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0146_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0147_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0148_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0149_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0150_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0151_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0152_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0153_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0154_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0155_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0156_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0157_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0158_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0159_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0160_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0161_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0162_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0163_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0164_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0165_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0166_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0167_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0168_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0169_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0170_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0171_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0172_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0173_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0174_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0175_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0176_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0177_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0178_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0179_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0180_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0181_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0182_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0183_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0184_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0185_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0186_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0187_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0188_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0189_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0190_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0191_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0192_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0193_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0194_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0195_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0196_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0197_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0198_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0199_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0200_ROBOT_ALARM_OCCURED,None,Heavy,True,2022.11.17 13:55:10.855
AL_0201_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0202_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0203_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0204_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0205_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0206_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0207_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0208_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0209_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0210_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0211_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0212_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0213_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0214_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0215_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0216_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0217_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0218_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0219_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0220_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0221_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0222_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0223_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0224_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0225_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0226_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0227_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0228_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0229_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0230_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0231_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0232_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0233_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0234_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0235_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0236_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0237_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0238_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0239_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0240_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0241_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0242_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0243_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0244_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0245_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0246_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0247_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0248_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0249_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0250_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0251_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0252_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0253_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0254_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0255_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0256_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0257_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0258_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0259_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0260_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0261_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0262_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0263_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0264_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0265_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0266_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0267_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0268_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0269_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0270_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0271_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0272_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0273_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0274_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0275_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0276_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0277_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0278_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0279_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0280_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0281_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0282_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0283_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0284_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0285_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0286_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0287_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0288_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0289_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0290_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0291_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0292_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0293_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0294_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0295_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0296_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0297_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0298_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0299_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0300_POWER_PMAC_NOT_CONNECTED,None,Heavy,True,2022.11.16 14:12:51.185
AL_0301_POWER_PMAC_INVALID_DEVICE,None,Heavy,True,2022.11.16 14:12:51.185
AL_0302_POWER_PMAC_INVALID_COMMAND,None,Heavy,True,2022.11.16 14:12:51.185
AL_0303_POWER_PMAC_INVALID_RESPONSE,None,Heavy,True,2022.11.16 14:12:51.185
AL_0304_POWER_PMAC_DATA_REAMINS,None,Heavy,True,2022.11.16 14:12:51.185
AL_0305_POWER_PMAC_CMD_LENGTH_EXCEEDS,None,Heavy,True,2022.11.16 14:12:51.185
AL_0306_POWER_PMAC_RES_LENGTH_EXCEEDS,None,Heavy,True,2022.11.16 14:12:51.185
AL_0307_POWER_PMAC_RUNNING_DOWNLOAD,None,Heavy,True,2022.11.16 14:12:51.185
AL_0308_POWER_PMAC_ERROR,None,Heavy,True,2022.11.16 14:12:51.185
AL_0309_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0310_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0311_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0312_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0313_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0314_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0315_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0316_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0317_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0318_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0319_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0320_MOTOR_Y_NEGATIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185
AL_0321_MOTOR_Y_POSITIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185
AL_0322_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0323_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0324_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0325_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0326_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0327_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0328_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0329_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0330_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0331_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0332_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0333_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0334_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0335_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0336_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0337_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0338_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0339_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0340_MOTOR_X_NEGATIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185
AL_0341_MOTOR_X_POSITIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185
AL_0342_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0343_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0344_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0345_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0346_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0347_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0348_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0349_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0350_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0351_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0352_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0353_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0354_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0355_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0356_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0357_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0358_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0359_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0360_MOTOR_T_NEGATIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185
AL_0361_MOTOR_T_POSITIVE_LIMIT,None,Heavy,True,2022.11.16 14:12:51.185
AL_0362_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0363_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0364_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0365_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0366_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0367_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0368_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0369_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0370_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0371_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0372_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0373_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0374_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0375_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0376_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0377_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0378_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0379_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0380_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0381_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0382_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0383_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0384_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0385_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0386_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0387_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0388_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0389_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0390_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0391_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0392_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0393_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0394_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0395_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0396_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0397_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0398_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0399_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0400_CHILLER_LOW_LEVEL_IN_TANK,None,Heavy,True,2022.12.13 10:42:05.686
AL_0401_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_TEMP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0402_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_RISE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0403_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_DROP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0404_CHILLER_HIGH_CIRCULATING_FLUID_RETURN_TEMP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0405_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_PRESSURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0406_CHILLER_ABNORMAL_PUMP_OPERATION,None,Heavy,True,2022.12.13 10:42:05.686
AL_0407_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_RISE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0408_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_DROP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0409_CHILLER_HIGH_COMPRESSOR_INTANK_TEMP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0410_CHILLER_LOW_COMPRESSOR_INTANK_TEMP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0411_CHILLER_LOW_SUPER_HEAT_TEMPERATURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0412_CHILLER_HIGH_COMPRESSOR_DISCHARGE_PRESSURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0413_CHILLER_REFRIGERANT_CIRCUIT_HIGH_PRESSURE_DROP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0414_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_RISE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0415_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_DROP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0416_CHILLER_COMPRESSOR_OVER_LOAD,None,Heavy,True,2022.12.13 10:42:05.686
AL_0417_CHILLER_COMMUNICATION_ERROR,None,Heavy,True,2022.12.13 10:42:05.686
AL_0418_CHILLER_MEMORY_ERROR,None,Heavy,True,2022.12.13 10:42:05.686
AL_0419_CHILLER_DC_LINE_FUSE_CUT,None,Heavy,True,2022.12.13 10:42:05.686
AL_0420_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0421_CHILLER_CIRCULATING_FLUID_TEMP_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0422_CHILLER_COMPRESSOR_INTANK_TEMP_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0423_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0424_CHILLER_COMPRESSOR_DISCHARGE_PRESSURE_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0425_CHILLER_COMPRESSOR_INTANK_PRESSURE_SENSOR_FAILURE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0426_CHILLER_MAINTENANCE_OF_PUMP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0427_CHILLER_MAINTENENCE_OF_FAN_MOTOR,None,Heavy,True,2022.12.13 10:42:05.686
AL_0428_CHILLER_MAINTENENCE_OF_COMPRESSOR,None,Heavy,True,2022.12.13 10:42:05.686
AL_0429_CHILLER_CONTACT_INPUT_1_SIGNAL_DETECTION_ALARM,None,Heavy,True,2022.12.13 10:42:05.686
AL_0430_CHILLER_CONTACT_INPUT_2_SIGNAL_DETECTION_ALARM,None,Heavy,True,2022.12.13 10:42:05.686
AL_0431_CHILLER_WATER_LEAKAGE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0432_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_RISE,None,Heavy,True,2022.12.13 10:42:05.686
AL_0433_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_DROP,None,Heavy,True,2022.12.13 10:42:05.686
AL_0434_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_SENSOR_ERROR,None,Heavy,True,2022.12.13 10:42:05.686
AL_0435,None,Heavy,True,2022.12.13 10:42:05.686
AL_0436,None,Heavy,True,2022.12.13 10:42:05.686
AL_0437,None,Heavy,True,2022.12.13 10:42:05.686
AL_0438,None,Heavy,True,2022.12.13 10:42:05.686
AL_0439,None,Heavy,True,2022.12.13 10:42:05.686
AL_0440,None,Heavy,True,2022.12.13 10:42:05.686
AL_0441,None,Heavy,True,2022.12.13 10:42:05.686
AL_0442,None,Heavy,True,2022.12.13 10:42:05.686
AL_0443,None,Heavy,True,2022.12.13 10:42:05.686
AL_0444,None,Heavy,True,2022.12.13 10:42:05.686
AL_0445_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0446_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0447_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0448_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0449_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0450_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0451_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0452_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0453_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0454_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0455_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0456_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0457_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0458_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0459_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0460_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0461_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0462_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0463_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0464_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0465_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0466_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0467_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0468_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0469_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0470_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0471_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0472_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0473_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0474_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0475_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0476_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0477_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0478_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0479_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0480_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0481_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0482_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0483_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0484_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0485_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0486_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0487_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0488_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0489_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0490_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0491_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0492_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0493_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0494_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0495_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0496_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0497_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0498_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0499_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0500_PREALIGNER_PIN_UP_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0501_PREALIGNER_PIN_DOWN_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0502_PREALIGNER_VACCUM_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0503_PREALIGNER_NO_WAFER,None,Heavy,True,2022.11.15 10:01:42.811
AL_0504_PREALIGNER_WAFER_LIMIT_ERROR_AFTER_ALIGN,None,Heavy,True,2022.11.15 10:01:42.811
AL_0505_PREALIGNER_NOT_FOUND_NOTCH,None,Heavy,True,2022.11.15 10:01:42.811
AL_0506_PREALIGNER_STAGE_LIMIT_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0507_PREALIGNER_INVALID_ALIGN_COMMAND,None,Heavy,True,2022.11.15 10:01:42.811
AL_0508_PREALIGNER_CHUCK_ARRANGE_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0509_PREALIGNER_WAFER_ALIGN_CCD_OVER,None,Heavy,True,2022.11.15 10:01:42.811
AL_0510_PREALIGNER_WAFER_LIMIT_ERROR_BEFORE_ALIGN,None,Heavy,True,2022.11.15 10:01:42.811
AL_0511_PREALIGNER_RETRACT_HOME,None,Heavy,True,2022.11.15 10:01:42.811
AL_0512_PREALIGNER_WAFER_EXIST,None,Heavy,True,2022.11.15 10:01:42.811
AL_0513_PREALIGNER_CCD_MODULE_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0514_PREALIGNER_ALIGNER_TYPE_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0515_PREALIGNER_COMMAND_ERROR,None,Heavy,True,2022.11.15 10:01:42.811
AL_0516_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0517_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0518_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0519_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0520_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0521_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0522_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0523_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0524_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0525_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0526_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0527_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0528_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0529_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0530_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0531_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0532_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0533_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0534_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0535_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0536_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0537_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0538_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0539_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0540_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0541_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0542_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0543_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0544_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0545_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0546_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0547_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0548_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0549_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0550_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0551_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0552_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0553_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0554_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0555_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0556_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0557_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0558_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0559_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0560_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0561_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0562_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0563_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0564_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0565_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0566_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0567_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0568_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0569_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0570_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0571_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0572_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0573_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0574_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0575_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0576_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0577_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0578_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0579_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0580_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0581_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0582_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0583_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0584_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0585_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0586_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0587_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0588_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0589_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0590_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0591_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0592_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0593_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0594_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0595_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0596_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0597_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0598_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0599_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0600_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0601_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0602_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0603_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0604_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0605_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0606_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0607_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0608_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0609_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0610_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0611_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0612_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0613_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0614_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0615_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0616_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0617_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0618_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0619_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0620_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0621_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0622_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0623_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0624_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0625_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0626_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0627_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0628_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0629_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0630_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0631_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0632_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0633_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0634_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0635_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0636_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0637_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0638_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0639_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0640_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0641_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0642_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0643_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0644_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0645_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0646_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0647_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0648_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0649_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0650_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0651_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0652_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0653_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0654_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0655_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0656_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0657_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0658_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0659_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0660_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0661_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0662_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0663_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0664_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0665_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0666_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0667_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0668_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0669_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0670_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0671_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0672_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0673_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0674_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0675_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0676_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0677_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0678_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0679_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0680_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0681_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0682_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0683_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0684_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0685_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0686_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0687_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0688_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0689_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0690_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0691_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0692_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0693_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0694_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0695_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0696_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0697_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0698_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0699_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0700_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0701_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0702_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0703_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0704_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0705_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0706_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0707_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0708_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0709_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0710_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0711_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0712_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0713_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0714_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0715_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0716_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0717_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0718_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0719_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0720_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0721_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0722_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0723_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0724_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0725_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0726_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0727_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0728_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0729_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0730_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0731_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0732_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0733_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0734_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0735_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0736_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0737_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0738_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0739_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0740_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0741_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0742_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0743_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0744_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0745_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0746_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0747_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0748_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0749_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0750_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0751_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0752_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0753_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0754_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0755_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0756_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0757_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0758_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0759_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0760_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0761_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0762_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0763_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0764_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0765_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0766_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0767_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0768_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0769_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0770_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0771_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0772_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0773_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0774_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0775_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0776_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0777_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0778_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0779_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0780_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0781_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0782_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0783_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0784_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0785_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0786_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0787_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0788_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0789_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0790_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0791_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0792_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0793_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0794_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0795_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0796_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0797_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0798_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0799_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0800_RTC5_NO_BOARD_FOUND,None,Heavy,True,2022.09.15 13:21:17.809
AL_0801_RTC5_ACCESS_DENIED,None,Heavy,True,2022.11.11 14:26:32.000
AL_0802_RTC5_COMMAND_NOT_FORWARDED,None,Heavy,True,2022.09.15 13:21:17.809
AL_0803_RTC5_NO_RESPONSE_FROM_BOARD,None,Heavy,True,2022.09.15 13:21:17.809
AL_0804_RTC5_INVALID_PARAMETER,None,Heavy,True,2022.09.15 13:21:17.809
AL_0805_RTC5_LIST_PROCESSING_IS_NOT_ACTIVE,None,Heavy,True,2022.09.15 13:21:17.809
AL_0806_RTC5_LIST_COMMAND_REJECTED,None,Heavy,True,2022.09.15 13:21:17.809
AL_0807_RTC5_LIST_COMMAND_HAS_BEEN_COVERTED,None,Heavy,True,2022.09.15 13:21:17.809
AL_0808_RTC5_VERSION_ERROR_RTC5_DLL_VERSION,None,Heavy,True,2022.09.15 13:21:17.809
AL_0809_RTC5_VERIFY_ERROR_RTC5_DLL_VERSION,None,Heavy,True,2022.09.15 13:21:17.809
AL_0809_RTC5_VERIFY_ERROR_DOWNLOAD_VERIFICATION,None,Heavy,True,2022.09.15 13:21:17.809
AL_0810_RTC5_DSP_VERSION_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0811_RTC5_DLL_INTERNAL_WINDOWS_MEMORY_REQUEST_FAIL,None,Heavy,True,2022.09.15 13:21:17.809
AL_0812_RTC5_EEPROM_READ_OR_WRITE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0813_RTC5_ERROR_READING_PCI_CONFIGURATION_REGISTER,None,Heavy,True,2022.09.15 13:21:17.809
AL_0814_RTC5_RESET_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0815_RTC5_UNRESET_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0816_RTC5_FILE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0817_RTC5_FORMAT_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0818_RTC5_SYSTEM_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0819_RTC5_ACCESS_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0820_RTC5_VERSION_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0821_RTC5_SYSTEM_DRIVER_NOT_FOUND,None,Heavy,True,2022.09.15 13:21:17.809
AL_0822_RTC5_DRIVER_CALL_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0823_RTC5_CONFIGURATION_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0824_RTC5_FPGA_FIRMWARE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0825_RTC5_PCI_DOWNLOAD_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0826_RTC5_BUSY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0827_RTC5_DSP_MEMORY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0828_RTC5_VERIFY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0829_RTC5_PCI_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0830_RTC5_FILE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0831_RTC5_MEMORY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0832_RTC5_FILE_OPEN_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0833_RTC5_DSP_MEMORY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0834_RTC5_PCI_DOWNLOAD_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0835_RTC5_SYSTEM_DRIVER_NOT_FOUND,None,Heavy,True,2022.09.15 13:21:17.809
AL_0836_RTC5_PARAMETER_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0837_RTC5_ACCESS_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0838_RTC5_WARNING_3D_CORRECTION_TABLE,None,Heavy,True,2022.09.15 13:21:17.809
AL_0839_RTC5_BUSY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0840_RTC5_PCI_UPLOAD_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0841_RTC5_VERIFY_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_0842_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0843_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0844_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0845_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0846_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0847_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0848_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0849_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0850_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0851_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0852_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0853_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0854_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0855_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0856_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0857_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0858_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0859_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0860_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0861_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0862_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0863_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0864_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0865_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0866_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0867_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0868_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0869_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0870_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0871_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0872_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0873_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0874_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0875_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0876_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0877_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0878_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0879_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0880_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0881_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0882_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0883_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0884_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0885_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0886_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0887_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0888_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0889_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0890_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0891_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0892_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0893_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0894_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0895_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0896_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0897_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0898_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0899_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0900_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0901_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0902_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0903_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0904_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0905_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0906_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0907_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0908_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0909_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0910_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0911_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0912_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0913_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0914_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0915_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0916_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0917_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0918_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0919_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0920_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0921_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0922_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0923_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0924_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0925_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0926_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0927_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0928_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0929_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0930_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0931_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0932_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0933_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0934_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0935_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0936_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0937_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0938_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0939_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0940_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0941_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0942_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0943_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0944_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0945_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0946_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0947_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0948_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0949_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0950_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0951_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0952_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0953_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0954_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0955_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0956_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0957_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0958_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0959_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0960_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0961_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0962_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0963_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0964_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0965_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0966_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0967_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0968_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0969_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0970_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0971_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0972_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0973_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0974_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0975_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0976_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0977_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0978_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0979_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0980_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0981_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0982_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0983_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0984_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0985_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0986_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0987_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0988_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0989_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0990_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0991_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0992_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0993_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0994_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0995_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0996_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0997_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0998_,None,Heavy,True,2022.09.15 13:21:17.809
AL_0999_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1000_ERR_NOT_HOMED,None,Heavy,True,2022.09.15 13:21:17.809
AL_1001_ERR_EMERGENCY,None,Heavy,True,2022.09.15 13:21:17.809
AL_1002_ERR_MOTOR_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_1003_ERR_WAIT_TIMEOUT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1004_ENCODER_RESET_TIMEOUT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1005_ERR_INTERLOCK,None,Heavy,True,2022.09.15 13:21:17.809
AL_1006_ERR_DATA_RANGE,None,Heavy,True,2022.09.15 13:21:17.809
AL_1007_ERR_WAFER_BEFORE_GET,None,Heavy,True,2022.09.15 13:21:17.809
AL_1008_ERR_NO_WAFER_BEFORE_PUT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1009_ERR_NO_WAFER_AFTER_GET,None,Heavy,True,2022.09.15 13:21:17.809
AL_1010_ERR_WAFER_AFTER_PUT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1011_ERR_NO_WAFER_DURING_GET,None,Heavy,True,2022.09.15 13:21:17.809
AL_1012_ERR_WAFER_DURING_PUT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1013_ERR_NOT_HOMED,None,Heavy,True,2022.09.15 13:21:17.809
AL_1014_ERR_NOT_SUPPORTED_FUNC,None,Heavy,True,2022.09.15 13:21:17.809
AL_1015_ERR_WAFER_OUT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1016_ERR_WAFER_SLIP,None,Heavy,True,2022.09.15 13:21:17.809
AL_1017_OVER_WAFER_DURING_GET,None,Heavy,True,2022.09.15 13:21:17.809
AL_1018_ERR_PLATE_CHECK,None,Heavy,True,2022.09.15 13:21:17.809
AL_1019_ERR_PUSHER_SPEED_HIGH,None,Heavy,True,2022.09.15 13:21:17.809
AL_1020_ERR_NOT_CORRECT_BLADE_POS,None,Heavy,True,2022.09.15 13:21:17.809
AL_1021_ERR_MAPPING_IS_NOT_PERFORMED,None,Heavy,True,2022.09.15 13:21:17.809
AL_1022_ERR_NO_MAPPING_DATA,None,Heavy,True,2022.09.15 13:21:17.809
AL_1023_ALREADY_LATCH_BLOCKED,None,Heavy,True,2022.09.15 13:21:17.809
AL_1024_ERR_CANNOT_UNGRIP,None,Heavy,True,2022.09.15 13:21:17.809
AL_1025_ERR_INVALID_COMMAND,None,Heavy,True,2022.09.15 13:21:17.809
AL_1026_ERR_INVALID_DATA,None,Heavy,True,2022.09.15 13:21:17.809
AL_1027_ERR_INVALID_STATION,None,Heavy,True,2022.09.15 13:21:17.809
AL_1028_ERR_INVALID_HAND,None,Heavy,True,2022.09.15 13:21:17.809
AL_1029_ERR_INVALID_SLOT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1030_ERR_INVALID_TEACHING_INDEX,None,Heavy,True,2022.09.15 13:21:17.809
AL_1031_ERR_INVALID_PD_INDEX,None,Heavy,True,2022.09.15 13:21:17.809
AL_1032_ERR_INVALID_HAND_TYPE,None,Heavy,True,2022.09.15 13:21:17.809
AL_1033_ERR_BOX_NOEXIT_ERORR,None,Heavy,True,2022.09.15 13:21:17.809
AL_1034_ERR_INVALID_OFFSET,None,Heavy,True,2022.09.15 13:21:17.809
AL_1035_ERR_INVALID_COORDINATE_TYPE,None,Heavy,True,2022.09.15 13:21:17.809
AL_1036_ERR_INVALID_ARGUMENT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1037_ERR_INVALID_FORMAT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1038_ERR_INVALID_LOCATION_FORMAT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1039_ERR_INVALID_PROFILE_FORMAT,None,Heavy,True,2022.09.15 13:21:17.809
AL_1040_ERR_WRONG_PD_COMMAND,None,Heavy,True,2022.09.15 13:21:17.809
AL_1041_ERR_WRONG_AWC_DATA,None,Heavy,True,2022.09.15 13:21:17.809
AL_1042_ERR_NO_AWC_STATION,None,Heavy,True,2022.09.15 13:21:17.809
AL_1043_ERR_WRONG_LATCH_DATA,None,Heavy,True,2022.09.15 13:21:17.809
AL_1044_ERR_NO_LATCH_DATA,None,Heavy,True,2022.09.15 13:21:17.809
AL_1045_ERR_NO_DATA,None,Heavy,True,2022.09.15 13:21:17.809
AL_1046_ERR_NOT_HOME,None,Heavy,True,2022.09.15 13:21:17.809
AL_1047_ERR_CANNOT_RETRACT_ARM,None,Heavy,True,2022.09.15 13:21:17.809
AL_1048_ERR_VACUUM_DETECTING_ERORR,None,Heavy,True,2022.09.15 13:21:17.809
AL_1049_ERR_NO_BOX,None,Heavy,True,2022.09.15 13:21:17.809
AL_1050_ERR_UPGRIP,None,Heavy,True,2022.09.15 13:21:17.809
AL_1051_ERR_DOUBLEBOXCHECH,None,Heavy,True,2022.09.15 13:21:17.809
AL_1052_ERR_ORIGINMANUALLY,None,Heavy,True,2022.09.15 13:21:17.809
AL_1053_ERR_NOTSUPPLY_AIR,None,Heavy,True,2022.09.15 13:21:17.809
AL_1054_ERR_NOW_ON_MOVE,None,Heavy,True,2022.09.15 13:21:17.809
AL_1055_ERR_NOT_READYPOS,None,Heavy,True,2022.09.15 13:21:17.809
AL_1056_Z_POSITION_ERR_DETECTED,None,Heavy,True,2022.09.15 13:21:17.809
AL_1057_ERR_FLIP_TURN_INTERLOCK,None,Heavy,True,2022.09.15 13:21:17.809
AL_1058_ERR_CONTROL_BOX_FAN,None,Heavy,True,2022.09.15 13:21:17.809
AL_1059_ERR_ROBOT_FAN,None,Heavy,True,2022.09.15 13:21:17.809
AL_1060_ERR_AIRSTOP_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_1061_ERR_RECEIVEBUF_FULL,None,Heavy,True,2022.09.15 13:21:17.809
AL_1062_ERR_SENDBUF_FULL,None,Heavy,True,2022.09.15 13:21:17.809
AL_1063_IO_RECEIVE_ERROR,None,Heavy,True,2022.09.15 13:21:17.809
AL_1064_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1065_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1066_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1067_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1068_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1069_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1070_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1071_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1072_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1073_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1074_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1075_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1076_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1077_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1078_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1079_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1080_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1081_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1082_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1083_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1084_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1085_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1086_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1087_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1088_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1089_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1090_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1091_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1092_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1093_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1094_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1095_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1096_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1097_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1098_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1099_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1100_ENERGY_DROP_CHECK_WRONG,None,Heavy,True,2022.12.13 10:42:05.686
AL_1101_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1102_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1103_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1104_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1105_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1106_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1107_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1108_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1109_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1110_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1111_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1112_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1113_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1114_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1115_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1116_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1117_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1118_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1119_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1120_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1121_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1122_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1123_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1124_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1125_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1126_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1127_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1128_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1129_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1130_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1131_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1132_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1133_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1134_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1135_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1136_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1137_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1138_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1139_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1140_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1141_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1142_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1143_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1144_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1145_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1146_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1147_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1148_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1149_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1150_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1151_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1152_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1153_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1154_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1155_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1156_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1157_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1158_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1159_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1160_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1161_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1162_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1163_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1164_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1165_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1166_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1167_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1168_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1169_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1170_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1171_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1172_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1173_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1174_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1175_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1176_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1177_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1178_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1179_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1180_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1181_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1182_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1183_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1184_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1185_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1186_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1187_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1188_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1189_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1190_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1191_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1192_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1193_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1194_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1195_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1196_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1197_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1198_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1199_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1200_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1201_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1202_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1203_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1204_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1205_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1206_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1207_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1208_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1209_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1210_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1211_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1212_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1213_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1214_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1215_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1216_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1217_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1218_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1219_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1220_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1221_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1222_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1223_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1224_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1225_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1226_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1227_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1228_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1229_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1230_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1231_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1232_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1233_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1234_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1235_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1236_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1237_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1238_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1239_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1240_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1241_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1242_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1243_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1244_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1245_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1246_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1247_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1248_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1249_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1250_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1251_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1252_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1253_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1254_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1255_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1256_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1257_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1258_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1259_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1260_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1261_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1262_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1263_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1264_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1265_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1266_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1267_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1268_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1269_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1270_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1271_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1272_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1273_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1274_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1275_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1276_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1277_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1278_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1279_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1280_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1281_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1282_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1283_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1284_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1285_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1286_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1287_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1288_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1289_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1290_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1291_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1292_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1293_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1294_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1295_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1296_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1297_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1298_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1299_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1300_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1301_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1302_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1303_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1304_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1305_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1306_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1307_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1308_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1309_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1310_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1311_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1312_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1313_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1314_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1315_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1316_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1317_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1318_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1319_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1320_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1321_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1322_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1323_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1324_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1325_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1326_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1327_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1328_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1329_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1330_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1331_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1332_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1333_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1334_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1335_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1336_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1337_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1338_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1339_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1340_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1341_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1342_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1343_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1344_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1345_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1346_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1347_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1348_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1349_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1350_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1351_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1352_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1353_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1354_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1355_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1356_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1357_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1358_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1359_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1360_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1361_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1362_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1363_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1364_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1365_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1366_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1367_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1368_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1369_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1370_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1371_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1372_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1373_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1374_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1375_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1376_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1377_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1378_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1379_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1380_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1381_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1382_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1383_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1384_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1385_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1386_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1387_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1388_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1389_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1390_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1391_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1392_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1393_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1394_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1395_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1396_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1397_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1398_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1399_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1400_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1401_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1402_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1403_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1404_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1405_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1406_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1407_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1408_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1409_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1410_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1411_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1412_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1413_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1414_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1415_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1416_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1417_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1418_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1419_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1420_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1421_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1422_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1423_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1424_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1425_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1426_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1427_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1428_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1429_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1430_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1431_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1432_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1433_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1434_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1435_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1436_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1437_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1438_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1439_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1440_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1441_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1442_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1443_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1444_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1445_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1446_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1447_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1448_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1449_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1450_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1451_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1452_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1453_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1454_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1455_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1456_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1457_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1458_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1459_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1460_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1461_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1462_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1463_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1464_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1465_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1466_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1467_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1468_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1469_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1470_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1471_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1472_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1473_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1474_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1475_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1476_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1477_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1478_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1479_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1480_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1481_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1482_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1483_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1484_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1485_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1486_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1487_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1488_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1489_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1490_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1491_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1492_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1493_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1494_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1495_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1496_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1497_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1498_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1499_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1500_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1501_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1502_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1503_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1504_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1505_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1506_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1507_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1508_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1509_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1510_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1511_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1512_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1513_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1514_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1515_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1516_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1517_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1518_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1519_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1520_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1521_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1522_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1523_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1524_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1525_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1526_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1527_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1528_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1529_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1530_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1531_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1532_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1533_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1534_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1535_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1536_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1537_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1538_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1539_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1540_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1541_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1542_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1543_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1544_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1545_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1546_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1547_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1548_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1549_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1550_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1551_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1552_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1553_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1554_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1555_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1556_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1557_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1558_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1559_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1560_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1561_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1562_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1563_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1564_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1565_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1566_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1567_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1568_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1569_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1570_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1571_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1572_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1573_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1574_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1575_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1576_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1577_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1578_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1579_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1580_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1581_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1582_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1583_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1584_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1585_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1586_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1587_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1588_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1589_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1590_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1591_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1592_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1593_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1594_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1595_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1596_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1597_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1598_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1599_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1600_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1601_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1602_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1603_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1604_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1605_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1606_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1607_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1608_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1609_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1610_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1611_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1612_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1613_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1614_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1615_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1616_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1617_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1618_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1619_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1620_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1621_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1622_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1623_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1624_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1625_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1626_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1627_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1628_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1629_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1630_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1631_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1632_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1633_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1634_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1635_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1636_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1637_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1638_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1639_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1640_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1641_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1642_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1643_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1644_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1645_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1646_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1647_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1648_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1649_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1650_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1651_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1652_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1653_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1654_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1655_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1656_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1657_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1658_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1659_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1660_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1661_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1662_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1663_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1664_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1665_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1666_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1667_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1668_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1669_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1670_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1671_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1672_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1673_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1674_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1675_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1676_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1677_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1678_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1679_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1680_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1681_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1682_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1683_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1684_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1685_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1686_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1687_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1688_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1689_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1690_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1691_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1692_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1693_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1694_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1695_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1696_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1697_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1698_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1699_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1700_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1701_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1702_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1703_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1704_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1705_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1706_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1707_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1708_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1709_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1710_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1711_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1712_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1713_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1714_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1715_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1716_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1717_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1718_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1719_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1720_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1721_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1722_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1723_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1724_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1725_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1726_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1727_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1728_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1729_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1730_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1731_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1732_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1733_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1734_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1735_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1736_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1737_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1738_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1739_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1740_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1741_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1742_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1743_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1744_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1745_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1746_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1747_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1748_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1749_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1750_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1751_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1752_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1753_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1754_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1755_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1756_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1757_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1758_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1759_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1760_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1761_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1762_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1763_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1764_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1765_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1766_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1767_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1768_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1769_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1770_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1771_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1772_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1773_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1774_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1775_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1776_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1777_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1778_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1779_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1780_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1781_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1782_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1783_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1784_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1785_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1786_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1787_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1788_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1789_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1790_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1791_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1792_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1793_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1794_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1795_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1796_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1797_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1798_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1799_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1800_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1801_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1802_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1803_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1804_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1805_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1806_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1807_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1808_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1809_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1810_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1811_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1812_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1813_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1814_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1815_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1816_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1817_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1818_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1819_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1820_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1821_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1822_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1823_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1824_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1825_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1826_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1827_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1828_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1829_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1830_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1831_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1832_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1833_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1834_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1835_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1836_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1837_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1838_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1839_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1840_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1841_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1842_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1843_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1844_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1845_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1846_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1847_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1848_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1849_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1850_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1851_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1852_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1853_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1854_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1855_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1856_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1857_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1858_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1859_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1860_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1861_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1862_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1863_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1864_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1865_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1866_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1867_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1868_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1869_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1870_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1871_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1872_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1873_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1874_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1875_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1876_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1877_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1878_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1879_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1880_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1881_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1882_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1883_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1884_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1885_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1886_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1887_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1888_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1889_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1890_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1891_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1892_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1893_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1894_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1895_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1896_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1897_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1898_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1899_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1900_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1901_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1902_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1903_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1904_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1905_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1906_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1907_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1908_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1909_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1910_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1911_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1912_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1913_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1914_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1915_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1916_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1917_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1918_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1919_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1920_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1921_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1922_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1923_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1924_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1925_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1926_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1927_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1928_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1929_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1930_,None,Heavy,True,2022.09.15 13:21:17.809
AL_1931_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1932_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1933_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1934_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1935_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1936_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1937_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1938_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1939_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1940_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1941_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1942_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1943_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1944_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1945_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1946_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1947_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1948_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1949_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1950_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1951_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1952_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1953_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1954_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1955_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1956_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1957_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1958_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1959_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1960_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1961_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1962_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1963_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1964_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1965_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1966_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1967_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1968_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1969_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1970_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1971_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1972_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1973_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1974_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1975_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1976_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1977_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1978_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1979_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1980_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1981_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1982_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1983_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1984_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1985_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1986_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1987_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1988_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1989_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1990_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1991_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1992_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1993_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1994_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1995_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1996_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1997_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1998_,None,Heavy,True,2022.09.15 13:21:17.810
AL_1999_,None,Heavy,True,2022.09.15 13:21:17.810
SA_LTT/Config/Cor1746.ct5
Binary files differ
SA_LTT/Config/MotorData/MotorData.xml
»õ ÆÄÀÏ
@@ -0,0 +1,159 @@
<?xml version="1.0"?>
<ArrayOfAxisInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <AxisInfo>
    <EnumAxisNo>0</EnumAxisNo>
    <AxisNo>1</AxisNo>
    <AxisType>SERVO</AxisType>
    <Name>Y_AXIS</Name>
    <HommingCmd>P30</HommingCmd>
    <HomeEndCmd>P31</HomeEndCmd>
    <Scale>10000</Scale>
    <SWPlusLimit>920</SWPlusLimit>
    <SWMinusLimit>-48</SWMinusLimit>
    <Timeout>20000</Timeout>
    <HommingTimeout>1200000</HommingTimeout>
    <HommingSpeed>10</HommingSpeed>
    <TeachList>
      <Teach_Data>
        <Name>Y Load Pos</Name>
        <Position>400</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>Y Center Pos</Name>
        <Position>240</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>Y BeamProfile Pos</Name>
        <Position>225</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>Y PowerMeter Pos</Name>
        <Position>180.8896</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>Y Align Pos</Name>
        <Position>268.4253</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>Y Test Pos</Name>
        <Position>173</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
    </TeachList>
  </AxisInfo>
  <AxisInfo>
    <EnumAxisNo>1</EnumAxisNo>
    <AxisNo>2</AxisNo>
    <AxisType>SERVO</AxisType>
    <Name>X_AXIS</Name>
    <HommingCmd>P20</HommingCmd>
    <HomeEndCmd>P21</HomeEndCmd>
    <Scale>10000</Scale>
    <SWPlusLimit>550</SWPlusLimit>
    <SWMinusLimit>0</SWMinusLimit>
    <Timeout>10000</Timeout>
    <HommingTimeout>1200000</HommingTimeout>
    <HommingSpeed>30</HommingSpeed>
    <TeachList>
      <Teach_Data>
        <Name>X Load Pos</Name>
        <Position>173</Position>
        <Speed>100</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>X Center Pos</Name>
        <Position>178</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>X BeamProfile Pos</Name>
        <Position>173</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>X PowerMeter Pos</Name>
        <Position>-10.5846</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>X Align Pos</Name>
        <Position>-20.8701</Position>
        <Speed>100</Speed>
        <Accel>250</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>X Test Pos</Name>
        <Position>173</Position>
        <Speed>200</Speed>
        <Accel>250</Accel>
      </Teach_Data>
    </TeachList>
  </AxisInfo>
  <AxisInfo>
    <EnumAxisNo>2</EnumAxisNo>
    <AxisNo>5</AxisNo>
    <AxisType>SERVO</AxisType>
    <Name>T_AXIS</Name>
    <HommingCmd>P40</HommingCmd>
    <HomeEndCmd>P41</HomeEndCmd>
    <Scale>4062.7</Scale>
    <SWPlusLimit>5</SWPlusLimit>
    <SWMinusLimit>-5</SWMinusLimit>
    <Timeout>20000</Timeout>
    <HommingTimeout>1200000</HommingTimeout>
    <HommingSpeed>1</HommingSpeed>
    <TeachList>
      <Teach_Data>
        <Name>T Load Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>T Center Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>T BeamProfile Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>T PowerMeter Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>T Align Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
      <Teach_Data>
        <Name>T Test Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
    </TeachList>
  </AxisInfo>
</ArrayOfAxisInfo>
SA_LTT/Config/MotorData/MotorData_old.xml
»õ ÆÄÀÏ
@@ -0,0 +1,69 @@
<?xml version="1.0"?>
<ArrayOfAxisInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <AxisInfo>
    <EnumAxisNo>0</EnumAxisNo>
    <AxisNo>1</AxisNo>
    <AxisType>SERVO</AxisType>
    <Name>Y_AXIS</Name>
    <HommingCmd>P30</HommingCmd>
    <HomeEndCmd>P31</HomeEndCmd>
    <Scale>10000</Scale>
    <SWPlusLimit>920</SWPlusLimit>
    <SWMinusLimit>-48</SWMinusLimit>
    <Timeout>20000</Timeout>
    <HommingTimeout>1200000</HommingTimeout>
    <HommingSpeed>10</HommingSpeed>
    <TeachList>
      <Teach_Data>
        <Name>Y Load Pos</Name>
        <Position>0</Position>
        <Speed>10</Speed>
        <Accel>250</Accel>
      </Teach_Data>
    </TeachList>
  </AxisInfo>
  <AxisInfo>
    <EnumAxisNo>1</EnumAxisNo>
    <AxisNo>2</AxisNo>
    <AxisType>SERVO</AxisType>
    <Name>X_AXIS</Name>
    <HommingCmd>P20</HommingCmd>
    <HomeEndCmd>P21</HomeEndCmd>
    <Scale>10000</Scale>
    <SWPlusLimit>550</SWPlusLimit>
    <SWMinusLimit>0</SWMinusLimit>
    <Timeout>10000</Timeout>
    <HommingTimeout>1200000</HommingTimeout>
    <HommingSpeed>30</HommingSpeed>
    <TeachList>
      <Teach_Data>
        <Name>X Load Pos</Name>
        <Position>0</Position>
        <Speed>10</Speed>
        <Accel>250</Accel>
      </Teach_Data>
    </TeachList>
  </AxisInfo>
  <AxisInfo>
    <EnumAxisNo>2</EnumAxisNo>
    <AxisNo>5</AxisNo>
    <AxisType>SERVO</AxisType>
    <Name>T_AXIS</Name>
    <HommingCmd>P40</HommingCmd>
    <HomeEndCmd>P41</HomeEndCmd>
    <Scale>40627</Scale>
    <SWPlusLimit>5</SWPlusLimit>
    <SWMinusLimit>-5</SWMinusLimit>
    <Timeout>20000</Timeout>
    <HommingTimeout>1200000</HommingTimeout>
    <HommingSpeed>1</HommingSpeed>
    <TeachList>
      <Teach_Data>
        <Name>T Load Pos</Name>
        <Position>0</Position>
        <Speed>1</Speed>
        <Accel>200</Accel>
      </Teach_Data>
    </TeachList>
  </AxisInfo>
</ArrayOfAxisInfo>
SA_LTT/Config/Parameter/InterlockParameter.xml
SA_LTT/Config/Parameter/ModeParameter.xml
»õ ÆÄÀÏ
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<ModeParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <EnergyDropCheckUse>false</EnergyDropCheckUse>
  <AttenuatorCalUse>false</AttenuatorCalUse>
  <EnergyMeasurementUse>false</EnergyMeasurementUse>
  <ShutterAlwaysUse>false</ShutterAlwaysUse>
  <AlignUse>false</AlignUse>
</ModeParameter>
SA_LTT/Config/Parameter/SettingParameter.xml
»õ ÆÄÀÏ
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<SettingParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <EnergyDropCheckCycle>8</EnergyDropCheckCycle>
  <EnergyDropCheckMeasurementTime>10</EnergyDropCheckMeasurementTime>
  <EnergyDropCheckTargetAngle>40</EnergyDropCheckTargetAngle>
  <EnergyDropCheckTargetEnergy>3.879</EnergyDropCheckTargetEnergy>
  <EnergyDropCheckErrorOccuredRange>3</EnergyDropCheckErrorOccuredRange>
  <AttenuatorCalCycle>10</AttenuatorCalCycle>
  <AttenuatorCalMeasurementTime>10</AttenuatorCalMeasurementTime>
  <AttenuatorCalCoolingTime>10</AttenuatorCalCoolingTime>
  <AttenuatorCalStartAngle>2</AttenuatorCalStartAngle>
  <AttenuatorCalEndAngle>43</AttenuatorCalEndAngle>
  <AttenuatorCalAngleStep>2</AttenuatorCalAngleStep>
  <EnergyMeasurementCycle>180</EnergyMeasurementCycle>
  <EnergyMeasurementWaferCountCycle>5</EnergyMeasurementWaferCountCycle>
  <EnergyMeasurementErrorOccuredRange>5</EnergyMeasurementErrorOccuredRange>
  <EnergyMeasurementTime>10</EnergyMeasurementTime>
  <EnergyMeasurmentStepAngle>0.5</EnergyMeasurmentStepAngle>
  <EnergyMeasurementRetryCount>15</EnergyMeasurementRetryCount>
  <EnergyMeterHeatingTime>5</EnergyMeterHeatingTime>
  <BeamHeight>0.59</BeamHeight>
  <BeamWidth>0.59</BeamWidth>
  <CenterToVisionPositionX>28.425</CenterToVisionPositionX>
  <CenterToVisionPositionY>-198.87</CenterToVisionPositionY>
  <VisionTimeOut>5</VisionTimeOut>
  <VisionHeartBeatTimeOut>3</VisionHeartBeatTimeOut>
</SettingParameter>
SA_LTT/Config/Parameter/SystemParameter.xml
»õ ÆÄÀÏ
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<SystemParameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ScannerFOV>0</ScannerFOV>
  <BitsPerMM>0</BitsPerMM>
  <EncoderCountPerMmX>0</EncoderCountPerMmX>
  <EncoderCountPerMmY>0</EncoderCountPerMmY>
  <HalfPeriod>0</HalfPeriod>
  <PulseLength>0</PulseLength>
  <TimeBase>0</TimeBase>
  <JumpDelay>0</JumpDelay>
  <MarkDelay>0</MarkDelay>
  <PolygonDelay>0</PolygonDelay>
  <LaserOnDelay>0</LaserOnDelay>
  <LaserOffDelay>0</LaserOffDelay>
  <JumpSpeed>0</JumpSpeed>
  <MarkSpeed>0</MarkSpeed>
</SystemParameter>
SA_LTT/Config/Parameter/UserParameter.xml
SA_LTT/Config/Setting/Scanner.xml
»õ ÆÄÀÏ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<Scanner xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <CorrectionFilePath>C:\SA_LTT\Config\Cor1746.ct5</CorrectionFilePath>
  <IsInitialized>true</IsInitialized>
  <IsBusy>false</IsBusy>
  <Encoder0>0</Encoder0>
  <Encoder1>0</Encoder1>
  <EncoderCountPerMmX>0</EncoderCountPerMmX>
  <EncoderCountPerMmY>10000</EncoderCountPerMmY>
  <FOV>84.842</FOV>
  <HalfPeriod>32000</HalfPeriod>
  <PulseLength1>5</PulseLength1>
  <TimeBase>0</TimeBase>
  <JumpDelay>10</JumpDelay>
  <MarkDelay>10</MarkDelay>
  <PolygonDelay>10</PolygonDelay>
  <LaserOnDelay>-775</LaserOnDelay>
  <LaserOffDelay>100</LaserOffDelay>
  <IsPosition>14</IsPosition>
  <XGain>1</XGain>
  <YGain>1</YGain>
  <IsLaserOn>false</IsLaserOn>
</Scanner>
SA_LTT/Info/AttenuatorCal.csv
»õ ÆÄÀÏ
@@ -0,0 +1,23 @@
0, 0
2, 0
4, 0.0007
6, 0.0012
8, 0.0017
10, 0.0024
12, 0.0032
14, 0.004
16, 0.005
18, 0.006
20, 0.0071
22, 0.0081
24, 0.0092
26, 0.0103
28, 0.0114
30, 0.0123
32, 0.0132
34, 0.014
36, 0.0146
38, 0.0151
40, 0.0155
42, 0.0156
43, 0.0157
SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.xml
»õ ÆÄÀÏ
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<AttenuatorCalInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <_attenuatorCalDatas>
    <AttenuatorCalData>
      <AttenuatorAngle>2</AttenuatorAngle>
      <Energy>0</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>4</AttenuatorAngle>
      <Energy>0.000646</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>6</AttenuatorAngle>
      <Energy>0.0010116</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>8</AttenuatorAngle>
      <Energy>0.0014726</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>10</AttenuatorAngle>
      <Energy>0.0019965</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>12</AttenuatorAngle>
      <Energy>0.0026162</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>14</AttenuatorAngle>
      <Energy>0.0032963</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>16</AttenuatorAngle>
      <Energy>0.0040097</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>18</AttenuatorAngle>
      <Energy>0.0047834</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>20</AttenuatorAngle>
      <Energy>0.0055615</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>22</AttenuatorAngle>
      <Energy>0.0063731</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>24</AttenuatorAngle>
      <Energy>0.0071533</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>26</AttenuatorAngle>
      <Energy>0.0079236</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>28</AttenuatorAngle>
      <Energy>0.0086652</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>30</AttenuatorAngle>
      <Energy>0.0093515</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>32</AttenuatorAngle>
      <Energy>0.0099759</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>34</AttenuatorAngle>
      <Energy>0.0105088</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>36</AttenuatorAngle>
      <Energy>0.0109515</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>38</AttenuatorAngle>
      <Energy>0.0112964</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>40</AttenuatorAngle>
      <Energy>0.0115174</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>42</AttenuatorAngle>
      <Energy>0.0116034</Energy>
    </AttenuatorCalData>
    <AttenuatorCalData>
      <AttenuatorAngle>43</AttenuatorAngle>
      <Energy>0.0116261</Energy>
    </AttenuatorCalData>
  </_attenuatorCalDatas>
</AttenuatorCalInfo>
SA_LTT/Info/Equipment/EquipmentInfo.xml
»õ ÆÄÀÏ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<EquipmentInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <EnergyDropCheckDate>2023-01-20T01:29:46.7296286+09:00</EnergyDropCheckDate>
  <AttenuatorCalDate>2023-03-14T11:10:11.1635543+09:00</AttenuatorCalDate>
</EquipmentInfo>
SA_LTT/Info/FoupRecipe/TEST.xml
»õ ÆÄÀÏ
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<FoupRecipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>TEST</Name>
  <RecipeNames>
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string>AAA</string>
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
    <string xsi:nil="true" />
  </RecipeNames>
</FoupRecipe>
SA_LTT/Info/Recipe/123.xml
»õ ÆÄÀÏ
ºñ±³Çϱ⿡ ³Ê¹« Å­
SA_LTT/Info/Recipe/180180.xml
»õ ÆÄÀÏ
ºñ±³Çϱ⿡ ³Ê¹« Å­
SA_LTT/Info/Recipe/4INCH.xml
»õ ÆÄÀÏ
ºñ±³Çϱ⿡ ³Ê¹« Å­
SA_LTT/Info/Recipe/AA.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>AA</Name>
  <Radius>75</Radius>
  <DistanceFromCenterToPrimaryFlat>30</DistanceFromCenterToPrimaryFlat>
  <ProcessInfoList />
</Recipe>
SA_LTT/Info/Recipe/AAA.xml
»õ ÆÄÀÏ
@@ -0,0 +1,1843 @@
<?xml version="1.0" encoding="utf-8"?>
<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>AAA</Name>
  <Radius>75</Radius>
  <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
  <EdgeRound>0</EdgeRound>
  <BeamWidth>0.53</BeamWidth>
  <BeamHeight>0.53</BeamHeight>
  <ProcessInfoList>
    <ProcessInfo>
      <Radius>75</Radius>
      <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
      <EdgeRound>0</EdgeRound>
      <StartX>21.375</StartX>
      <StartY>33.375</StartY>
      <Width>24.75</Width>
      <Height>22.2599983</Height>
      <ProcessStartX>21.375</ProcessStartX>
      <ProcessStartY>33.375</ProcessStartY>
      <ProcessEndX>46.125</ProcessEndX>
      <ProcessEndY>11.115</ProcessEndY>
      <BeamWidth>0.53</BeamWidth>
      <BeamHeight>0.53</BeamHeight>
      <BeamHeightOverlap>0</BeamHeightOverlap>
      <BeamWidthOverlap>0</BeamWidthOverlap>
      <Energy>0.2</Energy>
      <IsProcessEnable>true</IsProcessEnable>
      <ProcessLength>1080.53</ProcessLength>
      <AccTime>0</AccTime>
      <ProcessList>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>21.375</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>21.375</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>21.905</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>21.905</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.435</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.435</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.965</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.965</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>23.495</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>23.495</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.025</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.025</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.555</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.555</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.085</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.085</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.615</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.615</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.145</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.145</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.675</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.675</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.205</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.205</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.735</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.735</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.265</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.265</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.795</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.795</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.325</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.325</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.855</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.855</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>30.385</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>30.385</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>30.915</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>30.915</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.445</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.445</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.975</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.975</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>32.505</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>32.505</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.035</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.035</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.565</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.565</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.095</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.095</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.625</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.625</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>35.155</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>35.155</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>35.685</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>35.685</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>36.215</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>36.215</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>36.745</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>36.745</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>37.275</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>37.275</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>37.805</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>37.805</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>38.335</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>38.335</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>38.865</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>38.865</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>39.395</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>39.395</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>39.925</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>39.925</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>40.455</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>40.455</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>40.985</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>40.985</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>41.515</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>41.515</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>42.045</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>42.045</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>42.575</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>42.575</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>43.105</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>43.105</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>43.635</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>43.635</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>44.165</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>44.165</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>44.695</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>44.695</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>45.225</X>
          <Y>11.115</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>45.225</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>45.755</X>
          <Y>33.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>45.755</X>
          <Y>11.115</Y>
        </Coord>
      </ProcessList>
    </ProcessInfo>
    <ProcessInfo>
      <Radius>75</Radius>
      <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
      <EdgeRound>0</EdgeRound>
      <StartX>-39.75</StartX>
      <StartY>34.875</StartY>
      <Width>23.625</Width>
      <Height>21.1999989</Height>
      <ProcessStartX>-39.75</ProcessStartX>
      <ProcessStartY>34.875</ProcessStartY>
      <ProcessEndX>-16.125</ProcessEndX>
      <ProcessEndY>13.675</ProcessEndY>
      <BeamWidth>0.53</BeamWidth>
      <BeamHeight>0.53</BeamHeight>
      <BeamHeightOverlap>0</BeamHeightOverlap>
      <BeamWidthOverlap>0</BeamWidthOverlap>
      <Energy>0.2</Energy>
      <IsProcessEnable>true</IsProcessEnable>
      <ProcessLength>986.85</ProcessLength>
      <AccTime>0</AccTime>
      <ProcessList>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-39.75</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-39.75</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-39.22</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-39.22</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.69</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.69</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.16</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.16</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.63</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.63</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.1</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.1</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.57</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.57</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.04</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.04</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-35.51</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-35.51</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.98</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.98</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.45</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.45</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.92</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.92</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.39</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.39</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-32.86</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-32.86</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-32.33</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-32.33</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.8</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.8</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.27</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.27</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.74</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.74</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.21</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.21</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.68</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.68</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.15</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.15</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.62</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.62</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.09</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.09</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.56</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.56</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.03</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.03</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-26.5</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-26.5</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-25.97</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-25.97</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-25.44</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-25.44</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.91</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.91</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.38</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.38</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.85</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.85</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.32</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.32</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.79</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.79</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.26</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.26</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.73</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.73</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.2</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.2</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.67</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.67</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.14</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.14</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.61</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.61</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.08</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.08</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-18.55</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-18.55</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-18.02</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-18.02</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-17.49</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-17.49</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-16.96</X>
          <Y>13.675</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-16.96</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-16.43</X>
          <Y>34.875</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-16.43</X>
          <Y>13.675</Y>
        </Coord>
      </ProcessList>
    </ProcessInfo>
    <ProcessInfo>
      <Radius>75</Radius>
      <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
      <EdgeRound>0</EdgeRound>
      <StartX>-39.75</StartX>
      <StartY>-28.5</StartY>
      <Width>22.125</Width>
      <Height>19.6099987</Height>
      <ProcessStartX>-39.75</ProcessStartX>
      <ProcessStartY>-28.5</ProcessStartY>
      <ProcessEndX>-17.625</ProcessEndX>
      <ProcessEndY>-48.11</ProcessEndY>
      <BeamWidth>0.53</BeamWidth>
      <BeamHeight>0.53</BeamHeight>
      <BeamHeightOverlap>0</BeamHeightOverlap>
      <BeamWidthOverlap>0</BeamWidthOverlap>
      <Energy>0.2</Energy>
      <IsProcessEnable>true</IsProcessEnable>
      <ProcessLength>854.28</ProcessLength>
      <AccTime>0</AccTime>
      <ProcessList>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-39.75</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-39.75</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-39.22</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-39.22</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.69</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.69</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.16</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.16</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.63</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.63</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.1</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.1</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.57</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.57</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.04</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.04</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-35.51</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-35.51</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.98</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.98</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.45</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.45</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.92</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.92</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.39</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.39</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-32.86</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-32.86</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-32.33</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-32.33</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.8</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.8</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.27</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.27</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.74</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.74</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.21</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.21</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.68</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.68</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.15</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.15</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.62</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.62</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.09</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.09</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.56</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.56</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.03</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.03</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-26.5</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-26.5</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-25.97</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-25.97</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-25.44</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-25.44</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.91</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.91</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.38</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.38</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.85</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.85</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.32</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.32</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.79</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.79</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.26</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.26</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.73</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.73</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.2</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.2</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.67</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.67</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.14</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.14</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.61</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.61</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.08</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.08</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-18.55</X>
          <Y>-28.5</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-18.55</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-18.02</X>
          <Y>-48.11</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-18.02</X>
          <Y>-28.5</Y>
        </Coord>
      </ProcessList>
    </ProcessInfo>
    <ProcessInfo>
      <Radius>75</Radius>
      <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
      <EdgeRound>0</EdgeRound>
      <StartX>14.625</StartX>
      <StartY>-15.375</StartY>
      <Width>21</Width>
      <Height>18.55</Height>
      <ProcessStartX>14.625</ProcessStartX>
      <ProcessStartY>-15.375</ProcessStartY>
      <ProcessEndX>35.625</ProcessEndX>
      <ProcessEndY>-33.925</ProcessEndY>
      <BeamWidth>0.53</BeamWidth>
      <BeamHeight>0.53</BeamHeight>
      <BeamHeightOverlap>0</BeamHeightOverlap>
      <BeamWidthOverlap>0</BeamWidthOverlap>
      <Energy>0.2</Energy>
      <IsProcessEnable>true</IsProcessEnable>
      <ProcessLength>771.2</ProcessLength>
      <AccTime>0.036377360400291311</AccTime>
      <ProcessList>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>14.625</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>14.625</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>15.155</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>15.155</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>15.685</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>15.685</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>16.215</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>16.215</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>16.745</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>16.745</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>17.275</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>17.275</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>17.805</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>17.805</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>18.335</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>18.335</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>18.865</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>18.865</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>19.395</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>19.395</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>19.925</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>19.925</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>20.455</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>20.455</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>20.985</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>20.985</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>21.515</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>21.515</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.045</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.045</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.575</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.575</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>23.105</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>23.105</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>23.635</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>23.635</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.165</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.165</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.695</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.695</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.225</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.225</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.755</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.755</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.285</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.285</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.815</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.815</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.345</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.345</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.875</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.875</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.405</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.405</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.935</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.935</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.465</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.465</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.995</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.995</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>30.525</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>30.525</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.055</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.055</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.585</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.585</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>32.115</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>32.115</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>32.645</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>32.645</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.175</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.175</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.705</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.705</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.235</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.235</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.765</X>
          <Y>-15.375</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.765</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>35.295</X>
          <Y>-33.925</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>35.295</X>
          <Y>-15.375</Y>
        </Coord>
      </ProcessList>
    </ProcessInfo>
  </ProcessInfoList>
</Recipe>
SA_LTT/Info/Recipe/BB.xml
»õ ÆÄÀÏ
@@ -0,0 +1,2894 @@
<?xml version="1.0" encoding="utf-8"?>
<Recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>BB</Name>
  <Radius>75</Radius>
  <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
  <EdgeRound>0</EdgeRound>
  <BeamWidth>0.7</BeamWidth>
  <BeamHeight>0.7</BeamHeight>
  <ProcessInfoList>
    <ProcessInfo>
      <Radius>75</Radius>
      <DistanceFromCenterToPrimaryFlat>70</DistanceFromCenterToPrimaryFlat>
      <EdgeRound>0</EdgeRound>
      <StartX>-49.125</StartX>
      <StartY>38.25</StartY>
      <Width>100</Width>
      <Height>30.1</Height>
      <ProcessStartX>-49.125</ProcessStartX>
      <ProcessStartY>38.25</ProcessStartY>
      <ProcessEndX>50.875</ProcessEndX>
      <ProcessEndY>8.15</ProcessEndY>
      <BeamWidth>0.7</BeamWidth>
      <BeamHeight>0.7</BeamHeight>
      <BeamHeightOverlap>0.35</BeamHeightOverlap>
      <BeamWidthOverlap>0.35</BeamWidthOverlap>
      <Energy>1</Energy>
      <IsProcessEnable>true</IsProcessEnable>
      <ProcessLength>8765.9</ProcessLength>
      <AccTime>0</AccTime>
      <ProcessList>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-49.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-49.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-48.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-48.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-48.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-48.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-48.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-48.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-47.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-47.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-47.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-47.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-47.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-47.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-46.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-46.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-46.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-46.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-45.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-45.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-45.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-45.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-45.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-45.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-44.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-44.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-44.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-44.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-44.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-44.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-43.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-43.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-43.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-43.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-43.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-43.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-42.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-42.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-42.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-42.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-42.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-42.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-41.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-41.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-41.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-41.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-41.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-41.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-40.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-40.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-40.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-40.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-40.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-40.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-39.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-39.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-39.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-39.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-38.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-38.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-37.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-37.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-36.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-36.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-35.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-35.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-35.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-35.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-35.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-35.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-34.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-34.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-33.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-33.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-32.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-32.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-32.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-32.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-31.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-31.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-30.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-30.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-29.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-29.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-28.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-28.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-27.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-27.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-26.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-26.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-26.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-26.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-26.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-26.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-25.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-25.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-25.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-25.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-24.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-24.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-23.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-23.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-22.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-22.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-21.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-21.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-20.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-20.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-19.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-19.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-18.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-18.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-18.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-18.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-17.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-17.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-17.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-17.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-17.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-17.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-16.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-16.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-16.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-16.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-16.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-16.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-15.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-15.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-15.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-15.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-15.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-15.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-14.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-14.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-14.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-14.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-14.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-14.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-13.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-13.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-13.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-13.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-13.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-13.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-12.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-12.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-12.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-12.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-12.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-12.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-11.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-11.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-11.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-11.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-10.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-10.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-10.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-10.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-10.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-10.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-9.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-9.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-9.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-9.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-9.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-9.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-8.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-8.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-8.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-8.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-8.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-8.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-7.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-7.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-7.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-7.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-7.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-7.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-6.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-6.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-6.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-6.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-6.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-6.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-5.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-5.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-5.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-5.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-5.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-5.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-4.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-4.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-4.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-4.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-3.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-3.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-3.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-3.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-3.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-3.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-2.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-2.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-2.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-2.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-2.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-2.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-1.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-1.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-1.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-1.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-1.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-1.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-0.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-0.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-0.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-0.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>-0.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>-0.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>0.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>0.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>0.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>0.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>0.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>0.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>1.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>1.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>1.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>1.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>1.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>1.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>2.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>2.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>2.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>2.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>3.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>3.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>3.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>3.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>3.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>3.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>4.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>4.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>4.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>4.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>4.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>4.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>5.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>5.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>5.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>5.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>5.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>5.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>6.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>6.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>6.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>6.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>6.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>6.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>7.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>7.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>7.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>7.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>7.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>7.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>8.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>8.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>8.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>8.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>8.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>8.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>9.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>9.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>9.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>9.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>10.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>10.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>10.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>10.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>10.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>10.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>11.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>11.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>11.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>11.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>11.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>11.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>12.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>12.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>12.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>12.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>12.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>12.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>13.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>13.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>13.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>13.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>13.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>13.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>14.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>14.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>14.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>14.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>14.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>14.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>15.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>15.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>15.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>15.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>15.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>15.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>16.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>16.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>16.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>16.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>17.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>17.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>17.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>17.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>17.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>17.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>18.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>18.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>18.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>18.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>18.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>18.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>19.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>19.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>19.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>19.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>19.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>19.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>20.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>20.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>20.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>20.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>20.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>20.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>21.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>21.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>21.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>21.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>21.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>21.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>22.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>22.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>23.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>23.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>23.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>23.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>24.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>24.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>25.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>25.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>26.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>26.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>27.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>27.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>28.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>28.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>29.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>29.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>30.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>30.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>30.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>30.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>31.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>31.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>32.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>32.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>32.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>32.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>32.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>32.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>33.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>33.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>34.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>34.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>35.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>35.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>35.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>35.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>35.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>35.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>36.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>36.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>36.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>36.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>36.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>36.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>37.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>37.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>37.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>37.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>38.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>38.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>38.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>38.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>38.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>38.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>39.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>39.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>39.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>39.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>39.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>39.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>40.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>40.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>40.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>40.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>40.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>40.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>41.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>41.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>41.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>41.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>41.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>41.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>42.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>42.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>42.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>42.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>42.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>42.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>43.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>43.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>43.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>43.625</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>43.975</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>43.975</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>44.325</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>44.325</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>44.675</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>44.675</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>45.025</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>45.025</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>45.375</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>45.375</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>45.725</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>45.725</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>46.075</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>46.075</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>46.425</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>46.425</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>46.775</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>46.775</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>47.125</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>47.125</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>47.475</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>47.475</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>47.825</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>47.825</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>48.175</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>48.175</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>48.525</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>48.525</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>48.875</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>48.875</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>49.225</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>49.225</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>49.575</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>49.575</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>49.925</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>49.925</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>50.275</X>
          <Y>38.25</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>50.275</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>JUMP</ScanMode>
          <X>50.625</X>
          <Y>8.15</Y>
        </Coord>
        <Coord>
          <ScanMode>MARK</ScanMode>
          <X>50.625</X>
          <Y>38.25</Y>
        </Coord>
      </ProcessList>
    </ProcessInfo>
  </ProcessInfoList>
</Recipe>
SA_LTT/Info/Recipe/TE.xml
»õ ÆÄÀÏ
ºñ±³Çϱ⿡ ³Ê¹« Å­
SA_LTT/Info/Recipe/TEST.xml
»õ ÆÄÀÏ
ºñ±³Çϱ⿡ ³Ê¹« Å­
SA_LTT/Info/Recipe/ÇѱÛ.xml
»õ ÆÄÀÏ
ºñ±³Çϱ⿡ ³Ê¹« Å­
SA_LTT/Info/User/1.xml
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>1</Name>
  <Password>1</Password>
  <Level>Engineer</Level>
</User>
SA_LTT/Info/User/DIT.xml
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>DIT</Name>
  <Password>1234</Password>
  <Level>Master</Level>
</User>
SA_LTT/Info/User/Operator.xml
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Operator</Name>
  <Password>1234</Password>
  <Level>Operator</Level>
</User>
SA_LTT/Info/Wafer/A1.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A1</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A10.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A10</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A11.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A11</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A12.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A12</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A13.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A13</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A14.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A14</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A15.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A15</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A16.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A16</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A17.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A17</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A18.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A18</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A19.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A19</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A2.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A2</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A20.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A20</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A21.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A21</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A22.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A22</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A23.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A23</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A24.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A24</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A25.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A25</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A3.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A3</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A4.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A4</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A5.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A5</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A6.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>A1</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A7.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A7</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A8.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A8</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/A9.xml
»õ ÆÄÀÏ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <SourceNumber>A9</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B1.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B1</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B10.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B10</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B11.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B11</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B12.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B12</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B13.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B13</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B14.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B14</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B15.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B15</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B16.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B16</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B17.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B17</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B18.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B18</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B19.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B19</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B2.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B2</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B20.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B20</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B21.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B21</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B22.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B22</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B23.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B23</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B24.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B24</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B25.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B25</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B3.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B3</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B4.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B4</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B5.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B5</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B6.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B6</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B7.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B7</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B8.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B8</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/B9.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>B9</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/Chamber.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>true</IsFlip>
  <IsProcessComplete>true</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName>AAA</RecipeName>
  <SourceNumber>A6</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/Port1_1.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_10.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_11.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_12.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_13.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_14.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_15.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_16.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_17.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_18.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_19.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_2.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_20.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_21.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_22.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_23.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_24.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_25.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Exist</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_3.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_4.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_5.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_6.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_7.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_8.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port1_9.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_1.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_10.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_11.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_12.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_13.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Leaning</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_14.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_15.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_16.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_17.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_18.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_19.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_2.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_20.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_21.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_22.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_23.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_24.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_25.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Leaning</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_3.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_4.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_5.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_6.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_7.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_8.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/Port2_9.xml
»õ ÆÄÀÏ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <CarrierID />
  <LotID />
</WaferInfo>
SA_LTT/Info/Wafer/PreAligner.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>A1</SourceNumber>
</WaferInfo>
SA_LTT/Info/Wafer/Robot.xml
»õ ÆÄÀÏ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<WaferInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <IsStatus>Empty</IsStatus>
  <IsFlip>false</IsFlip>
  <IsProcessComplete>false</IsProcessComplete>
  <CarrierID />
  <LotID />
  <RecipeName />
  <SourceNumber>A1</SourceNumber>
</WaferInfo>
SA_LTT/Program/Cor1746.ct5
Binary files differ
SA_LTT/Program/Cor_1to1.ct5
Binary files differ
SA_LTT/Program/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program/EasyModbus.dll
Binary files differ
SA_LTT/Program/RTC5DAT.dat
Binary files differ
SA_LTT/Program/RTC5DLL.dll
Binary files differ
SA_LTT/Program/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program/RTC5OUT.out
Binary files differ
SA_LTT/Program/RTC5RBF.rbf
Binary files differ
SA_LTT/Program/Resources/Aligner.png
SA_LTT/Program/Resources/Chamber.png
SA_LTT/Program/Resources/RecipeImage.PNG
SA_LTT/Program/Resources/Robot_Arm.png
SA_LTT/Program/Resources/Robot_Arm1.png
SA_LTT/Program/Resources/Robot_Arm2.png
SA_LTT/Program/Resources/Robot_Body.png
SA_LTT/Program/SA_LTT.dll
Binary files differ
SA_LTT/Program/SA_LTT.pdb
Binary files differ
SA_LTT/Program/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program/log4net.dll
Binary files differ
SA_LTT/Program/padDLLBW.dll
Binary files differ
SA_LTT/Program/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_230508/Cor1746.ct5
Binary files differ
SA_LTT/Program_230508/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_230508/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_230508/EasyModbus.dll
Binary files differ
SA_LTT/Program_230508/RTC5DAT.dat
Binary files differ
SA_LTT/Program_230508/RTC5DLL.dll
Binary files differ
SA_LTT/Program_230508/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_230508/RTC5OUT.out
Binary files differ
SA_LTT/Program_230508/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_230508/Resources/Aligner.png
SA_LTT/Program_230508/Resources/Chamber.png
SA_LTT/Program_230508/Resources/RecipeImage.PNG
SA_LTT/Program_230508/Resources/Robot_Arm.png
SA_LTT/Program_230508/Resources/Robot_Arm1.png
SA_LTT/Program_230508/Resources/Robot_Arm2.png
SA_LTT/Program_230508/Resources/Robot_Body.png
SA_LTT/Program_230508/SA_LTT.dll
Binary files differ
SA_LTT/Program_230508/SA_LTT.pdb
Binary files differ
SA_LTT/Program_230508/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_230508/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_230508/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_230508/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_230508/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_230508/log4net.dll
Binary files differ
SA_LTT/Program_230508/padDLLBW.dll
Binary files differ
SA_LTT/Program_230508/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_230508/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_Back1213/Cor1746.ct5
Binary files differ
SA_LTT/Program_Back1213/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_Back1213/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_Back1213/EasyModbus.dll
Binary files differ
SA_LTT/Program_Back1213/RTC5DAT.dat
Binary files differ
SA_LTT/Program_Back1213/RTC5DLL.dll
Binary files differ
SA_LTT/Program_Back1213/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_Back1213/RTC5OUT.out
Binary files differ
SA_LTT/Program_Back1213/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_Back1213/Resources/Aligner.png
SA_LTT/Program_Back1213/Resources/Chamber.png
SA_LTT/Program_Back1213/Resources/RecipeImage.PNG
SA_LTT/Program_Back1213/Resources/Robot_Arm.png
SA_LTT/Program_Back1213/Resources/Robot_Arm1.png
SA_LTT/Program_Back1213/Resources/Robot_Arm2.png
SA_LTT/Program_Back1213/Resources/Robot_Body.png
SA_LTT/Program_Back1213/SA_LTT.dll
Binary files differ
SA_LTT/Program_Back1213/SA_LTT.pdb
Binary files differ
SA_LTT/Program_Back1213/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_Back1213/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Back1213/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Back1213/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_Back1213/log4net.dll
Binary files differ
SA_LTT/Program_Back1213/padDLLBW.dll
Binary files differ
SA_LTT/Program_Back230214/Cor1746.ct5
Binary files differ
SA_LTT/Program_Back230214/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_Back230214/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_Back230214/EasyModbus.dll
Binary files differ
SA_LTT/Program_Back230214/RTC5DAT.dat
Binary files differ
SA_LTT/Program_Back230214/RTC5DLL.dll
Binary files differ
SA_LTT/Program_Back230214/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_Back230214/RTC5OUT.out
Binary files differ
SA_LTT/Program_Back230214/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_Back230214/Resources/Aligner.png
SA_LTT/Program_Back230214/Resources/Chamber.png
SA_LTT/Program_Back230214/Resources/RecipeImage.PNG
SA_LTT/Program_Back230214/Resources/Robot_Arm.png
SA_LTT/Program_Back230214/Resources/Robot_Arm1.png
SA_LTT/Program_Back230214/Resources/Robot_Arm2.png
SA_LTT/Program_Back230214/Resources/Robot_Body.png
SA_LTT/Program_Back230214/SA_LTT.dll
Binary files differ
SA_LTT/Program_Back230214/SA_LTT.pdb
Binary files differ
SA_LTT/Program_Back230214/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_Back230214/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Back230214/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Back230214/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_Back230214/log4net.dll
Binary files differ
SA_LTT/Program_Back230214/padDLLBW.dll
Binary files differ
SA_LTT/Program_Back230214/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Back230214/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_Usb/Cor1746.ct5
Binary files differ
SA_LTT/Program_Usb/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_Usb/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_Usb/EasyModbus.dll
Binary files differ
SA_LTT/Program_Usb/RTC5DAT.dat
Binary files differ
SA_LTT/Program_Usb/RTC5DLL.dll
Binary files differ
SA_LTT/Program_Usb/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_Usb/RTC5OUT.out
Binary files differ
SA_LTT/Program_Usb/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_Usb/Resources/Aligner.png
SA_LTT/Program_Usb/Resources/Chamber.png
SA_LTT/Program_Usb/Resources/RecipeImage.PNG
SA_LTT/Program_Usb/Resources/Robot_Arm.png
SA_LTT/Program_Usb/Resources/Robot_Arm1.png
SA_LTT/Program_Usb/Resources/Robot_Arm2.png
SA_LTT/Program_Usb/Resources/Robot_Body.png
SA_LTT/Program_Usb/SA_LTT.dll
Binary files differ
SA_LTT/Program_Usb/SA_LTT.pdb
Binary files differ
SA_LTT/Program_Usb/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_Usb/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Usb/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Usb/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_Usb/log4net.dll
Binary files differ
SA_LTT/Program_Usb/padDLLBW.dll
Binary files differ
SA_LTT/Program_Usb/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_Usb/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_back230220/Cor1746.ct5
Binary files differ
SA_LTT/Program_back230220/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_back230220/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_back230220/EasyModbus.dll
Binary files differ
SA_LTT/Program_back230220/RTC5DAT.dat
Binary files differ
SA_LTT/Program_back230220/RTC5DLL.dll
Binary files differ
SA_LTT/Program_back230220/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_back230220/RTC5OUT.out
Binary files differ
SA_LTT/Program_back230220/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_back230220/Resources/Aligner.png
SA_LTT/Program_back230220/Resources/Chamber.png
SA_LTT/Program_back230220/Resources/RecipeImage.PNG
SA_LTT/Program_back230220/Resources/Robot_Arm.png
SA_LTT/Program_back230220/Resources/Robot_Arm1.png
SA_LTT/Program_back230220/Resources/Robot_Arm2.png
SA_LTT/Program_back230220/Resources/Robot_Body.png
SA_LTT/Program_back230220/SA_LTT.dll
Binary files differ
SA_LTT/Program_back230220/SA_LTT.pdb
Binary files differ
SA_LTT/Program_back230220/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_back230220/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back230220/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back230220/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_back230220/log4net.dll
Binary files differ
SA_LTT/Program_back230220/padDLLBW.dll
Binary files differ
SA_LTT/Program_back230220/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back230220/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_back230330/Cor1746.ct5
Binary files differ
SA_LTT/Program_back230330/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_back230330/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_back230330/EasyModbus.dll
Binary files differ
SA_LTT/Program_back230330/RTC5DAT.dat
Binary files differ
SA_LTT/Program_back230330/RTC5DLL.dll
Binary files differ
SA_LTT/Program_back230330/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_back230330/RTC5OUT.out
Binary files differ
SA_LTT/Program_back230330/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_back230330/Resources/Aligner.png
SA_LTT/Program_back230330/Resources/Chamber.png
SA_LTT/Program_back230330/Resources/RecipeImage.PNG
SA_LTT/Program_back230330/Resources/Robot_Arm.png
SA_LTT/Program_back230330/Resources/Robot_Arm1.png
SA_LTT/Program_back230330/Resources/Robot_Arm2.png
SA_LTT/Program_back230330/Resources/Robot_Body.png
SA_LTT/Program_back230330/SA_LTT.dll
Binary files differ
SA_LTT/Program_back230330/SA_LTT.pdb
Binary files differ
SA_LTT/Program_back230330/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_back230330/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back230330/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back230330/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_back230330/log4net.dll
Binary files differ
SA_LTT/Program_back230330/padDLLBW.dll
Binary files differ
SA_LTT/Program_back230330/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back230330/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_back232023/Cor1746.ct5
Binary files differ
SA_LTT/Program_back232023/Cor_1to1.ct5
Binary files differ
SA_LTT/Program_back232023/Cor_1to1_old.ct5
Binary files differ
SA_LTT/Program_back232023/EasyModbus.dll
Binary files differ
SA_LTT/Program_back232023/RTC5DAT.dat
Binary files differ
SA_LTT/Program_back232023/RTC5DLL.dll
Binary files differ
SA_LTT/Program_back232023/RTC5DLLx64.dll
Binary files differ
SA_LTT/Program_back232023/RTC5OUT.out
Binary files differ
SA_LTT/Program_back232023/RTC5RBF.rbf
Binary files differ
SA_LTT/Program_back232023/Resources/Aligner.png
SA_LTT/Program_back232023/Resources/Chamber.png
SA_LTT/Program_back232023/Resources/RecipeImage.PNG
SA_LTT/Program_back232023/Resources/Robot_Arm.png
SA_LTT/Program_back232023/Resources/Robot_Arm1.png
SA_LTT/Program_back232023/Resources/Robot_Arm2.png
SA_LTT/Program_back232023/Resources/Robot_Body.png
SA_LTT/Program_back232023/SA_LTT.dll
Binary files differ
SA_LTT/Program_back232023/SA_LTT.pdb
Binary files differ
SA_LTT/Program_back232023/SA_LTT_UI.exe
Binary files differ
SA_LTT/Program_back232023/SA_LTT_UI.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back232023/SA_LTT_UI.pdb
Binary files differ
SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe
Binary files differ
SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back232023/SA_LTT_UI.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT/Program_back232023/log4net.dll
Binary files differ
SA_LTT/Program_back232023/padDLLBW.dll
Binary files differ
SA_LTT/Program_back232023/pp.vshost.exe.config
»õ ÆÄÀÏ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>
SA_LTT/Program_back232023/pp.vshost.exe.manifest
»õ ÆÄÀÏ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
SA_LTT_UI/.vs/SA_LTT_UI/v14/.suo
Binary files differ
SA_LTT_UI/.vs/SA_LTT_UI/v15/.suo
Binary files differ
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/db.lock
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide
Binary files differ
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-shm
Binary files differ
SA_LTT_UI/.vs/SA_LTT_UI/v15/Server/sqlite3/storage.ide-wal
Binary files differ
SA_LTT_UI/SA_LTT/Alarm/Alarm.cs
»õ ÆÄÀÏ
@@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Alarm
{
    public class Alarm
    {
        public Alarm()
        {
        }
        AlarmCode _code;
        string _description;
        AlarmLevel _level;
        bool _use;
        DateTime _occurredTime;
        public AlarmCode Code
        {
            get
            {
                return _code;
            }
            set
            {
                _code = value;
            }
        }
        public string Description
        {
            get
            {
                return _description;
            }
            set
            {
                _description = value;
            }
        }
        public bool Heavy
        {
            get
            {
                return _level == AlarmLevel.Heavy;
            }
            set
            {
                if (value == true)
                {
                    _level = AlarmLevel.Heavy;
                }
                else
                {
                    _level = AlarmLevel.Light;
                }
            }
        }
        public bool Light
        {
            get
            {
                return _level == AlarmLevel.Light;
            }
            set
            {
                if (value == true)
                {
                    _level = AlarmLevel.Light;
                }
                else
                {
                    _level = AlarmLevel.Heavy;
                }
            }
        }
        public AlarmLevel Level
        {
            get
            {
                return _level;
            }
            set
            {
                _level = value;
            }
        }
        public bool Use
        {
            get
            {
                return _use;
            }
            set
            {
                _use = value;
            }
        }
        public DateTime OccurredTime
        {
            get
            {
                return _occurredTime;
            }
            set
            {
                _occurredTime = value;
            }
        }
        public Alarm Clone()
        {
            Alarm clone = new Alarm();
            clone.Code = this.Code;
            clone.Description = this.Description;
            clone.Level = this.Level;
            clone.Use = this.Use;
            clone.OccurredTime = this.OccurredTime;
            return clone;
        }
        public static bool operator == (Alarm alarm1, Alarm alarm2)
        {
            bool result = true;
            result &= alarm1.Code == alarm2.Code;
            result &= alarm1.Description == alarm2.Description;
            result &= alarm1.Heavy == alarm2.Heavy;
            result &= alarm1.Light == alarm2.Light;
            result &= alarm1.Level == alarm2.Level;
            result &= alarm1.Use == alarm2.Use;
            return result;
        }
        public static bool operator != (Alarm alarm1, Alarm alarm2)
        {
            bool result = true;
            result &= alarm1.Code == alarm2.Code;
            result &= alarm1.Description == alarm2.Description;
            result &= alarm1.Heavy == alarm2.Heavy;
            result &= alarm1.Light == alarm2.Light;
            result &= alarm1.Level == alarm2.Level;
            result &= alarm1.Use == alarm2.Use;
            return !result;
        }
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
    }
}
SA_LTT_UI/SA_LTT/Alarm/AlarmCode.cs
»õ ÆÄÀÏ
@@ -0,0 +1,2023 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT
{
    public enum AlarmCode
    {
        AL_0000_,
        AL_0001_EMO_STOP_1,
        AL_0002_EMO_STOP_2,
        AL_0003_EMO_STOP_3,
        AL_0004_EMO_STOP_4,
        AL_0005_SMOKE_DETECTOR_ON,
        AL_0006_,
        AL_0007_,
        AL_0008_,
        AL_0009_,
        AL_0010_DOOR_OPEN_1,
        AL_0011_DOOR_OPEN_2,
        AL_0012_DOOR_OPEN_3,
        AL_0013_DOOR_OPEN_4,
        AL_0014_DOOR_OPEN_CP,
        AL_0015_,
        AL_0016_,
        AL_0017_,
        AL_0018_,
        AL_0019_,
        AL_0020_SERVO_MC_OFF,
        AL_0021_VACUUM_MC_OFF,
        AL_0022_,
        AL_0023_,
        AL_0024_,
        AL_0025_,
        AL_0026_,
        AL_0027_,
        AL_0028_,
        AL_0029_,
        AL_0030_LASER_WATER_LEAK,
        AL_0031_CHILLER_WATER_LEAK,
        AL_0032_,
        AL_0033_,
        AL_0034_,
        AL_0035_,
        AL_0036_,
        AL_0037_,
        AL_0038_,
        AL_0039_,
        AL_0040_MAIN_CDA_PRESSURE,
        AL_0041_MAIN_VAC_PRESSURE,
        AL_0042_MAIN_CDA_FLOW,
        AL_0043_CMB_VAC_PRESSURE,
        AL_0044_,
        AL_0045_,
        AL_0046_,
        AL_0047_,
        AL_0048_,
        AL_0049_,
        AL_0050_CREVIS_DISCONNECTED,
        AL_0051_PRE_ALIGNER_DISCONNECTED,
        AL_0052_ROBOT_DISCONNECTED,
        AL_0053_ATTENUATOR_DISCONNECTED,
        AL_0054_TEMPCONTROLER_DISCONNECTED,
        AL_0055_FFU_DISCONNECTED,
        AL_0056_POWER_PMAC_DISCONNECTED,
        AL_0057_UV_LASER_DISCONNECTED,
        AL_0058_GR200_DISCONNECTED,
        AL_0059_POWERMETER_DISCONNECTED,
        AL_0060_POWER_PMAC_DISCONNECTED,
        AL_0061_CHILLER_DISCONNECTED,
        AL_0062_,
        AL_0063_,
        AL_0064_,
        AL_0065_,
        AL_0066_,
        AL_0067_,
        AL_0068_,
        AL_0069_,
        AL_0070_PORT1_IS_NOT_DETECTED,
        AL_0071_PORT2_IS_NOT_DETECTED,
        AL_0072_PREALIGNER_HAS_NOT_WAFER,
        AL_0073_CHAMBER_HAS_NOT_WAFER,
        AL_0074_ROBOT_HAS_NOT_WAFER,
        AL_0075_PREALIGNER_HAS_WAFER,
        AL_0076_CHAMBER_HAS_WAFER,
        AL_0077_ROBOT_HAS_WAFER,
        AL_0078_LDD_IS_NOT_ON,
        AL_0079_SHUTTER_IS_NOT_OPEN,
        AL_0080_SET_CURRENT_IS_NOT_ZERO,
        AL_0081_ENERGY_MEASUREMENT_FAIL,
        AL_0082_,
        AL_0083_,
        AL_0084_,
        AL_0085_,
        AL_0086_,
        AL_0087_,
        AL_0088_,
        AL_0089_,
        AL_0090_,
        AL_0091_,
        AL_0092_,
        AL_0093_,
        AL_0094_,
        AL_0095_,
        AL_0096_,
        AL_0097_,
        AL_0098_,
        AL_0099_,
        AL_0100_LASER_SOFT_FAULT_HFSYNC,
        AL_0101_LASER_SOFT_FAULT_LDD_INTERLOCK,
        AL_0102_LASER_SOFT_FAULT_SHUTTER_INTERLOCK,
        AL_0103_LASER_SOFT_FAULT_LOW_EXT_FREQUENCY,
        AL_0104_LASER_BOARD_FAULT_MAIN,
        AL_0105_LASER_BOARD_FAULT_COMMON,
        AL_0106_LASER_BOARD_FAULT_TEMPERATURE,
        AL_0107_LASER_BOARD_FAULT_SENSOR,
        AL_0108_LASER_BOARD_FAULT_POWER_MONITOR,
        AL_0109_LASER_BOARD_FAULT_PULSE,
        AL_0110_LASER_BOARD_FAULT_LDD,
        AL_0111_LASER_BOARD_FAULT_MOTOR,
        AL_0112_LASER_SYSTEM_FAULT_MEMORY,
        AL_0113_LASER_SYSTEM_FAULT_SDCARD,
        AL_0114_LASER_SYSTEM_FAULT_BOARD_COMMUNICATION,
        AL_0115_LASER_SYSTEM_FAULT_BOARD_STATE,
        AL_0116_LASER_GENERAL_ALARM_LDD1,
        AL_0117_LASER_GENERAL_ALARM_LDD2,
        AL_0118_LASER_GENERAL_ALARM_QSW,
        AL_0119_LASER_GENERAL_ALARM_FLOW,
        AL_0120_LASER_GENERAL_ALARM_WET,
        AL_0121_LASER_GENERAL_ALARM_HUMIDITY,
        AL_0122_LASER_GENERAL_ALARM_HFSYNC,
        AL_0123_LASER_TEMPERATURE_FAULT_0,
        AL_0124_LASER_TEMPERATURE_FAULT_1,
        AL_0125_LASER_TEMPERATURE_FAULT_2,
        AL_0126_LASER_TEMPERATURE_FAULT_3,
        AL_0127_LASER_TEMPERATURE_FAULT_4,
        AL_0128_LASER_TEMPERATURE_FAULT_5,
        AL_0129_LASER_TEMPERATURE_FAULT_6,
        AL_0130_LASER_TEMPERATURE_FAULT_7,
        AL_0131_LASER_SOFT_FAULT,
        AL_0132_LASER_HARD_FAULT,
        AL_0133_,
        AL_0134_,
        AL_0135_,
        AL_0136_,
        AL_0137_,
        AL_0138_,
        AL_0139_,
        AL_0140_,
        AL_0141_,
        AL_0142_,
        AL_0143_,
        AL_0144_,
        AL_0145_,
        AL_0146_,
        AL_0147_,
        AL_0148_,
        AL_0149_,
        AL_0150_,
        AL_0151_,
        AL_0152_,
        AL_0153_,
        AL_0154_,
        AL_0155_,
        AL_0156_,
        AL_0157_,
        AL_0158_,
        AL_0159_,
        AL_0160_,
        AL_0161_,
        AL_0162_,
        AL_0163_,
        AL_0164_,
        AL_0165_,
        AL_0166_,
        AL_0167_,
        AL_0168_,
        AL_0169_,
        AL_0170_,
        AL_0171_,
        AL_0172_,
        AL_0173_,
        AL_0174_,
        AL_0175_,
        AL_0176_,
        AL_0177_,
        AL_0178_,
        AL_0179_,
        AL_0180_,
        AL_0181_,
        AL_0182_,
        AL_0183_,
        AL_0184_,
        AL_0185_,
        AL_0186_,
        AL_0187_,
        AL_0188_,
        AL_0189_,
        AL_0190_,
        AL_0191_,
        AL_0192_,
        AL_0193_,
        AL_0194_,
        AL_0195_,
        AL_0196_,
        AL_0197_,
        AL_0198_,
        AL_0199_,
        AL_0200_ROBOT_ALARM_OCCURED,
        AL_0201_,
        AL_0202_,
        AL_0203_,
        AL_0204_,
        AL_0205_,
        AL_0206_,
        AL_0207_,
        AL_0208_,
        AL_0209_,
        AL_0210_,
        AL_0211_,
        AL_0212_,
        AL_0213_,
        AL_0214_,
        AL_0215_,
        AL_0216_,
        AL_0217_,
        AL_0218_,
        AL_0219_,
        AL_0220_,
        AL_0221_,
        AL_0222_,
        AL_0223_,
        AL_0224_,
        AL_0225_,
        AL_0226_,
        AL_0227_,
        AL_0228_,
        AL_0229_,
        AL_0230_,
        AL_0231_,
        AL_0232_,
        AL_0233_,
        AL_0234_,
        AL_0235_,
        AL_0236_,
        AL_0237_,
        AL_0238_,
        AL_0239_,
        AL_0240_,
        AL_0241_,
        AL_0242_,
        AL_0243_,
        AL_0244_,
        AL_0245_,
        AL_0246_,
        AL_0247_,
        AL_0248_,
        AL_0249_,
        AL_0250_,
        AL_0251_,
        AL_0252_,
        AL_0253_,
        AL_0254_,
        AL_0255_,
        AL_0256_,
        AL_0257_,
        AL_0258_,
        AL_0259_,
        AL_0260_,
        AL_0261_,
        AL_0262_,
        AL_0263_,
        AL_0264_,
        AL_0265_,
        AL_0266_,
        AL_0267_,
        AL_0268_,
        AL_0269_,
        AL_0270_,
        AL_0271_,
        AL_0272_,
        AL_0273_,
        AL_0274_,
        AL_0275_,
        AL_0276_,
        AL_0277_,
        AL_0278_,
        AL_0279_,
        AL_0280_,
        AL_0281_,
        AL_0282_,
        AL_0283_,
        AL_0284_,
        AL_0285_,
        AL_0286_,
        AL_0287_,
        AL_0288_,
        AL_0289_,
        AL_0290_,
        AL_0291_,
        AL_0292_,
        AL_0293_,
        AL_0294_,
        AL_0295_,
        AL_0296_,
        AL_0297_,
        AL_0298_,
        AL_0299_,
        AL_0300_POWER_PMAC_NOT_CONNECTED,
        AL_0301_POWER_PMAC_INVALID_DEVICE,
        AL_0302_POWER_PMAC_INVALID_COMMAND,
        AL_0303_POWER_PMAC_INVALID_RESPONSE,
        AL_0304_POWER_PMAC_DATA_REAMINS,
        AL_0305_POWER_PMAC_CMD_LENGTH_EXCEEDS,
        AL_0306_POWER_PMAC_RES_LENGTH_EXCEEDS,
        AL_0307_POWER_PMAC_RUNNING_DOWNLOAD,
        AL_0308_POWER_PMAC_ERROR,
        AL_0309_,
        AL_0310_,
        AL_0311_,
        AL_0312_,
        AL_0313_,
        AL_0314_,
        AL_0315_,
        AL_0316_,
        AL_0317_,
        AL_0318_,
        AL_0319_,
        AL_0320_MOTOR_Y_NEGATIVE_LIMIT,
        AL_0321_MOTOR_Y_POSITIVE_LIMIT,
        AL_0322_,
        AL_0323_,
        AL_0324_,
        AL_0325_,
        AL_0326_,
        AL_0327_,
        AL_0328_,
        AL_0329_,
        AL_0330_,
        AL_0331_,
        AL_0332_,
        AL_0333_,
        AL_0334_,
        AL_0335_,
        AL_0336_,
        AL_0337_,
        AL_0338_,
        AL_0339_,
        AL_0340_MOTOR_X_NEGATIVE_LIMIT,
        AL_0341_MOTOR_X_POSITIVE_LIMIT,
        AL_0342_,
        AL_0343_,
        AL_0344_,
        AL_0345_,
        AL_0346_,
        AL_0347_,
        AL_0348_,
        AL_0349_,
        AL_0350_,
        AL_0351_,
        AL_0352_,
        AL_0353_,
        AL_0354_,
        AL_0355_,
        AL_0356_,
        AL_0357_,
        AL_0358_,
        AL_0359_,
        AL_0360_MOTOR_T_NEGATIVE_LIMIT,
        AL_0361_MOTOR_T_POSITIVE_LIMIT,
        AL_0362_,
        AL_0363_,
        AL_0364_,
        AL_0365_,
        AL_0366_,
        AL_0367_,
        AL_0368_,
        AL_0369_,
        AL_0370_,
        AL_0371_,
        AL_0372_,
        AL_0373_,
        AL_0374_,
        AL_0375_,
        AL_0376_,
        AL_0377_,
        AL_0378_,
        AL_0379_,
        AL_0380_,
        AL_0381_,
        AL_0382_,
        AL_0383_,
        AL_0384_,
        AL_0385_,
        AL_0386_,
        AL_0387_,
        AL_0388_,
        AL_0389_,
        AL_0390_,
        AL_0391_,
        AL_0392_,
        AL_0393_,
        AL_0394_,
        AL_0395_,
        AL_0396_,
        AL_0397_,
        AL_0398_,
        AL_0399_,
        AL_0400_CHILLER_LOW_LEVEL_IN_TANK,
        AL_0401_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_TEMP,
        AL_0402_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_RISE,
        AL_0403_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_DROP,
        AL_0404_CHILLER_HIGH_CIRCULATING_FLUID_RETURN_TEMP,
        AL_0405_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_PRESSURE,
        AL_0406_CHILLER_ABNORMAL_PUMP_OPERATION,
        AL_0407_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_RISE,
        AL_0408_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_DROP,
        AL_0409_CHILLER_HIGH_COMPRESSOR_INTANK_TEMP,
        AL_0410_CHILLER_LOW_COMPRESSOR_INTANK_TEMP,
        AL_0411_CHILLER_LOW_SUPER_HEAT_TEMPERATURE,
        AL_0412_CHILLER_HIGH_COMPRESSOR_DISCHARGE_PRESSURE,
        AL_0413_CHILLER_REFRIGERANT_CIRCUIT_HIGH_PRESSURE_DROP,
        AL_0414_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_RISE,
        AL_0415_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_DROP,
        AL_0416_CHILLER_COMPRESSOR_OVER_LOAD,
        AL_0417_CHILLER_COMMUNICATION_ERROR,
        AL_0418_CHILLER_MEMORY_ERROR,
        AL_0419_CHILLER_DC_LINE_FUSE_CUT,
        AL_0420_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_SENSOR_FAILURE,
        AL_0421_CHILLER_CIRCULATING_FLUID_TEMP_SENSOR_FAILURE,
        AL_0422_CHILLER_COMPRESSOR_INTANK_TEMP_SENSOR_FAILURE,
        AL_0423_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_SENSOR_FAILURE,
        AL_0424_CHILLER_COMPRESSOR_DISCHARGE_PRESSURE_SENSOR_FAILURE,
        AL_0425_CHILLER_COMPRESSOR_INTANK_PRESSURE_SENSOR_FAILURE,
        AL_0426_CHILLER_MAINTENANCE_OF_PUMP,
        AL_0427_CHILLER_MAINTENENCE_OF_FAN_MOTOR,
        AL_0428_CHILLER_MAINTENENCE_OF_COMPRESSOR,
        AL_0429_CHILLER_CONTACT_INPUT_1_SIGNAL_DETECTION_ALARM,
        AL_0430_CHILLER_CONTACT_INPUT_2_SIGNAL_DETECTION_ALARM,
        AL_0431_CHILLER_WATER_LEAKAGE,
        AL_0432_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_RISE,
        AL_0433_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_DROP,
        AL_0434_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_SENSOR_ERROR,
        AL_0435,
        AL_0436,
        AL_0437,
        AL_0438,
        AL_0439,
        AL_0440,
        AL_0441,
        AL_0442,
        AL_0443,
        AL_0444,
        AL_0445_,
        AL_0446_,
        AL_0447_,
        AL_0448_,
        AL_0449_,
        AL_0450_,
        AL_0451_,
        AL_0452_,
        AL_0453_,
        AL_0454_,
        AL_0455_,
        AL_0456_,
        AL_0457_,
        AL_0458_,
        AL_0459_,
        AL_0460_,
        AL_0461_,
        AL_0462_,
        AL_0463_,
        AL_0464_,
        AL_0465_,
        AL_0466_,
        AL_0467_,
        AL_0468_,
        AL_0469_,
        AL_0470_,
        AL_0471_,
        AL_0472_,
        AL_0473_,
        AL_0474_,
        AL_0475_,
        AL_0476_,
        AL_0477_,
        AL_0478_,
        AL_0479_,
        AL_0480_,
        AL_0481_,
        AL_0482_,
        AL_0483_,
        AL_0484_,
        AL_0485_,
        AL_0486_,
        AL_0487_,
        AL_0488_,
        AL_0489_,
        AL_0490_,
        AL_0491_,
        AL_0492_,
        AL_0493_,
        AL_0494_,
        AL_0495_,
        AL_0496_,
        AL_0497_,
        AL_0498_,
        AL_0499_,
        AL_0500_PREALIGNER_PIN_UP_ERROR,
        AL_0501_PREALIGNER_PIN_DOWN_ERROR,
        AL_0502_PREALIGNER_VACCUM_ERROR,
        AL_0503_PREALIGNER_NO_WAFER,
        AL_0504_PREALIGNER_WAFER_LIMIT_ERROR_AFTER_ALIGN,
        AL_0505_PREALIGNER_NOT_FOUND_NOTCH,
        AL_0506_PREALIGNER_STAGE_LIMIT_ERROR,
        AL_0507_PREALIGNER_INVALID_ALIGN_COMMAND,
        AL_0508_PREALIGNER_CHUCK_ARRANGE_ERROR,
        AL_0509_PREALIGNER_WAFER_ALIGN_CCD_OVER,
        AL_0510_PREALIGNER_WAFER_LIMIT_ERROR_BEFORE_ALIGN,
        AL_0511_PREALIGNER_RETRACT_HOME,
        AL_0512_PREALIGNER_WAFER_EXIST,
        AL_0513_PREALIGNER_CCD_MODULE_ERROR,
        AL_0514_PREALIGNER_ALIGNER_TYPE_ERROR,
        AL_0515_PREALIGNER_COMMAND_ERROR,
        AL_0516_,
        AL_0517_,
        AL_0518_,
        AL_0519_,
        AL_0520_,
        AL_0521_,
        AL_0522_,
        AL_0523_,
        AL_0524_,
        AL_0525_,
        AL_0526_,
        AL_0527_,
        AL_0528_,
        AL_0529_,
        AL_0530_,
        AL_0531_,
        AL_0532_,
        AL_0533_,
        AL_0534_,
        AL_0535_,
        AL_0536_,
        AL_0537_,
        AL_0538_,
        AL_0539_,
        AL_0540_,
        AL_0541_,
        AL_0542_,
        AL_0543_,
        AL_0544_,
        AL_0545_,
        AL_0546_,
        AL_0547_,
        AL_0548_,
        AL_0549_,
        AL_0550_,
        AL_0551_,
        AL_0552_,
        AL_0553_,
        AL_0554_,
        AL_0555_,
        AL_0556_,
        AL_0557_,
        AL_0558_,
        AL_0559_,
        AL_0560_,
        AL_0561_,
        AL_0562_,
        AL_0563_,
        AL_0564_,
        AL_0565_,
        AL_0566_,
        AL_0567_,
        AL_0568_,
        AL_0569_,
        AL_0570_,
        AL_0571_,
        AL_0572_,
        AL_0573_,
        AL_0574_,
        AL_0575_,
        AL_0576_,
        AL_0577_,
        AL_0578_,
        AL_0579_,
        AL_0580_,
        AL_0581_,
        AL_0582_,
        AL_0583_,
        AL_0584_,
        AL_0585_,
        AL_0586_,
        AL_0587_,
        AL_0588_,
        AL_0589_,
        AL_0590_,
        AL_0591_,
        AL_0592_,
        AL_0593_,
        AL_0594_,
        AL_0595_,
        AL_0596_,
        AL_0597_,
        AL_0598_,
        AL_0599_,
        AL_0600_,
        AL_0601_,
        AL_0602_,
        AL_0603_,
        AL_0604_,
        AL_0605_,
        AL_0606_,
        AL_0607_,
        AL_0608_,
        AL_0609_,
        AL_0610_,
        AL_0611_,
        AL_0612_,
        AL_0613_,
        AL_0614_,
        AL_0615_,
        AL_0616_,
        AL_0617_,
        AL_0618_,
        AL_0619_,
        AL_0620_,
        AL_0621_,
        AL_0622_,
        AL_0623_,
        AL_0624_,
        AL_0625_,
        AL_0626_,
        AL_0627_,
        AL_0628_,
        AL_0629_,
        AL_0630_,
        AL_0631_,
        AL_0632_,
        AL_0633_,
        AL_0634_,
        AL_0635_,
        AL_0636_,
        AL_0637_,
        AL_0638_,
        AL_0639_,
        AL_0640_,
        AL_0641_,
        AL_0642_,
        AL_0643_,
        AL_0644_,
        AL_0645_,
        AL_0646_,
        AL_0647_,
        AL_0648_,
        AL_0649_,
        AL_0650_,
        AL_0651_,
        AL_0652_,
        AL_0653_,
        AL_0654_,
        AL_0655_,
        AL_0656_,
        AL_0657_,
        AL_0658_,
        AL_0659_,
        AL_0660_,
        AL_0661_,
        AL_0662_,
        AL_0663_,
        AL_0664_,
        AL_0665_,
        AL_0666_,
        AL_0667_,
        AL_0668_,
        AL_0669_,
        AL_0670_,
        AL_0671_,
        AL_0672_,
        AL_0673_,
        AL_0674_,
        AL_0675_,
        AL_0676_,
        AL_0677_,
        AL_0678_,
        AL_0679_,
        AL_0680_,
        AL_0681_,
        AL_0682_,
        AL_0683_,
        AL_0684_,
        AL_0685_,
        AL_0686_,
        AL_0687_,
        AL_0688_,
        AL_0689_,
        AL_0690_,
        AL_0691_,
        AL_0692_,
        AL_0693_,
        AL_0694_,
        AL_0695_,
        AL_0696_,
        AL_0697_,
        AL_0698_,
        AL_0699_,
        AL_0700_,
        AL_0701_,
        AL_0702_,
        AL_0703_,
        AL_0704_,
        AL_0705_,
        AL_0706_,
        AL_0707_,
        AL_0708_,
        AL_0709_,
        AL_0710_,
        AL_0711_,
        AL_0712_,
        AL_0713_,
        AL_0714_,
        AL_0715_,
        AL_0716_,
        AL_0717_,
        AL_0718_,
        AL_0719_,
        AL_0720_,
        AL_0721_,
        AL_0722_,
        AL_0723_,
        AL_0724_,
        AL_0725_,
        AL_0726_,
        AL_0727_,
        AL_0728_,
        AL_0729_,
        AL_0730_,
        AL_0731_,
        AL_0732_,
        AL_0733_,
        AL_0734_,
        AL_0735_,
        AL_0736_,
        AL_0737_,
        AL_0738_,
        AL_0739_,
        AL_0740_,
        AL_0741_,
        AL_0742_,
        AL_0743_,
        AL_0744_,
        AL_0745_,
        AL_0746_,
        AL_0747_,
        AL_0748_,
        AL_0749_,
        AL_0750_,
        AL_0751_,
        AL_0752_,
        AL_0753_,
        AL_0754_,
        AL_0755_,
        AL_0756_,
        AL_0757_,
        AL_0758_,
        AL_0759_,
        AL_0760_,
        AL_0761_,
        AL_0762_,
        AL_0763_,
        AL_0764_,
        AL_0765_,
        AL_0766_,
        AL_0767_,
        AL_0768_,
        AL_0769_,
        AL_0770_,
        AL_0771_,
        AL_0772_,
        AL_0773_,
        AL_0774_,
        AL_0775_,
        AL_0776_,
        AL_0777_,
        AL_0778_,
        AL_0779_,
        AL_0780_,
        AL_0781_,
        AL_0782_,
        AL_0783_,
        AL_0784_,
        AL_0785_,
        AL_0786_,
        AL_0787_,
        AL_0788_,
        AL_0789_,
        AL_0790_,
        AL_0791_,
        AL_0792_,
        AL_0793_,
        AL_0794_,
        AL_0795_,
        AL_0796_,
        AL_0797_,
        AL_0798_,
        AL_0799_,
        AL_0800_RTC5_NO_BOARD_FOUND,
        AL_0801_RTC5_ACCESS_DENIED,
        AL_0802_RTC5_COMMAND_NOT_FORWARDED,
        AL_0803_RTC5_NO_RESPONSE_FROM_BOARD,
        AL_0804_RTC5_INVALID_PARAMETER,
        AL_0805_RTC5_LIST_PROCESSING_IS_NOT_ACTIVE,
        AL_0806_RTC5_LIST_COMMAND_REJECTED,
        AL_0807_RTC5_LIST_COMMAND_HAS_BEEN_COVERTED,
        AL_0808_RTC5_VERSION_ERROR_RTC5_DLL_VERSION,
        AL_0809_RTC5_VERIFY_ERROR_RTC5_DLL_VERSION,
        AL_0809_RTC5_VERIFY_ERROR_DOWNLOAD_VERIFICATION,
        AL_0810_RTC5_DSP_VERSION_ERROR,
        AL_0811_RTC5_DLL_INTERNAL_WINDOWS_MEMORY_REQUEST_FAIL,
        AL_0812_RTC5_EEPROM_READ_OR_WRITE_ERROR,
        AL_0813_RTC5_ERROR_READING_PCI_CONFIGURATION_REGISTER,
        AL_0814_RTC5_RESET_ERROR,
        AL_0815_RTC5_UNRESET_ERROR,
        AL_0816_RTC5_FILE_ERROR,
        AL_0817_RTC5_FORMAT_ERROR,
        AL_0818_RTC5_SYSTEM_ERROR,
        AL_0819_RTC5_ACCESS_ERROR,
        AL_0820_RTC5_VERSION_ERROR,
        AL_0821_RTC5_SYSTEM_DRIVER_NOT_FOUND,
        AL_0822_RTC5_DRIVER_CALL_ERROR,
        AL_0823_RTC5_CONFIGURATION_ERROR,
        AL_0824_RTC5_FPGA_FIRMWARE_ERROR,
        AL_0825_RTC5_PCI_DOWNLOAD_ERROR,
        AL_0826_RTC5_BUSY_ERROR,
        AL_0827_RTC5_DSP_MEMORY_ERROR,
        AL_0828_RTC5_VERIFY_ERROR,
        AL_0829_RTC5_PCI_ERROR,
        AL_0830_RTC5_FILE_ERROR,
        AL_0831_RTC5_MEMORY_ERROR,
        AL_0832_RTC5_FILE_OPEN_ERROR,
        AL_0833_RTC5_DSP_MEMORY_ERROR,
        AL_0834_RTC5_PCI_DOWNLOAD_ERROR,
        AL_0835_RTC5_SYSTEM_DRIVER_NOT_FOUND,
        AL_0836_RTC5_PARAMETER_ERROR,
        AL_0837_RTC5_ACCESS_ERROR,
        AL_0838_RTC5_WARNING_3D_CORRECTION_TABLE,
        AL_0839_RTC5_BUSY_ERROR,
        AL_0840_RTC5_PCI_UPLOAD_ERROR,
        AL_0841_RTC5_VERIFY_ERROR,
        AL_0842_,
        AL_0843_,
        AL_0844_,
        AL_0845_,
        AL_0846_,
        AL_0847_,
        AL_0848_,
        AL_0849_,
        AL_0850_,
        AL_0851_,
        AL_0852_,
        AL_0853_,
        AL_0854_,
        AL_0855_,
        AL_0856_,
        AL_0857_,
        AL_0858_,
        AL_0859_,
        AL_0860_,
        AL_0861_,
        AL_0862_,
        AL_0863_,
        AL_0864_,
        AL_0865_,
        AL_0866_,
        AL_0867_,
        AL_0868_,
        AL_0869_,
        AL_0870_,
        AL_0871_,
        AL_0872_,
        AL_0873_,
        AL_0874_,
        AL_0875_,
        AL_0876_,
        AL_0877_,
        AL_0878_,
        AL_0879_,
        AL_0880_,
        AL_0881_,
        AL_0882_,
        AL_0883_,
        AL_0884_,
        AL_0885_,
        AL_0886_,
        AL_0887_,
        AL_0888_,
        AL_0889_,
        AL_0890_,
        AL_0891_,
        AL_0892_,
        AL_0893_,
        AL_0894_,
        AL_0895_,
        AL_0896_,
        AL_0897_,
        AL_0898_,
        AL_0899_,
        AL_0900_,
        AL_0901_,
        AL_0902_,
        AL_0903_,
        AL_0904_,
        AL_0905_,
        AL_0906_,
        AL_0907_,
        AL_0908_,
        AL_0909_,
        AL_0910_,
        AL_0911_,
        AL_0912_,
        AL_0913_,
        AL_0914_,
        AL_0915_,
        AL_0916_,
        AL_0917_,
        AL_0918_,
        AL_0919_,
        AL_0920_,
        AL_0921_,
        AL_0922_,
        AL_0923_,
        AL_0924_,
        AL_0925_,
        AL_0926_,
        AL_0927_,
        AL_0928_,
        AL_0929_,
        AL_0930_,
        AL_0931_,
        AL_0932_,
        AL_0933_,
        AL_0934_,
        AL_0935_,
        AL_0936_,
        AL_0937_,
        AL_0938_,
        AL_0939_,
        AL_0940_,
        AL_0941_,
        AL_0942_,
        AL_0943_,
        AL_0944_,
        AL_0945_,
        AL_0946_,
        AL_0947_,
        AL_0948_,
        AL_0949_,
        AL_0950_,
        AL_0951_,
        AL_0952_,
        AL_0953_,
        AL_0954_,
        AL_0955_,
        AL_0956_,
        AL_0957_,
        AL_0958_,
        AL_0959_,
        AL_0960_,
        AL_0961_,
        AL_0962_,
        AL_0963_,
        AL_0964_,
        AL_0965_,
        AL_0966_,
        AL_0967_,
        AL_0968_,
        AL_0969_,
        AL_0970_,
        AL_0971_,
        AL_0972_,
        AL_0973_,
        AL_0974_,
        AL_0975_,
        AL_0976_,
        AL_0977_,
        AL_0978_,
        AL_0979_,
        AL_0980_,
        AL_0981_,
        AL_0982_,
        AL_0983_,
        AL_0984_,
        AL_0985_,
        AL_0986_,
        AL_0987_,
        AL_0988_,
        AL_0989_,
        AL_0990_,
        AL_0991_,
        AL_0992_,
        AL_0993_,
        AL_0994_,
        AL_0995_,
        AL_0996_,
        AL_0997_,
        AL_0998_,
        AL_0999_,
        AL_1000_ERR_NOT_HOMED,
        AL_1001_ERR_EMERGENCY,
        AL_1002_ERR_MOTOR_ERROR,
        AL_1003_ERR_WAIT_TIMEOUT,
        AL_1004_ENCODER_RESET_TIMEOUT,
        AL_1005_ERR_INTERLOCK,
        AL_1006_ERR_DATA_RANGE,
        AL_1007_ERR_WAFER_BEFORE_GET,
        AL_1008_ERR_NO_WAFER_BEFORE_PUT,
        AL_1009_ERR_NO_WAFER_AFTER_GET,
        AL_1010_ERR_WAFER_AFTER_PUT,
        AL_1011_ERR_NO_WAFER_DURING_GET,
        AL_1012_ERR_WAFER_DURING_PUT,
        AL_1013_ERR_NOT_HOMED,
        AL_1014_ERR_NOT_SUPPORTED_FUNC,
        AL_1015_ERR_WAFER_OUT,
        AL_1016_ERR_WAFER_SLIP,
        AL_1017_OVER_WAFER_DURING_GET,
        AL_1018_ERR_PLATE_CHECK,
        AL_1019_ERR_PUSHER_SPEED_HIGH,
        AL_1020_ERR_NOT_CORRECT_BLADE_POS,
        AL_1021_ERR_MAPPING_IS_NOT_PERFORMED,
        AL_1022_ERR_NO_MAPPING_DATA,
        AL_1023_ALREADY_LATCH_BLOCKED,
        AL_1024_ERR_CANNOT_UNGRIP,
        AL_1025_ERR_INVALID_COMMAND,
        AL_1026_ERR_INVALID_DATA,
        AL_1027_ERR_INVALID_STATION,
        AL_1028_ERR_INVALID_HAND,
        AL_1029_ERR_INVALID_SLOT,
        AL_1030_ERR_INVALID_TEACHING_INDEX,
        AL_1031_ERR_INVALID_PD_INDEX,
        AL_1032_ERR_INVALID_HAND_TYPE,
        AL_1033_ERR_BOX_NOEXIT_ERORR,
        AL_1034_ERR_INVALID_OFFSET,
        AL_1035_ERR_INVALID_COORDINATE_TYPE,
        AL_1036_ERR_INVALID_ARGUMENT,
        AL_1037_ERR_INVALID_FORMAT,
        AL_1038_ERR_INVALID_LOCATION_FORMAT,
        AL_1039_ERR_INVALID_PROFILE_FORMAT,
        AL_1040_ERR_WRONG_PD_COMMAND,
        AL_1041_ERR_WRONG_AWC_DATA,
        AL_1042_ERR_NO_AWC_STATION,
        AL_1043_ERR_WRONG_LATCH_DATA,
        AL_1044_ERR_NO_LATCH_DATA,
        AL_1045_ERR_NO_DATA,
        AL_1046_ERR_NOT_HOME,
        AL_1047_ERR_CANNOT_RETRACT_ARM,
        AL_1048_ERR_VACUUM_DETECTING_ERORR,
        AL_1049_ERR_NO_BOX,
        AL_1050_ERR_UPGRIP,
        AL_1051_ERR_DOUBLEBOXCHECH,
        AL_1052_ERR_ORIGINMANUALLY,
        AL_1053_ERR_NOTSUPPLY_AIR,
        AL_1054_ERR_NOW_ON_MOVE,
        AL_1055_ERR_NOT_READYPOS,
        AL_1056_Z_POSITION_ERR_DETECTED,
        AL_1057_ERR_FLIP_TURN_INTERLOCK,
        AL_1058_ERR_CONTROL_BOX_FAN,
        AL_1059_ERR_ROBOT_FAN,
        AL_1060_ERR_AIRSTOP_ERROR,
        AL_1061_ERR_RECEIVEBUF_FULL,
        AL_1062_ERR_SENDBUF_FULL,
        AL_1063_IO_RECEIVE_ERROR,
        AL_1064_,
        AL_1065_,
        AL_1066_,
        AL_1067_,
        AL_1068_,
        AL_1069_,
        AL_1070_,
        AL_1071_,
        AL_1072_,
        AL_1073_,
        AL_1074_,
        AL_1075_,
        AL_1076_,
        AL_1077_,
        AL_1078_,
        AL_1079_,
        AL_1080_,
        AL_1081_,
        AL_1082_,
        AL_1083_,
        AL_1084_,
        AL_1085_,
        AL_1086_,
        AL_1087_,
        AL_1088_,
        AL_1089_,
        AL_1090_,
        AL_1091_,
        AL_1092_,
        AL_1093_,
        AL_1094_,
        AL_1095_,
        AL_1096_,
        AL_1097_,
        AL_1098_,
        AL_1099_,
        AL_1100_ENERGY_DROP_CHECK_WRONG,
        AL_1101_,
        AL_1102_,
        AL_1103_,
        AL_1104_,
        AL_1105_,
        AL_1106_,
        AL_1107_,
        AL_1108_,
        AL_1109_,
        AL_1110_,
        AL_1111_,
        AL_1112_,
        AL_1113_,
        AL_1114_,
        AL_1115_,
        AL_1116_,
        AL_1117_,
        AL_1118_,
        AL_1119_,
        AL_1120_,
        AL_1121_,
        AL_1122_,
        AL_1123_,
        AL_1124_,
        AL_1125_,
        AL_1126_,
        AL_1127_,
        AL_1128_,
        AL_1129_,
        AL_1130_,
        AL_1131_,
        AL_1132_,
        AL_1133_,
        AL_1134_,
        AL_1135_,
        AL_1136_,
        AL_1137_,
        AL_1138_,
        AL_1139_,
        AL_1140_,
        AL_1141_,
        AL_1142_,
        AL_1143_,
        AL_1144_,
        AL_1145_,
        AL_1146_,
        AL_1147_,
        AL_1148_,
        AL_1149_,
        AL_1150_,
        AL_1151_,
        AL_1152_,
        AL_1153_,
        AL_1154_,
        AL_1155_,
        AL_1156_,
        AL_1157_,
        AL_1158_,
        AL_1159_,
        AL_1160_,
        AL_1161_,
        AL_1162_,
        AL_1163_,
        AL_1164_,
        AL_1165_,
        AL_1166_,
        AL_1167_,
        AL_1168_,
        AL_1169_,
        AL_1170_,
        AL_1171_,
        AL_1172_,
        AL_1173_,
        AL_1174_,
        AL_1175_,
        AL_1176_,
        AL_1177_,
        AL_1178_,
        AL_1179_,
        AL_1180_,
        AL_1181_,
        AL_1182_,
        AL_1183_,
        AL_1184_,
        AL_1185_,
        AL_1186_,
        AL_1187_,
        AL_1188_,
        AL_1189_,
        AL_1190_,
        AL_1191_,
        AL_1192_,
        AL_1193_,
        AL_1194_,
        AL_1195_,
        AL_1196_,
        AL_1197_,
        AL_1198_,
        AL_1199_,
        AL_1200_,
        AL_1201_,
        AL_1202_,
        AL_1203_,
        AL_1204_,
        AL_1205_,
        AL_1206_,
        AL_1207_,
        AL_1208_,
        AL_1209_,
        AL_1210_,
        AL_1211_,
        AL_1212_,
        AL_1213_,
        AL_1214_,
        AL_1215_,
        AL_1216_,
        AL_1217_,
        AL_1218_,
        AL_1219_,
        AL_1220_,
        AL_1221_,
        AL_1222_,
        AL_1223_,
        AL_1224_,
        AL_1225_,
        AL_1226_,
        AL_1227_,
        AL_1228_,
        AL_1229_,
        AL_1230_,
        AL_1231_,
        AL_1232_,
        AL_1233_,
        AL_1234_,
        AL_1235_,
        AL_1236_,
        AL_1237_,
        AL_1238_,
        AL_1239_,
        AL_1240_,
        AL_1241_,
        AL_1242_,
        AL_1243_,
        AL_1244_,
        AL_1245_,
        AL_1246_,
        AL_1247_,
        AL_1248_,
        AL_1249_,
        AL_1250_,
        AL_1251_,
        AL_1252_,
        AL_1253_,
        AL_1254_,
        AL_1255_,
        AL_1256_,
        AL_1257_,
        AL_1258_,
        AL_1259_,
        AL_1260_,
        AL_1261_,
        AL_1262_,
        AL_1263_,
        AL_1264_,
        AL_1265_,
        AL_1266_,
        AL_1267_,
        AL_1268_,
        AL_1269_,
        AL_1270_,
        AL_1271_,
        AL_1272_,
        AL_1273_,
        AL_1274_,
        AL_1275_,
        AL_1276_,
        AL_1277_,
        AL_1278_,
        AL_1279_,
        AL_1280_,
        AL_1281_,
        AL_1282_,
        AL_1283_,
        AL_1284_,
        AL_1285_,
        AL_1286_,
        AL_1287_,
        AL_1288_,
        AL_1289_,
        AL_1290_,
        AL_1291_,
        AL_1292_,
        AL_1293_,
        AL_1294_,
        AL_1295_,
        AL_1296_,
        AL_1297_,
        AL_1298_,
        AL_1299_,
        AL_1300_,
        AL_1301_,
        AL_1302_,
        AL_1303_,
        AL_1304_,
        AL_1305_,
        AL_1306_,
        AL_1307_,
        AL_1308_,
        AL_1309_,
        AL_1310_,
        AL_1311_,
        AL_1312_,
        AL_1313_,
        AL_1314_,
        AL_1315_,
        AL_1316_,
        AL_1317_,
        AL_1318_,
        AL_1319_,
        AL_1320_,
        AL_1321_,
        AL_1322_,
        AL_1323_,
        AL_1324_,
        AL_1325_,
        AL_1326_,
        AL_1327_,
        AL_1328_,
        AL_1329_,
        AL_1330_,
        AL_1331_,
        AL_1332_,
        AL_1333_,
        AL_1334_,
        AL_1335_,
        AL_1336_,
        AL_1337_,
        AL_1338_,
        AL_1339_,
        AL_1340_,
        AL_1341_,
        AL_1342_,
        AL_1343_,
        AL_1344_,
        AL_1345_,
        AL_1346_,
        AL_1347_,
        AL_1348_,
        AL_1349_,
        AL_1350_,
        AL_1351_,
        AL_1352_,
        AL_1353_,
        AL_1354_,
        AL_1355_,
        AL_1356_,
        AL_1357_,
        AL_1358_,
        AL_1359_,
        AL_1360_,
        AL_1361_,
        AL_1362_,
        AL_1363_,
        AL_1364_,
        AL_1365_,
        AL_1366_,
        AL_1367_,
        AL_1368_,
        AL_1369_,
        AL_1370_,
        AL_1371_,
        AL_1372_,
        AL_1373_,
        AL_1374_,
        AL_1375_,
        AL_1376_,
        AL_1377_,
        AL_1378_,
        AL_1379_,
        AL_1380_,
        AL_1381_,
        AL_1382_,
        AL_1383_,
        AL_1384_,
        AL_1385_,
        AL_1386_,
        AL_1387_,
        AL_1388_,
        AL_1389_,
        AL_1390_,
        AL_1391_,
        AL_1392_,
        AL_1393_,
        AL_1394_,
        AL_1395_,
        AL_1396_,
        AL_1397_,
        AL_1398_,
        AL_1399_,
        AL_1400_,
        AL_1401_,
        AL_1402_,
        AL_1403_,
        AL_1404_,
        AL_1405_,
        AL_1406_,
        AL_1407_,
        AL_1408_,
        AL_1409_,
        AL_1410_,
        AL_1411_,
        AL_1412_,
        AL_1413_,
        AL_1414_,
        AL_1415_,
        AL_1416_,
        AL_1417_,
        AL_1418_,
        AL_1419_,
        AL_1420_,
        AL_1421_,
        AL_1422_,
        AL_1423_,
        AL_1424_,
        AL_1425_,
        AL_1426_,
        AL_1427_,
        AL_1428_,
        AL_1429_,
        AL_1430_,
        AL_1431_,
        AL_1432_,
        AL_1433_,
        AL_1434_,
        AL_1435_,
        AL_1436_,
        AL_1437_,
        AL_1438_,
        AL_1439_,
        AL_1440_,
        AL_1441_,
        AL_1442_,
        AL_1443_,
        AL_1444_,
        AL_1445_,
        AL_1446_,
        AL_1447_,
        AL_1448_,
        AL_1449_,
        AL_1450_,
        AL_1451_,
        AL_1452_,
        AL_1453_,
        AL_1454_,
        AL_1455_,
        AL_1456_,
        AL_1457_,
        AL_1458_,
        AL_1459_,
        AL_1460_,
        AL_1461_,
        AL_1462_,
        AL_1463_,
        AL_1464_,
        AL_1465_,
        AL_1466_,
        AL_1467_,
        AL_1468_,
        AL_1469_,
        AL_1470_,
        AL_1471_,
        AL_1472_,
        AL_1473_,
        AL_1474_,
        AL_1475_,
        AL_1476_,
        AL_1477_,
        AL_1478_,
        AL_1479_,
        AL_1480_,
        AL_1481_,
        AL_1482_,
        AL_1483_,
        AL_1484_,
        AL_1485_,
        AL_1486_,
        AL_1487_,
        AL_1488_,
        AL_1489_,
        AL_1490_,
        AL_1491_,
        AL_1492_,
        AL_1493_,
        AL_1494_,
        AL_1495_,
        AL_1496_,
        AL_1497_,
        AL_1498_,
        AL_1499_,
        AL_1500_,
        AL_1501_,
        AL_1502_,
        AL_1503_,
        AL_1504_,
        AL_1505_,
        AL_1506_,
        AL_1507_,
        AL_1508_,
        AL_1509_,
        AL_1510_,
        AL_1511_,
        AL_1512_,
        AL_1513_,
        AL_1514_,
        AL_1515_,
        AL_1516_,
        AL_1517_,
        AL_1518_,
        AL_1519_,
        AL_1520_,
        AL_1521_,
        AL_1522_,
        AL_1523_,
        AL_1524_,
        AL_1525_,
        AL_1526_,
        AL_1527_,
        AL_1528_,
        AL_1529_,
        AL_1530_,
        AL_1531_,
        AL_1532_,
        AL_1533_,
        AL_1534_,
        AL_1535_,
        AL_1536_,
        AL_1537_,
        AL_1538_,
        AL_1539_,
        AL_1540_,
        AL_1541_,
        AL_1542_,
        AL_1543_,
        AL_1544_,
        AL_1545_,
        AL_1546_,
        AL_1547_,
        AL_1548_,
        AL_1549_,
        AL_1550_,
        AL_1551_,
        AL_1552_,
        AL_1553_,
        AL_1554_,
        AL_1555_,
        AL_1556_,
        AL_1557_,
        AL_1558_,
        AL_1559_,
        AL_1560_,
        AL_1561_,
        AL_1562_,
        AL_1563_,
        AL_1564_,
        AL_1565_,
        AL_1566_,
        AL_1567_,
        AL_1568_,
        AL_1569_,
        AL_1570_,
        AL_1571_,
        AL_1572_,
        AL_1573_,
        AL_1574_,
        AL_1575_,
        AL_1576_,
        AL_1577_,
        AL_1578_,
        AL_1579_,
        AL_1580_,
        AL_1581_,
        AL_1582_,
        AL_1583_,
        AL_1584_,
        AL_1585_,
        AL_1586_,
        AL_1587_,
        AL_1588_,
        AL_1589_,
        AL_1590_,
        AL_1591_,
        AL_1592_,
        AL_1593_,
        AL_1594_,
        AL_1595_,
        AL_1596_,
        AL_1597_,
        AL_1598_,
        AL_1599_,
        AL_1600_,
        AL_1601_,
        AL_1602_,
        AL_1603_,
        AL_1604_,
        AL_1605_,
        AL_1606_,
        AL_1607_,
        AL_1608_,
        AL_1609_,
        AL_1610_,
        AL_1611_,
        AL_1612_,
        AL_1613_,
        AL_1614_,
        AL_1615_,
        AL_1616_,
        AL_1617_,
        AL_1618_,
        AL_1619_,
        AL_1620_,
        AL_1621_,
        AL_1622_,
        AL_1623_,
        AL_1624_,
        AL_1625_,
        AL_1626_,
        AL_1627_,
        AL_1628_,
        AL_1629_,
        AL_1630_,
        AL_1631_,
        AL_1632_,
        AL_1633_,
        AL_1634_,
        AL_1635_,
        AL_1636_,
        AL_1637_,
        AL_1638_,
        AL_1639_,
        AL_1640_,
        AL_1641_,
        AL_1642_,
        AL_1643_,
        AL_1644_,
        AL_1645_,
        AL_1646_,
        AL_1647_,
        AL_1648_,
        AL_1649_,
        AL_1650_,
        AL_1651_,
        AL_1652_,
        AL_1653_,
        AL_1654_,
        AL_1655_,
        AL_1656_,
        AL_1657_,
        AL_1658_,
        AL_1659_,
        AL_1660_,
        AL_1661_,
        AL_1662_,
        AL_1663_,
        AL_1664_,
        AL_1665_,
        AL_1666_,
        AL_1667_,
        AL_1668_,
        AL_1669_,
        AL_1670_,
        AL_1671_,
        AL_1672_,
        AL_1673_,
        AL_1674_,
        AL_1675_,
        AL_1676_,
        AL_1677_,
        AL_1678_,
        AL_1679_,
        AL_1680_,
        AL_1681_,
        AL_1682_,
        AL_1683_,
        AL_1684_,
        AL_1685_,
        AL_1686_,
        AL_1687_,
        AL_1688_,
        AL_1689_,
        AL_1690_,
        AL_1691_,
        AL_1692_,
        AL_1693_,
        AL_1694_,
        AL_1695_,
        AL_1696_,
        AL_1697_,
        AL_1698_,
        AL_1699_,
        AL_1700_,
        AL_1701_,
        AL_1702_,
        AL_1703_,
        AL_1704_,
        AL_1705_,
        AL_1706_,
        AL_1707_,
        AL_1708_,
        AL_1709_,
        AL_1710_,
        AL_1711_,
        AL_1712_,
        AL_1713_,
        AL_1714_,
        AL_1715_,
        AL_1716_,
        AL_1717_,
        AL_1718_,
        AL_1719_,
        AL_1720_,
        AL_1721_,
        AL_1722_,
        AL_1723_,
        AL_1724_,
        AL_1725_,
        AL_1726_,
        AL_1727_,
        AL_1728_,
        AL_1729_,
        AL_1730_,
        AL_1731_,
        AL_1732_,
        AL_1733_,
        AL_1734_,
        AL_1735_,
        AL_1736_,
        AL_1737_,
        AL_1738_,
        AL_1739_,
        AL_1740_,
        AL_1741_,
        AL_1742_,
        AL_1743_,
        AL_1744_,
        AL_1745_,
        AL_1746_,
        AL_1747_,
        AL_1748_,
        AL_1749_,
        AL_1750_,
        AL_1751_,
        AL_1752_,
        AL_1753_,
        AL_1754_,
        AL_1755_,
        AL_1756_,
        AL_1757_,
        AL_1758_,
        AL_1759_,
        AL_1760_,
        AL_1761_,
        AL_1762_,
        AL_1763_,
        AL_1764_,
        AL_1765_,
        AL_1766_,
        AL_1767_,
        AL_1768_,
        AL_1769_,
        AL_1770_,
        AL_1771_,
        AL_1772_,
        AL_1773_,
        AL_1774_,
        AL_1775_,
        AL_1776_,
        AL_1777_,
        AL_1778_,
        AL_1779_,
        AL_1780_,
        AL_1781_,
        AL_1782_,
        AL_1783_,
        AL_1784_,
        AL_1785_,
        AL_1786_,
        AL_1787_,
        AL_1788_,
        AL_1789_,
        AL_1790_,
        AL_1791_,
        AL_1792_,
        AL_1793_,
        AL_1794_,
        AL_1795_,
        AL_1796_,
        AL_1797_,
        AL_1798_,
        AL_1799_,
        AL_1800_,
        AL_1801_,
        AL_1802_,
        AL_1803_,
        AL_1804_,
        AL_1805_,
        AL_1806_,
        AL_1807_,
        AL_1808_,
        AL_1809_,
        AL_1810_,
        AL_1811_,
        AL_1812_,
        AL_1813_,
        AL_1814_,
        AL_1815_,
        AL_1816_,
        AL_1817_,
        AL_1818_,
        AL_1819_,
        AL_1820_,
        AL_1821_,
        AL_1822_,
        AL_1823_,
        AL_1824_,
        AL_1825_,
        AL_1826_,
        AL_1827_,
        AL_1828_,
        AL_1829_,
        AL_1830_,
        AL_1831_,
        AL_1832_,
        AL_1833_,
        AL_1834_,
        AL_1835_,
        AL_1836_,
        AL_1837_,
        AL_1838_,
        AL_1839_,
        AL_1840_,
        AL_1841_,
        AL_1842_,
        AL_1843_,
        AL_1844_,
        AL_1845_,
        AL_1846_,
        AL_1847_,
        AL_1848_,
        AL_1849_,
        AL_1850_,
        AL_1851_,
        AL_1852_,
        AL_1853_,
        AL_1854_,
        AL_1855_,
        AL_1856_,
        AL_1857_,
        AL_1858_,
        AL_1859_,
        AL_1860_,
        AL_1861_,
        AL_1862_,
        AL_1863_,
        AL_1864_,
        AL_1865_,
        AL_1866_,
        AL_1867_,
        AL_1868_,
        AL_1869_,
        AL_1870_,
        AL_1871_,
        AL_1872_,
        AL_1873_,
        AL_1874_,
        AL_1875_,
        AL_1876_,
        AL_1877_,
        AL_1878_,
        AL_1879_,
        AL_1880_,
        AL_1881_,
        AL_1882_,
        AL_1883_,
        AL_1884_,
        AL_1885_,
        AL_1886_,
        AL_1887_,
        AL_1888_,
        AL_1889_,
        AL_1890_,
        AL_1891_,
        AL_1892_,
        AL_1893_,
        AL_1894_,
        AL_1895_,
        AL_1896_,
        AL_1897_,
        AL_1898_,
        AL_1899_,
        AL_1900_,
        AL_1901_,
        AL_1902_,
        AL_1903_,
        AL_1904_,
        AL_1905_,
        AL_1906_,
        AL_1907_,
        AL_1908_,
        AL_1909_,
        AL_1910_,
        AL_1911_,
        AL_1912_,
        AL_1913_,
        AL_1914_,
        AL_1915_,
        AL_1916_,
        AL_1917_,
        AL_1918_,
        AL_1919_,
        AL_1920_,
        AL_1921_,
        AL_1922_,
        AL_1923_,
        AL_1924_,
        AL_1925_,
        AL_1926_,
        AL_1927_,
        AL_1928_,
        AL_1929_,
        AL_1930_,
        AL_1931_,
        AL_1932_,
        AL_1933_,
        AL_1934_,
        AL_1935_,
        AL_1936_,
        AL_1937_,
        AL_1938_,
        AL_1939_,
        AL_1940_,
        AL_1941_,
        AL_1942_,
        AL_1943_,
        AL_1944_,
        AL_1945_,
        AL_1946_,
        AL_1947_,
        AL_1948_,
        AL_1949_,
        AL_1950_,
        AL_1951_,
        AL_1952_,
        AL_1953_,
        AL_1954_,
        AL_1955_,
        AL_1956_,
        AL_1957_,
        AL_1958_,
        AL_1959_,
        AL_1960_,
        AL_1961_,
        AL_1962_,
        AL_1963_,
        AL_1964_,
        AL_1965_,
        AL_1966_,
        AL_1967_,
        AL_1968_,
        AL_1969_,
        AL_1970_,
        AL_1971_,
        AL_1972_,
        AL_1973_,
        AL_1974_,
        AL_1975_,
        AL_1976_,
        AL_1977_,
        AL_1978_,
        AL_1979_,
        AL_1980_,
        AL_1981_,
        AL_1982_,
        AL_1983_,
        AL_1984_,
        AL_1985_,
        AL_1986_,
        AL_1987_,
        AL_1988_,
        AL_1989_,
        AL_1990_,
        AL_1991_,
        AL_1992_,
        AL_1993_,
        AL_1994_,
        AL_1995_,
        AL_1996_,
        AL_1997_,
        AL_1998_,
        AL_1999_,
    }
    public enum AlarmLevel
    {
        Light,
        Heavy,
    }
}
SA_LTT_UI/SA_LTT/Alarm/AlarmManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,271 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SA_LTT.Alarm
{
    public delegate void AlarmOccurredEvent(Alarm occurredAlarm);
    public delegate void AlarmClearedEvent();
    public class AlarmManager
    {
        public AlarmManager()
        {
            _alarms.Clear();
            OccurredAlarms.Clear();
            ReadAlarmFile();
        }
        private string fileName = "Alarms.csv";
        private Dictionary<AlarmCode, Alarm> _alarms = new Dictionary<AlarmCode, Alarm>();
        public List<Alarm> OccurredAlarms = new List<Alarm>();
        public event AlarmOccurredEvent Occurred;
        public event AlarmClearedEvent Cleared;
        /// <summary>
        /// ì•ŒëžŒ íŒŒì¼ ì½ê¸°.
        /// </summary>
        private void ReadAlarmFile()
        {
            string path = Equipment.settingFilePath + fileName;
            // íŒŒì¼ ë””렉토리 ì—†ìœ¼ë©´ ìƒì„±.
            if (Directory.Exists(Equipment.settingFilePath) == false)
            {
                Directory.CreateDirectory(Equipment.settingFilePath);
            }
            // íŒŒì¼ ì—†ìœ¼ë©´ Alarm list ìƒì„± í›„ ë°˜í™˜.
            if (File.Exists(path) == false)
            {
                _alarms.Clear();
                foreach (AlarmCode code in Enum.GetValues(typeof(AlarmCode)))
                {
                    Alarm alarm = new Alarm();
                    alarm.Code = code;
                    alarm.Level = AlarmLevel.Heavy;
                    alarm.Use = true;
                    alarm.Description = "None";
                    alarm.OccurredTime = DateTime.Now;
                    _alarms.Add(code, alarm);
                }
                WriteAlarmFile();
            }
            string fileAlarmData = string.Empty;
            //파일 ì—´ë ¤ìžˆì–´ë„ ì½ì„ ìˆ˜ ìžˆë„록 ì œìž‘.
            using (FileStream fs = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite))
            {
                using (StreamReader sr = new StreamReader(fs, Encoding.Default))
                {
                    fileAlarmData = sr.ReadToEnd();
                    sr.Close();
                }
                fs.Close();
            }
            string[] fileAlarms = fileAlarmData.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            // íŒŒì¼ì—ì„œ Alarm ì •ë³´ ì½ì–´ì˜´.
            foreach (var line in fileAlarms)
            {
                Alarm alarm = new Alarm();
                string[] items = line.Split(',');
                if (items.Length < 5)
                {
                    continue;
                }
                AlarmCode code;
                string description;
                AlarmLevel level;
                bool use;
                DateTime time;
                if (Enum.TryParse(items[0], out code) == false)
                {
                    continue;
                }
                description = items[1];
                if (Enum.TryParse(items[2], out level) == false)
                {
                    level = AlarmLevel.Heavy;
                }
                if(Boolean.TryParse(items[3], out use) == false)
                {
                    use = true;
                }
                if (DateTime.TryParse(items[4], out time) == false)
                {
                    time = DateTime.Now;
                }
                alarm.Code = code;
                alarm.Description = description;
                alarm.Level = level;
                alarm.Use = use;
                alarm.OccurredTime = time;
                if(_alarms.ContainsKey(code) == false)
                {
                    _alarms.Add(code, alarm);
                }
            }
            // íŒŒì¼ì—ì„œ ì½ì–´ì˜¨ Alarm ê°¯ìˆ˜ì™€ ì‹¤ì œ ì•ŒëžŒ ê°¯ìˆ˜ì™€ ë§žì§€ ì•Šìœ¼ë©´ Alarm ìƒì„±.
            if (_alarms.Count != Enum.GetValues(typeof(AlarmCode)).Length)
            {
                // íŒŒì¼ì—ì„œ ì½ì–´ì˜¨ Alarm에 ì—†ëŠ” Alarm ìƒì„±.
                foreach (AlarmCode code in Enum.GetValues(typeof(AlarmCode)))
                {
                    if (_alarms.ContainsKey(code) == false)
                    {
                        Alarm alarm = new Alarm();
                        alarm.Code = code;
                        alarm.Description = "None";
                        alarm.Level = AlarmLevel.Heavy;
                        alarm.Use = true;
                        alarm.OccurredTime = DateTime.Now;
                        _alarms.Add(code, alarm);
                    }
                }
                // ì•ŒëžŒ Key값 ì˜¤ë¦„차순 ì •ë ¬
                _alarms = _alarms.OrderBy(i => i.Key).ToDictionary(i => i.Key, i => i.Value);
            }
            // ì•ŒëžŒ ì •ë³´ íŒŒì¼ ì €ìž¥.
            WriteAlarmFile();
        }
        /// <summary>
        /// ì•ŒëžŒ íŒŒì¼ ì“°ê¸°.
        /// </summary>
        private void WriteAlarmFile()
        {
            string path = Equipment.settingFilePath + fileName;
            if (Directory.Exists(Equipment.settingFilePath) == false)
            {
                Directory.CreateDirectory(Equipment.settingFilePath);
            }
            StringBuilder sb = new StringBuilder();
            foreach (Alarm alarm in _alarms.Values)
            {
                sb.AppendLine($"{alarm.Code},{alarm.Description},{alarm.Level},{alarm.Use},{alarm.OccurredTime.ToString("yyyy.MM.dd HH:mm:ss.fff")}");
            }
            try
            {
                File.WriteAllText(path, sb.ToString(), Encoding.Default);
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
            }
        }
        public void Occur(AlarmCode code)
        {
            if (OccurredAlarms.Exists(x => x.Code == code) == false)
            {
                Alarm alarm = _alarms[code];
                alarm.OccurredTime = DateTime.Now;
                if (alarm.Use == true)
                {
                    Alarm copiedAlarm = alarm.Clone();
                    OccurredAlarms.Add(copiedAlarm);
                    EquipmentLogManager.Instance.WriteAlarmOccurredLog($"{$"{copiedAlarm.Code},{copiedAlarm.Description},{copiedAlarm.Level}"}");
                    Occurred?.Invoke(copiedAlarm);
                }
            }
        }
        public void Clear()
        {
            OccurredAlarms.Clear();
            Cleared?.Invoke();
        }
        public void Save(List<Alarm> alarms)
        {
            DateTime dt = DateTime.Now;
            foreach (Alarm alarm in alarms)
            {
                if(alarm != _alarms[alarm.Code])
                {
                    Alarm oldAlarm = _alarms[alarm.Code];
                    //Alarm ë³€ê²½ì‹œ ë¡œê·¸ ì–´ë–»ê²Œ ë‚¨ê¸¸ì§€ ê³ ë¯¼ì“°.
                    string differenceInfo = string.Empty;
                    if(oldAlarm.Description != alarm.Description)
                        differenceInfo += $"{oldAlarm.Description} -> {alarm.Description},";
                    else
                        differenceInfo += $"{alarm.Description},";
                    if (oldAlarm.Level != alarm.Level)
                        differenceInfo += $"{oldAlarm.Level} -> {alarm.Level},";
                    else
                        differenceInfo += $"{alarm.Level},";
                    if (oldAlarm.Use != alarm.Use)
                        differenceInfo += $"{oldAlarm.Use} -> {alarm.Use}";
                    else
                        differenceInfo += $"{alarm.Use}";
                    //변경 ì•ŒëžŒ ë¡œê·¸.
                    EquipmentLogManager.Instance.WriteAlarmChangedLog($"{oldAlarm.Code},{differenceInfo}");
                }
                _alarms[alarm.Code] = alarm;
            }
            TimeSpan ts = DateTime.Now - dt;
            WriteAlarmFile();
        }
        public SortedList<AlarmCode, Alarm> GetAlarms()
        {
            SortedList<AlarmCode, Alarm> list = new SortedList<AlarmCode, Alarm>();
            foreach (Alarm alarm in _alarms.Values)
            {
                Alarm data = alarm.Clone();
                list.Add(data.Code, data);
            }
            return list;
        }
    }
}
SA_LTT_UI/SA_LTT/Base/ComPort.cs
»õ ÆÄÀÏ
@@ -0,0 +1,385 @@
using System;
using System.IO.Ports;
using System.Threading;
namespace SA_LTT.Module
{
    public abstract class ComPort
    {
        private object thisLock;
        private bool lockCheck;
        protected SerialPort serialPort;
        private string _terminator;
        private string _receivedData;
        private double _receiveWaitSeconds;
        public bool IsOpen
        {
            get
            {
                if (serialPort == null)
                    return false;
                return serialPort.IsOpen;
            }
        }
        public string PortName
        {
            get
            {
                return serialPort.PortName;
            }
        }
        /// <summary>
        /// ì¢…결자 ì„¤ì •.
        /// </summary>
        public string Terminator
        {
            get
            {
                return _terminator;
            }
            set
            {
                _terminator = value;
            }
        }
        public double ReceiveWaitSeconds
        {
            get
            {
                return _receiveWaitSeconds;
            }
            set
            {
                _receiveWaitSeconds = value;
            }
        }
        public ComPort(string portName = "COM1")
        {
            thisLock = new object();
            serialPort = new SerialPort();
            serialPort.PortName = portName;
            serialPort.BaudRate = 9600;
            serialPort.DataBits = 8;
            serialPort.Parity = Parity.None;
            serialPort.StopBits = StopBits.One;
            serialPort.Handshake = Handshake.None;
            serialPort.ReadTimeout = 500;
            serialPort.WriteTimeout = 500;
            Terminator = "\r\n";
        }
        public static string[] GetExistPortNames()
        {
            return SerialPort.GetPortNames();
        }
        public bool Open()
        {
            try
            {
                serialPort.Open();
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        public bool Close()
        {
            try
            {
                serialPort.Close();
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        protected string WriteRead(string command)
        {
            string receivedData = string.Empty;
            lock (thisLock)
            {
                while (lockCheck)
                    Monitor.Wait(thisLock);
                try
                {
                    lockCheck = true;
                    _receivedData = string.Empty;
                    if (serialPort.BytesToRead > 0) serialPort.ReadExisting();
                    serialPort.BaseStream.Flush();
                    serialPort.Write(command);
                    DateTime check = DateTime.Now;
                    while (true)
                    {
                        if ((DateTime.Now - check).TotalSeconds > ReceiveWaitSeconds)
                        {
                            check = DateTime.Now;
                            break;
                        }
                    }
                    while (true)
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            receivedData = serialPort.ReadExisting();
                            if(CheckTerminator(receivedData))
                            {
                                if(Terminator == null)
                                {
                                    if (serialPort.BytesToRead > 0)
                                        continue;
                                }
                                receivedData = _receivedData;
                                break;
                            }
                        }
                        if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout)
                        {
                            throw new TimeoutException($"receieve timeout");
                        }
                    }
                    return receivedData;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog($"{e.StackTrace}\r\n{serialPort.PortName} port, command : {command}, received data : {receivedData}, {e.Message}" );
                    return receivedData;
                }
                finally
                {
                    lockCheck = false;
                    Monitor.Pulse(thisLock);
                }
            }
        }
        protected void Write(string command)
        {
            lock (thisLock)
            {
                while (lockCheck)
                    Monitor.Wait(thisLock);
                try
                {
                    lockCheck = true;
                    serialPort.Write(command);
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
                finally
                {
                    lockCheck = false;
                    Monitor.Pulse(thisLock);
                }
            }
        }
        protected string WriteRead(byte[] command)
        {
            string receivedData = string.Empty;
            lock (thisLock)
            {
                while (lockCheck)
                    Monitor.Wait(thisLock);
                try
                {
                    lockCheck = true;
                    _receivedData = string.Empty;
                    if (serialPort.BytesToRead > 0) serialPort.ReadExisting();
                    serialPort.BaseStream.Flush();
                    serialPort.Write(command, 0, command.Length);
                    DateTime check = DateTime.Now;
                    while(true)
                    {
                        if ((DateTime.Now - check).TotalSeconds > ReceiveWaitSeconds)
                        {
                            check = DateTime.Now;
                            break;
                        }
                    }
                    while (true)
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            receivedData = serialPort.ReadExisting();
                            if (CheckTerminator(receivedData))
                            {
                                double aa = (DateTime.Now - check).TotalMilliseconds;
                                receivedData = _receivedData;
                                break;
                            }
                        }
                        if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout)
                        {
                            throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout");
                        }
                    }
                    return receivedData;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return receivedData;
                }
                finally
                {
                    lockCheck = false;
                    Monitor.Pulse(thisLock);
                }
            }
        }
        protected void Write(byte[] command)
        {
            lock (thisLock)
            {
                while (lockCheck)
                    Monitor.Wait(thisLock);
                try
                {
                    lockCheck = true;
                    serialPort.Write(command, 0, command.Length);
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
                finally
                {
                    lockCheck = false;
                    Monitor.Pulse(thisLock);
                }
            }
        }
        protected string Read(double timeOutSec)
        {
            string receivedData = string.Empty;
            DateTime check = DateTime.Now;
            lock (thisLock)
            {
                while (lockCheck)
                    Monitor.Wait(thisLock);
                try
                {
                    lockCheck = true;
                    while (true)
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            receivedData = serialPort.ReadExisting();
                            if (CheckTerminator(receivedData))
                            {
                                receivedData = _receivedData;
                                break;
                            }
                        }
                        if ((DateTime.Now - check).TotalSeconds > timeOutSec)
                        {
                            throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout");
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return receivedData;
                }
                finally
                {
                    lockCheck = false;
                    Monitor.Pulse(thisLock);
                }
            }
            return receivedData;
        }
        private bool CheckTerminator(string receivedData)
        {
            if (Terminator == null)
            {
                _receivedData += receivedData;
                return true;
            }
            else
            {
                if (receivedData.Contains(Terminator) || _receivedData.Contains(Terminator))
                {
                    int terminatorLocation = receivedData.IndexOf(Terminator);
                    if (receivedData.Length == terminatorLocation + Terminator.Length)
                    {
                        _receivedData += receivedData;
                    }
                    else
                    {
                        _receivedData += receivedData.Remove(terminatorLocation + Terminator.Length);
                    }
                    return true;
                }
                else
                {
                    _receivedData += receivedData;
                    return false;
                }
            }
        }
    }
}
SA_LTT_UI/SA_LTT/Base/SequenceTimer.cs
»õ ÆÄÀÏ
@@ -0,0 +1,64 @@
using System.Diagnostics;
namespace SA_LTT
{
    public class SequenceTimer
    {
        #region Property
        public double Seconds
        {
            get
            {
                return _stopwatch.Elapsed.TotalSeconds;
            }
        }
        public double Minute
        {
            get
            {
                return _stopwatch.Elapsed.TotalMinutes;
            }
        }
        #endregion
        #region Field
        private Stopwatch _stopwatch;
        #endregion
        #region Construct
        public SequenceTimer()
        {
            _stopwatch = new Stopwatch();
        }
        #endregion
        #region Fuction
        public void Start()
        {
            if (_stopwatch.IsRunning == false)
            {
                _stopwatch.Start();
            }
        }
        public void ReStart()
        {
            _stopwatch.Restart();
        }
        public void Stop()
        {
            if (_stopwatch.IsRunning == true)
            {
                _stopwatch.Stop();
            }
        }
        public void Reset()
        {
            _stopwatch.Reset();
        }
        #endregion
    }
}
SA_LTT_UI/SA_LTT/Base/SocketClient.cs
»õ ÆÄÀÏ
@@ -0,0 +1,323 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using System.Collections;
using System.Net;
using System.Text;
using System.Threading;
using System.Net.Sockets;
namespace SA_LTT.Base
{
    public class SocketClient
    {
        #region Property
        /// <summary>
        /// Client socket
        /// </summary>
        private Socket sock;
        /// <summary>
        /// Receive event handler
        /// </summary>
        private ReceiveEventHandler RecevedHandler;
        /// <summary>
        /// Server ip to be connected
        /// </summary>
        public IPAddress Ip { get; private set; }
        /// <summary>
        /// Server port to be connected
        /// </summary>
        public int Port { get; private set; }
        /// <summary>
        /// Client name
        /// </summary>
        public string Name { get; private set; }
        public bool isConnected { get { return sock == null ? false : sock.Connected; } }
        #endregion
        #region Construct
        /// <summary>
        /// Socket client construct
        /// </summary>
        /// <param name="ip"> Server ip to be connected</param>
        /// <param name="port"> Server port to be connected</param>
        public SocketClient()
        {
            this.Ip = IPAddress.Parse("127.0.0.1");
            this.Port = 8000;
            this.Name = string.Empty;
            RecevedHandler = new ReceiveEventHandler();
        }
        #endregion
        #region Fuction
        public void ChangeAddress(IPAddress ip, int port)
        {
            if (isConnected)
            {
                Disconnect();
            }
            this.Ip = ip;
            this.Port = port;
        }
        /// <summary>
        /// Connect to server
        /// </summary>
        /// <returns></returns>
        public bool Connect()
        {
            try
            {
                if (sock == null)
                    sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                else if (sock.Connected)
                    throw new Exception("socket is already connected.");
                else
                {
                    sock.Close();
                    sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                }
                IPEndPoint ipep = new IPEndPoint(Ip, Port);
                IAsyncResult async_result = sock.BeginConnect(ipep, new AsyncCallback(ConnectedCallback), sock);
                if (async_result.AsyncWaitHandle.WaitOne(5000, false))
                {
                    return true;
                }
                else
                {
                    sock.Close();
                    sock = null;
                    return false;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        /// <summary>
        /// Add received Event
        /// </summary>
        /// <param name="Received_event">Received event</param>
        /// <returns></returns>
        public bool Add_received_event(ReceivedEvent Received_event)
        {
            try
            {
                RecevedHandler.ReceiveEvent += Received_event;
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        /// <summary>
        /// Disconnect to server
        /// </summary>
        public void Disconnect()
        {
            try
            {
                if (sock == null)
                    throw new Exception("socket is already disconnected");
                this.sock.Close();
                sock.Dispose();
                sock = null;
            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// Async connected call back
        /// </summary>
        /// <param name="ar"></param>
        private void ConnectedCallback(IAsyncResult ar)
        {
            try
            {
                Socket client = (Socket)ar.AsyncState;
                if (!client.Connected) return;
                client.EndConnect(ar);
                sock = client;
                StateObject so = new StateObject(sock);
                so.workSocket.BeginReceive(so.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(RecieveCallback), so);
            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// Async receieve call back
        /// </summary>
        /// <param name="ar"></param>
        private void RecieveCallback(IAsyncResult ar)
        {
            try
            {
                StateObject so = (StateObject)ar.AsyncState;
                if (!so.workSocket.Connected) return;
                int byteread = so.workSocket.EndReceive(ar);
                if (byteread > 0)
                {
                    so.Received_data.Append(Encoding.ASCII.GetString(so.buffer, 0, byteread));
                    RecevedHandler.OnReceived(so);
                    StateObject so2 = new StateObject(so.workSocket);
                    so.workSocket.BeginReceive(so2.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(RecieveCallback), so2);
                }
            }
            catch (Exception ex)
            {
            }
        }
        /// <summary>
        /// Send data
        /// </summary>
        /// <param name="data"></param>
        /// <param name="clientid"></param>
        /// <param name="sock"></param>
        public bool SendData(string data)
        {
            try
            {
                byte[] buffer = Encoding.Default.GetBytes(data);
                sock.BeginSend(buffer, 0, buffer.Length, 0, new AsyncCallback(SendCallback), sock);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        /// <summary>
        /// Send data
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool SendData(byte[] data)
        {
            try
            {
                sock.BeginSend(data, 0, data.Length, 0, new AsyncCallback(SendCallback), sock);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        /// <summary>
        /// Async Send call back
        /// </summary>
        /// <param name="ar"></param>
        public void SendCallback(IAsyncResult ar)
        {
            try
            {
                Socket sock = (Socket)ar.AsyncState;
                int byteSent = sock.EndSend(ar);
            }
            catch (Exception ex)
            {
            }
        }
        #endregion
    }
    public delegate void ReceivedEvent(object obj, ReceiveEventArgs e);
    public class ReceiveEventHandler
    {
        /// <summary>
        /// Recevied event
        /// </summary>
        public event ReceivedEvent ReceiveEvent;
        /// <summary>
        /// Invoke an ReceiveEvent
        /// </summary>
        /// <param name="so">StateObject after received</param>
        public virtual void OnReceived(StateObject so)
        {
            if (ReceiveEvent != null)
            {
                ReceiveEvent(this, new ReceiveEventArgs(so));
            }
        }
    }
    public class ReceiveEventArgs : EventArgs
    {
        public StateObject stateobject { get; private set; }
        /// <summary>
        /// Socket이 Received ë˜ì—ˆì„때 ì‚¬ìš©
        /// </summary>
        /// <param name="so">Received ëœ í›„의 StateObject ê°’</param>
        public ReceiveEventArgs(StateObject stateobject)
        {
            this.stateobject = stateobject;
        }
    }
    public class StateObject
    {
        /// <summary>
        /// Received Sockect
        /// </summary>
        public Socket workSocket = null;
        /// <summary>
        /// Maximum size that can be received
        /// </summary>
        public const int BufferSize = 256;
        /// <summary>
        /// Received buffer
        /// </summary>
        public byte[] buffer = new byte[BufferSize];
        /// <summary>
        /// Received data string
        /// </summary>
        public StringBuilder Received_data = new StringBuilder();
        public StateObject(Socket sock)
        {
            workSocket = sock;
        }
    }
}
SA_LTT_UI/SA_LTT/Base/XmlManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,131 @@
using System;
using System.IO;
using System.Reflection;
using System.Xml.Serialization;
namespace SA_LTT.Base
{
    public abstract class XmlManager<T> where T : class
    {
        string _extension = ".xml";
        public XmlManager()
        {
        }
        protected void SaveFile(string filePath, T data)
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                using (TextWriter textWriter = new StreamWriter(filePath))
                {
                    xmlSerializer.Serialize(textWriter, data);
                    textWriter.Close();
                }
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
            }
        }
        protected bool TrySaveFile(string filePath, T data)
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                using (TextWriter textWriter = new StreamWriter(filePath))
                {
                    xmlSerializer.Serialize(textWriter, data);
                    textWriter.Close();
                }
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        protected T ReadFile(string filePath)
        {
            try
            {
                T data;
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                using (TextReader textReader = new StreamReader(filePath))
                {
                    data = (T)xmlSerializer.Deserialize(textReader);
                    textReader.Close();
                }
                return data;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return null;
            }
        }
        protected bool TryReadFile(string filePath, out T data)
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                using (TextReader textReader = new StreamReader(filePath))
                {
                    data = (T)xmlSerializer.Deserialize(textReader);
                    textReader.Close();
                }
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                data = null;
                return false;
            }
        }
        protected void DeleteFile(string filePath)
        {
            FileInfo fileInfo = new FileInfo(filePath);
            if(fileInfo.Exists)
            {
                fileInfo.Delete();
            }
        }
        public void Copy(T value)
        {
            foreach (PropertyInfo propertyInfo in this.GetType().GetProperties())
            {
                // Set Method ê°€ ì—†ìœ¼ë©´ ë”°ë¡œ ê°’을 ë„£ì§€ ì•ŠìŒ.
                if(propertyInfo.GetSetMethod() != null)
                {
                    propertyInfo.SetValue(this, propertyInfo.GetValue(value, null), null);
                }
            }
        }
        public T Clone()
        {
            T Tvalue = (T)this.MemberwiseClone();
            return Tvalue;
        }
    }
}
SA_LTT_UI/SA_LTT/Dll/EasyModbus.dll
Binary files differ
SA_LTT_UI/SA_LTT/Dll/OphirLMMeasurement.dll
Binary files differ
SA_LTT_UI/SA_LTT/Dll/RTC5DAT.dat
Binary files differ
SA_LTT_UI/SA_LTT/Dll/RTC5DLL.dll
Binary files differ
SA_LTT_UI/SA_LTT/Dll/RTC5DLLx64.dll
Binary files differ
SA_LTT_UI/SA_LTT/Dll/RTC5OUT.out
Binary files differ
SA_LTT_UI/SA_LTT/Dll/RTC5RBF.rbf
Binary files differ
SA_LTT_UI/SA_LTT/Dll/log4net.dll
Binary files differ
SA_LTT_UI/SA_LTT/Equipment.cs
»õ ÆÄÀÏ
@@ -0,0 +1,1382 @@
using SA_LTT.Alarm;
using SA_LTT.Info.AttenuatorCalInfo;
using SA_LTT.Info.EquipmentInfo;
using SA_LTT.Info.FoupInfo;
using SA_LTT.Info.RecipeInfo;
using SA_LTT.Info.WaferInfo;
using SA_LTT.Module;
using SA_LTT.Parameter;
using SA_LTT.UserInfo;
using System;
using System.Reflection;
using System.Threading;
using static SA_LTT.Info.WaferInfo.WaferInfoManager;
using static SA_LTT.Sequence;
namespace SA_LTT
{
    //여기서는 ì•ˆì”€ (Auto Key가 ì—†ìŒ) ;; ê·¸ëƒ¥ Maint일 ë•Œ Teach로..
    public enum EquipmentMode
    {
        Auto,
        /// <summary>
        /// Key teach mode
        /// </summary>
        Teach,
    }
    public enum EquipmentStatus
    {
        /// <summary>
        /// ìž¥ë¹„ ì´ìƒ ì—†ìŒ.
        /// </summary>
        Nomal,
        /// <summary>
        /// ìž¥ë¹„ Heavy ì•ŒëžŒ ìƒíƒœ.
        /// </summary>
        Fault,
        /// <summary>
        /// ìž¥ë¹„ Light ì•ŒëžŒ ìƒíƒœ.
        /// </summary>
        Warning,
        /// <summary>
        /// ìž¥ë¹„ PM ìƒíƒœ
        /// </summary>
        PM,
    }
    public enum ProcessStatus
    {
        /// <summary>
        /// ëŒ€ê¸°ìƒíƒœ, (sequence ëŒ€ê¸°)
        /// </summary>
        Idle,
        /// <summary>
        /// ë™ìž‘상태, (sequence ë™ìž‘중)
        /// </summary>
        Execute,
        /// <summary>
        /// ì •ì§€ ìƒíƒœ, (sequence ì¼ì‹œì •ì§€)
        /// </summary>
        Pause,
        /// <summary>
        /// ì •ì§€ ëŒ€ê¸° ìƒíƒœ, (sequence ì¼ì‹œì •ì§€, Step ì§„í–‰ ì¤‘.)
        /// </summary>
        PauseWait,
    }
    public delegate void UserChangedEvnet(User changedUser);
    public class Equipment : IDisposable
    {
        /*
        =========== Hardware ëª©ë¡ ================
        Laser
        PreAligner
        LED <- ?
        GR200
        Temp
        EFU
        Robot // ì§„ -ing
        Chiller
        Scanner // ì™„
        Motor
        IO
        Attenuator // ì™„
        ============================================
        ============= Software ëª©ë¡ =================
        Alarm // ì™„
        Recipe
        Mode(Teach/Auto)
        EquipmentStatus(Nomal/Fault/PM)
        ProcessStatus(Idle/Execute/Pause)
        UserParameter -> ë¯¸ì •
        SystemParameter -> ë¯¸ì •
        InterlockParameter -> ë¯¸ì •
        UserInfo // ì™„
        =============================================
         */
        /// <summary>
        /// ì„¤ì • íŒŒì¼ ì €ìž¥ / parameter, alarm ë“±.
        /// </summary>
        public const string settingFilePath = @"C:\SA_LTT\Config\";
        /// <summary>
        /// ì •ë³´ íŒŒì¼ ì €ìž¥ / user, recipe ë“±.
        /// </summary>
        public const string infoFilePath = @"C:\SA_LTT\Info\";
        public const string Version = "001.000.000";
        public static string UpdateDate;
        private EquipmentStatus _equipmentStatus = EquipmentStatus.Nomal;
        private ProcessStatus _processStatus = ProcessStatus.Idle;
        private EquipmentMode _equipmentMode = EquipmentMode.Teach;
        private bool CheckCST1Removed;
        private bool CheckCST2Removed;
        private bool _isRunStop;
        private bool _isAutoRun;
        public EquipmentInfo equipmentInfo;
        public AttenuatorCalInfo attenuatorCalInfo;
        public ModeParameterManager modeParameterManager;
        public SettingParameterManager settingParameterManager;
        public Crevis crevis;
        public Scanner scanner;
        public PreAligner preAligner;
        public Robot robot;
        public AlarmManager alarmManager;
        public Attenuator attenuator;
        public E5CC tempControl;
        public FFU ffu;
        public GR200 gr200;
        public PowerPmacCtrl powerPmac;
        public PiLaser piLaser;
        public PowerMeter powerMeter;
        public Chiller chiller;
        public Chamber chamber;
        public UserManager userManager;
        private User _user;
        public WaferInfoManager waferInfoManager;
        public RecipeManager recipeManager;
        public FoupRecipeManager foupRecipeManager;
        public VisionControl visionControl;
        private Sequence _sequence;
        private Thread t_ModuleUpdate;
        private Thread t_Sequence;
        private Thread t_UpdateTowerLamp;
        public event UserChangedEvnet UserChanged;
        public Foup port1Foup;
        public Foup port2Foup;
        public bool SequencePause
        {
            get;
            private set;
        }
        public bool IsDisposed
        {
            get;
            private set;
        }
        public PmcSteps PmcStep
        {
            get
            {
                return _sequence.PmcStep;
            }
        }
        public TmcSteps TmcStep
        {
            get
            {
                return _sequence.TmcStep;
            }
        }
        public bool IsEnergyDropCheckRun
        {
            get
            {
                if (PmcSteps.EnergyDropCheckStart <= PmcStep && PmcStep <= PmcSteps.EnergyDropCheckEnd)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
        public bool IsAttenuatorCalRun
        {
            get
            {
                if (PmcSteps.AttenuatorCalStart <= PmcStep && PmcStep <= PmcSteps.AttenuatorCalEnd)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
        public double ProcessTactTimeSeconds
        {
            get
            {
                return _sequence.ProcessTactTimeSeconds;
            }
        }
        public EquipmentStatus EquipmentStatus
        {
            get
            {
                return _equipmentStatus;
            }
            private set
            {
                _equipmentStatus = value;
            }
        }
        public ProcessStatus ProcessStatus
        {
            get
            {
                return _processStatus;
            }
            private set
            {
                _processStatus = value;
            }
        }
        public EquipmentMode EquipmentMode
        {
            get
            {
                return _equipmentMode;
            }
            private set
            {
                _equipmentMode = value;
            }
        }
        public bool IsLampOn
        {
            get
            {
                if(crevis.Connected)
                {
                    return crevis.DigitalOutputs[Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF] ? false : true;
                }
                else
                {
                    return false;
                }
            }
        }
        public User User
        {
            get
            {
                return _user;
            }
            private set
            {
                _user = value;
            }
        }
        /// <summary>
        /// ë§ˆì§€ë§‰ Wafer ì§„í–‰ í›„ ì¢…료.
        /// </summary>
        public bool IsRunStop
        {
            get
            {
                return _isRunStop;
            }
            set
            {
                _isRunStop = value;
            }
        }
        public bool IsAutoRun
        {
            get
            {
                return _isAutoRun;
            }
            set
            {
                _isAutoRun = value;
            }
        }
        private bool checkCycle = false;
        private System.Windows.Forms.Timer t_UiView = new System.Windows.Forms.Timer();
        private MessageBoxPad messageBoxPad = new MessageBoxPad();
        private string message;
        bool messageboxPadShowBit;
        public Equipment()
        {
            InitializeParameter();
            InitializeData();
            InitializeModule();
            Assembly assembly = Assembly.GetExecutingAssembly();
            DateTime buildTime = System.IO.File.GetLastWriteTime(assembly.Location);
            UpdateDate = $"{buildTime.Year}-{buildTime.Month:D2}-{buildTime.Day:D2}";
            _sequence = new Sequence(this);
            t_ModuleUpdate = new Thread(ModuleUpdate);
            t_ModuleUpdate.Start();
            t_Sequence = new Thread(SequenceRun);
            t_Sequence.Start();
            t_UpdateTowerLamp = new Thread(UpdateTowerLamp);
            t_UpdateTowerLamp.Start();
            while (checkCycle == false) ;
            EquipmentLogManager.Instance.WriteProcessLog($"Program start !!");
            t_UiView.Tick += T_UiView_Tick;
            t_UiView.Interval = 2000;
            t_UiView.Start();
        }
        private void T_UiView_Tick(object sender, EventArgs e)
        {
            if(messageboxPadShowBit)
            {
                messageboxPadShowBit = false;
                messageBoxPad.SetMessage(message);
                messageBoxPad.Show();
            }
        }
        public void SetMessageBox(string message = "")
        {
            this.message = message;
            messageboxPadShowBit = true;
        }
        private void InitializeParameter()
        {
            equipmentInfo = new EquipmentInfo();
            equipmentInfo.Refresh();
            attenuatorCalInfo = new AttenuatorCalInfo();
            attenuatorCalInfo.Refresh();
            attenuatorCalInfo.SetAttenuatorCalData(attenuatorCalInfo.GetAttenuatorCalData());
            modeParameterManager = new ModeParameterManager();
            settingParameterManager = new SettingParameterManager();
            modeParameterManager.Refresh();
            settingParameterManager.Refresh();
        }
        private void InitializeData()
        {
            EquipmentMode = EquipmentMode.Auto;
            EquipmentStatus = EquipmentStatus.Nomal;
            ProcessStatus = ProcessStatus.Idle;
            SequencePause = true;
            User = new User();
            alarmManager = new AlarmManager();
            alarmManager.Occurred += AlarmManager_Occurred;
            alarmManager.Cleared += AlarmManager_Cleared;
            userManager = new UserManager(this);
            waferInfoManager = new WaferInfoManager(this);
            recipeManager = new RecipeManager(this);
            foupRecipeManager = new FoupRecipeManager(this);
            visionControl = new VisionControl(this);
            port1Foup = new Foup(this);
            port1Foup.portNumber = 1;
            port2Foup = new Foup(this);
            port2Foup.portNumber = 2;
        }
        private void AlarmManager_Cleared()
        {
        }
        private void AlarmManager_Occurred(Alarm.Alarm occurredAlarm)
        {
            //임시, ë¶€ì € ì‚¬ìš© ì•ˆí•¨.
            //crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_1, true);
        }
        private void InitializeModule()
        {
            crevis = new Crevis(this);
            scanner = new Scanner(this);
            scanner.Initialize();
            preAligner = new PreAligner(this);
            robot = new Robot(this);
            attenuator = new Attenuator(this);
            tempControl = new E5CC(this);
            ffu = new FFU(this);
            gr200 = new GR200(this);
            powerPmac = new PowerPmacCtrl(this);
            piLaser = new PiLaser(this);
            chamber = new Chamber(this);
            powerMeter = new PowerMeter(this);
            chiller = new Chiller(this);
        }
        private void ModuleUpdate()
        {
            while (IsDisposed == false)
            {
                Thread.Sleep(10);
                try
                {
                    ScannerUpdate();
                    UpdateWaferInfo();
                    UpdateFoupInfo();
                    CheckAlarm();
                    UpdateEquipmentStatus();
                    if (checkCycle == false)
                    {
                        checkCycle = true;
                    }
                }
                catch(Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        private void CheckAlarm()
        {
            bool check = false;
            if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_1])
            {
                alarmManager.Occur(AlarmCode.AL_0001_EMO_STOP_1);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_2])
            {
                alarmManager.Occur(AlarmCode.AL_0002_EMO_STOP_2);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_3])
            {
                alarmManager.Occur(AlarmCode.AL_0003_EMO_STOP_3);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.EMO_SW_4])
            {
                alarmManager.Occur(AlarmCode.AL_0004_EMO_STOP_4);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.SMOKE_DETECTOR_CP_BOX])
            {
                alarmManager.Occur(AlarmCode.AL_0005_SMOKE_DETECTOR_ON);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.SERVO_MC_STATUS] == false)
            {
                alarmManager.Occur(AlarmCode.AL_0020_SERVO_MC_OFF);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.VACUUM_MC_STATUS])
            {
                alarmManager.Occur(AlarmCode.AL_0021_VACUUM_MC_OFF);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.WATER_LEAK_LASER] == false)
            {
                alarmManager.Occur(AlarmCode.AL_0030_LASER_WATER_LEAK);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.WATER_LEAK_CHILLER] == false)
            {
                alarmManager.Occur(AlarmCode.AL_0031_CHILLER_WATER_LEAK);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.MAIN_CDA_PRESSURE] == false)
            {
                alarmManager.Occur(AlarmCode.AL_0040_MAIN_CDA_PRESSURE);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.MAIN_VAC_PRESSURE] == false)
            {
                alarmManager.Occur(AlarmCode.AL_0041_MAIN_VAC_PRESSURE);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.MAIN_CDA_FLOW])
            {
                alarmManager.Occur(AlarmCode.AL_0042_MAIN_CDA_FLOW);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.CMB_VACUUM_PRESSURE])
            {
                alarmManager.Occur(AlarmCode.AL_0043_CMB_VAC_PRESSURE);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_1])
            {
                alarmManager.Occur(AlarmCode.AL_0010_DOOR_OPEN_1);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_2])
            {
                alarmManager.Occur(AlarmCode.AL_0011_DOOR_OPEN_2);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_3])
            {
                alarmManager.Occur(AlarmCode.AL_0012_DOOR_OPEN_3);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.DOOR_LOCK_OPEN_4])
            {
                alarmManager.Occur(AlarmCode.AL_0013_DOOR_OPEN_4);
                check = true;
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.CP_BOX_OPEN])
            {
                alarmManager.Occur(AlarmCode.AL_0014_DOOR_OPEN_CP);
                check = true;
            }
        }
        private void UpdateTowerLamp()
        {
            /*
             * ========== RED (Equipment status)==========
             * ì ë“± : Fault ìƒíƒœ ì„¤ë¹„ ìš´ì „ ë¶ˆê°€. (Heavy Alarm)
             * ì ë©¸ : Warning ìƒíƒœ ì„¤ë¹„ ì‚¬ìš© ê°€ëŠ¥. (Light Alarm)
             * ì†Œë“± : ì‚¬ìš© ê°€ëŠ¥
             * ========== YELLOW (Equipment Mode)==========
             * ì ë“± : Teach Mode
             * ì ë©¸ : X
             * ì†Œë“± : Atuo Mode
             * ========== GREEN (Process status)==========
             * ì ë“± : Sequence ë™ìž‘ ì¤‘
             * ì ë©¸ : Sequence ì¼ì‹œ ì •ì§€
             * ì†Œë“± : Sequence ì •ì§€ ìƒíƒœ.
            */
            while (IsDisposed == false)
            {
                Thread.Sleep(500);
                try
                {
                    // Red
                    if (alarmManager.OccurredAlarms.Count > 0)
                    {
                        if (alarmManager.OccurredAlarms.Exists(x => x.Level == AlarmLevel.Heavy))
                        {
                            if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_RED] == false)
                                crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_RED, true);
                        }
                        else
                        {
                            crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_RED, !crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_RED]);
                        }
                    }
                    else
                    {
                        if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_RED])
                            crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_RED, false);
                    }
                    //Yellow
                    if (EquipmentMode == EquipmentMode.Auto)
                    {
                        if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW])
                            crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW, false);
                    }
                    else
                    {
                        if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW] == false)
                            crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_YELLOW, true);
                    }
                    //Green
                    if (ProcessStatus == ProcessStatus.Execute)
                    {
                        if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_GREEN] == false)
                            crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_GREEN, true);
                    }
                    else if (ProcessStatus == ProcessStatus.Idle)
                    {
                        if (crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_GREEN])
                            crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_GREEN, false);
                    }
                    else
                    {
                        crevis.WriteOutput(Crevis.DigitalOutput.SIGNAL_TOWER_GREEN, !crevis.DigitalOutputs[Crevis.DigitalOutput.SIGNAL_TOWER_GREEN]);
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        private bool IsInterlock()
        {
            bool check = false;
            // Robot ì¸í„°ë½
            if(robot.IsError)
            {
                check = true;
            }
            // Vision Interlock
            if (modeParameterManager.ModeParameter.AlignUse)
            {
                if(crevis.DigitalOutputs[Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF] == false)
                {
                    SetMessageBox("Align ì‚¬ìš©ì‹œ Lamp를 êº¼ì£¼ì„¸ìš”.");
                    check = true;
                }
            }
            // PreAligner ì¸í„°ë½
            //if(preAligner.IsHome == false) // Home ìƒíƒœê°€ ê³„속 off로 ë“¤ì–´ì˜´;
            //{
            //    check = true;
            //}
            // ìž¥ë¹„ ìƒíƒœ ì¸í„°ë½
            if (EquipmentMode == EquipmentMode.Teach) //장비 Mode í™•인
            {
                check = true;
            }
            if (EquipmentStatus == EquipmentStatus.Fault) //장비 ìƒíƒœ í™•인
            {
                check = true;
            }
            return check;
        }
        private void SequenceRun()
        {
            while (IsDisposed == false)
            {
                Thread.Sleep(50);
                try
                {
                    /*
                     * Auto -> Sequence ë™ìž‘ ì§„í–‰ ì¤‘.
                     * PauseWait -> Sequence ë™ìž‘ ì¤‘ ì¼ì‹œì •ì§€ ëŒ€ê¸°.
                     * Pause -> Sequence ë™ìž‘ ì¤‘ ì¼ì‹œ ì •ì§€.
                     * Idle -> Sequence ëŒ€ê¸° ìƒíƒœ.
                     */
                    if (IsInterlock()) // Interlock ë°œìƒ.
                    {
                        ProcessPause();
                        if (_sequence.IsTmcStepPauseEnable == false)
                        {
                            _sequence.TmcSequence();
                        }
                        if (_sequence.IsPmcStepPauseEnable == false)
                        {
                            _sequence.PmcSequence();
                        }
                    }
                    else // Interlock ë°œìƒ ì•ˆí•¨.
                    {
                        if(SequencePause) // Pause ìƒíƒœ
                        {
                            if (_sequence.IsTmcStepPauseEnable == false)
                            {
                                _sequence.TmcSequence();
                            }
                            if(_sequence.IsPmcStepPauseEnable == false)
                            {
                                _sequence.PmcSequence();
                            }
                        }
                        else // Excute ìƒíƒœ
                        {
                            //Todo. Shutter always use랑 ìƒê´€ ì—†ì´ Energy drop check, attenuator cal ë•ŒëŠ” í•­ìƒ ì—´ì–´ë†“을까 ..?
                            if (modeParameterManager.ModeParameter.ShutterAlwaysUse)
                            {
                                if (PmcStep != PmcSteps.Wait)
                                {
                                    if (crevis.DigitalOutputs[Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL] == false)
                                    {
                                        crevis.WriteOutput(Crevis.DigitalOutput.LASER_SHUTTER_OPEN_SOL, true);
                                    }
                                }
                            }
                            if (IsEnergyDropCheckTime())
                            {
                                //Tmc ì§„í–‰ ì¤‘ ì¼ ë•Œë§Œ ì‹¤í–‰.
                                if (_sequence.TmcStep != TmcSteps.Wait)
                                {
                                    _sequence.EnergyDropCheckStart();
                                }
                            }
                            if(IsAttenuatorCalTime())
                            {
                                //Tmc ì§„í–‰ ì¤‘ ì¼ ë•Œë§Œ ì‹¤í–‰.
                                if (_sequence.TmcStep != TmcSteps.Wait)
                                {
                                    _sequence.AttenuatorCalStart();
                                }
                            }
                            _sequence.PmcSequence();
                            _sequence.TmcSequence();
                        }
                    }
                    UpdateProcessStatus();
                }
                catch(Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        public bool IsEnergyDropCheckTime()
        {
            if (modeParameterManager.ModeParameter.EnergyDropCheckUse)
            {
                if ((DateTime.Now - equipmentInfo.EnergyDropCheckDate).TotalHours > settingParameterManager.SettingParameter.EnergyDropCheckCycle)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        public bool IsAttenuatorCalTime()
        {
            if (modeParameterManager.ModeParameter.AttenuatorCalUse)
            {
                if ((DateTime.Now - equipmentInfo.AttenuatorCalDate).TotalHours > settingParameterManager.SettingParameter.AttenuatorCalCycle)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        private void UpdateEquipmentStatus()
        {
            if(alarmManager.OccurredAlarms.Count > 0)
            {
                if(alarmManager.OccurredAlarms.Exists(x=>x.Level == AlarmLevel.Heavy))
                {
                    EquipmentStatus = EquipmentStatus.Fault;
                }
                else
                {
                    EquipmentStatus = EquipmentStatus.Warning;
                }
            }
            else
            {
                if (EquipmentMode == EquipmentMode.Teach)
                {
                    EquipmentStatus = EquipmentStatus.PM;
                }
                else
                {
                    EquipmentStatus = EquipmentStatus.Nomal;
                }
            }
        }
        private void UpdateProcessStatus()
        {
            if (SequencePause == false && _sequence.PmcStep == Sequence.PmcSteps.Wait && _sequence.TmcStep == Sequence.TmcSteps.Wait)
            {
                ProcessStatus = ProcessStatus.Idle;
                ProcessPause();
            }
            else if (SequencePause)
            {
                if (_sequence.IsTmcStepPauseEnable && _sequence.IsPmcStepPauseEnable)
                {
                    if(_sequence.PmcStep == Sequence.PmcSteps.Wait && _sequence.TmcStep == Sequence.TmcSteps.Wait)
                    {
                        ProcessStatus = ProcessStatus.Idle;
                    }
                    else
                    {
                        ProcessStatus = ProcessStatus.Pause;
                    }
                }
                else
                {
                    ProcessStatus = ProcessStatus.PauseWait;
                }
            }
            else
            {
                ProcessStatus = ProcessStatus.Execute;
            }
        }
        private void ScannerUpdate()
        {
            if(scanner.IsInitialized)
            {
                scanner.GetBusy();
                scanner.GetLaserOn();
            }
            //Laser On일 ë•Œ Board On
            if(scanner.IsLaserOn)
            {
                if (crevis.DigitalOutputs[Crevis.DigitalOutput.LASER_LED_BOARD_ON] == false)
                    crevis.WriteOutput(Crevis.DigitalOutput.LASER_LED_BOARD_ON, true);
            }
            else
            {
                if (crevis.DigitalOutputs[Crevis.DigitalOutput.LASER_LED_BOARD_ON] == true)
                    crevis.WriteOutput(Crevis.DigitalOutput.LASER_LED_BOARD_ON, false);
            }
        }
        private void UpdateWaferInfo()
        {
            //CST 1번 ì œê±° ë ì‹œ Port1 Wafer Info ì´ˆê¸°í™”.
            if(crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1])
            {
                CheckCST1Removed = false;
            }
            else
            {
                if (CheckCST1Removed == false)
                {
                    WaferInfo waferInfo = new WaferInfo();
                    WaferNumbers waferNumber = WaferNumbers.A1;
                    for (int i = 0; i < 25; i++)
                    {
                        waferInfo.SourceNumber = waferNumber + i;
                        waferInfoManager.SetWaferInfo(waferNumber + i, waferInfo.Clone());
                    }
                    CheckCST1Removed = true;
                }
            }
            //CST 2번 ì œê±° ë ì‹œ Port2 Wafer Info ì´ˆê¸°í™”.
            if (crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2])
            {
                CheckCST2Removed = false;
            }
            else
            {
                if (CheckCST2Removed == false)
                {
                    WaferInfo waferInfo = new WaferInfo();
                    WaferNumbers waferNumber = WaferNumbers.B1;
                    for (int i = 0; i < 25; i++)
                    {
                        waferInfo.SourceNumber = waferNumber + i;
                        waferInfoManager.SetWaferInfo(waferNumber + i, waferInfo.Clone());
                    }
                    CheckCST2Removed = true;
                }
            }
            //로봇 ë™ìž‘ ì•ˆí•  ë•Œ
            if(robot.IsRunEnable && robot.IsPutGetRun == false)
            {
                //Robot Wafer info ë™ê¸°í™”, ì• ë§¤ì“°...
                if (robot.IsWaferExist)
                {
                    WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.Robot);
                    if (waferInfo.IsStatus == WaferInfo.WaferStatus.Empty)
                    {
                        //상태 Error ì•ŒëžŒ?
                        waferInfo.IsStatus = WaferInfo.WaferStatus.Exist;
                        waferInfoManager.SetWaferInfo(WaferNumbers.Robot, waferInfo);
                    }
                }
                else
                {
                    WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.Robot);
                    if (waferInfo.IsStatus != WaferInfo.WaferStatus.Empty)
                    {
                        //상태 Error ì•ŒëžŒ?
                        waferInfo.IsStatus = WaferInfo.WaferStatus.Empty;
                        waferInfoManager.SetWaferInfo(WaferNumbers.Robot, waferInfo);
                    }
                }
                //Aligner Wafer info ë™ê¸°í™”, ì• ë§¤ì“°...
                if (preAligner.IsWaferExist)
                {
                    WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.PreAligner);
                    if (waferInfo.IsStatus == WaferInfo.WaferStatus.Empty)
                    {
                        //상태 Error ì•ŒëžŒ?
                        waferInfo.IsStatus = WaferInfo.WaferStatus.Exist;
                        waferInfoManager.SetWaferInfo(WaferNumbers.PreAligner, waferInfo);
                    }
                }
                else
                {
                    WaferInfo waferInfo = waferInfoManager.GetWaferInfo(WaferNumbers.PreAligner);
                    if (waferInfo.IsStatus != WaferInfo.WaferStatus.Empty)
                    {
                        //상태 Error ì•ŒëžŒ?
                        waferInfo.IsStatus = WaferInfo.WaferStatus.Empty;
                        waferInfoManager.SetWaferInfo(WaferNumbers.PreAligner, waferInfo);
                    }
                }
            }
        }
        private void UpdateFoupInfo()
        {
            if (crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_1] == false)
            {
                port1Foup.status = FoupStatus.Empty;
            }
            else
            {
                if(port1Foup.status == FoupStatus.Empty)
                {
                    port1Foup.status = FoupStatus.Ready;
                }
            }
            if (crevis.DigitalInputs[Crevis.DigitalInput.CST_DETECTOR_2] == false)
            {
                port2Foup.status = FoupStatus.Empty;
            }
            else
            {
                if (port2Foup.status == FoupStatus.Empty)
                {
                    port2Foup.status = FoupStatus.Ready;
                }
            }
        }
        public void Dispose()
        {
            EquipmentLogManager.Instance.WriteProcessLog($"Program end !!");
            IsDisposed = true;
        }
        public bool ChangeUser(string userName)
        {
            if (userManager.ExistsUser(userName))
            {
                User = userManager.GetUser(userName);
                UserChanged?.Invoke(User.Clone());
                return true;
            }
            else
            {
                return false;
            }
        }
        public void LogOut()
        {
            User user = new User();
            user.Name = string.Empty;
            user.Level = UserLevel.Operator;
            user.Password = "1234";
            User = user;
            UserChanged?.Invoke(User.Clone());
        }
        public void BuzzerStop()
        {
            crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_1, false);
            crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_2, false);
            crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_3, false);
            crevis.WriteOutput(Crevis.DigitalOutput.BUZZER_4, false);
        }
        public void LampOn()
        {
            crevis.WriteOutput(Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF, false);
        }
        public void LampOff()
        {
            crevis.WriteOutput(Crevis.DigitalOutput.FLUORESCENT_LAMP_OFF, true);
        }
        public void EmoStop()
        {
            /*
            Process stop ëª©ë¡=========
            process pause
            Motor ì •ì§€.
            Scanner ì •ì§€, laser off
            IO off ëª©ë¡======
            N2 MFC Valve on sol off
            N2 CHB valve on sol off
            CHB bypass on sol on
            */
            if(ProcessStatus == ProcessStatus.Execute)
            {
                ProcessPause();
            }
            if(chamber.IsInposition == false)
            {
                chamber.AllStop();
            }
            if(scanner.IsBusy)
            {
                scanner.Stop();
            }
            if(scanner.IsLaserOn)
            {
                scanner.LaserOff();
            }
            if(crevis.DigitalOutputs[Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL] != false)
            {
                crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, false);
            }
            if (crevis.DigitalOutputs[Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL] != false)
            {
                crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, false);
            }
            if (crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_BYPASS_ON_SOL] != true)
            {
                crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, true);
            }
        }
        public void ProcessStartCheck()
        {
            if(User.Level == UserLevel.Operator)
            {
                // door close ìƒíƒœì—ì„œ ê°€ëŠ¥.
            }
            else if (User.Level == UserLevel.Engineer)
            {
                // door close ìƒíƒœì—ì„œ ê°€ëŠ¥.
            }
            else if (User.Level == UserLevel.Master)
            {
                // Interlock í•´ì œ.
            }
        }
        public bool ChangeMode(EquipmentMode mode)
        {
            if(EquipmentMode == mode)
            {
                return true;
            }
            else
            {
                //나중에 ì¸í„°ë½ ê±¸ê¸°;
                if(ProcessStatus == ProcessStatus.Idle)
                {
                    EquipmentMode = mode;
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
        public bool ChangeEquipementStatus(EquipmentStatus status)
        {
            if(EquipmentStatus == status)
            {
                return true;
            }
            else
            {
                if (EquipmentStatus == EquipmentStatus.Nomal)
                {
                    if (status == EquipmentStatus.Fault || status == EquipmentStatus.Warning)
                    {
                        if (alarmManager.OccurredAlarms.Count == 0)
                        {
                            EquipmentStatus = status;
                            return true;
                        }
                        else
                        {
                        }
                    }
                }
                else if (EquipmentStatus == EquipmentStatus.Fault)
                {
                    if(status == EquipmentStatus.Nomal)
                    {
                        if(alarmManager.OccurredAlarms.Count == 0)
                        {
                            EquipmentStatus = status;
                            return true;
                        }
                        else
                        {
                        }
                    }
                }
                else if (EquipmentStatus == EquipmentStatus.Warning)
                {
                }
                else if (EquipmentStatus == EquipmentStatus.PM)
                {
                    EquipmentStatus = status;
                    return true;
                }
            }
            return false;
        }
        public bool ProcessStart()
        {
            //Teach or Fault
            if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault)
            {
                return false;
            }
            if(TmcStep == TmcSteps.Wait && PmcStep == PmcSteps.Wait)
            {
                for (int i = (int)WaferNumbers.B25 + 1; i < Enum.GetValues(typeof(WaferNumbers)).Length; i++)
                {
                    if (waferInfoManager.GetWaferInfo((WaferNumbers)i).IsStatus != WaferInfo.WaferStatus.Empty)
                    {
                        SetMessageBox("내부에 Wafer가 ì¡´ìž¬í•©ë‹ˆë‹¤.");
                        return false;
                    }
                }
            }
            _sequence.ProcessStart();
            SequencePause = false;
            return true;
        }
        public bool ProcessStartInterlock()
        {
            if (piLaser.CurrentPiLaserStatus.EnableLdd == false)
            {
                SetMessageBox("LDD ê°€ ì—´ë ¤ìžˆì§€ ì•ŠìŠµë‹ˆë‹¤.");
                return false;
            }
            if (piLaser.CurrentPiLaserStatus.EnableShutter == false)
            {
                SetMessageBox("Laser shutter가 ì—´ë ¤ìžˆì§€ ì•ŠìŠµë‹ˆë‹¤.");
                return false;
            }
            if (piLaser.CurrentPiLaserStatus.SetCurrent != piLaser.CurrentPiLaserStatus.MaxCurrent)
            {
                SetMessageBox("Laser set current가 max값이 ì•„닙니다.");
                return false;
            }
            return true;
        }
        public bool ManualProcessStart()
        {
            //Teach or Fault
            if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault || ProcessStatus != ProcessStatus.Idle)
            {
                return false;
            }
            if (_sequence.ManualProcessStart())
            {
                SequencePause = false;
                return true;
            }
            else
            {
                return false;
            }
        }
        public bool ManualEnergyDropCheckStart()
        {
            if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault || ProcessStatus != ProcessStatus.Idle)
            {
                return false;
            }
            if (_sequence.EnergyDropCheckStart())
            {
                SequencePause = false;
                return true;
            }
            else
            {
                return false;
            }
        }
        public bool EnergyDropCheckStop()
        {
            SequencePause = false;
            return _sequence.EnergyDropCheckStop();
        }
        public bool ManualAttenuatorCalStart()
        {
            if (EquipmentMode == EquipmentMode.Teach || EquipmentStatus == EquipmentStatus.Fault || ProcessStatus != ProcessStatus.Idle)
            {
                return false;
            }
            if (_sequence.AttenuatorCalStart())
            {
                SequencePause = false;
                return true;
            }
            else
            {
                return false;
            }
        }
        public bool AttenuatorCalStop()
        {
            SequencePause = false;
            return _sequence.AttenuatorCalStop();
        }
        public void ProcessPause()
        {
            if(SequencePause == false)
            {
                EquipmentLogManager.Instance.WriteProcessLog($"Process pause");
                SequencePause = true;
            }
        }
        public bool ProcessStop()
        {
            if(ProcessStatus == ProcessStatus.Execute)
            {
                return false;
            }
            if(_sequence.ProcessStop())
            {
                SequencePause = false;
                return true;
            }
            else
            {
                return false;
            }
        }
        //한번만 ì‚¬ìš©í•  ê²ƒ. BeginInvoke ì‚¬ìš©ì¤‘.
        public void AddRecipeExcutedEvent(RecipeExcuteEvent recipeExcuteEvent)
        {
            _sequence.RecipeExcuted += recipeExcuteEvent;
        }
        //한번만 ì‚¬ìš©í•  ê²ƒ. BeginInvoke ì‚¬ìš©ì¤‘.
        public void AddProcessInfoExcutedEvent(ProcessInfoExcuteEvent processInfoExcuteEvent)
        {
            _sequence.ProcessInfoExcuted += processInfoExcuteEvent;
        }
    }
}
SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalData.cs
»õ ÆÄÀÏ
@@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Info.AttenuatorCalInfo
{
    public class AttenuatorCalData
    {
        float _attenuatorAngle;
        double _energy;
        public float AttenuatorAngle
        {
            get
            {
                return _attenuatorAngle;
            }
            set
            {
                _attenuatorAngle = value;
            }
        }
        public double Energy
        {
            get
            {
                return _energy;
            }
            set
            {
                _energy = value;
            }
        }
        public AttenuatorCalData()
        {
            AttenuatorAngle = 0;
            Energy = 0;
        }
        public AttenuatorCalData Clone()
        {
            AttenuatorCalData clone = new AttenuatorCalData();
            clone.AttenuatorAngle = this.AttenuatorAngle;
            clone.Energy = this.Energy;
            return clone;
        }
        public bool IsEqual(AttenuatorCalData data)
        {
            if(data.AttenuatorAngle == this.AttenuatorAngle && data.Energy == this.Energy)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
SA_LTT_UI/SA_LTT/Info/AttenuatorCalInfo/AttenuatorCalInfo.cs
»õ ÆÄÀÏ
@@ -0,0 +1,188 @@
using SA_LTT.Base;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Info.AttenuatorCalInfo
{
    public class AttenuatorCalInfo : XmlManager<AttenuatorCalInfo>
    {
        readonly string _fileName = "AttenuatorCalInfo.xml";
        readonly string _filePath = @"AttenuatorCalInfo\";
        public List<AttenuatorCalData> _attenuatorCalDatas { get; set; }
        public AttenuatorCalInfo()
        {
            _attenuatorCalDatas = new List<AttenuatorCalData>();
        }
        public void Refresh()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
            if (directoryInfo.Exists == false)
            {
                directoryInfo.Create();
            }
            FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName);
            if (fileInfo.Exists == false)
            {
                SaveFile(fileInfo.FullName, this);
            }
            else
            {
                AttenuatorCalInfo equipmentInfo = new AttenuatorCalInfo();
                equipmentInfo = ReadFile(fileInfo.FullName);
                Copy(equipmentInfo);
            }
        }
        public float GetAttenuatorAngleForEnergy(double energy)
        {
            float attenuatorAngle = 0;
            int i = 0;
            for (; i< _attenuatorCalDatas.Count; i++)
            {
                if(_attenuatorCalDatas[i].Energy >= energy)
                {
                    break;
                }
            }
            if(i == 0)
            {
                attenuatorAngle = _attenuatorCalDatas[i].AttenuatorAngle;
            }
            else
            {
                AttenuatorCalData beforeData = _attenuatorCalDatas[i - 1];
                AttenuatorCalData afterData = _attenuatorCalDatas[i];
                double energyValue = (afterData.Energy - beforeData.Energy) / 10;
                float angleValue = (afterData.AttenuatorAngle - beforeData.AttenuatorAngle) / 10f;
                for(i = 1; i < 11; i++)
                {
                    if((beforeData.Energy + energyValue * i) >= energy)
                    {
                        break;
                    }
                }
                attenuatorAngle = beforeData.AttenuatorAngle + angleValue * i;
            }
            return attenuatorAngle;
        }
        public double GetMaxEnergy()
        {
            double energy = 0;
            foreach (AttenuatorCalData data in _attenuatorCalDatas)
            {
                if(data.Energy > energy)
                {
                    energy = data.Energy;
                }
            }
            return energy;
        }
        public double GetMinEnergy()
        {
            double energy = double.MaxValue;
            foreach (AttenuatorCalData data in _attenuatorCalDatas)
            {
                if (data.Energy < energy)
                {
                    energy = data.Energy;
                }
            }
            if (_attenuatorCalDatas.Count == 0)
            {
                energy = 0;
            }
            return energy;
        }
        public double GetEnergyPer1Degree()
        {
            if(_attenuatorCalDatas.Count < 2)
            {
                return 0;
            }
            double maxEnergy = GetMaxEnergy();
            double minEnergy = GetMinEnergy();
            float minAngle = _attenuatorCalDatas[0].AttenuatorAngle;
            float maxAngle = _attenuatorCalDatas[_attenuatorCalDatas.Count - 1].AttenuatorAngle;
            double energy = double.Parse($"{(maxEnergy - minEnergy) / (maxAngle - minAngle):F4}");
            return energy;
        }
        public void SetAttenuatorCalData(AttenuatorCalData[] attenuatorCalDatas)
        {
            if(attenuatorCalDatas.Length != 0)
            {
                _attenuatorCalDatas.Clear();
                _attenuatorCalDatas.AddRange(attenuatorCalDatas);
                SaveFile(Equipment.infoFilePath + _filePath + _fileName, this);
                try
                {
                    DateTime dt = DateTime.Now;
                    string path = $"{EquipmentLogManager.s_attenuatorCalLogPath}AttenuatorCalData_{dt.ToString("yyMMdd_HHmmss")}.csv";
                    using (FileStream fs = File.Open(path, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite))
                    {
                        using (StreamWriter sw = new StreamWriter(fs))
                        {
                            foreach (AttenuatorCalData attenuatorCalData in attenuatorCalDatas)
                            {
                                sw.WriteLine($"{attenuatorCalData.AttenuatorAngle}, {attenuatorCalData.Energy}", Encoding.Default);
                            }
                            sw.Close();
                        }
                        fs.Close();
                    }
                }
                catch(Exception ex)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(ex.StackTrace + "\r\n" + ex.Message);
                }
            }
        }
        public AttenuatorCalData[] GetAttenuatorCalData()
        {
            List<AttenuatorCalData> datas = new List<AttenuatorCalData>();
            foreach(AttenuatorCalData data in _attenuatorCalDatas)
            {
                datas.Add(data.Clone());
            }
            return datas.ToArray();
        }
    }
}
SA_LTT_UI/SA_LTT/Info/EquipmentInfo/EquipmentInfo.cs
»õ ÆÄÀÏ
@@ -0,0 +1,63 @@
using SA_LTT.Base;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Info.EquipmentInfo
{
    public class EquipmentInfo : XmlManager<EquipmentInfo>
    {
        readonly string _fileName = "EquipmentInfo.xml";
        readonly string _filePath = @"Equipment\";
        public DateTime EnergyDropCheckDate { get; set; }
        public DateTime AttenuatorCalDate { get; set; }
        public EquipmentInfo()
        {
            EnergyDropCheckDate = DateTime.Now;
            AttenuatorCalDate = DateTime.Now;
        }
        public void Refresh()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
            if (directoryInfo.Exists == false)
            {
                directoryInfo.Create();
            }
            FileInfo fileInfo = new FileInfo(directoryInfo.FullName + _fileName);
            if (fileInfo.Exists == false)
            {
                SaveFile(fileInfo.FullName, this);
            }
            else
            {
                EquipmentInfo equipmentInfo = new EquipmentInfo();
                equipmentInfo = ReadFile(fileInfo.FullName);
                Copy(equipmentInfo);
            }
        }
        public void SetEnergyDropCheckDate()
        {
            EnergyDropCheckDate = DateTime.Now;
            SaveFile(Equipment.infoFilePath + _filePath + _fileName, this);
        }
        public void SetAttenuatorCalDate()
        {
            AttenuatorCalDate = DateTime.Now;
            SaveFile(Equipment.infoFilePath + _filePath + _fileName, this);
        }
    }
}
SA_LTT_UI/SA_LTT/Info/FoupInfo/Foup.cs
»õ ÆÄÀÏ
@@ -0,0 +1,34 @@
using SA_LTT.Info.RecipeInfo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Info.FoupInfo
{
    public enum FoupStatus
    {
        Empty,
        Ready,
        Process,
        Complete,
    }
    public class Foup
    {
        Equipment _equipment;
        public FoupStatus status;
        public FoupRecipe foupRecipe;
        public int portNumber;
        public Foup(Equipment equipment)
        {
            _equipment = equipment;
            portNumber = 1;
            status = FoupStatus.Empty;
            foupRecipe = new FoupRecipe();
        }
    }
}
SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipe.cs
»õ ÆÄÀÏ
@@ -0,0 +1,53 @@
namespace SA_LTT.Info.RecipeInfo
{
    public class FoupRecipe
    {
        public string Name { get; set; }
        public string[] RecipeNames { get; set; }
        public FoupRecipe()
        {
            RecipeNames = new string[25];
        }
        public FoupRecipe Clone()
        {
            FoupRecipe clone = new FoupRecipe();
            clone.Name = this.Name;
            for(int i =0; i< 25; i++)
            {
                clone.RecipeNames[i] = this.RecipeNames[i];
            }
            return clone;
        }
        public static bool IsEquals(FoupRecipe recipe1, FoupRecipe recipe2)
        {
            bool check = true;
            if (recipe1 == null && recipe2 == null)
            {
                check = true;
            }
            else if ((recipe1 == null && recipe2 != null) || (recipe1 != null && recipe2 == null))
            {
                check = false;
            }
            else
            {
                check &= recipe1.Name == recipe2.Name;
                for (int i = 0; i < 25; i++)
                {
                    check &= recipe1.RecipeNames[i] == recipe2.RecipeNames[i];
                }
            }
            return check;
        }
    }
}
SA_LTT_UI/SA_LTT/Info/RecipeInfo/FoupRecipeManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,121 @@
using SA_LTT.Base;
using System.Collections.Generic;
using System.IO;
namespace SA_LTT.Info.RecipeInfo
{
    public class FoupRecipeManager : XmlManager<FoupRecipe>
    {
        Equipment _equipment;
        readonly string _extension = ".xml";
        readonly string _filePath = @"FoupRecipe\";
        private Dictionary<string, FoupRecipe> _recipes = new Dictionary<string, FoupRecipe>();
        public Dictionary<string, FoupRecipe> Recipes
        {
            get
            {
                return _recipes;
            }
            set
            {
                _recipes = value;
            }
        }
        public FoupRecipeManager(Equipment equipment)
        {
            _equipment = equipment;
            RefreshRecipes();
        }
        public void RefreshRecipes()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
            if (directoryInfo.Exists == false)
            {
                directoryInfo.Create();
            }
            foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml"))
            {
                FoupRecipe recipe = new FoupRecipe();
                if (TryReadFile(fileInfo.FullName, out recipe))
                {
                    if (Recipes.ContainsKey(recipe.Name))
                    {
                        Recipes[recipe.Name] = recipe.Clone();
                    }
                    else
                    {
                        Recipes.Add(recipe.Name, recipe.Clone());
                    }
                }
            }
        }
        public void SaveOrCreate(FoupRecipe recipe)
        {
            SaveFile(Equipment.infoFilePath + _filePath + recipe.Name + _extension, recipe);
            if (Recipes.ContainsKey(recipe.Name))
            {
                Recipes[recipe.Name] = recipe.Clone();
            }
            else
            {
                Recipes.Add(recipe.Name, recipe.Clone());
            }
        }
        public void Delete(string recipeName)
        {
            DeleteFile(Equipment.infoFilePath + _filePath + recipeName + _extension);
            if (Recipes.ContainsKey(recipeName))
            {
                Recipes.Remove(recipeName);
            }
        }
        public bool ExistsRecipe(string recipeName)
        {
            if (Recipes.ContainsKey(recipeName))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public FoupRecipe GetRecipe(string recipeName)
        {
            if (ExistsRecipe(recipeName))
            {
                return Recipes[recipeName].Clone();
            }
            else
            {
                return null;
            }
        }
        public FoupRecipe[] GetRecipeList()
        {
            List<FoupRecipe> recipeList = new List<FoupRecipe>();
            foreach (FoupRecipe recipe in Recipes.Values)
            {
                recipeList.Add(recipe.Clone());
            }
            return recipeList.ToArray();
        }
    }
}
SA_LTT_UI/SA_LTT/Info/RecipeInfo/Recipe.cs
»õ ÆÄÀÏ
@@ -0,0 +1,758 @@
using SA_LTT.Module;
using System;
using System.Collections.Generic;
namespace SA_LTT.Info.RecipeInfo
{
    public class Recipe
    {
        public string Name { get; set; }
        public float Radius { get; set; }
        public float DistanceFromCenterToPrimaryFlat { get; set; }
        public float EdgeRound { get; set; }
        public float BeamWidth { get; set; }
        public float BeamHeight { get; set; }
        public List<ProcessInfo> ProcessInfoList { get; set; }
        public Recipe()
        {
            Name = string.Empty;
            ProcessInfoList = new List<ProcessInfo>();
            ProcessInfoList.Clear();
            Radius = 75;
            DistanceFromCenterToPrimaryFlat = 30;
            EdgeRound = 0;
            BeamWidth = 0.1f;
            BeamHeight = 0.1f;
        }
        public void AddProcessInfo(ProcessInfo processInfo)
        {
            processInfo.Radius = Radius;
            processInfo.DistanceFromCenterToPrimaryFlat = DistanceFromCenterToPrimaryFlat;
            processInfo.EdgeRound = EdgeRound;
            processInfo.BeamWidth = BeamWidth;
            ProcessInfoList.Add(processInfo.Clone());
        }
        public Recipe Clone()
        {
            Recipe clone = new Recipe();
            clone.Name = this.Name;
            clone.Radius = this.Radius;
            clone.DistanceFromCenterToPrimaryFlat = this.DistanceFromCenterToPrimaryFlat;
            clone.EdgeRound = this.EdgeRound;
            clone.BeamWidth = this.BeamWidth;
            clone.BeamHeight = this.BeamHeight;
            clone.ProcessInfoList.AddRange(this.ProcessInfoList);
            return clone;
        }
        public static bool IsEquals(Recipe recipe1, Recipe recipe2)
        {
            bool check = true;
            if (recipe1 == null && recipe2 == null)
            {
                check = true;
            }
            else if ((recipe1 == null && recipe2 != null) || (recipe1 != null && recipe2 == null))
            {
                check = false;
            }
            else
            {
                check &= recipe1.Name == recipe2.Name;
                check &= recipe1.Radius == recipe2.Radius;
                check &= recipe1.DistanceFromCenterToPrimaryFlat == recipe2.DistanceFromCenterToPrimaryFlat;
                check &= recipe1.EdgeRound == recipe2.EdgeRound;
                check &= recipe1.BeamWidth == recipe2.BeamWidth;
                check &= recipe1.BeamHeight == recipe2.BeamHeight;
                if (recipe1.ProcessInfoList.Count == recipe2.ProcessInfoList.Count)
                {
                    for (int i = 0; i < recipe1.ProcessInfoList.Count; i++)
                    {
                        check &= ProcessInfo.IsEquals(recipe1.ProcessInfoList[i], recipe2.ProcessInfoList[i]);
                        if (check == false)
                            break;
                    }
                }
                else
                {
                    check = false;
                }
            }
            return check;
        }
    }
    public struct Coord
    {
        public ScanMode ScanMode { get; set; }
        public double X { get; set; }
        public double Y { get; set; }
        public Coord(ScanMode scanMode, double x, double y)
        {
            this.ScanMode = scanMode;
            this.X = x;
            this.Y = y;
        }
    }
    public class ProcessInfo
    {
        public double Radius { get; set; }
        public double DistanceFromCenterToPrimaryFlat { get; set; }
        public double EdgeRound { get; set; }
        public float StartX { get; set; }
        public float StartY { get; set; }
        public float Width { get; set; }
        public float Height { get; set; }
        public float ProcessStartX { get; set; }
        public float ProcessStartY { get; set; }
        public float ProcessEndX { get; set; }
        public float ProcessEndY { get; set; }
        public float BeamWidth { get; set; }
        public float BeamHeight { get; set; }
        public float BeamHeightOverlap { get; set; }
        public float BeamWidthOverlap { get; set; }
        public double ScannerProcessSpeed
        {
            get
            {
                return (BeamHeight - BeamHeightOverlap) * 1000;
            }
        }
        public double Energy { get; set; }
        public bool IsProcessEnable { get; set; }
        public double ProcessLength { get; set; }
        public double AccTime { get; set; }
        public List<Coord> ProcessList { get; set; }
        public ProcessInfo()
        {
            ProcessList = new List<Coord>();
            Radius = 75;
            DistanceFromCenterToPrimaryFlat = 70;
            EdgeRound = 0;
            StartX = 0;
            StartY = 0;
            Height = 0;
            Width = 0;
            BeamWidth = 0.1f;
            BeamHeight = 0.1f;
            AccTime = 100;
            SetProcessData();
        }
        public void SetRecipeData(Recipe recipe)
        {
            Radius = recipe.Radius;
            DistanceFromCenterToPrimaryFlat = recipe.DistanceFromCenterToPrimaryFlat;
            EdgeRound = recipe.EdgeRound;
            BeamWidth = recipe.BeamWidth;
            BeamHeight = recipe.BeamHeight;
        }
        //가공 ìƒì„±, ì–¸ì œ í•  ì§€ ì• ë§¤ ... ë°ì´íƒ€ ë³€ê²½ ë•Œ ë§ˆë‹¤ í•´ì•¼ë˜ë ¤ë‚˜ ...
        public void SetProcessData()
        {
            float beamHeight = BeamHeight - BeamHeightOverlap;
            beamHeight = float.Parse($"{beamHeight:F4}");
            if (Height % beamHeight != 0) //가공 ë†’이가 beamHeightê³¼ ë§žê²Œ ì•ˆë–¨ì–´ì§€ë©´ ë”± ë§žê²Œ ë–¨ì–´ì§€ë„록 ë³€ê²½.
            {
                int beamCount = (int)(Height / beamHeight);
                if (Height % beamHeight > beamHeight / 2)
                {
                    Height = (beamCount + 1) * beamHeight;
                }
                else
                {
                    Height = beamCount * beamHeight;
                }
            }
            if(IsProcessingAreaContainWafer())
            {
                if(GetProcessStartEndCoords())
                {
                    CreateProcessLines();
                }
            }
            else
            {
                ProcessStartX = 0;
                ProcessStartY = 0;
                ProcessEndX = 0;
                ProcessEndY = 0;
                ProcessList.Clear();
            }
        }
        //가공 ë²”위가 ì›¨ì´í¼ ì•ˆì— ìžˆëŠ”ì§€ í™•인.
        private bool IsProcessingAreaContainWafer()
        {
            bool isContainsEllipse = true;
            //웨이퍼 ì¤‘심과 ì‚¬ê°í˜• ì¤‘심 ì‚¬ì´ì˜ ê±°ë¦¬.
            double left = StartX;
            double top = StartY;
            double right = left + Width;
            double bottom = top - Height;
            // 0, 0 <- ì¤‘심.
            if ((left <= 0 && 0 <= right) ||
                (bottom <= 0 && 0 <= top))
            {
                double processsRadius = Radius - EdgeRound;
                //사각형 ë°˜ì§€ë¦„ ë§Œí¼ í™•장
                double extendRectLeft = left - processsRadius;
                double extendRectTop = top + processsRadius;
                double extendRectRight = right + processsRadius;
                double extendRectBottom = bottom - processsRadius;
                //확장된 ì‚¬ê°í˜• ì•ˆì— ì¤‘심이 ì˜¤ë©´ ì¶©ëŒ
                if ((extendRectLeft < 0 && 0 < extendRectRight) &&
                    (extendRectBottom < 0 && 0 < extendRectTop))
                {
                    if (top < -DistanceFromCenterToPrimaryFlat)
                    {
                        isContainsEllipse = false;
                    }
                    else
                    {
                        isContainsEllipse = true;
                    }
                }
                else
                {
                    isContainsEllipse = false;
                }
            }
            else
            {
                //사각형의 ê¼­ì§€ì ì´ ì› ì•ˆì— ì˜¤ë©´ ì¶©ëŒ
                if (IsCoordInWafer(left, top) ||
                    IsCoordInWafer(right, top) ||
                    IsCoordInWafer(left, bottom) ||
                    IsCoordInWafer(right, bottom))
                {
                    if (top < -(DistanceFromCenterToPrimaryFlat - EdgeRound))
                    {
                        isContainsEllipse = false;
                    }
                    else
                    {
                        isContainsEllipse = true;
                    }
                }
                else
                {
                    isContainsEllipse = false;
                }
            }
            IsProcessEnable = isContainsEllipse;
            return isContainsEllipse;
        }
        //가공 ë²”위가 ì›¨ì´í¼ ì•ˆì— ìžˆìœ¼ë©´ ê°€ê³µ ì‹œìž‘ ì¢…료 ìœ„치 ì–»ìŒ.
        private bool GetProcessStartEndCoords()
        {
            if (IsProcessEnable == false) //가공 ë²”위가 ì›¨ì´í¼ ì•ˆì— ì—†ìœ¼ë©´ false ë°˜í™˜.
                return false;
            double processsRadius = Radius - EdgeRound;
            double startX, startY;
            double endX, endY;
            double left = StartX;
            double top = StartY;
            double right = left + Width;
            double bottom = top - Height;
            startX = 0;
            startY = 0;
            endX = 0;
            endY = 0;
            //=================== Start X, Y êµ¬í•˜ê¸° =========================
            if (top >= 0)
            {
                if (top - Height > 0)
                {
                    startX = -Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top - Height, 2));
                }
                else
                {
                    startX = -Math.Sqrt(Math.Pow(processsRadius, 2));
                }
            }
            else
            {
                startX = -Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top, 2));
            }
            //Start X
            if (left < 0 && startX < left)
            {
                startX = left;
            }
            else if (left >= 0 && startX < left)
            {
                startX = left;
            }
            //Start Y
            if (top > processsRadius)
            {
                startY = processsRadius;
            }
            else
            {
                startY = top;
            }
            //==================================================
            //=================== End X, Y êµ¬í•˜ê¸° =========================
            if (top >= 0)
            {
                if (top - Height > 0)
                {
                    //startY = top - Height;
                    endX = Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top - Height, 2));
                }
                else
                {
                    endX = Math.Sqrt(Math.Pow(processsRadius, 2));
                }
                //startY = top;
            }
            else
            {
                endX = Math.Sqrt(Math.Pow(processsRadius, 2) - Math.Pow(top, 2));
            }
            //End X
            if (right <= processsRadius && right < endX)
            {
                endX = right;
            }
            //End Y
            if ( (top - Height) >= processsRadius)
            {
                endY = processsRadius;
            }
            else
            {
                endY = top - Height;
            }
            if (endY < -(DistanceFromCenterToPrimaryFlat - EdgeRound))
            {
                double beamHeightSize = BeamHeight - BeamHeightOverlap;
                double endHeight = top + (DistanceFromCenterToPrimaryFlat - EdgeRound);
                int beamCount = (int)(endHeight / beamHeightSize);
                if (endHeight % beamHeightSize > beamHeightSize / 2)
                {
                    beamCount++;
                }
                endY = top - (beamCount * beamHeightSize);
            }
            ProcessStartX = float.Parse($"{startX:F4}");
            ProcessStartY = float.Parse($"{startY:F4}");
            ProcessEndX = float.Parse($"{endX:F4}");
            ProcessEndY = float.Parse($"{endY:F4}");
            return true;
        }
        //좌표가 ì›¨ì´í¼ ì•ˆì— ìžˆëŠ”ì§€ í™•인
        private bool IsCoordInWafer(double x, double y)
        {
            return Math.Pow(x, 2) + Math.Pow(y, 2) <= Math.Pow(Radius - EdgeRound, 2);
        }
        //X축을 ê¸°ì ìœ¼ë¡œ ì›¨ì´í¼ ì ‘점 Y위치 ë°˜í™˜.
        private double GetPointYOfContactOfEllips(double x, double y)
        {
            double position = 0;
            x = double.Parse($"{x:F4}");
            y = double.Parse($"{y:F4}");
            position = Math.Sqrt(Math.Pow(Radius - EdgeRound, 2) - Math.Pow(x, 2));
            position = y < 0 ? -position : position;
            position = double.Parse($"{position:F4}");
            return position;
        }
        //가공 ì¢Œí‘œ List ìƒì„±
        private bool CreateProcessLines()
        {
            if (IsProcessEnable == false) //가공 ë²”위가 ì›¨ì´í¼ ì•ˆì— ì—†ìœ¼ë©´ false ë°˜í™˜.
                return false;
            int oddCheck = 0;
            ProcessLength = 0;
            double jumpY = 0;
            double markY = 0;
            float beamHeightSize = BeamHeight - BeamHeightOverlap;
            beamHeightSize = float.Parse($"{beamHeightSize:F4}");
            ProcessList.Clear(); // ê¸°ì¡´ ë°ì´í„° ì´ˆê¸°í™”
            bool _accLengthCheck = true;
            for (double i = ProcessStartX; i <= ProcessEndX; i += (BeamWidth - BeamWidthOverlap)) // X축 ë°©í–¥ íƒìƒ‰
            {
                //가공 ì‹œìž‘ ê¸°ì¤€
                if (ProcessEndY >= 0) // ê°€ê³µ End ê°€ 0보다 ìœ„일 ë•Œ, End위치 ê¸°ì¤€ìœ¼ë¡œ.
                {
                    if (oddCheck % 2 == 0) // ì§ìˆ˜ (left top, start ìœ„치에서 ì‹œìž‘)
                    {
                        //Jump
                        if (IsCoordInWafer(i, ProcessEndY + Height))
                        {
                            jumpY = ProcessEndY + Height;
                        }
                        else
                        {
                            jumpY = GetPointYOfContactOfEllips(i, ProcessEndY + Height);
                            if((jumpY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                jumpY = ProcessEndY + (beamHeightSize * Math.Floor((jumpY - ProcessEndY) / beamHeightSize));
                            }
                            else
                            {
                                jumpY = ProcessEndY + (beamHeightSize * Math.Ceiling((jumpY - ProcessEndY) / beamHeightSize));
                            }
                        }
                        //Mark
                        if (IsCoordInWafer(i, ProcessEndY))
                        {
                            markY = ProcessEndY;
                        }
                        else
                        {
                            markY = GetPointYOfContactOfEllips(i, ProcessEndY);
                            if ((markY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                markY = ProcessEndY + (beamHeightSize * Math.Floor((markY - ProcessEndY) / beamHeightSize));
                            }
                            else
                            {
                                markY = ProcessEndY + (beamHeightSize * Math.Ceiling((markY - ProcessEndY) / beamHeightSize));
                            }
                        }
                    }
                    else // í™€ìˆ˜ (right bottom, ìœ„치에서 ì‹œìž‘)
                    {
                        //Jump
                        if (IsCoordInWafer(i, ProcessEndY))
                        {
                            jumpY = ProcessEndY;
                        }
                        else
                        {
                            jumpY = GetPointYOfContactOfEllips(i, ProcessEndY);
                            if ((jumpY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                jumpY = ProcessEndY + (beamHeightSize * Math.Floor((jumpY - ProcessEndY) / beamHeightSize));
                            }
                            else
                            {
                                jumpY = ProcessEndY + (beamHeightSize * Math.Ceiling((jumpY - ProcessEndY) / beamHeightSize));
                            }
                        }
                        //Mark
                        if (IsCoordInWafer(i, ProcessEndY + Height))
                        {
                            markY = ProcessEndY + Height;
                        }
                        else
                        {
                            markY = GetPointYOfContactOfEllips(i, ProcessEndY + Height);
                            if ((markY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                markY = ProcessEndY + (beamHeightSize * Math.Floor((markY - ProcessEndY) / beamHeightSize));
                            }
                            else
                            {
                                markY = ProcessEndY + (beamHeightSize * Math.Ceiling((markY - ProcessEndY) / beamHeightSize));
                            }
                        }
                    }
                    if(_accLengthCheck && jumpY >= ProcessStartY)
                    {
                        _accLengthCheck = false;
                        AccTime = ProcessLength / ScannerProcessSpeed;
                    }
                }
                else // ê°€ê³µ End가 0보다 ë°‘일 ë•Œ
                {
                    if (oddCheck % 2 == 0) // ì§ìˆ˜ (left top, start ìœ„치에서 ì‹œìž‘)
                    {
                        //Jump
                        if (IsCoordInWafer(i, ProcessStartY))
                        {
                            jumpY = ProcessStartY;
                        }
                        else
                        {
                            jumpY = GetPointYOfContactOfEllips(i, ProcessStartY);
                            if ((jumpY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                jumpY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - jumpY) / beamHeightSize));
                            }
                            else
                            {
                                jumpY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - jumpY) / beamHeightSize));
                            }
                        }
                        //Mark
                        if (IsCoordInWafer(i, ProcessStartY - Height))
                        {
                            markY = ProcessStartY - Height;
                        }
                        else
                        {
                            markY = GetPointYOfContactOfEllips(i, ProcessStartY - Height);
                            if ((jumpY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                markY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - markY) / beamHeightSize));
                            }
                            else
                            {
                                markY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - markY) / beamHeightSize));
                            }
                        }
                    }
                    else // í™€ìˆ˜ (right bottom, ìœ„치에서 ì‹œìž‘)
                    {
                        //Jump
                        if (IsCoordInWafer(i, ProcessStartY - Height))
                        {
                            jumpY = ProcessStartY - Height;
                        }
                        else
                        {
                            jumpY = GetPointYOfContactOfEllips(i, ProcessStartY - Height);
                            if ((jumpY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                jumpY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - jumpY) / beamHeightSize));
                            }
                            else
                            {
                                jumpY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - jumpY) / beamHeightSize));
                            }
                        }
                        //Mark
                        if (IsCoordInWafer(i, ProcessStartY))
                        {
                            markY = ProcessStartY;
                        }
                        else
                        {
                            markY = GetPointYOfContactOfEllips(i, ProcessStartY);
                            if ((markY % beamHeightSize) >= (beamHeightSize / 2))
                            {
                                markY = ProcessStartY - (beamHeightSize * Math.Floor((ProcessStartY - markY) / beamHeightSize));
                            }
                            else
                            {
                                markY = ProcessStartY - (beamHeightSize * Math.Ceiling((ProcessStartY - markY) / beamHeightSize));
                            }
                        }
                    }
                    if (_accLengthCheck && jumpY <= ProcessEndY)
                    {
                        _accLengthCheck = false;
                        AccTime = ProcessLength / ScannerProcessSpeed;
                    }
                }
                if (jumpY < ProcessEndY)
                {
                    jumpY = ProcessEndY;
                }
                if (markY < ProcessEndY)
                {
                    markY = ProcessEndY;
                }
                jumpY = double.Parse($"{jumpY:F4}");
                markY = double.Parse($"{markY:F4}");
                i = double.Parse($"{i:F4}");
                ProcessList.Add(new Coord(ScanMode.JUMP, i, jumpY));
                ProcessList.Add(new Coord(ScanMode.MARK, i, markY));
                ProcessLength += Math.Abs(markY - jumpY);
                //ProcessLength += Math.Abs(ProcessStartY - ProcessEndY);
                ProcessLength += 0.1 + 0.1; // JumpDelay + MarkDelay;
                ProcessLength += beamHeightSize;
                oddCheck++;
            }
            // Process y - y = 3950.64
            // mark y -y = 3723.49
            ProcessLength = double.Parse($"{ProcessLength:F3}");
            return true;
        }
        public ProcessInfo Clone()
        {
            ProcessInfo processInfo = new ProcessInfo();
            processInfo.Radius = Radius;
            processInfo.DistanceFromCenterToPrimaryFlat = DistanceFromCenterToPrimaryFlat;
            processInfo.EdgeRound = EdgeRound;
            processInfo.StartX = StartX;
            processInfo.StartY = StartY;
            processInfo.Height = Height;
            processInfo.Width = Width;
            processInfo.ProcessStartX = ProcessStartX;
            processInfo.ProcessStartY = ProcessStartY;
            processInfo.ProcessEndX = ProcessEndX;
            processInfo.ProcessEndY = ProcessEndY;
            processInfo.BeamWidth = BeamWidth;
            processInfo.BeamHeight = BeamHeight;
            processInfo.BeamHeightOverlap = BeamHeightOverlap;
            processInfo.BeamWidthOverlap = BeamWidthOverlap;
            processInfo.Energy = Energy;
            processInfo.IsProcessEnable = IsProcessEnable;
            foreach(Coord coord in ProcessList)
            {
                Coord copy = new Coord(coord.ScanMode, coord.X, coord.Y);
                processInfo.ProcessList.Add(copy);
            }
            return processInfo;
        }
        public static bool IsEquals(ProcessInfo info1, ProcessInfo info2)
        {
            bool check = true;
            if (info1 == null && info2 == null)
            {
                check = true;
            }
            else if ((info1 == null && info2 != null) || (info1 != null && info2 == null))
            {
                check = false;
            }
            else
            {
                check &= info1.Radius == info2.Radius;
                check &= info1.DistanceFromCenterToPrimaryFlat == info2.DistanceFromCenterToPrimaryFlat;
                check &= info1.StartX == info2.StartX;
                check &= info1.StartY == info2.StartY;
                check &= info1.Height == info2.Height;
                check &= info1.Width == info2.Width;
                check &= info1.ProcessStartX == info2.ProcessStartX;
                check &= info1.ProcessStartY == info2.ProcessStartY;
                check &= info1.ProcessEndX == info2.ProcessEndX;
                check &= info1.ProcessEndY == info2.ProcessEndY;
                check &= info1.BeamWidth == info2.BeamWidth;
                check &= info1.BeamHeightOverlap == info2.BeamHeightOverlap;
                check &= info1.BeamWidthOverlap == info2.BeamWidthOverlap;
                check &= info1.IsProcessEnable == info2.IsProcessEnable;
                check &= info1.Energy == info2.Energy;
                if (info1.ProcessList.Count == info2.ProcessList.Count)
                {
                    for (int i = 0; i < info1.ProcessList.Count; i++)
                    {
                        check &= info1.ProcessList[i].ScanMode == info2.ProcessList[i].ScanMode;
                        check &= info1.ProcessList[i].X == info2.ProcessList[i].X;
                        check &= info1.ProcessList[i].Y == info2.ProcessList[i].Y;
                        if (check == false)
                            break;
                    }
                }
                else
                {
                    check = false;
                }
            }
            return check;
        }
    }
}
SA_LTT_UI/SA_LTT/Info/RecipeInfo/RecipeManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,121 @@
using SA_LTT.Base;
using System.Collections.Generic;
using System.IO;
namespace SA_LTT.Info.RecipeInfo
{
    public class RecipeManager : XmlManager<Recipe>
    {
        Equipment _equipment;
        readonly string _extension = ".xml";
        readonly string _filePath = @"Recipe\";
        private Dictionary<string, Recipe> _recipes = new Dictionary<string, Recipe>();
        public Dictionary<string, Recipe> Recipes
        {
            get
            {
                return _recipes;
            }
            set
            {
                _recipes = value;
            }
        }
        public RecipeManager(Equipment equipment)
        {
            _equipment = equipment;
            RefreshRecipes();
        }
        public void RefreshRecipes()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
            if (directoryInfo.Exists == false)
            {
                directoryInfo.Create();
            }
            foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml"))
            {
                Recipe recipe = new Recipe();
                if (TryReadFile(fileInfo.FullName, out recipe))
                {
                    if (Recipes.ContainsKey(recipe.Name))
                    {
                        Recipes[recipe.Name] = recipe.Clone();
                    }
                    else
                    {
                        Recipes.Add(recipe.Name, recipe.Clone());
                    }
                }
            }
        }
        public void SaveOrCreate(Recipe recipe)
        {
            SaveFile(Equipment.infoFilePath + _filePath + recipe.Name + _extension, recipe);
            if (Recipes.ContainsKey(recipe.Name))
            {
                Recipes[recipe.Name] = recipe.Clone();
            }
            else
            {
                Recipes.Add(recipe.Name, recipe.Clone());
            }
        }
        public void Delete(string recipeName)
        {
            DeleteFile(Equipment.infoFilePath + _filePath + recipeName + _extension);
            if (Recipes.ContainsKey(recipeName))
            {
                Recipes.Remove(recipeName);
            }
        }
        public bool ExistsRecipe(string recipeName)
        {
            if (Recipes.ContainsKey(recipeName))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public Recipe GetRecipe(string recipeName)
        {
            if (ExistsRecipe(recipeName))
            {
                return Recipes[recipeName].Clone();
            }
            else
            {
                return null;
            }
        }
        public Recipe[] GetRecipeList()
        {
            List<Recipe> recipeList = new List<Recipe>();
            foreach (Recipe recipe in Recipes.Values)
            {
                recipeList.Add(recipe.Clone());
            }
            return recipeList.ToArray();
        }
    }
}
SA_LTT_UI/SA_LTT/Info/UserInfo/User.cs
»õ ÆÄÀÏ
@@ -0,0 +1,80 @@
namespace SA_LTT.UserInfo
{
    public enum UserLevel
    {
        Operator,
        Engineer,
        Master,
    }
    public class User
    {
        string _name;
        string _password;
        UserLevel _level;
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
        public string Password
        {
            get
            {
                return _password;
            }
            set
            {
                _password = value;
            }
        }
        public UserLevel Level
        {
            get
            {
                return _level;
            }
            set
            {
                _level = value;
            }
        }
        public User()
        {
            Name = string.Empty;
            Password = string.Empty;
            Level = UserLevel.Operator;
        }
        public User Clone()
        {
            User user = (User)this.MemberwiseClone();
            return user;
        }
        public bool Equals(User user)
        {
            bool check = true;
            check &= this.Name == user.Name;
            check &= this.Password == user.Password;
            check &= this.Level == user.Level;
            return check;
        }
    }
}
SA_LTT_UI/SA_LTT/Info/UserInfo/UserManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,154 @@
using SA_LTT.Base;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.UserInfo
{
    public delegate void UserInfoChanged();
    public class UserManager : XmlManager<User>
    {
        Equipment _equipment;
        readonly string _extension = ".xml";
        readonly string _filePath = @"User\";
        public event UserInfoChanged Changed;
        private Dictionary<string, User> _users = new Dictionary<string, User>();
        private Dictionary<string, User> Users
        {
            get
            {
                return _users;
            }
            set
            {
                _users = value;
            }
        }
        public UserManager(Equipment equipment)
        {
            _equipment = equipment;
            RefreshUsers();
        }
        public void RefreshUsers()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
            if(directoryInfo.Exists == false)
            {
                directoryInfo.Create();
            }
            foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml"))
            {
                User user = new User();
                if(TryReadFile(fileInfo.FullName, out user))
                {
                    if (Users.ContainsKey(user.Name))
                    {
                        Users[user.Name] = user.Clone();
                    }
                    else
                    {
                        Users.Add(user.Name, user.Clone());
                    }
                }
            }
            // DIT ê³„ì • ì—†ì„ ì‹œ ìƒì„±.
            if (Users.ContainsKey("DIT") == false)
            {
                User user = new User();
                user.Name = "DIT";
                user.Password = "1234";
                user.Level = UserLevel.Master;
                SaveOrCreate(user);
            }
            // Operator ê³„ì • ì—†ì„ ì‹œ ìƒì„±.
            if (Users.ContainsKey("Operator") == false)
            {
                User user = new User();
                user.Name = "Operator";
                user.Password = "1234";
                user.Level = UserLevel.Operator;
                SaveOrCreate(user);
            }
        }
        public void SaveOrCreate(User user)
        {
            SaveFile(Equipment.infoFilePath + _filePath + user.Name + _extension, user);
            if (Users.ContainsKey(user.Name))
            {
                Users[user.Name] = user.Clone();
            }
            else
            {
                Users.Add(user.Name, user.Clone());
            }
            Changed?.Invoke();
        }
        public void Delete(string userName)
        {
            DeleteFile(Equipment.infoFilePath + _filePath + userName + _extension);
            if (Users.ContainsKey(userName))
            {
                Users.Remove(userName);
            }
            Changed?.Invoke();
        }
        public bool ExistsUser(string userName)
        {
            if(_users.ContainsKey(userName))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public User GetUser(string userName)
        {
            if(ExistsUser(userName))
            {
                return _users[userName].Clone();
            }
            else
            {
                return null;
            }
        }
        public User[] GetUserList()
        {
            List<User> userList = new List<User>();
            foreach(User user in Users.Values)
            {
                userList.Add(user.Clone());
            }
            return userList.ToArray();
        }
    }
}
SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfo.cs
»õ ÆÄÀÏ
@@ -0,0 +1,58 @@
using SA_LTT.Base;
using static SA_LTT.Info.WaferInfo.WaferInfoManager;
namespace SA_LTT.Info.WaferInfo
{
    //Foup id는 ë”°ë¡œ ì—†ìŒ.
    public class WaferInfo
    {
        public enum WaferStatus
        {
            //없음
            Empty = 0,
            //있음
            Exist,
            //웨이퍼 ê¸°ìš¸ì–´ì§
            Leaning,
            //웨이퍼 ê²¹ì¹¨
            Overlap,
        }
        // Recipe는 í•­ëª© ë§Œë“¤ì–´ ë†“ê³  ì§„í–‰...
        //private Recipe _recipeInfo;
        public WaferStatus IsStatus { get; set; }
        public bool IsFlip { get; set; }
        public bool IsProcessComplete { get; set; }
        public string CarrierID { get; set; }
        public string LotID { get; set; }
        public string RecipeName { get; set; }
        public WaferNumbers SourceNumber { get; set; }
        public WaferInfo()
        {
            IsStatus = WaferStatus.Empty;
            IsFlip = false;
            IsProcessComplete = false;
            LotID = string.Empty;
            CarrierID = string.Empty;
            RecipeName = string.Empty;
            SourceNumber = WaferNumbers.A1;
        }
        public WaferInfo Clone()
        {
            WaferInfo info = (WaferInfo)this.MemberwiseClone();
            return info;
        }
    }
}
SA_LTT_UI/SA_LTT/Info/WaferInfo/WaferInfoManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,243 @@
using SA_LTT.Base;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Info.WaferInfo
{
    public class WaferInfoManager : XmlManager<WaferInfo>
    {
        public enum WaferNumbers
        {
            A1,
            A2,
            A3,
            A4,
            A5,
            A6,
            A7,
            A8,
            A9,
            A10,
            A11,
            A12,
            A13,
            A14,
            A15,
            A16,
            A17,
            A18,
            A19,
            A20,
            A21,
            A22,
            A23,
            A24,
            A25,
            B1,
            B2,
            B3,
            B4,
            B5,
            B6,
            B7,
            B8,
            B9,
            B10,
            B11,
            B12,
            B13,
            B14,
            B15,
            B16,
            B17,
            B18,
            B19,
            B20,
            B21,
            B22,
            B23,
            B24,
            B25,
            Robot,
            PreAligner,
            Chamber,
        }
        Equipment _equipment;
        readonly string _filePath = @"Wafer\";
        private Dictionary<WaferNumbers, WaferInfo> _waferInfos;
        public WaferInfoManager(Equipment equipement)
        {
            equipement = _equipment;
            _waferInfos = new Dictionary<WaferNumbers, WaferInfo>();
            foreach(WaferNumbers info in Enum.GetValues(typeof(WaferNumbers)))
            {
                _waferInfos.Add(info, new WaferInfo());
            }
            RefreshWaferInfo();
        }
        public void RefreshWaferInfo()
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
            if (directoryInfo.Exists == false)
            {
                directoryInfo.Create();
            }
            WaferInfo waferinfo = new WaferInfo();
            //LoadPort1, 2
            for (int i = 0; i < 25; i++)
            {
                if (TryReadFile(directoryInfo.FullName + $"{WaferNumbers.A1 + i}.xml", out waferinfo))
                {
                    _waferInfos[WaferNumbers.A1 + i] = waferinfo;
                }
                else
                {
                    waferinfo = new WaferInfo();
                    SaveFile(directoryInfo.FullName + $"{WaferNumbers.A1 + i}.xml", waferinfo);
                }
                if (TryReadFile(directoryInfo.FullName + $"{WaferNumbers.B1 + i}.xml", out waferinfo))
                {
                    _waferInfos[WaferNumbers.B1 + i] = waferinfo;
                }
                else
                {
                    waferinfo = new WaferInfo();
                    SaveFile(directoryInfo.FullName + $"{WaferNumbers.B1 + i}.xml", waferinfo);
                }
            }
            //Robot
            if (TryReadFile(directoryInfo.FullName + $"Robot.xml", out waferinfo))
            {
                _waferInfos[WaferNumbers.Robot] = waferinfo;
            }
            else
            {
                waferinfo = new WaferInfo();
                SaveFile(directoryInfo.FullName + $"Robot.xml", waferinfo);
            }
            //Pre align
            if (TryReadFile(directoryInfo.FullName + $"PreAligner.xml", out waferinfo))
            {
                _waferInfos[WaferNumbers.PreAligner] = waferinfo;
            }
            else
            {
                waferinfo = new WaferInfo();
                SaveFile(directoryInfo.FullName + $"PreAligner.xml", waferinfo);
            }
            //Chamber
            if (TryReadFile(directoryInfo.FullName + $"Chamber.xml", out waferinfo))
            {
                _waferInfos[WaferNumbers.Chamber] = waferinfo;
            }
            else
            {
                waferinfo = new WaferInfo();
                SaveFile(directoryInfo.FullName + $"Chamber.xml", waferinfo);
            }
        }
        public void MoveWaferInfo(WaferNumbers source, WaferNumbers destination)
        {
            _waferInfos[destination] = _waferInfos[source].Clone();
            _waferInfos[source] = new WaferInfo();
            SetWaferInfo(source, _waferInfos[source]);
            SetWaferInfo(destination, _waferInfos[destination]);
        }
        public WaferInfo GetWaferInfo(WaferNumbers waferNumber)
        {
            return _waferInfos[waferNumber].Clone();
        }
        public void SetWaferInfo(WaferNumbers waferNumber, WaferInfo waferInfo)
        {
            lock(this)
            {
                _waferInfos[waferNumber] = waferInfo;
                SaveFile(Equipment.infoFilePath + _filePath + $"{waferNumber.ToString()}.xml", waferInfo);
            }
        }
        public static bool TryParse(int stageNum, int slotNum, out WaferNumbers waferNumber)
        {
            waferNumber = WaferNumbers.A1;
            WaferNumbers waferNum = WaferNumbers.A1;
            if (stageNum == 1)
            {
                //port 1
                if(1 <= slotNum && slotNum <= 25)
                {
                    waferNumber = waferNum + (slotNum - 1);
                }
                else
                {
                    return false;
                }
            }
            else if (stageNum == 2)
            {
                //port 2
                waferNum = WaferNumbers.B1;
                if (1 <= slotNum && slotNum <= 25)
                {
                    waferNumber = waferNum + (slotNum - 1);
                }
                else
                {
                    return false;
                }
            }
            else if (stageNum == 3 || stageNum == 4)
            {
                //Aligner
                if (slotNum == 1)
                {
                    waferNumber = WaferNumbers.PreAligner;
                }
                else
                {
                    return false;
                }
            }
            else if (stageNum == 5)
            {
                //Chamber
                if (slotNum == 1)
                {
                    waferNumber = WaferNumbers.Chamber;
                }
                else
                {
                    return false;
                }
            }
            return true;
        }
    }
}
SA_LTT_UI/SA_LTT/Log/EquipmentLogManager.cs
»õ ÆÄÀÏ
@@ -0,0 +1,122 @@
using System;
using System.Text;
using log4net;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;
namespace SA_LTT
{
    /* ë¡œê·¸ íŒŒì¼ê²½ë¡œ í˜•식은 ëª¨ë‘ ë˜‘같이 í•´ì•¼ í•¨.
     * í˜•식 : rootPath\yyyy\mm\fileName_dd.log
     * í™•장자는 ë³€ê²½ í•´ë„ ë¬´ê´€.
    */
    public class EquipmentLogManager
    {
        public delegate void AddProcessLogEvent(string logData);
        private static readonly Lazy<EquipmentLogManager> _instatnce = new Lazy<EquipmentLogManager>(() => new EquipmentLogManager());
        public static EquipmentLogManager Instance
        {
            get
            {
                return _instatnce.Value;
            }
        }
        LogCreater _exceptionLog = new LogCreater("Exception", s_exceptionLogPath);
        LogCreater _alarmOccurredLog = new LogCreater("AlarmOccurred", s_alarmOccurredLogPath);
        LogCreater _alarmChangedLog = new LogCreater("AlarmChanged", s_alarmChangedLogPath);
        LogCreater _tmcSequenceLog = new LogCreater("TmcSequence", s_tmcSequenceLogPath);
        LogCreater _pmcSequenceLog = new LogCreater("PmcSequence", s_pmcSequenceLogPath);
        LogCreater _buttonLog = new LogCreater("Button", s_buttonLogPath);
        LogCreater _energyDropCheckLog = new LogCreater("EnergyDropCheck", s_energyDropCheckLogPath);
        LogCreater _attenuatorCalLog = new LogCreater("AttenuatorCal", s_attenuatorCalLogPath);
        LogCreater _porecessLog = new LogCreater("Process", s_processLogPath);
        LogCreater _preAlignLog = new LogCreater("PreAlign", s_preAlignLogPath);
        LogCreater _energyMeterLog = new LogCreater("EnergyMeter", s_energyMeterLogPath);
        LogCreater _energyMeasureLog = new LogCreater("EnergyMeasure", s_energyMeasureLogPath);
        private EquipmentLogManager()
        {
        }
        public event AddProcessLogEvent ProcessLogAdded;
        public static readonly string s_exceptionLogPath = $@"D:\Log\Exception\";
        public static readonly string s_alarmOccurredLogPath = $@"D:\Log\AlarmOccurred\";
        public static readonly string s_alarmChangedLogPath = $@"D:\Log\AlarmChanged\";
        public static readonly string s_tmcSequenceLogPath = $@"D:\Log\TmcSequence\";
        public static readonly string s_pmcSequenceLogPath = $@"D:\Log\PmcSequence\";
        public static readonly string s_buttonLogPath = $@"D:\Log\Button\";
        public static readonly string s_energyDropCheckLogPath = $@"D:\Log\EnergyDropCheck\";
        public static readonly string s_attenuatorCalLogPath = $@"D:\Log\AttenuatorCal\";
        public static readonly string s_processLogPath = $@"D:\Log\Process\";
        public static readonly string s_preAlignLogPath = $@"D:\Log\PreAlign\";
        public static readonly string s_energyMeterLogPath = $@"D:\Log\EnergyMeter\";
        public static readonly string s_energyMeasureLogPath = $@"D:\Log\EnergyMeasure\";
        public void WriteExceptionLog(string message)
        {
            _exceptionLog.WriteLog(message);
        }
        public void WriteAlarmOccurredLog(string message)
        {
            _alarmOccurredLog.WriteLog(message);
        }
        public void WriteAlarmChangedLog(string message)
        {
            _alarmChangedLog.WriteLog(message);
        }
        public void WriteTmcSequenceLog(string message)
        {
            _tmcSequenceLog.WriteLog(message);
        }
        public void WritePmcSequenceLog(string message)
        {
            _pmcSequenceLog.WriteLog(message);
        }
        public void WriteButtonLog(string message)
        {
            _buttonLog.WriteLog(message);
        }
        public void WriteEnergyDropCheckLog(string message)
        {
            _energyDropCheckLog.WriteLog(message);
        }
        public void WriteAttenuatorCalLog(string message)
        {
            _attenuatorCalLog.WriteLog(message);
        }
        public void WriteProcessLog(string message)
        {
            _porecessLog.WriteLog(message);
            ProcessLogAdded?.Invoke(message);
        }
        public void WritePreAlignLog(string message)
        {
            _preAlignLog.WriteLog(message);
        }
        public void WriteEnergyMeterLog(string message)
        {
            _energyMeterLog.WriteLog(message);
        }
        public void WriteEnergyMeasureLog(string message)
        {
            _energyMeasureLog.WriteLog(message);
        }
    }
}
SA_LTT_UI/SA_LTT/Log/LogCreater.cs
»õ ÆÄÀÏ
@@ -0,0 +1,64 @@
using System.Text;
using log4net;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;
namespace SA_LTT
{
    public class LogCreater
    {
        private string _logName;
        private string _logPath;
        private ILog _log = LogManager.GetLogger("Button");
        public LogCreater(string logName, string logPath = @"D:\Log\")
        {
            _logName = logName;
            _logPath = logPath;
            _log = LogManager.GetLogger($"{_logName}");
            CreateLogger();
        }
        private void CreateLogger()
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
            RollingFileAppender rollingAppender = new RollingFileAppender();
            PatternLayout layout = new PatternLayout();
            hierarchy.Configured = true;
            rollingAppender.Name = $"{_logName}_RoolingFile";
            rollingAppender.LockingModel = new RollingFileAppender.MinimalLock();
            rollingAppender.File = $@"{_logPath}\";
            rollingAppender.AppendToFile = true;
            rollingAppender.DatePattern = $"yyyy\\\\MM\\\\'{_logName}'_dd'.log'";
            rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite;
            rollingAppender.MaxSizeRollBackups = 10;
            rollingAppender.MaximumFileSize = "100MB";
            rollingAppender.StaticLogFileName = false;
            rollingAppender.Encoding = Encoding.UTF8;
            rollingAppender.PreserveLogFileNameExtension = true;
            layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff}, %m%n");
            layout.ActivateOptions();
            rollingAppender.Layout = layout;
            rollingAppender.ActivateOptions();
            hierarchy.GetLogger($"{_logName}");
            ILog log = LogManager.GetLogger($"{_logName}");
            Logger l = (Logger)log.Logger;
            l.Level = log4net.Core.Level.Debug;
            l.AddAppender(rollingAppender);
            _log = LogManager.GetLogger($"{_logName}");
        }
        public void WriteLog(string message)
        {
            _log.Debug(message);
        }
    }
}
SA_LTT_UI/SA_LTT/MessageBox.Designer.cs
»õ ÆÄÀÏ
@@ -0,0 +1,76 @@
namespace SA_LTT
{
    partial class MessageBoxPad
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.btn_Close = new System.Windows.Forms.Button();
            this.tb_Message = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            //
            // btn_Close
            //
            this.btn_Close.Location = new System.Drawing.Point(198, 192);
            this.btn_Close.Name = "btn_Close";
            this.btn_Close.Size = new System.Drawing.Size(187, 41);
            this.btn_Close.TabIndex = 3;
            this.btn_Close.Text = "Close";
            this.btn_Close.UseVisualStyleBackColor = true;
            this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
            //
            // tb_Message
            //
            this.tb_Message.Font = new System.Drawing.Font("Gulim", 15F);
            this.tb_Message.Location = new System.Drawing.Point(12, 12);
            this.tb_Message.Multiline = true;
            this.tb_Message.Name = "tb_Message";
            this.tb_Message.ReadOnly = true;
            this.tb_Message.Size = new System.Drawing.Size(588, 152);
            this.tb_Message.TabIndex = 2;
            this.tb_Message.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            //
            // MessageBoxPad
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(612, 245);
            this.Controls.Add(this.btn_Close);
            this.Controls.Add(this.tb_Message);
            this.Name = "MessageBoxPad";
            this.Text = "MessageBox";
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MessageBoxPad_FormClosing);
            this.ResumeLayout(false);
            this.PerformLayout();
        }
        #endregion
        private System.Windows.Forms.Button btn_Close;
        private System.Windows.Forms.TextBox tb_Message;
    }
}
SA_LTT_UI/SA_LTT/MessageBox.cs
»õ ÆÄÀÏ
@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SA_LTT
{
    public partial class MessageBoxPad : Form
    {
        public MessageBoxPad(string message = "")
        {
            InitializeComponent();
            tb_Message.Text = message;
        }
        private void btn_Close_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        public void SetMessage(string message)
        {
            tb_Message.Text = message;
        }
        private void MessageBoxPad_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
        }
    }
}
SA_LTT_UI/SA_LTT/MessageBox.resx
»õ ÆÄÀÏ
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
SA_LTT_UI/SA_LTT/Module/Attenuator.cs
»õ ÆÄÀÏ
@@ -0,0 +1,472 @@
using SA_LTT.Base;
using System;
using System.Threading;
namespace SA_LTT.Module
{
    public class Attenuator : ComPort
    {
        public enum MotorRunState
        {
            Stopped,
            Accelerating,
            Decelerating,
            Running,
        }
        public enum MicroSteppingResolution : int
        {
            /// <summary>
            /// 1 Motor is driven in full steps mode.Waveplate holder turns once in 15600 steps.
            /// </summary>
            FullStep = 1,
            /// <summary>
            /// 2 Half step mode.Waveplate holder turns once in 31200 steps.
            /// </summary>
            HalfStep = 2 ,
            /// <summary>
            /// 4 Quarter step mode.Waveplate holder turns once in 62400 steps.
            /// </summary>
            QuaterStep = 4,
            /// <summary>
            /// 8 Eight step mode.Waveplate holder turns once in 124800 steps.
            /// </summary>
            EightStep = 8,
            /// <summary>
            /// 16 Sixteen step mode.Waveplate holder turns once in 249600 steps.
            /// </summary>
            SixteenStep = 16,
        }
        private MotorRunState _motorState;
        private int _position;
        private int _speed;
        private int _accelerationValue;
        private int _decelerationValue;
        private MicroSteppingResolution _steppingResolution;
        private bool _motorEnable;
        private Equipment _equipment;
        private Thread t_statusUpdate;
        public double DegreePerSecondFromSpeed
        {
            get
            {
                return 14400000 / (78 * (int)SteppingResolution * (65535 - Speed));
            }
        }
        public int Position
        {
            get
            {
                return _position;
            }
            private set
            {
                _position = value;
            }
        }
        public double Degree
        {
            get
            {
                return Math.Round(Position * GetDegreefromSteppingResolution(), 3);
            }
        }
        public int Speed
        {
            get
            {
                return _speed;
            }
            private set
            {
                _speed = value;
            }
        }
        public int AccelerationValue
        {
            get
            {
                return _accelerationValue;
            }
            private set
            {
                _accelerationValue = value;
            }
        }
        public int DecelerationValue
        {
            get
            {
                return _decelerationValue;
            }
            private set
            {
                _decelerationValue = value;
            }
        }
        public MicroSteppingResolution SteppingResolution
        {
            get
            {
                return _steppingResolution;
            }
            private set
            {
                _steppingResolution = value;
            }
        }
        public bool MotorEnable
        {
            get
            {
                return _motorEnable;
            }
            private set
            {
                _motorEnable = value;
            }
        }
        public MotorRunState MotorState
        {
            get
            {
                return _motorState;
            }
            private set
            {
                _motorState = value;
            }
        }
        public Attenuator(Equipment equipment)
        {
            serialPort.PortName = "COM11";
            serialPort.BaudRate = 38400;
            serialPort.Parity = System.IO.Ports.Parity.None;
            serialPort.DataBits = 8;
            serialPort.StopBits = System.IO.Ports.StopBits.One;
            serialPort.ReadTimeout = 500;
            ReceiveWaitSeconds = 0.5;
            Terminator = "\n\r";
            _steppingResolution = MicroSteppingResolution.FullStep;
            _equipment = equipment;
            t_statusUpdate = new Thread(statusUpdate);
            t_statusUpdate.Start();
        }
        public void statusUpdate()
        {
            while (_equipment.IsDisposed == false)
            {
                try
                {
                    Thread.Sleep(50);
                    if (IsOpen)
                    {
                        ReadSettings();
                        ReadStatus();
                    }
                    else
                    {
                        if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0053_ATTENUATOR_DISCONNECTED))
                        {
                        }
                        else
                        {
                            if (Open() == false)
                            {
                                _equipment.alarmManager.Occur(AlarmCode.AL_0053_ATTENUATOR_DISCONNECTED);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        public void Home()
        {
            Write("zp");
        }
        public void Stop()
        {
            Write("st");
        }
        public void MoveAbsolute(float angle)
        {
            int position = (int)(angle / GetDegreefromSteppingResolution());
            Write($"g {position}");
        }
        public void MoveAbsolute(int position)
        {
            Write($"g {position}");
        }
        public void MoveRelative(double angle)
        {
            int position = (int)(angle / GetDegreefromSteppingResolution());
            Write($"m {position}");
        }
        public void MoveRelative(int position)
        {
            Write($"m {position}");
        }
        public void JogPositive()
        {
            Write($"m 2147483646");
        }
        public void JogNegative()
        {
            Write($"m -2147483646");
        }
        public bool IsAttenuatorAngleCorrect(float angle)
        {
            if (Position == (int)(angle / GetDegreefromSteppingResolution()))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public void SetMicroSteppingResolution(MicroSteppingResolution steppingResolution)
        {
            if (steppingResolution == MicroSteppingResolution.SixteenStep)
            {
                Write($"r 6");
            }
            else
            {
                Write($"r {(int)steppingResolution}");
            }
        }
        public double GetDegreefromSteppingResolution()
        {
            double degree = 360.0 / (78 * (int)SteppingResolution * 200);
            return degree;
        }
        public double GetDegreePerSecondFromSpeed(int speed)
        {
            double degreePerSecond = 14400000 / (78 * (int)SteppingResolution * (65535 - speed));
            return degreePerSecond;
        }
        public int GetSpeedFromDegreePerSecond(double degreePerSecond)
        {
            int speed = (int)Math.Ceiling(65535 - 14400000 / (degreePerSecond * 78 * (int)SteppingResolution));
            return speed;
        }
        /// <summary>
        /// 0 is turn off.
        /// </summary>
        /// <param name="acceleration"></param>
        public void SetAcceleration(int acceleration)
        {
            if(acceleration > 255)
            {
                acceleration = 255;
            }
            else if (acceleration < 0)
            {
                acceleration = 0;
            }
            Write($"a {acceleration}");
        }
        /// <summary>
        /// 0 is turn off
        /// </summary>
        /// <param name="deceleration"></param>
        public void SetDeceleration(int deceleration)
        {
            if (deceleration > 255)
            {
                deceleration = 255;
            }
            else if (deceleration < 0)
            {
                deceleration = 0;
            }
            Write($"d {deceleration}");
        }
        public void SetSpeed(int speed)
        {
            if (speed > 65000)
            {
                speed = 65000;
            }
            else if (speed < 1)
            {
                speed = 1;
            }
            Write($"s {speed}");
        }
        public void SaveSetting()
        {
            Write("ss");
        }
        public void ReadStatus()
        {
            string receivedData;
            if (WriteRead("o", out receivedData))
            {
                string[] status = receivedData.Split(';');
                if (status.Length < 2) return;
                MotorState = (MotorRunState)Enum.Parse(typeof(MotorRunState), status[0]);
                int position;
                int.TryParse(status[1], out position);
                this.Position = position;
            }
            else
            {
            }
        }
        public void ReadSettings()
        {
            try
            {
                string receivedData;
                if (WriteRead("pc", out receivedData))
                {
                    string[] settings = receivedData.Split(';');
                    if (settings.Length < 25) return;
                    bool operatingMode = settings[0] == "1" ? true : false;
                    MotorState = (MotorRunState)Enum.Parse(typeof(MotorRunState), settings[1]);
                    AccelerationValue = int.Parse(settings[2]);
                    DecelerationValue = int.Parse(settings[3]);
                    Speed = int.Parse(settings[4]);
                    int motionCurrentValue = int.Parse(settings[5]);
                    int idleCurrentValue = int.Parse(settings[6]);
                    int stepDirCurrentvalue = int.Parse(settings[7]);
                    if (settings[8] == "6")
                    {
                        SteppingResolution = MicroSteppingResolution.SixteenStep;
                    }
                    else
                    {
                        SteppingResolution = (MicroSteppingResolution)Enum.Parse(typeof(MicroSteppingResolution), settings[8]);
                    }
                    MotorEnable = settings[9] == "1" ? true : false;
                    // settings[11] í•„ìš” ì—†ì„듯.
                    // settings[12] í•„ìš” ì—†ì„듯. Zero position ì˜¬ ë•Œë§ˆë‹¤ zp:[integerValue] ë¦¬í„´í•´ ì£¼ëŠ”ê±°. êµ³ì´ ..?
                    // settings[13] Reserved
                    // settings[14] Reserved
                    // settings[15] Reserved
                    // settings[16] í•„ìš” ì—†ì„듯.
                    // settings[21] Reserved
                    // settings[22] Reserved
                    // settings[23] Reserved
                }
            }
            catch(Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
            }
        }
        public new bool Write(string command)
        {
            lock (this)
            {
                //base.Write(command + '\r');
                //return true;
                Terminator = null;
                string data = base.WriteRead(command + '\r');
                if (data.StartsWith(command.Split(' ')[0]))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
        public bool WriteRead(string command, out string receivedData)
        {
            lock (this)
            {
                Terminator = "\n\r";
                string data = base.WriteRead(command + '\r');
                if (data.StartsWith(command.Split(' ')[0]))
                {
                    receivedData = data.Remove(0, command.Split(' ')[0].Length).Replace("\n\r", "");
                    return true;
                }
                else
                {
                    receivedData = string.Empty;
                    return false;
                }
            }
        }
    }
}
SA_LTT_UI/SA_LTT/Module/Chamber.cs
»õ ÆÄÀÏ
@@ -0,0 +1,425 @@
using SA_LTT.Info.WaferInfo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SA_LTT.Module
{
    public class Chamber
    {
        private Equipment _equipment;
        public bool IsGateOpen
        {
            get
            {
                return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_OPEN];
            }
        }
        public bool IsGateClose
        {
            get
            {
                return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_GATE_CLOSE];
            }
        }
        public bool IsGateOpenValve
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE];
            }
        }
        public bool IsGateCloseValve
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE];
            }
        }
        public bool IsLiftPinUp
        {
            get
            {
                return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_UP_CYLINDER];
            }
        }
        public bool IsLiftPinDown
        {
            get
            {
                return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.WAFER_DOWN_CYLINDER];
            }
        }
        public bool IsChuckVacuumOn
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.VAC_CHUCK_ON];
            }
        }
        public bool IsChuckVacuumSensorOn
        {
            get
            {
                return _equipment.crevis.DigitalInputs[Crevis.DigitalInput.CMB_VACUUM_PRESSURE];
            }
        }
        public bool IsN2ChamberValveOn
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL];
            }
        }
        public bool IsInposition
        {
            get
            {
                bool isInposition = true;
                isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.Y_Axis, AxisStatus.InPos);
                isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.X_Axis, AxisStatus.InPos);
                isInposition &= _equipment.powerPmac.GetAxisStatus(PmacAxis.T_Axis, AxisStatus.InPos);
                return isInposition;
            }
        }
        public bool IsN2MFCValveOn
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL];
            }
        }
        public bool IsByPassValveOn
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.CMB_BYPASS_ON_SOL];
            }
        }
        public bool IsAirBlowOn
        {
            get
            {
                return _equipment.crevis.DigitalOutputs[Crevis.DigitalOutput.AIR_BLOW_ON];
            }
        }
        public double MFCFlow
        {
            get
            {
                return _equipment.crevis.AnalogInputs[Crevis.AnalogInput.MFC_FLOW_OUT];
            }
        }
        public double MFCSetPoint
        {
            get
            {
                return _equipment.crevis.AnalogOutputs[Crevis.AnalogOutput.MFC_SET_POINT];
            }
        }
        public float MainCDAPressure
        {
            get
            {
                return _equipment.gr200.MainCDAPressure;
            }
        }
        public float MainVacuumPressure
        {
            get
            {
                return _equipment.gr200.MainVacuumPressure;
            }
        }
        public float N2PTPressure
        {
            get
            {
                return _equipment.gr200.N2PTPressure;
            }
        }
        public float MainCDAFlow
        {
            get
            {
                return _equipment.gr200.MainCDAFlow;
            }
        }
        public float ChamberVacuumPressure
        {
            get
            {
                return _equipment.gr200.ChamberVacuumPressure;
            }
        }
        public bool IsLoadPosition
        {
            get
            {
                return _equipment.powerPmac.IsLoadPosition();
            }
        }
        public bool IsCenterPosition
        {
            get
            {
                return _equipment.powerPmac.IsCenterPosition();
            }
        }
        public bool IsPowerMeterPosition
        {
            get
            {
                return _equipment.powerPmac.IsPowerMeterPosition();
            }
        }
        public bool IsAlignPosition
        {
            get
            {
                return _equipment.powerPmac.IsAlignPosition();
            }
        }
        public bool IsBeamProfilePosition
        {
            get
            {
                return _equipment.powerPmac.IsBeamProfilePosition();
            }
        }
        public WaferInfo WaferInfo
        {
            get
            {
                return _equipment.waferInfoManager.GetWaferInfo(WaferInfoManager.WaferNumbers.Chamber);
            }
        }
        public Chamber(Equipment equipment)
        {
            _equipment = equipment;
        }
        public void GateOpen()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE, false);
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE, true);
        }
        public void GateClose()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_OPEN_VALVE, false);
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_GATE_CLOSE_VALVE, true);
        }
        public void LiftPinUp()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_DOWN_SOL, false);
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_UP_SOL, true);
        }
        public void LiftPinDown()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_UP_SOL, false);
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.WAFER_DOWN_SOL, true);
        }
        public void ChuckVacuumOn()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.VAC_CHUCK_ON, true);
        }
        public void ChuckVacuumOff()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.VAC_CHUCK_ON, false);
        }
        public void SetMFCFlow(double flow)
        {
            _equipment.crevis.WriteAnalog(Crevis.AnalogOutput.MFC_SET_POINT, flow);
        }
        public void N2ChamberValveOn()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, true);
        }
        public void N2ChamberValveOff()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_CHAMBER_VALVE_ON_SOL, false);
        }
        public void N2MFCValveOn()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, true);
        }
        public void N2MFCValveOff()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.N2_MFC_VALVE_ON_SOL, false);
        }
        public void ByPassValveOn()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, true);
        }
        public void ByPassValveOff()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.CMB_BYPASS_ON_SOL, false);
        }
        public void AirBlowOn()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.AIR_BLOW_ON, true);
        }
        public void AirBlowOff()
        {
            _equipment.crevis.WriteOutput(Crevis.DigitalOutput.AIR_BLOW_ON, false);
        }
        public bool MoveLoadPosition()
        {
            double loadPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Position;
            double loadPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Position;
            double loadPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Position;
            double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Speed;
            double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Speed;
            double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Speed;
            double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.LoadPosX].Accel;
            double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.LoadPosY].Accel;
            double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.LoadPosT].Accel;
            bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, loadPositionX, speedX, accX);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, loadPositionY, speedY, accY);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, loadPositionT, speedT, accT);
            return result;
        }
        public bool MoveCenterPosition()
        {
            double loadPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Position;
            double loadPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Position;
            double loadPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Position;
            double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Speed;
            double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Speed;
            double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Speed;
            double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.CenterPosX].Accel;
            double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.CenterPosY].Accel;
            double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.CenterPosT].Accel;
            bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, loadPositionX, speedX, accX);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, loadPositionY, speedY, accY);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, loadPositionT, speedT, accT);
            return result;
        }
        public bool MovePowerMeterPosition()
        {
            double powerMeterPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Position;
            double powerMeterPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Position;
            double powerMeterPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Position;
            double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Speed;
            double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Speed;
            double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Speed;
            double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.PowerMeterX].Accel;
            double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.PowerMeterY].Accel;
            double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.PowerMeterT].Accel;
            bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, powerMeterPositionX, speedX, accX);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, powerMeterPositionY, speedY, accY);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, powerMeterPositionT, speedT, accT);
            return result;
        }
        public bool MoveAlignPosition()
        {
            double AlignPositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Position;
            double AlignPositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Position;
            double AlignPositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Position;
            double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Speed;
            double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Speed;
            double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Speed;
            double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.AlignX].Accel;
            double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.AlignY].Accel;
            double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.AlignT].Accel;
            bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, AlignPositionX, speedX, accX);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, AlignPositionY, speedY, accY);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, AlignPositionT, speedT, accT);
            return result;
        }
        public bool MoveBeamProfilePosition()
        {
            double beamProfilePositionX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Position;
            double beamProfilePositionY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Position;
            double beamProfilePositionT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Position;
            double speedX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Speed;
            double speedY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Speed;
            double speedT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Speed;
            double accX = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.X_Axis].TeachList[(int)EnTeachData.BeamProfileX].Accel;
            double accY = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.Y_Axis].TeachList[(int)EnTeachData.BeamProfileY].Accel;
            double accT = _equipment.powerPmac.m_AxisAllList[(int)PmacAxis.T_Axis].TeachList[(int)EnTeachData.BeamProfileT].Accel;
            bool result = _equipment.powerPmac.MoveAbs(PmacAxis.X_Axis, beamProfilePositionX, speedX, accX);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.Y_Axis, beamProfilePositionY, speedY, accY);
            result &= _equipment.powerPmac.MoveAbs(PmacAxis.T_Axis, beamProfilePositionT, speedT, accT);
            return result;
        }
        public bool AllStop()
        {
            bool result = _equipment.powerPmac.MoveStop(PmacAxis.X_Axis);
            result &= _equipment.powerPmac.MoveStop(PmacAxis.Y_Axis);
            result &= _equipment.powerPmac.MoveStop(PmacAxis.T_Axis);
            return result;
        }
    }
}
SA_LTT_UI/SA_LTT/Module/Chiller.cs
»õ ÆÄÀÏ
@@ -0,0 +1,1784 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SA_LTT.Module
{
    public class Chiller : ComPort
    {
        public struct StatusFlag1
        {
            private bool[] _datas;
            private bool _runFlag;
            private bool _operationStopAlarmFlag;
            private bool _operationContinuedAlarmFlag;
            private bool _reserve3;
            private bool _pressUnitFlag;
            private bool _remoteStatusFlag;
            private bool _reserve6;
            private bool _reserve7;
            private bool _reserve8;
            private bool _completionOfPreparationFlag;
            private bool _temperatureUnitFlag;
            private bool _runTimerFlag;
            private bool _stopTimerFlag;
            private bool _resetAfterPowerFailureFlag;
            private bool _antiFreezingFlag;
            private bool _automaticFluidFillingFlag;
            public bool[] Datas
            {
                get
                {
                    if (_datas == null)
                    {
                        _datas = new bool[16];
                    }
                    return _datas;
                }
                private set
                {
                    _datas = value;
                }
            }
            public bool RunFlag
            {
                get
                {
                    return _runFlag;
                }
                private set
                {
                    _runFlag = value;
                }
            }
            public bool OperationStopAlarmFlag
            {
                get
                {
                    return _operationStopAlarmFlag;
                }
                private set
                {
                    _operationStopAlarmFlag = value;
                }
            }
            public bool OperationContinuedAlarmFlag
            {
                get
                {
                    return _operationContinuedAlarmFlag;
                }
                private set
                {
                    _operationContinuedAlarmFlag = value;
                }
            }
            public bool Reserve3
            {
                get
                {
                    return _reserve3;
                }
                private set
                {
                    _reserve3 = value;
                }
            }
            public bool PressUnitFlag
            {
                get
                {
                    return _pressUnitFlag;
                }
                private set
                {
                    _pressUnitFlag = value;
                }
            }
            public bool RemoteStatusFlag
            {
                get
                {
                    return _remoteStatusFlag;
                }
                private set
                {
                    _remoteStatusFlag = value;
                }
            }
            public bool Reserve6
            {
                get
                {
                    return _reserve6;
                }
                private set
                {
                    _reserve6 = value;
                }
            }
            public bool Reserve7
            {
                get
                {
                    return _reserve7;
                }
                private set
                {
                    _reserve7 = value;
                }
            }
            public bool Reserve8
            {
                get
                {
                    return _reserve8;
                }
                private set
                {
                    _reserve8 = value;
                }
            }
            public bool CompletionOfPreparationFlag
            {
                get
                {
                    return _completionOfPreparationFlag;
                }
                private set
                {
                    _completionOfPreparationFlag = value;
                }
            }
            public bool TemperatureUnitFlag
            {
                get
                {
                    return _temperatureUnitFlag;
                }
                private set
                {
                    _temperatureUnitFlag = value;
                }
            }
            public bool RunTimerFlag
            {
                get
                {
                    return _runTimerFlag;
                }
                private set
                {
                    _runTimerFlag = value;
                }
            }
            public bool StopTimerFlag
            {
                get
                {
                    return _stopTimerFlag;
                }
                private set
                {
                    _stopTimerFlag = value;
                }
            }
            public bool ResetAfterPowerFailureFlag
            {
                get
                {
                    return _resetAfterPowerFailureFlag;
                }
                private set
                {
                    _resetAfterPowerFailureFlag = value;
                }
            }
            public bool AntiFreezingFlag
            {
                get
                {
                    return _antiFreezingFlag;
                }
                private set
                {
                    _antiFreezingFlag = value;
                }
            }
            public bool AutomaticFluidFillingFlag
            {
                get
                {
                    return _automaticFluidFillingFlag;
                }
                private set
                {
                    _automaticFluidFillingFlag = value;
                }
            }
            public void SetData(byte[] bytes)
            {
                var bit = new BitArray(bytes);
                if (bit.Length < 16) return;
                for (int i = 0; i < 16; i++)
                {
                    Datas[i] = bit[i];
                }
                RunFlag = bit[0];
                OperationStopAlarmFlag = bit[1];
                OperationContinuedAlarmFlag = bit[2];
                Reserve3 = bit[3];
                PressUnitFlag = bit[4];
                RemoteStatusFlag = bit[5];
                Reserve6 = bit[6];
                Reserve7 = bit[7];
                Reserve8 = bit[8];
                CompletionOfPreparationFlag = bit[9];
                TemperatureUnitFlag = bit[10];
                RunTimerFlag = bit[11];
                StopTimerFlag = bit[12];
                ResetAfterPowerFailureFlag = bit[13];
                AntiFreezingFlag = bit[14];
                AutomaticFluidFillingFlag = bit[15];
            }
        }
        public struct AlarmFlag1
        {
            private bool[] _datas;
            private bool _lowLevelInTank;
            private bool _highCirculatingFluidDischargeTemp;
            private bool _circulatingFluidDischargeTempRise;
            private bool _circulatingFluidDischargeTempDrop;
            private bool _highCirculatingFluidReturnTemp;
            private bool _highCirculatingFluidDischargePressure;
            private bool _abnormalPumpOperation;
            private bool _circulatingFluidDischargePressureRise;
            private bool _circulatingFluidDischargePressureDrop;
            private bool _highCompressorIntakeTemp;
            private bool _lowCompressorIntakeTemp;
            private bool _lowSuperHeatTemperature;
            private bool _highCompressorDischargePressure;
            private bool _reserve13;
            private bool _refrigerantCircuitHighPressureDrop;
            private bool _refrigerantCircuitLowPressureRise;
            public bool[] Datas
            {
                get
                {
                    if (_datas == null)
                    {
                        _datas = new bool[16];
                    }
                    return _datas;
                }
                private set
                {
                    _datas = value;
                }
            }
            public bool LowLevelInTank
            {
                get
                {
                    return _lowLevelInTank;
                }
                private set
                {
                    _lowLevelInTank = value;
                }
            }
            public bool HighCirculatingFluidDischargeTemp
            {
                get
                {
                    return _highCirculatingFluidDischargeTemp;
                }
                private set
                {
                    _highCirculatingFluidDischargeTemp = value;
                }
            }
            public bool CirculatingFluidDischargeTempRise
            {
                get
                {
                    return _circulatingFluidDischargeTempRise;
                }
                private set
                {
                    _circulatingFluidDischargeTempRise = value;
                }
            }
            public bool CirculatingFluidDischargeTempDrop
            {
                get
                {
                    return _circulatingFluidDischargeTempDrop;
                }
                private set
                {
                    _circulatingFluidDischargeTempDrop = value;
                }
            }
            public bool HighCirculatingFluidReturnTemp
            {
                get
                {
                    return _highCirculatingFluidReturnTemp;
                }
                private set
                {
                    _highCirculatingFluidReturnTemp = value;
                }
            }
            public bool HighCirculatingFluidDischargePressure
            {
                get
                {
                    return _highCirculatingFluidDischargePressure;
                }
                private set
                {
                    _highCirculatingFluidDischargePressure = value;
                }
            }
            public bool AbnormalPumpOperation
            {
                get
                {
                    return _abnormalPumpOperation;
                }
                private set
                {
                    _abnormalPumpOperation = value;
                }
            }
            public bool CirculatingFluidDischargePressureRise
            {
                get
                {
                    return _circulatingFluidDischargePressureRise;
                }
                private set
                {
                    _circulatingFluidDischargePressureRise = value;
                }
            }
            public bool CirculatingFluidDischargePressureDrop
            {
                get
                {
                    return _circulatingFluidDischargePressureDrop;
                }
                private set
                {
                    _circulatingFluidDischargePressureDrop = value;
                }
            }
            public bool HighCompressorIntakeTemp
            {
                get
                {
                    return _highCompressorIntakeTemp;
                }
                private set
                {
                    _highCompressorIntakeTemp = value;
                }
            }
            public bool LowCompressorIntakeTemp
            {
                get
                {
                    return _lowCompressorIntakeTemp;
                }
                private set
                {
                    _lowCompressorIntakeTemp = value;
                }
            }
            public bool LowSuperHeatTemperature
            {
                get
                {
                    return _lowSuperHeatTemperature;
                }
                private set
                {
                    _lowSuperHeatTemperature = value;
                }
            }
            public bool HighCompressorDischargePressure
            {
                get
                {
                    return _highCompressorDischargePressure;
                }
                private set
                {
                    _highCompressorDischargePressure = value;
                }
            }
            public bool Reserve13
            {
                get
                {
                    return _reserve13;
                }
                private set
                {
                    _reserve13 = value;
                }
            }
            public bool RefrigerantCircuitHighPressureDrop
            {
                get
                {
                    return _refrigerantCircuitHighPressureDrop;
                }
                private set
                {
                    _refrigerantCircuitHighPressureDrop = value;
                }
            }
            public bool RefrigerantCircuitLowPressureRise
            {
                get
                {
                    return _refrigerantCircuitLowPressureRise;
                }
                private set
                {
                    _refrigerantCircuitLowPressureRise = value;
                }
            }
            public void SetData(byte[] bytes)
            {
                if (_datas == null)
                {
                    _datas = new bool[16];
                }
                var bit = new BitArray(bytes);
                if (bit.Length < 16) return;
                for (int i = 0; i < 16; i++)
                {
                    _datas[i] = bit[i];
                }
                LowLevelInTank = bit[0];
                HighCirculatingFluidDischargeTemp = bit[1];
                CirculatingFluidDischargeTempRise = bit[2];
                CirculatingFluidDischargeTempDrop = bit[3];
                HighCirculatingFluidReturnTemp = bit[4];
                HighCirculatingFluidDischargePressure = bit[5];
                AbnormalPumpOperation = bit[6];
                CirculatingFluidDischargePressureRise = bit[7];
                CirculatingFluidDischargePressureDrop = bit[8];
                HighCompressorIntakeTemp = bit[9];
                LowCompressorIntakeTemp = bit[10];
                LowSuperHeatTemperature = bit[11];
                HighCompressorDischargePressure = bit[12];
                Reserve13 = bit[13];
                RefrigerantCircuitHighPressureDrop = bit[14];
                RefrigerantCircuitLowPressureRise = bit[15];
            }
        }
        public struct AlarmFlag2
        {
            private bool[] _datas;
            private bool _refrigerantCircuitLowPressureDrop;
            private bool _compressorOverload;
            private bool _communicationError;
            private bool _memoryError;
            private bool _dcLineFuseCut;
            private bool _circulatingFluidDischargeTempSensorFailure;
            private bool _circulatingFluidReturnTempSensorFailure;
            private bool _compressorIntankTempSensorFailure;
            private bool _circulatingFluidDischargePressureSensorFailure;
            private bool _compressorDischargePressureSensorFailure;
            private bool _compressorIntankPressureSensorFailure;
            private bool _maintenanceOfPump;
            private bool _maintenanceOfFanMotor;
            private bool _maintenanceOfCompressor;
            private bool _contactInput1SignalDetectionAlarm;
            private bool _contactInput2SignalDetectionAlarm;
            public bool[] Datas
            {
                get
                {
                    if (_datas == null)
                    {
                        _datas = new bool[16];
                    }
                    return _datas;
                }
                private set
                {
                    _datas = value;
                }
            }
            public bool RefrigerantCircuitLowPressureDrop
            {
                get
                {
                    return _refrigerantCircuitLowPressureDrop;
                }
                private set
                {
                    _refrigerantCircuitLowPressureDrop = value;
                }
            }
            public bool CompressorOverload
            {
                get
                {
                    return _compressorOverload;
                }
                private set
                {
                    _compressorOverload = value;
                }
            }
            public bool CommunicationError
            {
                get
                {
                    return _communicationError;
                }
                private set
                {
                    _communicationError = value;
                }
            }
            public bool MemoryError
            {
                get
                {
                    return _memoryError;
                }
                private set
                {
                    _memoryError = value;
                }
            }
            public bool DcLineFuseCut
            {
                get
                {
                    return _dcLineFuseCut;
                }
                private set
                {
                    _dcLineFuseCut = value;
                }
            }
            public bool CirculatingFluidDischargeTempSensorFailure
            {
                get
                {
                    return _circulatingFluidDischargeTempSensorFailure;
                }
                private set
                {
                    _circulatingFluidDischargeTempSensorFailure = value;
                }
            }
            public bool CirculatingFluidReturnTempSensorFailure
            {
                get
                {
                    return _circulatingFluidReturnTempSensorFailure;
                }
                private set
                {
                    _circulatingFluidReturnTempSensorFailure = value;
                }
            }
            public bool CompressorIntankTempSensorFailure
            {
                get
                {
                    return _compressorIntankTempSensorFailure;
                }
                private set
                {
                    _compressorIntankTempSensorFailure = value;
                }
            }
            public bool CirculatingFluidDischargePressureSensorFailure
            {
                get
                {
                    return _circulatingFluidDischargePressureSensorFailure;
                }
                private set
                {
                    _circulatingFluidDischargePressureSensorFailure = value;
                }
            }
            public bool CompressorDischargePressureSensorFailure
            {
                get
                {
                    return _compressorDischargePressureSensorFailure;
                }
                private set
                {
                    _compressorDischargePressureSensorFailure = value;
                }
            }
            public bool CompressorIntankPressureSensorFailure
            {
                get
                {
                    return _compressorIntankPressureSensorFailure;
                }
                private set
                {
                    _compressorIntankPressureSensorFailure = value;
                }
            }
            public bool MaintenanceOfPump
            {
                get
                {
                    return _maintenanceOfPump;
                }
                private set
                {
                    _maintenanceOfPump = value;
                }
            }
            public bool MaintenanceOfFanMotor
            {
                get
                {
                    return _maintenanceOfFanMotor;
                }
                private set
                {
                    _maintenanceOfFanMotor = value;
                }
            }
            public bool MaintenanceOfCompressor
            {
                get
                {
                    return _maintenanceOfCompressor;
                }
                private set
                {
                    _maintenanceOfCompressor = value;
                }
            }
            public bool ContactInput1SignalDetectionAlarm
            {
                get
                {
                    return _contactInput1SignalDetectionAlarm;
                }
                private set
                {
                    _contactInput1SignalDetectionAlarm = value;
                }
            }
            public bool ContactInput2SignalDetectionAlarm
            {
                get
                {
                    return _contactInput2SignalDetectionAlarm;
                }
                private set
                {
                    _contactInput2SignalDetectionAlarm = value;
                }
            }
            public void SetData(byte[] bytes)
            {
                var bit = new BitArray(bytes);
                if (bit.Length < 16) return;
                for (int i = 0; i < 16; i++)
                {
                    Datas[i] = bit[i];
                }
                RefrigerantCircuitLowPressureDrop = bit[0];
                CompressorOverload = bit[1];
                CommunicationError = bit[2];
                MemoryError = bit[3];
                DcLineFuseCut = bit[4];
                CirculatingFluidDischargeTempSensorFailure = bit[5];
                CirculatingFluidReturnTempSensorFailure = bit[6];
                CompressorIntankTempSensorFailure = bit[7];
                CirculatingFluidDischargePressureSensorFailure = bit[8];
                CompressorDischargePressureSensorFailure = bit[9];
                CompressorIntankPressureSensorFailure = bit[10];
                MaintenanceOfPump = bit[11];
                MaintenanceOfFanMotor = bit[12];
                MaintenanceOfCompressor = bit[13];
                ContactInput1SignalDetectionAlarm = bit[14];
                ContactInput2SignalDetectionAlarm = bit[15];
            }
        }
        public struct AlarmFlag3
        {
            private bool[] _datas;
            private bool _waterLeakage;
            private bool _electricResistivityConductivityLevelRise;
            private bool _electricResistivityConductivityLevelDrop;
            private bool _electricResistivityConductivitySensorError;
            private bool _reserve4;
            private bool _reserve5;
            private bool _reserve6;
            private bool _reserve7;
            private bool _reserve8;
            private bool _reserve9;
            private bool _reserve10;
            private bool _reserve11;
            private bool _reserve12;
            private bool _reserve13;
            private bool _reserve14;
            private bool _reserve15;
            public bool[] Datas
            {
                get
                {
                    if (_datas == null)
                    {
                        _datas = new bool[16];
                    }
                    return _datas;
                }
                private set
                {
                    _datas = value;
                }
            }
            public bool WaterLeakage
            {
                get
                {
                    return _waterLeakage;
                }
                private set
                {
                    _waterLeakage = value;
                }
            }
            public bool ElectricResistivityConductivityLevelRise
            {
                get
                {
                    return _electricResistivityConductivityLevelRise;
                }
                private set
                {
                    _electricResistivityConductivityLevelRise = value;
                }
            }
            public bool ElectricResistivityConductivityLevelDrop
            {
                get
                {
                    return _electricResistivityConductivityLevelDrop;
                }
                private set
                {
                    _electricResistivityConductivityLevelDrop = value;
                }
            }
            public bool ElectricResistivityConductivitySensorError
            {
                get
                {
                    return _electricResistivityConductivitySensorError;
                }
                private set
                {
                    _electricResistivityConductivitySensorError = value;
                }
            }
            public bool Reserve4
            {
                get
                {
                    return _reserve4;
                }
                private set
                {
                    _reserve4 = value;
                }
            }
            public bool Reserve5
            {
                get
                {
                    return _reserve5;
                }
                private set
                {
                    _reserve5 = value;
                }
            }
            public bool Reserve6
            {
                get
                {
                    return _reserve6;
                }
                private set
                {
                    _reserve6 = value;
                }
            }
            public bool Reserve7
            {
                get
                {
                    return _reserve7;
                }
                private set
                {
                    _reserve7 = value;
                }
            }
            public bool Reserve8
            {
                get
                {
                    return _reserve8;
                }
                private set
                {
                    _reserve8 = value;
                }
            }
            public bool Reserve9
            {
                get
                {
                    return _reserve9;
                }
                private set
                {
                    _reserve9 = value;
                }
            }
            public bool Reserve10
            {
                get
                {
                    return _reserve10;
                }
                private set
                {
                    _reserve10 = value;
                }
            }
            public bool Reserve11
            {
                get
                {
                    return _reserve11;
                }
                private set
                {
                    _reserve11 = value;
                }
            }
            public bool Reserve12
            {
                get
                {
                    return _reserve12;
                }
                private set
                {
                    _reserve12 = value;
                }
            }
            public bool Reserve13
            {
                get
                {
                    return _reserve13;
                }
                private set
                {
                    _reserve13 = value;
                }
            }
            public bool Reserve14
            {
                get
                {
                    return _reserve14;
                }
                private set
                {
                    _reserve14 = value;
                }
            }
            public bool Reserve15
            {
                get
                {
                    return _reserve15;
                }
                private set
                {
                    _reserve15 = value;
                }
            }
            public void SetData(byte[] bytes)
            {
                var bit = new BitArray(bytes);
                if (bit.Length < 16) return;
                for (int i = 0; i < 16; i++)
                {
                    Datas[i] = bit[i];
                }
                WaterLeakage = bit[0];
                ElectricResistivityConductivityLevelRise = bit[1];
                ElectricResistivityConductivityLevelDrop = bit[2];
                ElectricResistivityConductivitySensorError = bit[3];
                Reserve4 = bit[4];
                Reserve5 = bit[5];
                Reserve6 = bit[6];
                Reserve7 = bit[7];
                Reserve8 = bit[8];
                Reserve9 = bit[9];
                Reserve10 = bit[10];
                Reserve11 = bit[11];
                Reserve12 = bit[12];
                Reserve13 = bit[13];
                Reserve14 = bit[14];
                Reserve15 = bit[15];
            }
        }
        public struct StatusFlag2
        {
            private bool[] _datas;
            private bool _electricResistivityConductivitySettingFlag1;
            private bool _electricResistivityConductivitySettingFlag2;
            private bool _reserve2;
            private bool _reserve3;
            private bool _reserve4;
            private bool _reserve5;
            private bool _reserve6;
            private bool _reserve7;
            private bool _reserve8;
            private bool _reserve9;
            private bool _reserve10;
            private bool _reserve11;
            private bool _reserve12;
            private bool _reserve13;
            private bool _reserve14;
            private bool _reserve15;
            public bool[] Datas
            {
                get
                {
                    if (_datas == null)
                    {
                        _datas = new bool[16];
                    }
                    return _datas;
                }
                private set
                {
                    _datas = value;
                }
            }
            public bool ElectricResistivityConductivitySettingFlag1
            {
                get
                {
                    return _electricResistivityConductivitySettingFlag1;
                }
                private set
                {
                    _electricResistivityConductivitySettingFlag1 = value;
                }
            }
            public bool ElectricResistivityConductivitySettingFlag2
            {
                get
                {
                    return _electricResistivityConductivitySettingFlag2;
                }
                private set
                {
                    _electricResistivityConductivitySettingFlag2 = value;
                }
            }
            public bool Reserve2
            {
                get
                {
                    return _reserve2;
                }
                private set
                {
                    _reserve2 = value;
                }
            }
            public bool Reserve3
            {
                get
                {
                    return _reserve3;
                }
                private set
                {
                    _reserve3 = value;
                }
            }
            public bool Reserve4
            {
                get
                {
                    return _reserve4;
                }
                private set
                {
                    _reserve4 = value;
                }
            }
            public bool Reserve5
            {
                get
                {
                    return _reserve5;
                }
                private set
                {
                    _reserve5 = value;
                }
            }
            public bool Reserve6
            {
                get
                {
                    return _reserve6;
                }
                private set
                {
                    _reserve6 = value;
                }
            }
            public bool Reserve7
            {
                get
                {
                    return _reserve7;
                }
                private set
                {
                    _reserve7 = value;
                }
            }
            public bool Reserve8
            {
                get
                {
                    return _reserve8;
                }
                private set
                {
                    _reserve8 = value;
                }
            }
            public bool Reserve9
            {
                get
                {
                    return _reserve9;
                }
                private set
                {
                    _reserve9 = value;
                }
            }
            public bool Reserve10
            {
                get
                {
                    return _reserve10;
                }
                private set
                {
                    _reserve10 = value;
                }
            }
            public bool Reserve11
            {
                get
                {
                    return _reserve11;
                }
                private set
                {
                    _reserve11 = value;
                }
            }
            public bool Reserve12
            {
                get
                {
                    return _reserve12;
                }
                private set
                {
                    _reserve12 = value;
                }
            }
            public bool Reserve13
            {
                get
                {
                    return _reserve13;
                }
                private set
                {
                    _reserve13 = value;
                }
            }
            public bool Reserve14
            {
                get
                {
                    return _reserve14;
                }
                private set
                {
                    _reserve14 = value;
                }
            }
            public bool Reserve15
            {
                get
                {
                    return _reserve15;
                }
                private set
                {
                    _reserve15 = value;
                }
            }
            public void SetData(byte[] bytes)
            {
                var bit = new BitArray(bytes);
                if (bit.Length < 16) return;
                for (int i = 0; i < 16; i++)
                {
                    Datas[i] = bit[i];
                }
                ElectricResistivityConductivitySettingFlag1 = bit[0];
                ElectricResistivityConductivitySettingFlag2 = bit[1];
                Reserve2 = bit[2];
                Reserve3 = bit[3];
                Reserve4 = bit[4];
                Reserve5 = bit[5];
                Reserve6 = bit[6];
                Reserve7 = bit[7];
                Reserve8 = bit[8];
                Reserve9 = bit[9];
                Reserve10 = bit[10];
                Reserve11 = bit[11];
                Reserve12 = bit[12];
                Reserve13 = bit[13];
                Reserve14 = bit[14];
                Reserve15 = bit[15];
            }
        }
        Equipment _equipment;
        public StatusFlag1 statusFlag1 = new StatusFlag1();
        public AlarmFlag1 alarmFlag1 = new AlarmFlag1();
        public AlarmFlag2 alarmFlag2 = new AlarmFlag2();
        public AlarmFlag3 alarmFlag3 = new AlarmFlag3();
        public StatusFlag2 statusFlag2 = new StatusFlag2();
        private float _circulatingFluidDischargeTemperature;
        private float _circulatingFluidDischargePressure;
        private float _electricResistivity;
        private float _circulatingFluidSetTemperature;
        private Thread t_statusUpdate;
        public float CirculatingFluidDischargeTemperature
        {
            get
            {
                return _circulatingFluidDischargeTemperature;
            }
            private set
            {
                _circulatingFluidDischargeTemperature = value;
            }
        }
        public float CirculatingFluidDischargePressure
        {
            get
            {
                return _circulatingFluidDischargePressure;
            }
            private set
            {
                _circulatingFluidDischargePressure = value;
            }
        }
        public float ElectricResistivity
        {
            get
            {
                return _electricResistivity;
            }
            private set
            {
                _electricResistivity = value;
            }
        }
        public float CirculatingFluidSetTemperature
        {
            get
            {
                return _circulatingFluidSetTemperature;
            }
            private set
            {
                _circulatingFluidSetTemperature = value;
            }
        }
        public Chiller(Equipment equipment)
        {
            _equipment = equipment;
            serialPort.PortName = "COM10";
            serialPort.BaudRate = 19200;
            serialPort.Parity = System.IO.Ports.Parity.Even;
            serialPort.DataBits = 7;
            serialPort.StopBits = System.IO.Ports.StopBits.One;
            serialPort.ReadTimeout = 500;
            ReceiveWaitSeconds = 0.1;
            Terminator = "\r\n";
            t_statusUpdate = new Thread(statusUpdate);
            t_statusUpdate.Start();
        }
        public void statusUpdate()
        {
            while (_equipment.IsDisposed == false)
            {
                try
                {
                    Thread.Sleep(500);
                    if (IsOpen)
                    {
                        // Todo. Command ì„¤ì •.
                        GetStatus();
                        AlarmCheck();
                    }
                    else
                    {
                        if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0061_CHILLER_DISCONNECTED))
                        {
                        }
                        else
                        {
                            if (Open() == false)
                            {
                                _equipment.alarmManager.Occur(AlarmCode.AL_0061_CHILLER_DISCONNECTED);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        public void Run()
        {
            string command = ":0106000C0001EC\r\n";
            string data = WriteRead(command);
        }
        public void Stop()
        {
            string command = ":0106000C0000EB\r\n";
            string data = WriteRead(command);
        }
        public void GetStatus()
        {
            // Todo. Read Registry가 ì´ìƒí•¨;; ìž¬í™•인 í•„ìš”.
            //                     0000 ë¶€í„° 000C ê¹Œì§€ ì½ìŒ.
            string command = ":01030000000DEF\r\n";
            string data = WriteRead(command);
            if(data == string.Empty)
            {
                return;
            }
            data = data.Replace(":", "");
            //data = "01031A00B4000000180000000100000000000000000000000000B4000160";
            string code = data.Substring(0, 2);
            string function = data.Substring(2, 2);
            //수정
            string byteCount = data.Substring(4, 2);
            string dischargeTemperature = data.Substring(6, 4);
            string reserved1 = data.Substring(10, 4);
            string dischargePressure = data.Substring(14, 4);
            string electricResistivityFluid = data.Substring(18, 4);
            string statusFlag1 = data.Substring(22, 4);
            string alarmFlag1 = data.Substring(26, 4);
            string alarmFlag2 = data.Substring(30, 4);
            string alarmFlag3 = data.Substring(34, 4);
            string reserved2 = data.Substring(38, 4);
            string statusFlag2 = data.Substring(42, 4);
            string reserved3 = data.Substring(46, 4);
            string circulatingTemperature = data.Substring(50, 4);
            string commandToRun = data.Substring(54, 4);
            int fluidDischargeTemperature = int.Parse(dischargeTemperature, NumberStyles.HexNumber);
            int fluidDischargePressure = int.Parse(dischargePressure, NumberStyles.HexNumber);
            int electricResistivity = int.Parse(electricResistivityFluid, NumberStyles.HexNumber);
            int fluidSetTemperature = int.Parse(circulatingTemperature, NumberStyles.HexNumber);
            int dd = int.Parse(reserved1, NumberStyles.HexNumber);
            CirculatingFluidDischargeTemperature = fluidDischargeTemperature * 0.1f;
            CirculatingFluidDischargePressure = fluidDischargePressure * 0.01f;
            ElectricResistivity = electricResistivity * 0.1f;
            CirculatingFluidSetTemperature = fluidSetTemperature * 0.1f;
            SetStatusFlag1(statusFlag1);
            SetStatusFlag2(statusFlag2);
            SetAlarmFlag1(alarmFlag1);
            SetAlarmFlag2(alarmFlag2);
            SetAlarmFlag3(alarmFlag3);
        }
        private void SetStatusFlag1(string statusFlag1)
        {
            int integerStatusFlag = int.Parse(statusFlag1, NumberStyles.HexNumber);
            byte[] status = BitConverter.GetBytes(integerStatusFlag);
            this.statusFlag1.SetData(status);
        }
        private void SetStatusFlag2(string statusFlag2)
        {
            int integerStatusFlag = int.Parse(statusFlag2, NumberStyles.HexNumber);
            byte[] status = BitConverter.GetBytes(integerStatusFlag);
            this.statusFlag2.SetData(status);
        }
        private void SetAlarmFlag1(string alarmFlag1)
        {
            int integerAlarmFlag = int.Parse(alarmFlag1, NumberStyles.HexNumber);
            byte[] alarms = BitConverter.GetBytes(integerAlarmFlag);
            this.alarmFlag1.SetData(alarms);
        }
        private void SetAlarmFlag2(string alarmFlag2)
        {
            int integerAlarmFlag = int.Parse(alarmFlag2, NumberStyles.HexNumber);
            byte[] alarms = BitConverter.GetBytes(integerAlarmFlag);
            this.alarmFlag2.SetData(alarms);
        }
        private void SetAlarmFlag3(string alarmFlag3)
        {
            int integerAlarmFlag = int.Parse(alarmFlag3, NumberStyles.HexNumber);
            byte[] alarms = BitConverter.GetBytes(integerAlarmFlag);
            this.alarmFlag3.SetData(alarms);
        }
        public void AlarmCheck()
        {
            // Alarm 1
            if(alarmFlag1.LowLevelInTank)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0400_CHILLER_LOW_LEVEL_IN_TANK);
            }
            if (alarmFlag1.HighCirculatingFluidDischargeTemp)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0401_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_TEMP);
            }
            if (alarmFlag1.CirculatingFluidDischargeTempRise)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0402_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_RISE);
            }
            if (alarmFlag1.CirculatingFluidDischargeTempDrop)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0403_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_DROP);
            }
            if (alarmFlag1.HighCirculatingFluidReturnTemp)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0404_CHILLER_HIGH_CIRCULATING_FLUID_RETURN_TEMP);
            }
            if (alarmFlag1.HighCirculatingFluidDischargePressure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0405_CHILLER_HIGH_CIRCULATING_FLUID_DISCHARGE_PRESSURE);
            }
            if (alarmFlag1.AbnormalPumpOperation)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0406_CHILLER_ABNORMAL_PUMP_OPERATION);
            }
            if (alarmFlag1.CirculatingFluidDischargePressureRise)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0407_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_RISE);
            }
            if (alarmFlag1.CirculatingFluidDischargePressureDrop)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0408_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_DROP);
            }
            if (alarmFlag1.HighCompressorIntakeTemp)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0409_CHILLER_HIGH_COMPRESSOR_INTANK_TEMP);
            }
            if (alarmFlag1.LowCompressorIntakeTemp)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0410_CHILLER_LOW_COMPRESSOR_INTANK_TEMP);
            }
            if (alarmFlag1.LowSuperHeatTemperature)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0411_CHILLER_LOW_SUPER_HEAT_TEMPERATURE);
            }
            if (alarmFlag1.HighCompressorDischargePressure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0412_CHILLER_HIGH_COMPRESSOR_DISCHARGE_PRESSURE);
            }
            if (alarmFlag1.RefrigerantCircuitHighPressureDrop)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0413_CHILLER_REFRIGERANT_CIRCUIT_HIGH_PRESSURE_DROP);
            }
            if (alarmFlag1.RefrigerantCircuitLowPressureRise)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0414_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_RISE);
            }
            // Alarm 2
            if(alarmFlag2.RefrigerantCircuitLowPressureDrop)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0415_CHILLER_REFRIGERANT_CIRCUIT_LOW_PRESSURE_DROP);
            }
            if (alarmFlag2.CompressorOverload)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0416_CHILLER_COMPRESSOR_OVER_LOAD);
            }
            if (alarmFlag2.CommunicationError)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0417_CHILLER_COMMUNICATION_ERROR);
            }
            if (alarmFlag2.MemoryError)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0418_CHILLER_MEMORY_ERROR);
            }
            if (alarmFlag2.DcLineFuseCut)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0419_CHILLER_DC_LINE_FUSE_CUT);
            }
            if (alarmFlag2.CirculatingFluidDischargeTempSensorFailure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0420_CHILLER_CIRCULATING_FLUID_DISCHARGE_TEMP_SENSOR_FAILURE);
            }
            if (alarmFlag2.CirculatingFluidReturnTempSensorFailure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0421_CHILLER_CIRCULATING_FLUID_TEMP_SENSOR_FAILURE);
            }
            if (alarmFlag2.CompressorIntankTempSensorFailure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0422_CHILLER_COMPRESSOR_INTANK_TEMP_SENSOR_FAILURE);
            }
            if (alarmFlag2.CirculatingFluidDischargePressureSensorFailure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0423_CHILLER_CIRCULATING_FLUID_DISCHARGE_PRESSURE_SENSOR_FAILURE);
            }
            if (alarmFlag2.CompressorDischargePressureSensorFailure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0424_CHILLER_COMPRESSOR_DISCHARGE_PRESSURE_SENSOR_FAILURE);
            }
            if (alarmFlag2.CompressorIntankPressureSensorFailure)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0425_CHILLER_COMPRESSOR_INTANK_PRESSURE_SENSOR_FAILURE);
            }
            if (alarmFlag2.MaintenanceOfPump)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0426_CHILLER_MAINTENANCE_OF_PUMP);
            }
            if (alarmFlag2.MaintenanceOfFanMotor)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0427_CHILLER_MAINTENENCE_OF_FAN_MOTOR);
            }
            if (alarmFlag2.MaintenanceOfCompressor)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0428_CHILLER_MAINTENENCE_OF_COMPRESSOR);
            }
            if (alarmFlag2.ContactInput1SignalDetectionAlarm)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0429_CHILLER_CONTACT_INPUT_1_SIGNAL_DETECTION_ALARM);
            }
            if (alarmFlag2.ContactInput2SignalDetectionAlarm)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0430_CHILLER_CONTACT_INPUT_2_SIGNAL_DETECTION_ALARM);
            }
            // Alarm 3
            if(alarmFlag3.WaterLeakage)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0431_CHILLER_WATER_LEAKAGE);
            }
            if (alarmFlag3.ElectricResistivityConductivityLevelRise)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0432_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_RISE);
            }
            if (alarmFlag3.ElectricResistivityConductivityLevelDrop)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0433_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_LEVEL_DROP);
            }
            if (alarmFlag3.ElectricResistivityConductivitySensorError)
            {
                _equipment.alarmManager.Occur(AlarmCode.AL_0434_CHILLER_ELECTRIC_RESISTIVITY_COMDUCTIVITY_SENSOR_ERROR);
            }
        }
        public byte GetLRC(byte[] datas)
        {
            byte LRC = 0x05;
            return LRC;
        }
    }
}
SA_LTT_UI/SA_LTT/Module/Crevis.cs
»õ ÆÄÀÏ
@@ -0,0 +1,372 @@
using EasyModbus;
using System;
using System.Collections.Generic;
using System.Threading;
namespace SA_LTT.Module
{
    /*
     * AI AO DI*7 DO*5
     */
    public class Crevis : ModbusClient
    {
        //ST-1228 / 8
        public enum DigitalInput : int
        {
            SPARE_00,
            CP_BOX_OPEN,
            SPARE_02,
            SPARE_03,
            EMO_SW_1,
            EMO_SW_2,
            EMO_SW_3,
            EMO_SW_4,
            DOOR_LOCK_OPEN_1,
            DOOR_LOCK_OPEN_2,
            DOOR_LOCK_OPEN_3,
            DOOR_LOCK_OPEN_4,
            SERVO_MC_STATUS,
            VACUUM_MC_STATUS,
            SPARE_14,
            SPARE_15,
            CST_DETECTOR_1,
            CST_DETECTOR_2,
            WATER_LEAK_LASER,
            WATER_LEAK_CHILLER,
            SMOKE_DETECTOR_CP_BOX,
            SPARE_21,
            SPARE_22,
            SPARE_23,
            CMB_GATE_OPEN,
            CMB_GATE_CLOSE,
            WAFER_UP_CYLINDER,
            WAFER_DOWN_CYLINDER,
            LASER_SHUTTER_OPEN,
            LASER_SHUTTER_CLOSE,
            SPARE_30,
            SPARE_31,
            MAIN_CDA_PRESSURE,
            MAIN_VAC_PRESSURE,
            SPARE_34,
            MAIN_CDA_FLOW,
            CMB_VACUUM_PRESSURE,
            SPARE_37,
            SPARE_38,
            SPARE_39,
            FAN_1_RUN_CP_BOX_IN,
            FAN_2_RUN_CP_BOX_IN,
            FAN_3_RUN_CP_BOX_IN,
            SPARE_43,
            FAN_4_RUN_CP_BOX_OUT,
            FAN_5_RUN_CP_BOX_OUT,
            FAN_6_RUN_CP_BOX_OUT,
            SPARE_47,
            FAN_1_RUN_CHILLER_OUT,
            FAN_2_RUN_CHILLER_OUT,
            FAN_3_RUN_CHILLER_OUT,
            SPARE_51,
            SPARE_52,
            SPARE_53,
            SPARE_54,
            SPARE_55,
        }
        //ST-2318 / 8
        public enum DigitalOutput : int
        {
            SPARE_00,
            SIGNAL_TOWER_RED,
            SIGNAL_TOWER_YELLOW,
            SIGNAL_TOWER_GREEN,
            BUZZER_1,
            BUZZER_2,
            BUZZER_3,
            BUZZER_4,
            FLUORESCENT_LAMP_OFF,
            SERVO_CONTROL_OFF,
            LASER_LED_BOARD_ON,
            SPARE_11,
            VACUUM_PUMP_MC_ON,
            DOOR_OPEN_RELEASE_1,
            DOOR_OPEN_RELEASE_2,
            SPARE_15,
            CMB_GATE_OPEN_VALVE,
            CMB_GATE_CLOSE_VALVE,
            N2_CHAMBER_VALVE_ON_SOL,
            N2_MFC_VALVE_ON_SOL,
            CMB_BYPASS_ON_SOL,
            WAFER_UP_SOL,
            WAFER_DOWN_SOL,
            LASER_SHUTTER_OPEN_SOL,
            AIR_BLOW_ON,
            SPARE_26,
            SPARE_27,
            VAC_CHUCK_ON,
            SPARE_28,
            SPARE_29,
            SPARE_30,
            SPARE_31,
            SPARE_32,
            SPARE_33,
            SPARE_34,
            SPARE_35,
            SPARE_36,
            SPARE_37,
            SPARE_38,
            SPARE_39,
        }
        //ST-3444 (Analog input : 0 ~ 10V, Resolution 14bit, 0.6mV/Bit) / 4
        public enum AnalogInput : int
        {
            MFC_FLOW_OUT = 0,
            SPARE_01 = 10,
            SPARE_02 = 20,
            SPARE_03 = 30,
        }
        //ST-4424 (Analog output : 0 ~ 10V, Resolution 12bit, 2.44mV/Bit) / 4
        public enum AnalogOutput : int
        {
            MFC_SET_POINT = 0,
            SPARE_01 = 10,
            SPARE_02 = 20,
            SPARE_03 = 30,
        }
        private int _digitalInputStartAddress = 0x0040;
        private int _digitalOutputStartAddress = 0x1040;
        private int _analogInputStartAddress = 0x0000;
        private int _analogOutputStartAddress = 0x0800;
        public Dictionary<DigitalInput, bool> DigitalInputs = new Dictionary<DigitalInput, bool>();
        public Dictionary<DigitalOutput, bool> DigitalOutputs = new Dictionary<DigitalOutput, bool>();
        public Dictionary<AnalogInput, double> AnalogInputs = new Dictionary<AnalogInput, double>();
        public Dictionary<AnalogOutput, double> AnalogOutputs = new Dictionary<AnalogOutput, double>();
        private Equipment _equipment;
        private Thread t_statusUpdate;
        object dataLock = new object();
        public Crevis(Equipment equipment)
        {
            IPAddress = "192.168.123.1";
            foreach (DigitalInput input in Enum.GetValues(typeof(DigitalInput)))
            {
                DigitalInputs.Add(input, false);
            }
            foreach (DigitalOutput output in Enum.GetValues(typeof(DigitalOutput)))
            {
                DigitalOutputs.Add(output, false);
            }
            foreach (AnalogInput inputs in Enum.GetValues(typeof(AnalogInput)))
            {
                AnalogInputs.Add(inputs, 0);
            }
            foreach (AnalogOutput output in Enum.GetValues(typeof(AnalogOutput)))
            {
                AnalogOutputs.Add(output, 0);
            }
            _equipment = equipment;
            t_statusUpdate = new Thread(statusUpdate);
            t_statusUpdate.Start();
        }
        public void statusUpdate()
        {
            while (_equipment.IsDisposed == false)
            {
                try
                {
                    Thread.Sleep(10);
                    if (Connected)
                    {
                        if(ReadDigitalInputs() == false)
                        {
                            Disconnect();
                            continue;
                        }
                        if(ReadDigitalOutputs() == false)
                        {
                            Disconnect();
                            continue;
                        }
                        if (ReadAnalogInputs() == false)
                        {
                            Disconnect();
                            continue;
                        }
                        if (ReadAnalogOutputs() == false)
                        {
                            Disconnect();
                            continue;
                        }
                    }
                    else
                    {
                        if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0050_CREVIS_DISCONNECTED))
                        {
                        }
                        else
                        {
                            if (Connect() == false)
                            {
                                _equipment.alarmManager.Occur(AlarmCode.AL_0050_CREVIS_DISCONNECTED);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        public new bool Connect()
        {
            try
            {
                base.Connect();
                return true;
            }
            catch(Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        public bool ReadDigitalInputs()
        {
            lock (dataLock)
            {
                try
                {
                    bool[] readValue = ReadCoils(_digitalInputStartAddress, Enum.GetValues(typeof(DigitalInput)).Length);
                    for (int i = 0; i < readValue.Length; i++)
                    {
                        DigitalInputs[(DigitalInput)i] = readValue[i];
                    }
                    return true;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return false;
                }
            }
        }
        public bool ReadDigitalOutputs()
        {
            lock (dataLock)
            {
                try
                {
                    bool[] readValue = ReadCoils(_digitalOutputStartAddress, Enum.GetValues(typeof(DigitalOutput)).Length);
                    for (int i = 0; i < readValue.Length; i++)
                    {
                        DigitalOutputs[(DigitalOutput)i] = readValue[i];
                    }
                    return true;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return false;
                }
            }
        }
        public bool ReadAnalogInputs()
        {
            lock (dataLock)
            {
                try
                {
                    int[] serverResponse = ReadInputRegisters(_analogInputStartAddress, AnalogInputs.Keys.Count);
                    int i = 0;
                    foreach (AnalogInput input in Enum.GetValues(typeof(AnalogInput)))
                    {
                        AnalogInputs[input] = Math.Round(serverResponse[i] / 1638.0, 2);
                        i++;
                    }
                    return true;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return false;
                }
            }
        }
        public bool ReadAnalogOutputs()
        {
            lock (dataLock)
            {
                try
                {
                    int[] serverResponse = ReadInputRegisters(_analogOutputStartAddress, AnalogOutputs.Keys.Count);
                    int i = 0;
                    foreach (AnalogOutput output in Enum.GetValues(typeof(AnalogOutput)))
                    {
                        AnalogOutputs[output] = Math.Round(serverResponse[i] / 410.0, 2);
                        i++;
                    }
                    return true;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return false;
                }
            }
        }
        public void WriteOutput(DigitalOutput digitalOutput, bool value)
        {
            lock (dataLock)
            {
                if (Connected)
                {
                    WriteSingleCoil(_digitalOutputStartAddress + (int)digitalOutput, value);
                }
            }
        }
        public void WriteAnalog(AnalogOutput analogOutput, double value)
        {
            lock (dataLock)
            {
                if (Connected)
                {
                    if(analogOutput == AnalogOutput.MFC_SET_POINT)
                    {
                        WriteSingleRegister(_analogOutputStartAddress + (int)analogOutput, Convert.ToInt32(value * 1000 / 2.44));
                    }
                }
            }
        }
    }
}
SA_LTT_UI/SA_LTT/Module/E5CC.cs
»õ ÆÄÀÏ
@@ -0,0 +1,222 @@
using System;
using System.Globalization;
using System.Text;
using System.Threading;
namespace SA_LTT.Module
{
    /// <summary>
    /// Omron temp controller
    /// </summary>
    public class E5CC : ComPort
    {
        private struct VariableArea
        {
            public string Node;
            public string slaveAddress;
            public string functionCode;
            public string MRC;
            public string SRC;
            public string responseCode;
            public string readData;
        }
        /// <summary>
        /// Start of text
        /// </summary>
        private char STX = Convert.ToChar(2);
        /// <summary>
        /// End of text
        /// </summary>
        private char EXT = Convert.ToChar(3);
        private int _temperature;
        private Equipment _equipment;
        private Thread t_statusUpdate;
        public int Temperature
        {
            get
            {
                return _temperature;
            }
            set
            {
                _temperature = value;
            }
        }
        public E5CC(Equipment equipment)
        {
            serialPort.PortName = "COM6";
            serialPort.BaudRate = 9600;
            serialPort.Parity = System.IO.Ports.Parity.Even;
            serialPort.DataBits = 7;
            serialPort.StopBits = System.IO.Ports.StopBits.Two;
            serialPort.Handshake = System.IO.Ports.Handshake.RequestToSend;
            serialPort.ReadTimeout = 1000;
            ReceiveWaitSeconds = 0.1;
            Terminator = null;
            _equipment = equipment;
            t_statusUpdate = new Thread(statusUpdate);
            t_statusUpdate.Start();
        }
        public void statusUpdate()
        {
            while (_equipment.IsDisposed == false)
            {
                try
                {
                    Thread.Sleep(500);
                    if (IsOpen)
                    {
                        // Todo. Command ì„¤ì •.
                        ReadCurrentTemperature();
                    }
                    else
                    {
                        if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0054_TEMPCONTROLER_DISCONNECTED))
                        {
                        }
                        else
                        {
                            if (Open() == false)
                            {
                                _equipment.alarmManager.Occur(AlarmCode.AL_0054_TEMPCONTROLER_DISCONNECTED);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        private char GetCyclicRedundancyCheck(string command)
        {
            byte[] commandBytes = Encoding.Default.GetBytes(command);
            string formmatedCommand = string.Empty;
            for (int i = 1; i < commandBytes.Length; i++)
            {
                formmatedCommand += $"{commandBytes[i]:X2}";
                if (i != commandBytes.Length - 1)
                    formmatedCommand += ",";
            }
            string[] BCC_HexData = formmatedCommand.Split(',');
            int blockCheckCharacter = int.Parse(BCC_HexData[0], NumberStyles.HexNumber);
            for (int i = 1; i < BCC_HexData.Length; i++)
            {
                blockCheckCharacter ^= int.Parse(BCC_HexData[i], NumberStyles.HexNumber);
            }
            return Convert.ToChar(blockCheckCharacter);
        }
        private bool ReadVariableArea(int node, string variableType, string readStartAddress, string numberOfElements, out string receivedData)
        {
            receivedData = string.Empty;
            string command = $"{STX}{node:X2}0000101{variableType}{readStartAddress}00{numberOfElements}{EXT}";
            char blockCheckCharacter = GetCyclicRedundancyCheck(command);
            command += blockCheckCharacter;
            char[] bytes;
            VariableArea variableArea = new VariableArea();
            if (WriteRead(command, out bytes))
            {
                GetVariableArea(bytes, out variableArea);
                receivedData = variableArea.readData;
                return true;
            }
            else
            {
                return false;
            }
        }
        private void GetVariableArea(char[] commandFrame, out VariableArea variableArea)
        {
            variableArea = new VariableArea();
            char[] node = new char[2];
            char[] slaveAddress = new char[2];
            char[] functionCode = new char[2];
            char[] mrc = new char[2];
            char[] src = new char[2];
            char[] responseCode = new char[4];
            char[] readData = new char[commandFrame.Length - 17];
            Array.Copy(commandFrame, 1, node, 0, 2);
            Array.Copy(commandFrame, 3, slaveAddress, 0, 2);
            Array.Copy(commandFrame, 5, functionCode, 0, 2);
            Array.Copy(commandFrame, 7, mrc, 0, 2);
            Array.Copy(commandFrame, 9, src, 0, 2);
            Array.Copy(commandFrame, 11, responseCode, 0, 4);
            Array.Copy(commandFrame, 15, readData, 0, commandFrame.Length - 15 - 2);
            variableArea.Node = new string(node);
            variableArea.slaveAddress = new string(slaveAddress);
            variableArea.functionCode = new string(functionCode);
            variableArea.MRC = new string(mrc);
            variableArea.SRC = new string(src);
            variableArea.responseCode = new string(responseCode);
            variableArea.readData = new string(readData);
        }
        public int ReadCurrentTemperature()
        {
            int temperature = 0;
            string receivedData;
            if (ReadVariableArea(1, "C0", "0000", $"{1:X4}", out receivedData))
            {
                temperature = int.Parse(receivedData, NumberStyles.HexNumber);
            }
            Temperature = temperature;
            return temperature;
        }
        public bool WriteRead(string command, out char[] receivedData)
        {
            receivedData = null;
            string data = WriteRead(command);
            //data = "\u00020200000101000000000190\u0003\t";
            if (data != string.Empty)
            {
                char blockCheckCharacter = GetCyclicRedundancyCheck(data.Remove(data.Length - 1, 1));
                if (blockCheckCharacter == data[data.Length-1])
                {
                    receivedData = data.ToCharArray();
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
    }
}
SA_LTT_UI/SA_LTT/Module/FFU.cs
»õ ÆÄÀÏ
@@ -0,0 +1,451 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SA_LTT.Module
{
    public class FFU : ComPort
    {
        #region define Packet
        /// <summary>
        /// Start
        /// </summary>
        public readonly byte STX = 0x02;
        /// <summary>
        /// Read Mode
        /// </summary>
        public readonly byte MODE_Read = 0x8a;
        /// <summary>
        /// Control Mode
        /// </summary>
        public readonly byte MODE_Control = 0x89;
        /// <summary>
        /// Default
        /// </summary>
        public readonly byte MODE2 = 0x9f;
        /// <summary>
        /// MCUL32 ì˜ ID값
        /// </summary>
        public byte MCUL_ID = 0x81;
        /// <summary>
        /// Defualt
        /// </summary>
        public readonly byte DPU_ID = 0x9f;
        /// <summary>
        /// FFU Controller(LCU)의 ì²«ë²ˆì§¸ ID ê°’
        /// ID가 1인 ê²½ìš° 10000001 (0x81)
        /// </summary>
        public byte Start_LCU_ID = 0x81;
        /// <summary>
        /// FFU Controller(LCU)의 ë§ˆì§€ë§‰ ID ê°’
        /// ID가 5인 ê²½ìš° 10000101 (0x85)
        /// </summary>
        public byte End_LCU_ID = 0x81;
        /// <summary>
        /// {MODE1+MODE2+ â€¦  + mmAq HSV} => í•˜ìœ„바이트
        /// </summary>
        //public byte Check_Sum { get; set; }
        /// <summary>
        /// End
        /// </summary>
        public readonly byte EXT = 0x03;
        #endregion
        /// <summary>
        /// Channel, FFU Status
        /// </summary>
        public Dictionary<int, FFUStatus> FFU_Status { get; }
        private Equipment _equipment;
        private Thread t_statusUpdate;
        public FFU(Equipment equipment)
        {
            serialPort.PortName = "COM8";
            serialPort.BaudRate = 9600;
            serialPort.Parity = System.IO.Ports.Parity.None;
            serialPort.DataBits = 8;
            serialPort.StopBits = System.IO.Ports.StopBits.One;
            Terminator = null;
            FFU_Status = new Dictionary<int, FFUStatus>();
            FFU_Status.Add(1, new FFUStatus(1));
            _equipment = equipment;
            t_statusUpdate = new Thread(statusUpdate);
            t_statusUpdate.Start();
        }
        public void statusUpdate()
        {
            while (_equipment.IsDisposed == false)
            {
                try
                {
                    Thread.Sleep(50);
                    if (IsOpen)
                    {
                        foreach(int key in FFU_Status.Keys)
                        {
                            // Todo. Command ì„¤ì •.
                            ReadFFUStatus(key);
                        }
                    }
                    else
                    {
                        if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0055_FFU_DISCONNECTED))
                        {
                        }
                        else
                        {
                            if (Open() == false)
                            {
                                _equipment.alarmManager.Occur(AlarmCode.AL_0055_FFU_DISCONNECTED);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        public bool ReadFFUStatus(int address)
        {
            try
            {
                if (!FFU_Status.ContainsKey(address))
                    return false;
                byte Start_LCU_ID = (byte)(address | 0x80);
                byte End_LCU_ID = (byte)(address | 0x80);
                List<byte> datas = new List<byte>();
                datas.Clear();
                datas.Add(MODE_Control);
                datas.Add(MODE2);
                datas.Add(MCUL_ID);
                datas.Add(DPU_ID);
                datas.Add(Start_LCU_ID);
                datas.Add(End_LCU_ID);
                datas.Add(GetCheckSum(datas.ToArray()));
                datas.Insert(0, STX);
                datas.Add(EXT);
                byte[] rcvData;
                //Todo. Write read ë°˜í™˜ ê°’ Test í•´ì•¼ ëŒ.
                //if (WriteRead(datas.ToArray(), out rcvData))
                //{
                //    FFU_Status[address].SetData_PV(rcvData[6]);
                //    FFU_Status[address].ChangeStatus(rcvData[7]);
                //    FFU_Status[address].SetData_SV(rcvData[8]);
                //    FFU_Status[address].SetmmAq(rcvData[9], rcvData[10]);
                //    return true;
                //}
                //else
                //    return false;
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        public bool WritemmAqSV(double mmAq)
        {
            mmAq *= 100;
            try
            {
                if (!FFU_Status.ContainsKey(1))
                    return false;
                int a = (int)(mmAq);
                string data = a.ToString("x");
                byte daH, daL;
                if (data.Length > 4)
                    return false;
                if (data.Length == 4)
                {
                    daH = Convert.ToByte(data.Substring(0, 2), 16);
                    daL = Convert.ToByte(data.Substring(2, 2), 16);
                }
                else if (data.Length == 3)
                {
                    daH = Convert.ToByte(data.Substring(0, 1), 16);
                    daL = Convert.ToByte(data.Substring(1, 2), 16);
                }
                else
                {
                    daH = 0x00;
                    daL = Convert.ToByte(data, 16);
                }
                List<byte> datas = new List<byte>();
                datas.Clear();
                datas.Add(MODE_Control);    //89
                datas.Add(MODE2);           //9f
                datas.Add(MCUL_ID);         //81
                datas.Add(DPU_ID);          //9f
                datas.Add(Start_LCU_ID);    //81
                datas.Add(End_LCU_ID);      //82
                datas.Add(daL);             //01
                datas.Add(daH);             //00
                datas.Add(daL);             //00
                datas.Add(daH);             //00
                datas.Add(daL);             //32
                datas.Add(daH);             //00
                datas.Add(GetCheckSum(datas.ToArray()));       //7e
                datas.Insert(0, STX);       //02
                datas.Add(EXT);             //03
                string recvData;
                if (WriteRead(datas.ToArray(), out recvData))
                {
                    byte[] bytesData = Encoding.Default.GetBytes(recvData);
                    foreach (byte bb in recvData)
                    {
                        if (bb == 0xb9)
                            return true;
                    }
                }
                return false;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        /// <summary>
        /// Check Sum ê³„ì‚° Method
        /// </summary>
        /// <param name="datas">Command byte ë°°ì—´</param>
        /// <returns></returns>
        public byte GetCheckSum(byte[] datas)
        {
            int sum = 0;
            foreach (byte data in datas)
            {
                sum += data;
            }
            string proc_data = sum.ToString("x");
            proc_data = proc_data.Substring(proc_data.Length - 2, 2);
            byte value = Convert.ToByte(proc_data, 16);
            return value;
        }
        public bool WriteRead(string command, out string receivedData)
        {
            string data = base.WriteRead(command + '\r');
            if (data.StartsWith(command.Split(' ')[0]))
            {
                receivedData = data.Remove(0, command.Split(' ')[0].Length).Replace("\n\r", "");
                return true;
            }
            else
            {
                receivedData = string.Empty;
                return false;
            }
        }
        public bool WriteRead(byte[] command, out string receivedData)
        {
            string data = base.WriteRead(command);
            receivedData = data;
            return true;
        }
    }
    /// <summary>
    /// MCUL32에 ì—°ê²°ë˜ì–´ ìžˆëŠ” FFU Status
    /// </summary>
    public class FFUStatus
    {
        public enum AL_ST_Datas
        {
            Remote_Control_Mode = 0x80,
            Local_Control_Mode = 0x81,
            Thermal_Relay_Alarm = 0x82,//Not used
            Open_the_door = 0x84,//Not used
            Setting_Alarm = 0x88,//(SV>Max or SV<Min) - LIU MODE
            RPM_Alarm = 0x90,//(PV>HSV or PV<LSV) - LIU MODE
            Auto_controlling_for_Over_Current = 0xA0, //과전류
            Over_Current_Alarm = 0xC0, //Motor Alarm
            No_Connection_LCU = 0x00, //통신 Alarm
        }
        public FFUStatus(int LCU_ID)
        {
            this.LCU_ID = LCU_ID;
        }
        #region Status
        public bool Remote_Control_Mode { get; private set; }
        public bool Local_Control_Mode { get; private set; }
        public bool Thermal_Relay_Alarm { get; private set; } //Not used
        public bool Open_the_door { get; private set; } //Not used
        public bool Setting_Alarm { get; private set; } //LIU MODE
        public bool RPM_Alarm { get; private set; } //LIU MODE
        public bool Auto_controlling_for_Over_Current { get; private set; }
        public bool Over_Current_Alarm { get; private set; }
        public bool No_Connection_LCU { get; private set; }
        #endregion
        #region Setting Parameter
        /// <summary>
        /// FFU Controller(LCU)의 ID ê°’
        /// </summary>
        public int LCU_ID { get; private set; }
        /// <summary>
        /// LCU의 ì§€ë ¹ ì†ë„ ê°’(RPM) 0 ~ 1400RPM (0x00 ~ 0x8C)
        /// </summary>
        public int Data_SV { get; private set; }
        /// <summary>
        /// LCU의 í˜„재 ì†ë„ ê°’(RPM)
        /// </summary>
        public int Data_PV { get; private set; }
        /// <summary>
        /// ì••력센서 ê°’ (단위 : mmAq)
        /// </summary>
        public double mmAq { get; private set; }
        /// <summary>
        /// ì••력센서 ê°’ Low
        /// </summary>
        public byte mmAqLSV { get; private set; }
        /// <summary>
        /// ì••력센서 ê°’ High
        /// </summary>
        public byte mmAqHSV { get; private set; }
        #endregion
        #region Change Datas
        /// <summary>
        /// Alarm, Status ë³€ê²½ Method
        /// </summary>
        /// <param name="AL_ST">AL_ST byte Data</param>
        public void ChangeStatus(byte AL_ST)
        {
            try
            {
                if ((AL_ST & (byte)AL_ST_Datas.Remote_Control_Mode) == (byte)AL_ST_Datas.Remote_Control_Mode) Remote_Control_Mode = true;
                else Remote_Control_Mode = false;
                if ((AL_ST & (byte)AL_ST_Datas.Local_Control_Mode) == (byte)AL_ST_Datas.Local_Control_Mode) Local_Control_Mode = true;
                else Local_Control_Mode = false;
                if ((AL_ST & (byte)AL_ST_Datas.Thermal_Relay_Alarm) == (byte)AL_ST_Datas.Thermal_Relay_Alarm) Thermal_Relay_Alarm = true;
                else Thermal_Relay_Alarm = false;
                if ((AL_ST & (byte)AL_ST_Datas.Open_the_door) == (byte)AL_ST_Datas.Open_the_door) Open_the_door = true;
                else Open_the_door = false;
                if ((AL_ST & (byte)AL_ST_Datas.Setting_Alarm) == (byte)AL_ST_Datas.Setting_Alarm) Setting_Alarm = true;
                else Setting_Alarm = false;
                if ((AL_ST & (byte)AL_ST_Datas.RPM_Alarm) == (byte)AL_ST_Datas.RPM_Alarm) RPM_Alarm = true;
                else RPM_Alarm = false;
                if ((AL_ST & (byte)AL_ST_Datas.Auto_controlling_for_Over_Current) == (byte)AL_ST_Datas.Auto_controlling_for_Over_Current) Auto_controlling_for_Over_Current = true;
                else Auto_controlling_for_Over_Current = false;
                if ((AL_ST & (byte)AL_ST_Datas.Over_Current_Alarm) == (byte)AL_ST_Datas.Over_Current_Alarm) Over_Current_Alarm = true;
                else Over_Current_Alarm = false;
                if ((AL_ST & (byte)AL_ST_Datas.No_Connection_LCU) == (byte)AL_ST_Datas.No_Connection_LCU) No_Connection_LCU = true;
                else No_Connection_LCU = false;
            }
            catch (Exception)
            {
            }
        }
        /// <summary>
        /// Data SV ë³€ê²½.
        /// </summary>
        /// <param name="Data_SV">Data_SV byte Data</param>
        public void SetData_SV(byte Data_SV)
        {
            this.Data_SV = Data_SV * 10;
        }
        /// <summary>
        /// Data PV ë³€ê²½.
        /// </summary>
        /// <param name="Data_PV">Data_PV byte Data</param>
        public void SetData_PV(byte Data_PV)
        {
            this.Data_PV = Data_PV * 10;
        }
        /// <summary>
        /// mmAq Data ë³€ê²½
        /// </summary>
        /// <param name="mmAqLSV">압력센서 ê°’(하위 ë°”이트)</param>
        /// <param name="mmAqHSV">압력센서 ê°’(상위 ë°”이트)</param>
        public void SetmmAq(byte mmAqLSV, byte mmAqHSV)
        {
            try
            {
                this.mmAqHSV = mmAqHSV;
                this.mmAqLSV = mmAqLSV;
                string proc_mmAq = $"{mmAqHSV.ToString("x")}{mmAqLSV.ToString("x")}";
                this.mmAq = Convert.ToInt32(proc_mmAq, 16) / 100.0;
            }
            catch (Exception)
            {
            }
        }
        #endregion
    }
}
SA_LTT_UI/SA_LTT/Module/GR200.cs
»õ ÆÄÀÏ
@@ -0,0 +1,173 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace SA_LTT.Module
{
    public class GR200 : ComPort
    {
        private char STX = Convert.ToChar(2);
        private char EXT = '\n';
        private Dictionary<int, float> _measuredValues;
        public float MainCDAPressure
        {
            get
            {
                return _measuredValues[1];
            }
        }
        public float MainVacuumPressure
        {
            get
            {
                return _measuredValues[2];
            }
        }
        public float N2PTPressure
        {
            get
            {
                return _measuredValues[3];
            }
        }
        public float MainCDAFlow
        {
            get
            {
                return _measuredValues[4];
            }
        }
        public float ChamberVacuumPressure
        {
            get
            {
                return _measuredValues[5];
            }
        }
        private Equipment _equipment;
        private Thread t_statusUpdate;
        public GR200(Equipment equipment)
        {
            serialPort.PortName = "COM7";
            serialPort.BaudRate = 57600;
            serialPort.Parity = System.IO.Ports.Parity.None;
            serialPort.DataBits = 7;
            serialPort.StopBits = System.IO.Ports.StopBits.One;
            serialPort.Handshake = System.IO.Ports.Handshake.RequestToSend;
            Terminator = "\r\n";
            _measuredValues = new Dictionary<int, float>();
            for (int i = 1; i <= 12; i++)
            {
                _measuredValues.Add(i, 0f);
            }
            _equipment = equipment;
            t_statusUpdate = new Thread(statusUpdate);
            t_statusUpdate.Start();
        }
        public void statusUpdate()
        {
            while (_equipment.IsDisposed == false)
            {
                try
                {
                    Thread.Sleep(100);
                    if (IsOpen)
                    {
                        ReadMeasuredValue(1);
                    }
                    else
                    {
                        if (_equipment.alarmManager.OccurredAlarms.Exists(x => x.Code == AlarmCode.AL_0058_GR200_DISCONNECTED))
                        {
                        }
                        else
                        {
                            if (Open() == false)
                            {
                                _equipment.alarmManager.Occur(AlarmCode.AL_0058_GR200_DISCONNECTED);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
            }
        }
        private string GetCommand(int channel, int bitsCount, int registerNumber)
        {
            return $"{channel:D2}DRS,{(bitsCount):D2},{registerNumber:D4}";
        }
        public void ReadMeasuredValue(int channel)
        {
            string command = GetCommand(channel, 24, 16);
            string receivedData = string.Empty;
            if(WriteRead(command, out receivedData))
            {
                string[] datas = receivedData.Split(',');
                int register = 1;
                if (!datas[0].Contains("NG") && datas[0].Contains("DRS"))
                {
                    for (int i = 2; i < datas.Length; i = i + 2)
                    {
                        float fl = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToInt64(datas[i] + datas[i + 1], 16)), 0);
                        if (_measuredValues.ContainsKey(register))
                        {
                            _measuredValues[register] = fl;
                        }
                        else
                        {
                            _measuredValues.Add(register, fl);
                        }
                        register++;
                    }
                }
                else if (datas[0].Contains("NG"))
                    throw new Exception($"Command NG, Address : {channel}, Command : DRS , Recv Data =");
                else
                    throw new Exception($"Error, Address : {channel}, Command : DRS , Recv Data =");
            }
        }
        public bool WriteRead(string command, out string receivedData)
        {
            string data = base.WriteRead($"{STX}{command}\r{EXT}");
            if (data.StartsWith($"{STX}"))
            {
                receivedData = data.Replace(STX, ' ').Replace("\r\n", "");
                return true;
            }
            else
            {
                receivedData = string.Empty;
                return false;
            }
        }
    }
}
SA_LTT_UI/SA_LTT/Module/ModuleBase.cs
»õ ÆÄÀÏ
@@ -0,0 +1,488 @@
using SA_LTT.Base;
using System;
using System.IO.Ports;
using System.Linq;
using System.Threading;
namespace SA_LTT.Module
{
    public class ModuleBase : XmlManager<ModuleBase>
    {
        public string filePath = @"C:\Equipment\";
        public string fileName = "ModuleBase.xml";
        protected SerialPort serialPort;
        private XmlManager<ModuleBase> _xmlManager;
        private object _thisLock;
        private bool _lockCheck;
        private string _receivedData;
        private string _portName;
        private int _baudRate;
        private int _dataBits;
        private Parity _parity;
        private StopBits _stopBits;
        private Handshake _handshake;
        private int _readTimeout;
        private int _writeTimeout;
        private double _receiveWaitTime;
        private string _terminator;
        public string PortName
        {
            get
            {
                return _portName;
            }
            set
            {
                _portName = value;
                serialPort.PortName = _portName;
            }
        }
        public int BaudRate
        {
            get
            {
                return _baudRate;
            }
            set
            {
                _baudRate = value;
                serialPort.BaudRate = _baudRate;
            }
        }
        public int DataBits
        {
            get
            {
                return _dataBits;
            }
            set
            {
                _dataBits = value;
                serialPort.DataBits = _dataBits;
            }
        }
        public Parity Parity
        {
            get
            {
                return _parity;
            }
            set
            {
                _parity = value;
                serialPort.Parity = _parity;
            }
        }
        public StopBits StopBits
        {
            get
            {
                return _stopBits;
            }
            set
            {
                _stopBits = value;
                serialPort.StopBits = _stopBits;
            }
        }
        public Handshake Handshake
        {
            get
            {
                return _handshake;
            }
            set
            {
                _handshake = value;
                serialPort.Handshake = _handshake;
            }
        }
        public int ReadTimeout
        {
            get
            {
                return _readTimeout;
            }
            set
            {
                _readTimeout = value;
                serialPort.ReadTimeout = _readTimeout;
            }
        }
        public int WriteTimeout
        {
            get
            {
                return _writeTimeout;
            }
            set
            {
                _writeTimeout = value;
                serialPort.WriteTimeout = _writeTimeout;
            }
        }
        public double ReceiveWaitTime
        {
            get
            {
                return _receiveWaitTime;
            }
            set
            {
                _receiveWaitTime = value;
            }
        }
        public string Terminator
        {
            get
            {
                return _terminator;
            }
            set
            {
                _terminator = value;
            }
        }
        public ModuleBase(string filePath = @"C:\Equipment\", string fileName = "ModuleBase.xml")
        {
            this.filePath = filePath;
            this.fileName = fileName;
            _thisLock = new object();
            serialPort = new SerialPort();
            PortName = "COM1";
            BaudRate = 9600;
            DataBits = 8;
            Parity = Parity.None;
            StopBits = StopBits.One;
            Handshake = Handshake.None;
            ReadTimeout = 500;
            WriteTimeout = 500;
        }
        public static string[] GetExistPortNames()
        {
            return SerialPort.GetPortNames();
        }
        public bool Open()
        {
            try
            {
                serialPort.Open();
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        public bool Close()
        {
            try
            {
                serialPort.Close();
                return true;
            }
            catch (Exception e)
            {
                EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                return false;
            }
        }
        protected string WriteRead(string command)
        {
            string receivedData = string.Empty;
            lock (_thisLock)
            {
                while (_lockCheck)
                    Monitor.Wait(_thisLock);
                try
                {
                    _lockCheck = true;
                    _receivedData = string.Empty;
                    if (serialPort.BytesToRead > 0) serialPort.ReadExisting();
                    serialPort.BaseStream.Flush();
                    serialPort.Write(command);
                    DateTime check = DateTime.Now;
                    while (true)
                    {
                        if ((DateTime.Now - check).TotalMilliseconds > ReceiveWaitTime)
                        {
                            check = DateTime.Now;
                            break;
                        }
                    }
                    while (true)
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            receivedData = serialPort.ReadExisting();
                            if (CheckTerminator(receivedData))
                            {
                                if (Terminator == null)
                                {
                                    if (serialPort.BytesToRead > 0)
                                        continue;
                                }
                                receivedData = _receivedData;
                                break;
                            }
                        }
                        if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout)
                        {
                            throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout");
                        }
                    }
                    return receivedData;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace + "\r\n" + e.Message);
                    return receivedData;
                }
                finally
                {
                    _lockCheck = false;
                    Monitor.Pulse(_thisLock);
                }
            }
        }
        protected void Write(string command)
        {
            lock (_thisLock)
            {
                while (_lockCheck)
                    Monitor.Wait(_thisLock);
                try
                {
                    _lockCheck = true;
                    serialPort.Write(command);
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
                finally
                {
                    _lockCheck = false;
                    Monitor.Pulse(_thisLock);
                }
            }
        }
        protected string WriteRead(byte[] command)
        {
            string receivedData = string.Empty;
            lock (_thisLock)
            {
                while (_lockCheck)
                    Monitor.Wait(_thisLock);
                try
                {
                    _lockCheck = true;
                    _receivedData = string.Empty;
                    if (serialPort.BytesToRead > 0) serialPort.ReadExisting();
                    serialPort.BaseStream.Flush();
                    serialPort.Write(command, 0, command.Length);
                    DateTime check = DateTime.Now;
                    while (true)
                    {
                        if ((DateTime.Now - check).TotalMilliseconds > ReceiveWaitTime)
                        {
                            check = DateTime.Now;
                            break;
                        }
                    }
                    while (true)
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            receivedData = serialPort.ReadExisting();
                            if (CheckTerminator(receivedData))
                            {
                                double aa = (DateTime.Now - check).TotalMilliseconds;
                                receivedData = _receivedData;
                                break;
                            }
                        }
                        if ((DateTime.Now - check).TotalMilliseconds > serialPort.ReadTimeout)
                        {
                            throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout");
                        }
                    }
                    return receivedData;
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return receivedData;
                }
                finally
                {
                    _lockCheck = false;
                    Monitor.Pulse(_thisLock);
                }
            }
        }
        protected void Write(byte[] command)
        {
            lock (_thisLock)
            {
                while (_lockCheck)
                    Monitor.Wait(_thisLock);
                try
                {
                    _lockCheck = true;
                    serialPort.Write(command, 0, command.Length);
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                }
                finally
                {
                    _lockCheck = false;
                    Monitor.Pulse(_thisLock);
                }
            }
        }
        protected string Read(int timeout)
        {
            string receivedData = string.Empty;
            DateTime check = DateTime.Now;
            lock (_thisLock)
            {
                while (_lockCheck)
                    Monitor.Wait(_thisLock);
                try
                {
                    _lockCheck = true;
                    while (true)
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            receivedData = serialPort.ReadExisting();
                            if (CheckTerminator(receivedData))
                            {
                                receivedData = _receivedData;
                                break;
                            }
                        }
                        if ((DateTime.Now - check).TotalMilliseconds > timeout)
                        {
                            throw new TimeoutException($"{serialPort.PortName} Port Receieve Timeout");
                        }
                    }
                }
                catch (Exception e)
                {
                    EquipmentLogManager.Instance.WriteExceptionLog(e.StackTrace);
                    return receivedData;
                }
                finally
                {
                    _lockCheck = false;
                    Monitor.Pulse(_thisLock);
                }
            }
            return receivedData;
        }
        private bool CheckTerminator(string receivedData)
        {
            if (Terminator == null)
            {
                _receivedData += receivedData;
                return true;
            }
            else
            {
                if (receivedData.Contains(Terminator))
                {
                    int terminatorLocation = receivedData.IndexOf(Terminator);
                    if (receivedData.Length == terminatorLocation + Terminator.Length)
                    {
                        _receivedData += receivedData;
                    }
                    else
                    {
                        _receivedData += receivedData.Remove(terminatorLocation + Terminator.Length);
                    }
                    return true;
                }
                else
                {
                    _receivedData += receivedData;
                    return false;
                }
            }
        }
    }
}
위 파일이후 차이 제거됨
SA_LTT_UI/SA_LTT/Module/Motor.cs SA_LTT_UI/SA_LTT/Module/PiLaser.cs SA_LTT_UI/SA_LTT/Module/PowerMeter.cs SA_LTT_UI/SA_LTT/Module/PowerPmacCtrl.cs SA_LTT_UI/SA_LTT/Module/PreAligner.cs SA_LTT_UI/SA_LTT/Module/RTC5/RTC5Wrap.cs SA_LTT_UI/SA_LTT/Module/Robot.cs SA_LTT_UI/SA_LTT/Module/Scanner.cs SA_LTT_UI/SA_LTT/Module/VisionControl.cs SA_LTT_UI/SA_LTT/Parameter/ModeParameter.cs SA_LTT_UI/SA_LTT/Parameter/ModeParameterManager.cs SA_LTT_UI/SA_LTT/Parameter/SettingParameter.cs SA_LTT_UI/SA_LTT/Parameter/SettingParameterManager.cs SA_LTT_UI/SA_LTT/Properties/AssemblyInfo.cs SA_LTT_UI/SA_LTT/SA_LTT.csproj SA_LTT_UI/SA_LTT/Sequence.cs SA_LTT_UI/SA_LTT/bin/Debug/EasyModbus.dll SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.dll SA_LTT_UI/SA_LTT/bin/Debug/SA_LTT.pdb SA_LTT_UI/SA_LTT/bin/Debug/log4net.dll SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferences.cache SA_LTT_UI/SA_LTT/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.MessageBoxPad.resources SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CopyComplete SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.CoreCompileInputs.cache SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.FileListAbsolute.txt SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.GenerateResource.cache SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csproj.ResolveComReference.cache SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.csprojAssemblyReference.cache SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.dll SA_LTT_UI/SA_LTT/obj/Debug/SA_LTT.pdb SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs SA_LTT_UI/SA_LTT/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs SA_LTT_UI/SA_LTT_UI.sln SA_LTT_UI/SA_LTT_UI/App.config SA_LTT_UI/SA_LTT_UI/MainFrame.Designer.cs SA_LTT_UI/SA_LTT_UI/MainFrame.cs SA_LTT_UI/SA_LTT_UI/MainFrame.resx SA_LTT_UI/SA_LTT_UI/Program.cs SA_LTT_UI/SA_LTT_UI/Properties/AssemblyInfo.cs SA_LTT_UI/SA_LTT_UI/Properties/Resources.Designer.cs SA_LTT_UI/SA_LTT_UI/Properties/Resources.resx SA_LTT_UI/SA_LTT_UI/Properties/Settings.Designer.cs SA_LTT_UI/SA_LTT_UI/Properties/Settings.settings SA_LTT_UI/SA_LTT_UI/Resources/Alarm.png SA_LTT_UI/SA_LTT_UI/Resources/Aligner.png SA_LTT_UI/SA_LTT_UI/Resources/BuzzerOff.png SA_LTT_UI/SA_LTT_UI/Resources/Chamber.png SA_LTT_UI/SA_LTT_UI/Resources/DIT_Logo.png SA_LTT_UI/SA_LTT_UI/Resources/Lamp.png SA_LTT_UI/SA_LTT_UI/Resources/LoadPort.png SA_LTT_UI/SA_LTT_UI/Resources/RecipeImage.PNG SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm.png SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm1.png SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm2.png SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Body.png SA_LTT_UI/SA_LTT_UI/Resources/Robot_Arm_Hand.png SA_LTT_UI/SA_LTT_UI/Resources/Robot_Body.png SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj SA_LTT_UI/SA_LTT_UI/SA_LTT_UI.csproj.user SA_LTT_UI/SA_LTT_UI/SA_LTT_UI_k5iwqdhu_wpftmp.csproj SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.cs SA_LTT_UI/SA_LTT_UI/Screen/AnalogBar.resx SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml SA_LTT_UI/SA_LTT_UI/Screen/AnimationEquipment.xaml.cs SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml SA_LTT_UI/SA_LTT_UI/Screen/ChamberStatus.xaml.cs SA_LTT_UI/SA_LTT_UI/Screen/IoBar.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/IoBar.cs SA_LTT_UI/SA_LTT_UI/Screen/IoBar.resx SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml SA_LTT_UI/SA_LTT_UI/Screen/RecipeView.xaml.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenAlarmSetting.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenIO.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenLaser.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenLog.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenMain.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenMaintenance.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenMotionMaintenance.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenParameter.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenRecipe.resx SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.Designer.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.cs SA_LTT_UI/SA_LTT_UI/Screen/ScreenSetting.resx SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml SA_LTT_UI/SA_LTT_UI/Screen/WaferProcessPointView.xaml.cs SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/AlarmViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorCalViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/AttenuatorViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ChamberViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ChillerViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/CreateUserViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/EnergyDropCheckViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/EquipmentInfoViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeCreateViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/FoupRecipeSelectViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/LogInViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/MaintenanceViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.cs SA_LTT_UI/SA_LTT_UI/Viewer/MessageBoxPad.resx SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ModifyUserViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/PiLaserViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/PowerMeterViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.cs SA_LTT_UI/SA_LTT_UI/Viewer/PreAlignViwer.resx SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/RecipeCreateViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/RobotViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/ScannerViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/SequenceViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/VisionViewer.resx SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.Designer.cs SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.cs SA_LTT_UI/SA_LTT_UI/Viewer/WaferInfoViewer.resx SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor1746.ct5 SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1.ct5 SA_LTT_UI/SA_LTT_UI/bin/Debug/Cor_1to1_old.ct5 SA_LTT_UI/SA_LTT_UI/bin/Debug/EasyModbus.dll SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DAT.dat SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLL.dll SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5DLLx64.dll SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5OUT.out SA_LTT_UI/SA_LTT_UI/bin/Debug/RTC5RBF.rbf SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Aligner.png SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Chamber.png SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/RecipeImage.PNG SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm.png SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm1.png SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Arm2.png SA_LTT_UI/SA_LTT_UI/bin/Debug/Resources/Robot_Body.png SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.dll SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT.pdb SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.exe.config SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.pdb SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.config SA_LTT_UI/SA_LTT_UI/bin/Debug/SA_LTT_UI.vshost.exe.manifest SA_LTT_UI/SA_LTT_UI/bin/Debug/log4net.dll SA_LTT_UI/SA_LTT_UI/bin/Debug/padDLLBW.dll SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.config SA_LTT_UI/SA_LTT_UI/bin/Debug/pp.vshost.exe.manifest SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferences.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.MainFrame.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Properties.Resources.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.AnalogBar.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.IoBar.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenAlarmSetting.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenIO.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLaser.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenLog.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMain.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMaintenance.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenMotionMaintenance.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenParameter.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenRecipe.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Screen.ScreenSetting.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AlarmViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorCalViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.AttenuatorViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChamberViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ChillerViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.CreateUserViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyDropCheckViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EnergyMeterViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.EquipmentInfoViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeCreateViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.FoupRecipeSelectViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.LogInViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MaintenanceViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.MessageBoxPad.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ModifyUserViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PiLaserViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.PreAlignViwer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RecipeCreateViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.RobotViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.ScannerViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.SequenceViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.VisionViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.Viewer.WaferInfoViewer.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CopyComplete SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.CoreCompileInputs.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.FileListAbsolute.txt SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.GenerateResource.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csproj.ResolveComReference.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.csprojAssemblyReference.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.exe SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.g.resources SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI.pdb SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_Content.g.i.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.i.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/SA_LTT_UI_MarkupCompile.lref SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.baml SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/AnimationEquipment.g.i.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.baml SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/ChamberStatus.g.i.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.baml SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/RecipeView.g.i.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.baml SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/Screen/WaferProcessPointView.g.i.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_Content.g.i.cs SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.cache SA_LTT_UI/SA_LTT_UI/obj/Debug/pp_MarkupCompile.i.lref SA_LTT_UI/가공 설명 Program/TestRec.exe SA_LTT_UI/가공 설명 Program/TestRec.exe.config SA_LTT_UI/가공 설명 Program/TestRec.pdb SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe.config SA_LTT_UI/가공 설명 Program/TestRec.vshost.exe.manifest