Compare commits
81 Commits
master
...
南京百识/develop
Author | SHA1 | Date |
---|---|---|
HCL | 4e4d4b6f73 | |
HCL | 0a5acbe2c4 | |
HCL | 57266bd409 | |
Liang Su | e5588223c3 | |
Liang Su | 01203dddd8 | |
HCL | b7a61b94f2 | |
Liang Su | e84db74cfa | |
Liang Su | 93b4629c1b | |
Liang Su | df602907ae | |
HCL | 0a93ce2716 | |
Liang Su | c6185ffaa6 | |
Liang Su | 75445e26f6 | |
Liang Su | dcc31b0e54 | |
Liang Su | bdb4863c3d | |
Liang Su | 1ccd65d52b | |
Liang Su | 5d7a3d0359 | |
Liang Su | 125e61e9e6 | |
Liang Su | 36746aa3dc | |
Liang Su | 4e18bde2c6 | |
Liang Su | d45edf919a | |
Liang Su | 1f1488ac69 | |
Liang Su | 46dddb83d0 | |
Liang Su | 4ea326c7ec | |
HCL | fd41cbfd52 | |
HCL | e058e5e87e | |
HCL | fcccf77bdd | |
HCL | a12a2e81d9 | |
HCL | d084010a80 | |
Han Qiang Qiang | c0e56cc247 | |
Han Qiang Qiang | 55152da6ca | |
Han Qiang Qiang | ea6568cc64 | |
HCL | b7e1f8fe57 | |
HCL | 840b581c5d | |
Liang Su | 531e19846c | |
Liang Su | 7a0bcc0955 | |
Liang Su | 3fa1aa40e2 | |
Liang Su | a2ef3c4465 | |
Liang Su | 9c8ab26d21 | |
Liang Su | 74cecdc092 | |
Liang Su | 77e0290104 | |
Liang Su | ba4e03a60f | |
SIC1016\caipeilun | 09e9de6186 | |
SIC1016\caipeilun | 0fe67d539e | |
Liang Su | def2528f2b | |
Liang Su | 10183122fd | |
Liang Su | 3ff6140f82 | |
HCL | 8286cfc30e | |
Liang Su | 95ed6aebe6 | |
Liang Su | d2eb98f92b | |
Liang Su | 034e86ff77 | |
Liang Su | 2c2f36a0be | |
Liang Su | c5e398e48e | |
HCL | d10b806d6d | |
Han Qiang Qiang | 0bb75a8497 | |
HCL | 2f70f6e1b5 | |
HCL | c110aa0778 | |
HCL | 4a4148254e | |
HCL | 492828e470 | |
HCL | 00d6356c1b | |
HCL | 2c60ed107f | |
HCL | 8f22a8a0bf | |
HCL | c0e4cadc94 | |
HCL | c9a0b06a00 | |
Han Qiang Qiang | 8c523e3856 | |
SIC1016\caipeilun | 04703f24ab | |
SIC1016\caipeilun | d1fd9d3d9b | |
Han Qiang Qiang | 6698acaa24 | |
SIC1016\caipeilun | c556b86df0 | |
SIC1016\caipeilun | 3b0cd8e2f1 | |
Han Qiang Qiang | 0c6a9f13ba | |
Han Qiang Qiang | e14f17139c | |
Liang Su | 288dabb462 | |
Han Qiang Qiang | 2bf1c99fa3 | |
Han Qiang Qiang | 7995f7b764 | |
Han Qiang Qiang | 9597d1ca77 | |
HCL | 5ea1d7cef1 | |
HCL | 5fa163ee6a | |
HCL | b724377249 | |
HCL | 9b0bd30ceb | |
Han Qiang Qiang | 643cd1c09b | |
Liang Su | 3087988223 |
|
@ -371,3 +371,4 @@ ThirdParty/MECF.Framework/*.xml
|
|||
ThirdParty/MECF.Framework/_gsdata_/
|
||||
Sic08.sln
|
||||
.idea/
|
||||
BuildTools/
|
||||
|
|
|
@ -190,7 +190,7 @@
|
|||
<IoSensorWaterFlowTemp id="FlowTemp4" module="" display="MiddleFlow2(U4)" schematicId="ChamMiddleFlow2Temp" unit="℃"
|
||||
ai="AI_ChamMiddleFlow2Temp"
|
||||
diFlowSW="DI_ChamMiddleFlow2SW"
|
||||
doAlarmHigh="DI_ChamMiddleFlow2SW"
|
||||
doAlarmHigh="DO_ChamMiddleFlow2Temp"
|
||||
doActiveLevel="false"
|
||||
scBasePath="PM.{module}.CoolingWater"
|
||||
scAlarmHigh="ChamMiddleFlow2Temp"
|
||||
|
@ -523,12 +523,12 @@
|
|||
<IoSensor id="SensorSCRLowerTempLAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCRLowerTempLAlarm" infoText="Information37 SCR.Lower.Temp Low[DI-316]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorConfinementRingServoON" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ConfinementRingServoON" infoText="Information38 ConfinementRingServoON [DI-337]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorServoReady" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ServoReady" infoText="Information39 Servo Not Ready [DI-288]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PSU1Status" infoText="Information40 PSU1 Status Is Off[DI-296]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PSU2Status" infoText="Information41 PSU2 Status Is Off[DI-297]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PSU3Status" infoText="Information42 PSU3 Status Is Off[DI-298]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCR1Status" infoText="Information43 SCR1 Status Is Off[DI-302]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCR2Status" infoText="Information44 SCR2 Status Is Off[DI-303]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCR3Status" infoText="Information45 SCR3 Status Is Off[DI-304]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PSU1Status" infoText="Information40 PSU1 Status Is Off[DI-296]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PSU2Status" infoText="Information41 PSU2 Status Is Off[DI-297]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PSU3Status" infoText="Information42 PSU3 Status Is Off[DI-298]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SCR1Status" infoText="Information43 SCR1 Status Is Off[DI-302]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SCR2Status" infoText="Information44 SCR2 Status Is Off[DI-303]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SCR3Status" infoText="Information45 SCR3 Status Is Off[DI-304]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPumpCabDoorClosed" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PumpCabDoorClosed" infoText="Information46 PumpCabDoor Not Closed [DI-71]" warningText="" alarmText="" />
|
||||
</IoSensors>
|
||||
<SicServos classType="Aitex.Core.RT.Device.Devices.SicServo" assembly="MECF.Framework.RT.EquipmentLibrary">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<ProcessDeviceItem Display="Inner temp" Unit="℃" Property="AETemp.Inner" />
|
||||
<ProcessDeviceItem Display="Middle temp" Unit="℃" Property="AETemp.Middle" />
|
||||
<ProcessDeviceItem Display="Outer temp" Unit="℃" Property="AETemp.Outer" />
|
||||
|
||||
|
||||
<ProcessDeviceItem Display="PT1" Unit="KPa" Property="PT1.FeedBack" />
|
||||
<ProcessDeviceItem Display="PT2" Unit="KPa" Property="PT2.FeedBack" />
|
||||
|
||||
|
@ -27,10 +27,15 @@
|
|||
<ProcessDeviceItem Display="SCR3 Resistance" Unit="R" Property="SCR3.ResistanceFeedBack" />
|
||||
<ProcessDeviceItem Display="SCR3 Voltage" Unit="V" Property="SCR3.VoltageFeedBack" />
|
||||
|
||||
<ProcessDeviceItem Display="TV Arms" Unit="A" Property="TV.PositionFeedBack" />
|
||||
<ProcessDeviceItem Display="TV Power" Unit="KW" Property="TV.PositionSetPoint" />
|
||||
<ProcessDeviceItem Display="TV Resistance" Unit="R" Property="TV.PressureFeedBack" />
|
||||
<ProcessDeviceItem Display="TV Voltage" Unit="V" Property="TV.TVValueEnable" />
|
||||
<ProcessDeviceItem Display="TV FB" Unit="%" Property="TV.PositionFeedback" />
|
||||
<ProcessDeviceItem Display="TV Pre FB" Unit="mbar" Property="TV.PressureFeedback" />
|
||||
|
||||
<ProcessDeviceItem Display="PUS1" Unit="%" Property="TC1.L1RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="PUS2" Unit="%" Property="TC1.L2RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="PUS3" Unit="%" Property="TC1.L3RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="SCR1" Unit="%" Property="TC2.L1RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="SCR2" Unit="%" Property="TC2.L2RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="SCR3" Unit="%" Property="TC2.L3RatioSetPoint" />
|
||||
|
||||
<ProcessDeviceItem Display="PSU1 Output Arms" Unit="A" Property="PSU1.OutputArmsFeedBack" />
|
||||
<ProcessDeviceItem Display="PSU1 Output Power" Unit="KW" Property="PSU1.OutputPowerFeedBack" />
|
||||
|
@ -44,7 +49,7 @@
|
|||
<ProcessDeviceItem Display="PSU3 Output Power" Unit="KW" Property="PSU3.OutputPowerFeedBack" />
|
||||
<ProcessDeviceItem Display="PSU3 Output Voltage" Unit="V" Property="PSU3.OutputVoltageFeedBack" />
|
||||
<ProcessDeviceItem Display="PSU3 Resistance" Unit="R" Property="PSU3.Resistance" />
|
||||
|
||||
|
||||
<ProcessDeviceItem Display="MFC1" Unit="SCCM" Property="Mfc1.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC2" Unit="SCCM" Property="Mfc2.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC3" Unit="SCCM" Property="Mfc3.FeedBack" />
|
||||
|
@ -54,14 +59,14 @@
|
|||
<ProcessDeviceItem Display="MFC7" Unit="SCCM" Property="Mfc7.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC8" Unit="SCCM" Property="Mfc8.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC9" Unit="SCCM" Property="Mfc9.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC10" Unit="SCCM" Property="Mfc10.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC10" Unit="SCCM" Property="Mfc10.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC11" Unit="SCCM" Property="Mfc11.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC12" Unit="SCCM" Property="Mfc12.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC13" Unit="SCCM" Property="Mfc13.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC14" Unit="SCCM" Property="Mfc14.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC15" Unit="SCCM" Property="Mfc15.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC16" Unit="SCCM" Property="Mfc16.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC19" Unit="SCCM" Property="Mfc19.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC19" Unit="SCCM" Property="Mfc19.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC20" Unit="SCCM" Property="Mfc20.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC22" Unit="SCCM" Property="Mfc22.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC23" Unit="SCCM" Property="Mfc23.FeedBack" />
|
||||
|
@ -101,14 +106,14 @@
|
|||
<ProcessDeviceItem Display="ATC-4" Unit="℃" Property="LineHeater.OutsidePanelTemp(ATC-4)" />
|
||||
<ProcessDeviceItem Display="ATC-5" Unit="℃" Property="LineHeater.OutsideSHTemp(ATC-5)" />
|
||||
<ProcessDeviceItem Display="ATC-6" Unit="℃" Property="LineHeater.LeakBypassTemp(ATC-6)" />
|
||||
|
||||
|
||||
|
||||
|
||||
<ProcessDeviceItem Display="AccSpeed" Unit="" Property="PMServo.AccSpeedFeedback" />
|
||||
|
||||
|
||||
|
||||
<ProcessDeviceItem Display="AccSpeed" Unit="rpm/min" Property="PMServo.AccSpeedFeedback" />
|
||||
<ProcessDeviceItem Display="ActualCurrent" Unit="A" Property="PMServo.ActualCurrentFeedback" />
|
||||
<ProcessDeviceItem Display="ActualSpeed" Unit="rpm/min" Property="PMServo.ActualSpeedFeedback" />
|
||||
<ProcessDeviceItem Display="DecSpeed" Unit="" Property="PMServo.DecSpeedFeedback" />
|
||||
<ProcessDeviceItem Display="DecSpeed" Unit="rpm/min" Property="PMServo.DecSpeedFeedback" />
|
||||
|
||||
<ProcessDeviceItem Display="Pressure1" Unit="mbar" Property="Pressure1.FeedBack" />
|
||||
<ProcessDeviceItem Display="Pressure2" Unit="mbar" Property="Pressure2.FeedBack" />
|
||||
|
@ -118,8 +123,8 @@
|
|||
<ProcessDeviceItem Display="Pressure6" Unit="mbar" Property="Pressure6.FeedBack" />
|
||||
<ProcessDeviceItem Display="Pressure7" Unit="mbar" Property="Pressure7.FeedBack" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ProcessDeviceItems>
|
||||
|
|
|
@ -185,7 +185,7 @@
|
|||
<IoSensorWaterFlowTemp id="FlowTemp4" module="" display="MiddleFlow2(U4)" schematicId="ChamMiddleFlow2Temp" unit="℃"
|
||||
ai="AI_ChamMiddleFlow2Temp"
|
||||
diFlowSW="DI_ChamMiddleFlow2SW"
|
||||
doAlarmHigh="DI_ChamMiddleFlow2SW"
|
||||
doAlarmHigh="DO_ChamMiddleFlow2Temp"
|
||||
doActiveLevel="false"
|
||||
scBasePath="PM.{module}.CoolingWater"
|
||||
scAlarmHigh="ChamMiddleFlow2Temp"
|
||||
|
@ -516,12 +516,12 @@
|
|||
<IoSensor id="SensorSCRLowerTempLAlarm" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCRLowerTempLAlarm" infoText="Information37 SCR.Lower.Temp Low[DI-316]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorConfinementRingServoON" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ConfinementRingServoON" infoText="Information38 ConfinementRingServoON [DI-337]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorServoReady" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ServoReady" infoText="Information39 Servo Not Ready [DI-288]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PSU1Status" infoText="Information40 PSU1 Status Is Off[DI-296]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PSU2Status" infoText="Information41 PSU2 Status Is Off[DI-297]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_PSU3Status" infoText="Information42 PSU3 Status Is Off[DI-298]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCR1Status" infoText="Information43 SCR1 Status Is Off[DI-302]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCR2Status" infoText="Information44 SCR2 Status Is Off[DI-303]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_SCR3Status" infoText="Information45 SCR3 Status Is Off[DI-304]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PSU1Status" infoText="Information40 PSU1 Status Is Off[DI-296]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PSU2Status" infoText="Information41 PSU2 Status Is Off[DI-297]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPSU3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PSU3Status" infoText="Information42 PSU3 Status Is Off[DI-298]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR1Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SCR1Status" infoText="Information43 SCR1 Status Is Off[DI-302]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR2Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SCR2Status" infoText="Information44 SCR2 Status Is Off[DI-303]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorSCR3Status" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_SCR3Status" infoText="Information45 SCR3 Status Is Off[DI-304]" warningText="" alarmText="" />
|
||||
<IoSensor id="SensorPumpCabDoorClosed" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PumpCabDoorClosed" infoText="Information46 PumpCabDoor Not Closed [DI-71]" warningText="" alarmText="" />
|
||||
</IoSensors>
|
||||
<SicServos classType="Aitex.Core.RT.Device.Devices.SicServo" assembly="MECF.Framework.RT.EquipmentLibrary">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<ProcessDeviceItem Display="Inner temp" Unit="℃" Property="AETemp.Inner" />
|
||||
<ProcessDeviceItem Display="Middle temp" Unit="℃" Property="AETemp.Middle" />
|
||||
<ProcessDeviceItem Display="Outer temp" Unit="℃" Property="AETemp.Outer" />
|
||||
|
||||
|
||||
<ProcessDeviceItem Display="PT1" Unit="KPa" Property="PT1.FeedBack" />
|
||||
<ProcessDeviceItem Display="PT2" Unit="KPa" Property="PT2.FeedBack" />
|
||||
|
||||
|
@ -27,10 +27,15 @@
|
|||
<ProcessDeviceItem Display="SCR3 Resistance" Unit="R" Property="SCR3.ResistanceFeedBack" />
|
||||
<ProcessDeviceItem Display="SCR3 Voltage" Unit="V" Property="SCR3.VoltageFeedBack" />
|
||||
|
||||
<ProcessDeviceItem Display="TV Arms" Unit="A" Property="TV.PositionFeedBack" />
|
||||
<ProcessDeviceItem Display="TV Power" Unit="KW" Property="TV.PositionSetPoint" />
|
||||
<ProcessDeviceItem Display="TV Resistance" Unit="R" Property="TV.PressureFeedBack" />
|
||||
<ProcessDeviceItem Display="TV Voltage" Unit="V" Property="TV.TVValueEnable" />
|
||||
<ProcessDeviceItem Display="TV FB" Unit="%" Property="TV.PositionFeedback" />
|
||||
<ProcessDeviceItem Display="TV Pre FB" Unit="mbar" Property="TV.PressureFeedback" />
|
||||
|
||||
<ProcessDeviceItem Display="PUS1" Unit="%" Property="TC1.L1RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="PUS2" Unit="%" Property="TC1.L2RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="PUS3" Unit="%" Property="TC1.L3RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="SCR1" Unit="%" Property="TC2.L1RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="SCR2" Unit="%" Property="TC2.L2RatioSetPoint" />
|
||||
<ProcessDeviceItem Display="SCR3" Unit="%" Property="TC2.L3RatioSetPoint" />
|
||||
|
||||
<ProcessDeviceItem Display="PSU1 Output Arms" Unit="A" Property="PSU1.OutputArmsFeedBack" />
|
||||
<ProcessDeviceItem Display="PSU1 Output Power" Unit="KW" Property="PSU1.OutputPowerFeedBack" />
|
||||
|
@ -44,7 +49,7 @@
|
|||
<ProcessDeviceItem Display="PSU3 Output Power" Unit="KW" Property="PSU3.OutputPowerFeedBack" />
|
||||
<ProcessDeviceItem Display="PSU3 Output Voltage" Unit="V" Property="PSU3.OutputVoltageFeedBack" />
|
||||
<ProcessDeviceItem Display="PSU3 Resistance" Unit="R" Property="PSU3.Resistance" />
|
||||
|
||||
|
||||
<ProcessDeviceItem Display="MFC1" Unit="SCCM" Property="Mfc1.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC2" Unit="SCCM" Property="Mfc2.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC3" Unit="SCCM" Property="Mfc3.FeedBack" />
|
||||
|
@ -54,14 +59,14 @@
|
|||
<ProcessDeviceItem Display="MFC7" Unit="SCCM" Property="Mfc7.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC8" Unit="SCCM" Property="Mfc8.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC9" Unit="SCCM" Property="Mfc9.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC10" Unit="SCCM" Property="Mfc10.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC10" Unit="SCCM" Property="Mfc10.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC11" Unit="SCCM" Property="Mfc11.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC12" Unit="SCCM" Property="Mfc12.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC13" Unit="SCCM" Property="Mfc13.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC14" Unit="SCCM" Property="Mfc14.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC15" Unit="SCCM" Property="Mfc15.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC16" Unit="SCCM" Property="Mfc16.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC19" Unit="SCCM" Property="Mfc19.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC19" Unit="SCCM" Property="Mfc19.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC20" Unit="SCCM" Property="Mfc20.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC22" Unit="SCCM" Property="Mfc22.FeedBack" />
|
||||
<ProcessDeviceItem Display="MFC23" Unit="SCCM" Property="Mfc23.FeedBack" />
|
||||
|
@ -100,11 +105,11 @@
|
|||
<ProcessDeviceItem Display="ATC-4" Unit="℃" Property="LineHeater.OutsidePanelTemp(ATC-4)" />
|
||||
<ProcessDeviceItem Display="ATC-5" Unit="℃" Property="LineHeater.OutsideSHTemp(ATC-5)" />
|
||||
<ProcessDeviceItem Display="ATC-6" Unit="℃" Property="LineHeater.LeakBypassTemp(ATC-6)" />
|
||||
|
||||
<ProcessDeviceItem Display="AccSpeed" Unit="" Property="PMServo.AccSpeedFeedback" />
|
||||
|
||||
<ProcessDeviceItem Display="AccSpeed" Unit="rpm/min" Property="PMServo.AccSpeedFeedback" />
|
||||
<ProcessDeviceItem Display="ActualCurrent" Unit="A" Property="PMServo.ActualCurrentFeedback" />
|
||||
<ProcessDeviceItem Display="ActualSpeed" Unit="rpm/min" Property="PMServo.ActualSpeedFeedback" />
|
||||
<ProcessDeviceItem Display="DecSpeed" Unit="" Property="PMServo.DecSpeedFeedback" />
|
||||
<ProcessDeviceItem Display="DecSpeed" Unit="rpm/min" Property="PMServo.DecSpeedFeedback" />
|
||||
|
||||
<ProcessDeviceItem Display="Pressure1" Unit="mbar" Property="Pressure1.FeedBack" />
|
||||
<ProcessDeviceItem Display="Pressure2" Unit="mbar" Property="Pressure2.FeedBack" />
|
||||
|
@ -114,8 +119,8 @@
|
|||
<ProcessDeviceItem Display="Pressure6" Unit="mbar" Property="Pressure6.FeedBack" />
|
||||
<ProcessDeviceItem Display="Pressure7" Unit="mbar" Property="Pressure7.FeedBack" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ProcessDeviceItems>
|
||||
|
|
|
@ -78,8 +78,8 @@
|
|||
<IoSensor id="UnloadStationDoorOpened" module="TM" display="" schematicId="" unit="" di="DI_UnloadStationDoorOpened" textOutTrigValue="true" infoText="Information4 UnloadStationDoor.Opened [TDI-3]" warningText="" alarmText="" />
|
||||
<IoSensor id="ReactorADoorClosed" module="TM" display="" schematicId="" unit="" di="DI_ReactorADoorClosed" textOutTrigValue="true" infoText="Information5 ReactorA.Door.Closed [TDI-4]" warningText="" alarmText="" />
|
||||
<IoSensor id="ReactorADoorOpened" module="TM" display="" schematicId="" unit="" di="DI_ReactorADoorOpened" textOutTrigValue="true" infoText="Information6 ReactorA.Door.Opened [TDI-5]" warningText="" alarmText="" />
|
||||
<IoSensor id="ReactorBDoorClosed" module="TM" display="" schematicId="" unit="" di="DI_ReactorBDoorClosed" textOutTrigValue="true" infoText="Information7 ReactorA.Door.Closed [TDI-6]" warningText="" alarmText="" />
|
||||
<IoSensor id="ReactorBDoorOpened" module="TM" display="" schematicId="" unit="" di="DI_ReactorBDoorOpened" textOutTrigValue="true" infoText="Information8 ReactorA.Door.Opened [TDI-7]" warningText="" alarmText="" />
|
||||
<IoSensor id="ReactorBDoorClosed" module="TM" display="" schematicId="" unit="" di="DI_ReactorBDoorClosed" textOutTrigValue="true" infoText="Information7 ReactorB.Door.Closed [TDI-6]" warningText="" alarmText="" />
|
||||
<IoSensor id="ReactorBDoorOpened" module="TM" display="" schematicId="" unit="" di="DI_ReactorBDoorOpened" textOutTrigValue="true" infoText="Information8 ReactorB.Door.Opened [TDI-7]" warningText="" alarmText="" />
|
||||
<IoSensor id="BufferStationDoorClosed" module="Buffer" display="" schematicId="" unit="" di="DI_BufferStationDoorClosed" textOutTrigValue="true" infoText="Information9 BufferStationDoor.Closed [TDI-10]" warningText="" alarmText="" />
|
||||
<IoSensor id="BufferStationDoorOpened" module="Buffer" display="" schematicId="" unit="" di="DI_BufferStationDoorOpened" textOutTrigValue="true" infoText="Information10 BufferStationDoor.Closed [TDI-11]" warningText="" alarmText="" />
|
||||
<IoSensor id="LoadLockGateClosed" module="TM" display="" schematicId="" unit="" di="DI_LoadLockGateClosed" textOutTrigValue="true" infoText="Information11 LoadLockGate.Closed [TDI-22]" warningText="" alarmText="" />
|
||||
|
|
|
@ -243,20 +243,28 @@
|
|||
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
|
||||
<Limit di="TM.DI_LoadLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-13"/>
|
||||
<Limit do="TM.DO_VacRobotExtenLoadEnable" value="false" tip="" tip.zh-CN="" tip.en-US="DO-19"/>
|
||||
<Limit di="TM.DI_RobotOnBackPos" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31"/>
|
||||
</Action>
|
||||
|
||||
<Action do="TM.DO_UnloadStationDoorClose" value="true" tip="" tip.zh-CN="" tip.en-US="DO-11">
|
||||
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
|
||||
<Limit di="TM.DI_UnloadStationLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-14"/>
|
||||
<Limit do="TM.DO_VacRobotExtendUnloadEnable" value="false" tip="" tip.zh-CN="" tip.en-US="DO-20"/>
|
||||
<Limit di="TM.DI_RobotOnBackPos" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31"/>
|
||||
</Action>
|
||||
|
||||
<Action do="TM.DO_RectorADoorClose" value="true" tip="" tip.zh-CN="" tip.en-US="DO-13">
|
||||
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
|
||||
<Limit do="TM.DO_VacRobotExtendPMAEnable" value="false" tip="" tip.zh-CN="" tip.en-US="DO-21"/>
|
||||
<Limit di="TM.DI_RobotOnBackPos" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31"/>
|
||||
</Action>
|
||||
|
||||
<Action do="TM.DO_RectorBDoorClose" value="true" tip="" tip.zh-CN="" tip.en-US="DO-15">
|
||||
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
|
||||
<Limit do="TM.DO_VacRobotExtendPMBEnable" value="false" tip="" tip.zh-CN="" tip.en-US="DO-22"/>
|
||||
<Limit di="TM.DI_RobotOnBackPos" value="true" tip="" tip.zh-CN="" tip.en-US="DI-31"/>
|
||||
</Action>
|
||||
|
||||
<Action do="TM.DO_BufferStationDoorClose" value="true" tip="" tip.zh-CN="" tip.en-US="DO-33">
|
||||
<Limit di="TM.DI_TMLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-12"/>
|
||||
<Limit di="TM.DI_BufferStationLidClosed" value="true" tip="" tip.zh-CN="" tip.en-US="DI-15"/>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Aitex.Core.RT.Device;
|
||||
using Aitex.Core.RT.Device.Devices;
|
||||
using Aitex.Core.RT.Device.Unit;
|
||||
|
@ -156,6 +157,8 @@ namespace SicModules.EFEMs.Routines.Base
|
|||
return false;
|
||||
}
|
||||
|
||||
Task.Delay(1000).Wait();
|
||||
|
||||
return true;
|
||||
|
||||
}, () =>
|
||||
|
@ -320,6 +323,8 @@ namespace SicModules.EFEMs.Routines.Base
|
|||
return false;
|
||||
}
|
||||
|
||||
Task.Delay(1000).Wait();
|
||||
|
||||
return true;
|
||||
|
||||
}, () =>
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassBLInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not map,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not map,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,7 +90,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassBLInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not pick,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not pick,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassBLInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not place,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not place,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassALInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not map,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not map,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassARInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not map,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not map,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassALInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not pick,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not pick,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
if (WaferManager.Instance.GetWafer(_source, _sourceSlot).WaferStatus != WaferStatus.Normal)
|
||||
|
@ -126,7 +126,7 @@ namespace SicModules.EFEMs.Routines
|
|||
}
|
||||
if (!_cassARInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not pick,{_source} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not pick,{_source} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
if (WaferManager.Instance.GetWafer(_source, _sourceSlot).WaferStatus != WaferStatus.Normal)
|
||||
|
|
|
@ -118,7 +118,7 @@ namespace SicModules.EFEMs.Routines
|
|||
{
|
||||
if (!_cassALInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not place,{_target} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not place,{_target} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ namespace SicModules.EFEMs.Routines
|
|||
{
|
||||
if (!_cassARInch.Value)
|
||||
{
|
||||
EV.PostWarningLog(Module, $"Can not place,{_target} sensor check no cassette");
|
||||
EV.PostAlarmLog(Module, $"Can not place,{_target} sensor check no cassette");
|
||||
return Result.FAIL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1490,89 +1490,8 @@ namespace SicModules.PMs
|
|||
return false;
|
||||
}
|
||||
|
||||
private FixSizeQueue<double> InnerTempRecordQueue = new FixSizeQueue<double>(16);
|
||||
private FixSizeQueue<double> MiddleTempRecordQueue = new FixSizeQueue<double>(16);
|
||||
private FixSizeQueue<double> OuterTempRecordQueue = new FixSizeQueue<double>(16);
|
||||
private void MonitorAETempRasingFastAlarm()
|
||||
{
|
||||
var AETempInnerRasingRate = SC.GetValue<double>($"PM.{Module}.Heater.SCRTempRasingRate");
|
||||
var AETempMiddleRasingRate = SC.GetValue<double>($"PM.{Module}.Heater.AETempMiddleRasingRate");
|
||||
var AETempOuterRasingRate = SC.GetValue<double>($"PM.{Module}.Heater.AETempOuterRasingRate");
|
||||
var AETempRasingFastIsAlarm = SC.GetValue<bool>($"PM.{Module}.Heater.AETempRasingFastIsAlarm");
|
||||
|
||||
if (FsmState == (int)STATE.Process)
|
||||
{
|
||||
|
||||
//if (InnerTempRecordQueue.Count == 16)
|
||||
//{
|
||||
// var InnerHalfBeforeAverage = InnerTempRecordQueue.ToList().Take(8).ToList().Average();
|
||||
// var InnerHalfAfterAverage = InnerTempRecordQueue.ToList().Skip(8).ToList().Average();
|
||||
|
||||
// if (Math.Abs(InnerHalfAfterAverage - InnerHalfBeforeAverage) > AETempInnerRasingRate)
|
||||
// {
|
||||
// if (AETempRasingFastIsAlarm)
|
||||
// {
|
||||
// EV.PostAlarmLog(Module, $"AETemp Inner rasing fast");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// EV.PostWarningLog(Module, $"AETemp Inner rasing fast");
|
||||
// }
|
||||
// }
|
||||
|
||||
//}
|
||||
|
||||
if (MiddleTempRecordQueue.Count == 16)
|
||||
{
|
||||
var MiddleHalfBeforeAverage = MiddleTempRecordQueue.ToList().Take(8).ToList().Average();
|
||||
var MiddleHalfAfterAverage = MiddleTempRecordQueue.ToList().Skip(8).ToList().Average();
|
||||
|
||||
if (Math.Abs(MiddleHalfAfterAverage - MiddleHalfBeforeAverage) > AETempMiddleRasingRate)
|
||||
{
|
||||
if (AETempRasingFastIsAlarm)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"AETemp Middle rasing fast");
|
||||
}
|
||||
else
|
||||
{
|
||||
EV.PostWarningLog(Module, $"AETemp Middle rasing fast");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (OuterTempRecordQueue.Count == 16)
|
||||
{
|
||||
var OuterHalfBeforeAverage = MiddleTempRecordQueue.ToList().Take(8).ToList().Average();
|
||||
var OuterHalfAfterAverage = MiddleTempRecordQueue.ToList().Skip(8).ToList().Average();
|
||||
if (Math.Abs(OuterHalfAfterAverage - OuterHalfBeforeAverage) > AETempOuterRasingRate)
|
||||
{
|
||||
if (AETempRasingFastIsAlarm)
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"AETemp Outer rasing fast");
|
||||
}
|
||||
else
|
||||
{
|
||||
EV.PostWarningLog(Module, $"AETemp Outer rasing fast");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
InnerTempRecordQueue.Enqueue(TC1.InnerTemp);
|
||||
MiddleTempRecordQueue.Enqueue(TC1.MiddleTemp);
|
||||
OuterTempRecordQueue.Enqueue(TC1.OuterTemp);
|
||||
|
||||
|
||||
//tempMonitorDT.Start(0);
|
||||
}
|
||||
|
||||
private bool FsmMonitorTask(object[] param)
|
||||
{
|
||||
|
||||
MonitorAETempRasingFastAlarm();
|
||||
|
||||
|
||||
Result ret = MonitorRoutine();
|
||||
if (ret == Result.FAIL)
|
||||
{
|
||||
|
@ -1580,6 +1499,36 @@ namespace SicModules.PMs
|
|||
return false;
|
||||
}
|
||||
|
||||
if (ret == Result.RUN && FsmState == (int)STATE.PreProcess)
|
||||
{
|
||||
if (!_pmInterLock.DoPreprocessRunning)
|
||||
{
|
||||
PostMsg(MSG.Abort);
|
||||
EV.PostWarningLog(Module, "For abnormal PreProcess exit, please check the interlocking conditions.工艺异常退出,请检查互锁条件");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == Result.RUN && FsmState == (int)STATE.Process)
|
||||
{
|
||||
if (!_pmInterLock.DoProcessRunning)
|
||||
{
|
||||
PostMsg(MSG.Abort);
|
||||
EV.PostWarningLog(Module, "For abnormal Process exit, please check the interlocking conditions.工艺异常退出,请检查互锁条件");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == Result.RUN && FsmState == (int)STATE.PostProcess)
|
||||
{
|
||||
if (!_pmInterLock.DoPostProcessRunning)
|
||||
{
|
||||
PostMsg(MSG.Abort);
|
||||
EV.PostWarningLog(Module, "For abnormal PostProcess exit, please check the interlocking conditions.工艺异常退出,请检查互锁条件");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == Result.DONE && FsmState == (int)STATE.PreProcess)
|
||||
{
|
||||
PostMsg(MSG.Process);
|
||||
|
|
|
@ -929,7 +929,14 @@ namespace SicModules.PMs
|
|||
|
||||
public override bool CheckSlitValveClose()
|
||||
{
|
||||
return false; //ChamberDoor.IsClose;
|
||||
if(Module == ModuleName.PM1.ToString())
|
||||
{
|
||||
return DEVICE.GetDevice<IoSensor>("TM.ReactorADoorClosed").Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return DEVICE.GetDevice<IoSensor>("TM.ReactorBDoorClosed").Value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -88,10 +88,14 @@ namespace SicModules.PMs.RecipeExecutions
|
|||
private float _scrL2Ratio = 0;
|
||||
private float _scrL3Ratio = 0;
|
||||
|
||||
private IoInterLock _pmInterLock;
|
||||
|
||||
public PostProcess(ModuleName module, PMModule pm1) : base(module, pm1)
|
||||
{
|
||||
Module = module.ToString();
|
||||
Name = "PostProcess";
|
||||
|
||||
_pmInterLock = DEVICE.GetDevice<IoInterLock>($"{Module}.PMInterLock");
|
||||
}
|
||||
|
||||
protected override Result StartBody(params object[] args)
|
||||
|
@ -123,7 +127,13 @@ namespace SicModules.PMs.RecipeExecutions
|
|||
_scrL1Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRUpperRatio");
|
||||
_scrL2Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRMiddleRatio");
|
||||
_scrL3Ratio = (float)SC.GetValue<double>($"PM.{Module}.ProcessIdle.SCRLowerRatio");
|
||||
|
||||
|
||||
if (!_pmInterLock.SetPMPostProcessRunning(true, out string reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"can not run PostProcess, {reason}");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
Notify("Start");
|
||||
return Result.RUN;
|
||||
}
|
||||
|
@ -228,6 +238,8 @@ namespace SicModules.PMs.RecipeExecutions
|
|||
WaitRotationValve((int)RoutineStep.WaitRotation1, _rotationSpeed, true, _rotationSpeed / 2);
|
||||
|
||||
Cleanup((int)RoutineStep.Cleanup);
|
||||
|
||||
SetRoutinePostRuningDo();
|
||||
}
|
||||
|
||||
private void Cleanup(int stepId)
|
||||
|
@ -252,7 +264,12 @@ namespace SicModules.PMs.RecipeExecutions
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void SetRoutinePostRuningDo()
|
||||
{
|
||||
_pmInterLock.SetPMPostProcessRunning(false, out _);
|
||||
}
|
||||
|
||||
private void CheckRoutineTimeOut()
|
||||
{
|
||||
if (_routineTimeOut > 10)
|
||||
|
|
|
@ -123,6 +123,12 @@ namespace SicModules.PMs.RecipeExecutions
|
|||
{
|
||||
Reset();
|
||||
|
||||
if(!PmDevice.CheckSlitValveClose())
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"can not run process, {Module} SlitValve Opened");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
if (!RecipeParser.Parse(_recipeName, Module, out var recipeHead, out var recipeSteps, out string reason))
|
||||
{
|
||||
Stop($"Load recipe {_recipeName} failed, {reason}");
|
||||
|
|
|
@ -222,7 +222,11 @@ namespace SicModules.PMs.RecipeExecutions
|
|||
_dbCallback.RecipeUpdateStatus(PmDevice.RecipeRunningInfo.InnerId.ToString(), "InProcess");
|
||||
|
||||
WaferManager.Instance.UpdateWaferProcessStatus(ModuleHelper.Converter(Module), 0, WaferProcessStatus.InProcess);
|
||||
WaferManager.Instance.GetWafer(ModuleHelper.Converter(Module), 0).TrayProcessCount--;
|
||||
|
||||
if(WaferManager.Instance.GetWafer(ModuleHelper.Converter(Module), 0).TrayProcessCount >0)
|
||||
{
|
||||
WaferManager.Instance.GetWafer(ModuleHelper.Converter(Module), 0).TrayProcessCount--;
|
||||
}
|
||||
|
||||
_fdc.Reset();
|
||||
|
||||
|
|
|
@ -69,7 +69,8 @@ namespace SicModules.PMs.Routines
|
|||
TimeDelay1,
|
||||
TimeDelay2,
|
||||
TimeDelay3,
|
||||
TimeDelay4
|
||||
TimeDelay4,
|
||||
TimeDelay5
|
||||
}
|
||||
|
||||
public PMChamberMoveBodyRoutine(ModuleName module, PMModule pm1) : base(module, pm1)
|
||||
|
@ -160,6 +161,7 @@ namespace SicModules.PMs.Routines
|
|||
{
|
||||
//开启V76
|
||||
SetIoValueByName((int)RoutineStep.CloseTv75, "V75", false, 2);
|
||||
TimeDelay((int)RoutineStep.TimeDelay5, 2);
|
||||
SetIoValueByName((int)RoutineStep.StepSetTv76, "V76", true, 2);
|
||||
|
||||
TimeDelay((int)RoutineStep.TimeDelay0, 2);
|
||||
|
|
|
@ -124,8 +124,11 @@ namespace SicModules.PMs.Routines
|
|||
ModuleName mod = ModuleHelper.Converter(module);
|
||||
|
||||
WaferManager.Instance.UpdateWaferProcessStatus(mod, slot, WaferProcessStatus.InProcess);
|
||||
WaferManager.Instance.GetWafer(mod, slot).TrayProcessCount--;
|
||||
|
||||
|
||||
if(WaferManager.Instance.GetWafer(mod, slot).TrayProcessCount > 0)
|
||||
{
|
||||
WaferManager.Instance.GetWafer(mod, slot).TrayProcessCount--;
|
||||
}
|
||||
// _pm.OnProcessStart(_guidProcess.ToString(), _paramRecipeName);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -204,6 +204,12 @@ namespace SicModules.PMs.Routines
|
|||
_IoThrottle = DEVICE.GetDevice<IoThrottleValve2>($"{Module}.TV");
|
||||
_pmInterLock = DEVICE.GetDevice<IoInterLock>($"{Module}.PMInterLock");
|
||||
|
||||
if (!PmDevice.CheckSlitValveClose())
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"can not run ProcessIdle, {Module} SlitValve Opened");
|
||||
return Result.FAIL;
|
||||
}
|
||||
|
||||
if (!_pmInterLock.SetPMProcessIdleRunning(true, out string reason))
|
||||
{
|
||||
EV.PostAlarmLog(Module, $"can not run ProcessIdle, {reason}");
|
||||
|
|
|
@ -59,6 +59,10 @@
|
|||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\ThirdParty\MECF.Framework\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Sicentury.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\ThirdParty\MECF.Framework\Sicentury.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
|
|
|
@ -518,20 +518,25 @@ namespace SicModules.TMs.Routines
|
|||
return true;
|
||||
}, () =>
|
||||
{
|
||||
double tmPressure = tm.ChamberPressure;
|
||||
double targetPressure = 0.0;
|
||||
|
||||
if (ModuleHelper.IsPm(_paramTarget))
|
||||
if(isOpen)
|
||||
{
|
||||
targetPressure = DEVICE.GetDevice<IoPressure>($"{module}.PT1").FeedBack;
|
||||
double tmPressure = tm.ChamberPressure;
|
||||
double targetPressure = 0.0;
|
||||
|
||||
if (ModuleHelper.IsPm(_paramTarget))
|
||||
{
|
||||
targetPressure = DEVICE.GetDevice<IoPressure>($"{module}.PT1").FeedBack;
|
||||
}
|
||||
else
|
||||
{
|
||||
Stop($"{module} not define pressure condition");
|
||||
return false;
|
||||
}
|
||||
|
||||
return Math.Abs(tmPressure - targetPressure) <= _maxPressureDiffOpenSlitValve;
|
||||
}
|
||||
else
|
||||
{
|
||||
Stop($"{module} not define pressure condition");
|
||||
return false;
|
||||
}
|
||||
|
||||
return Math.Abs(tmPressure - targetPressure) <= _maxPressureDiffOpenSlitValve;
|
||||
return true;
|
||||
},
|
||||
timeDelay * 1000);
|
||||
|
||||
|
|
|
@ -19,20 +19,20 @@
|
|||
<add key="ClientSettingsProvider.ServiceUri" value=""/>
|
||||
</appSettings>
|
||||
<log4net>
|
||||
<appender name="txtFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||
<param name="File" value="Logs\log" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="StaticLogFileName" value="false" />
|
||||
<datePattern value="yyyyMMdd'.log'" />
|
||||
<encoding value="utf-8" />
|
||||
<maxSizeRollBackups value="120" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%m%n" />
|
||||
<param name="Header" value=" <=====Sic Begin=====> " />
|
||||
<param name="Footer" value=" <=====Sic End=====> " />
|
||||
</layout>
|
||||
</appender>
|
||||
<appender name="txtFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||
<param name="File" value="Logs\log" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Date" />
|
||||
<param name="StaticLogFileName" value="false" />
|
||||
<datePattern value="yyyyMMdd'.log'" />
|
||||
<encoding value="utf-8" />
|
||||
<maxSizeRollBackups value="120" />
|
||||
<layout type="log4net.Layout.PatternLayout,log4net">
|
||||
<param name="ConversionPattern" value="%m%n" />
|
||||
<param name="Header" value=" <=====Sic Begin=====> " />
|
||||
<param name="Footer" value=" <=====Sic End=====> " />
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<level value="ALL"/>
|
||||
<appender-ref ref="txtFileAppender"/>
|
||||
|
|
|
@ -32,6 +32,31 @@ begin
|
|||
GRANT SELECT ON TABLE credentials_history TO postgres;
|
||||
end if;
|
||||
|
||||
------------------------------------------------------------------------------------------------
|
||||
--
|
||||
if not exists(select * from information_schema.tables
|
||||
where
|
||||
table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
|
||||
and table_name = 'recipe_cell_access_permission_whitelist') then
|
||||
|
||||
CREATE TABLE "recipe_cell_access_permission_whitelist"
|
||||
(
|
||||
"uid" text NOT NULL,
|
||||
"recipeName" text NOT NULL,
|
||||
"stepUid" text NOT NULL,
|
||||
"columnName" text NOT NULL,
|
||||
"whoSet" text,
|
||||
"whenSet" timestamp without time zone,
|
||||
CONSTRAINT "recipe_cell_access_permission_whitelist_pkey" PRIMARY KEY ("uid")
|
||||
)
|
||||
WITH (
|
||||
OIDS=FALSE
|
||||
);
|
||||
ALTER TABLE "recipe_cell_access_permission_whitelist"
|
||||
OWNER TO postgres;
|
||||
GRANT SELECT ON TABLE "recipe_cell_access_permission_whitelist" TO postgres;
|
||||
end if;
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------------
|
||||
--
|
||||
|
|
|
@ -195,7 +195,7 @@
|
|||
<EventDefinition>
|
||||
<Id>50</Id>
|
||||
<Description>Process Job Done, Please check wafer at {0} slot {1}</Description>
|
||||
<Level>Warning</Level>
|
||||
<Level>Information</Level>
|
||||
<EventEnum>PJ_DONE</EventEnum>
|
||||
<DetailDesc>ProcessJob结束,Wafer返回到Cassette(有EFEM),或Wafer返回LL(无EFEM)</DetailDesc>
|
||||
<Solution />
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
-->
|
||||
|
||||
<!--注意:"JobDone"为系统保留模式,请支持更改"pattern",其余属性请勿修改 -->
|
||||
<STPattern name="JobDone" pattern="--.........." cycles="3" priority="-1" part="Buzzer" />
|
||||
<STPattern name="JobDone" pattern="--.........." cycles="300" priority="-1" part="Buzzer" />
|
||||
|
||||
<STPattern name="AlarmWithoutAck" pattern="-----....." cycles="-1" priority="0"/>
|
||||
<STPattern name="AlarmAcked" pattern="----------" cycles="-1" priority="1"/>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<config default="true" name="RecipeCascadeLoading" visible="false" description="启用瀑布流方式加载Recipe" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="false" name="RecipeSaveToDB" description="Recipe文件保存到数据库" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false" />
|
||||
<config default="true" name="IsPMHostSignalTower" description="是否使用PM PLC控制三色灯;如果设定为False,则使用TM PLC控制三色灯" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false" />
|
||||
<config default="PerJob" name="ProcessDoneAlertMode" description="工艺完成后的蜂鸣器提示模式" max="" min="" paramter="PerJob;AllJob;PerWafer" tag="ReadOnlySelection" unit="" type="String" />
|
||||
<configs name="Scheduler">
|
||||
<config default="15" name="WaitLoadTimeOut" description="Wait Load TimeOut" max="1000" min="1" paramter="" tag="" unit="s" type="Double" visible="false" />
|
||||
<config default="2" name="WaferCountBelowWhichStartNewProcessJob" description="Wafer Count Below Which Start New Process Job" max="25" min="1" paramter="" tag="" unit="" type="Integer" visible="false" />
|
||||
|
@ -539,7 +540,6 @@
|
|||
<config default="C3H8" name="ChType" description="CH Type" max="" min="" paramter="C2H4;C3H8" tag="ReadOnlySelection" unit="" type="String"/>
|
||||
<config default="10" name="MfcTestingDelayedTime" description="出厂测试MFC,开启后延时时间" max="10000" min="1" paramter="" tag="" unit="秒" type="Integer" visible="false" />
|
||||
<config default="5" name="MfcTestingPercentage" description="合格率上限" max="10000" min="0" paramter="" tag="" unit="%" type="Double" visible="false" />
|
||||
<config default="" name="OpenLidCountDownTime" visible="false" description="临时保存开腔倒计时开始时间" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<configs name="Heater">
|
||||
<config default="false" name="PSUOuterAutoEnable" visible="false" description="PSU Outer是否为Auto控制" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="10" name="TempRampRate" visible="false" description="TC温度每秒调节速率(℃/每秒)" max="100" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
@ -565,7 +565,7 @@
|
|||
<config default="Warning" name="InProcessResistanceFailAlarmLevel" description="工艺过程中检测到电阻超限时产生报警的等级" max="" min="" paramter="Alarm;Warning" tag="ReadOnlySelection" unit="" type="String" />
|
||||
<config default="1" name="InProcessResistanceMonitorIgnoreDuration" description="工艺启动后和结束前的指定时间内忽略电阻超限检查" max="100" min="0" paramter="" tag="" unit="s" type="Double" />
|
||||
|
||||
<config default="true" name="AETempRasingFastIsAlarm" description="AETemp温度上升过快报警类型为Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false" />
|
||||
<config default="false" name="AETempRasingFastIsAlarm" description="AETemp温度上升过快报警类型为Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="100" name="SCRTempRasingRate" description="SCRTemp每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" visible="false" />
|
||||
<config default="20" name="AETempMiddleRasingRate" description="AETemp Middle每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="20" name="AETempOuterRasingRate" description="AETemp Outer每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
@ -887,36 +887,43 @@
|
|||
<config default="5000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC2">
|
||||
<config default="5000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC3">
|
||||
<config default="5000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1900" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC4">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1200" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC5">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1260" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC6">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1260" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC7">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1260" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
</configs>
|
||||
<configs name="ConfinementRing">
|
||||
|
@ -1077,7 +1084,6 @@
|
|||
<config default="C3H8" name="ChType" description="CH Type" max="" min="" paramter="C2H4;C3H8" tag="ReadOnlySelection" unit="" type="String"/>
|
||||
<config default="10" name="MfcTestingDelayedTime" description="出厂测试MFC,开启后延时时间" max="10000" min="1" paramter="" tag="" unit="秒" type="Integer" visible="false" />
|
||||
<config default="5" name="MfcTestingPercentage" description="合格率上限" max="10000" min="0" paramter="" tag="" unit="%" type="Double" visible="false" />
|
||||
<config default="" name="OpenLidCountDownTime" visible="false" description="临时保存开腔倒计时开始时间" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<configs name="Heater">
|
||||
<config default="false" name="PSUOuterAutoEnable" visible="false" description="PSU Outer是否为Auto控制" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="10" name="TempRampRate" visible="false" description="TC温度每秒调节速率(℃/每秒)" max="100" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
@ -1103,7 +1109,7 @@
|
|||
<config default="Warning" name="InProcessResistanceFailAlarmLevel" description="工艺过程中检测到电阻超限时产生报警的等级" max="" min="" paramter="Alarm;Warning" tag="ReadOnlySelection" unit="" type="String" />
|
||||
<config default="1" name="InProcessResistanceMonitorIgnoreDuration" description="工艺启动后和结束前的指定时间内忽略电阻超限检查" max="100" min="0" paramter="" tag="" unit="s" type="Double" />
|
||||
|
||||
<config default="true" name="AETempRasingFastIsAlarm" description="AETemp温度上升过快报警类型为Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="false" />
|
||||
<config default="false" name="AETempRasingFastIsAlarm" description="AETemp温度上升过快报警类型为Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="100" name="SCRTempRasingRate" description="SCRTemp每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" visible="false" />
|
||||
<config default="20" name="AETempMiddleRasingRate" description="AETemp Middle每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
<config default="20" name="AETempOuterRasingRate" description="AETemp Outer每秒的上升速率,超过此范围报警" max="2000" min="0" paramter="" tag="" unit="℃" type="Double" />
|
||||
|
@ -1426,36 +1432,43 @@
|
|||
<config default="5000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC2">
|
||||
<config default="5000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1500" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC3">
|
||||
<config default="5000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1900" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC4">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1200" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC5">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1260" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC6">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1260" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
<configs name="PC7">
|
||||
<config default="10000" name="Scale" description="Scale" max="10000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="1260" name="DefaultSetPoint" description="DefaultSetPoint" max="3000" min="0" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="0" name="Offset" description="PC Offset" max="1000" min="-1000" paramter="" tag="" unit="mbar" type="Double" />
|
||||
<config default="false" name="EnableAlarm" description="Enable Alarm" max="" min="" paramter="" tag="" unit="" type="Bool" visible="true" />
|
||||
</configs>
|
||||
</configs>
|
||||
<configs name="ConfinementRing">
|
||||
|
@ -1666,11 +1679,11 @@
|
|||
<config default="300" name="WaitPressureAboveSetPointTimeout" description="Wait Pressure AboveSetPointTimeout" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
|
||||
</configs>
|
||||
<configs name="MFC">
|
||||
<config default="1.5" name="MinScale" description="MFC Min Scale" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
<config default="10" name="WarningTime" description="设置值和反馈值之差超限后,引发警告的延迟时间" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true" />
|
||||
<config default="5" name="WarningRange" description="(反馈值-设置值)/设置值 * 100% 超过该百分比后,引发警告" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="10" name="AlarmTime" description="设置值和反馈值之差超限后,引发报警的延迟时间" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true" />
|
||||
<config default="10" name="AlarmRange" description="(反馈值-设置值)/设置值 * 100% 超过该百分比后,引发报警" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="1.5" name="MinScale" description="MFC Min Scale" max="100" min="0" paramter="" tag="" unit="%" type="Double" />
|
||||
<config default="10" name="WarningTime" description="设置值和反馈值之差超限后,引发警告的延迟时间" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true" />
|
||||
<config default="5" name="WarningRange" description="(反馈值-设置值)/设置值 * 100% 超过该百分比后,引发警告" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<config default="10" name="AlarmTime" description="设置值和反馈值之差超限后,引发报警的延迟时间" max="300" min="0" paramter="" tag="" unit="s" type="Integer" visible="true" />
|
||||
<config default="10" name="AlarmRange" description="(反馈值-设置值)/设置值 * 100% 超过该百分比后,引发报警" max="100" min="0" paramter="" tag="" unit="%" type="Double" visible="true" />
|
||||
<configs name="Mfc60">
|
||||
<config default="30000" name="N2Scale" description="Scale" max="30000" min="0" paramter="" tag="" unit="sccm" type="Double" />
|
||||
<config default="10000" name="DefaultSetPoint" description="DefaultSetPoint" max="30000" min="0" paramter="" tag="" unit="" type="Double" />
|
||||
|
@ -1919,10 +1932,10 @@
|
|||
<configs name="AETemp">
|
||||
<config default="false" name="EnableDevice" description="AE启用,设置后重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="192.168.1.104:1001" name="Address" description="AE IP address,Default IP: 192.168.1.104:1001" max="" min="" paramter="" tag="" unit="" type="String" />
|
||||
<config default="true" name="Channel1" description="AE通道1禁用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel2" description="AE通道2禁用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel3" description="AE通道3禁用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel4" description="AE通道4禁用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel1" description="AE通道1启用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel2" description="AE通道2启用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel3" description="AE通道3启用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
<config default="true" name="Channel4" description="AE通道4启用,重启生效" max="" min="" paramter="" tag="" unit="" type="Bool" />
|
||||
</configs>
|
||||
|
||||
<configs name="AKunTemp">
|
||||
|
|
|
@ -90,7 +90,7 @@ namespace SicRT.Modules
|
|||
|
||||
DATA.Subscribe("CassAL.LocalJobName", () =>
|
||||
{
|
||||
var jb = _lstControlJobs.FirstOrDefault(x => x.Module == "CassAL");
|
||||
var jb = _lstControlJobs.LastOrDefault(x => x.Module == "CassAL");
|
||||
if (jb != null)
|
||||
return jb.Name;
|
||||
return "";
|
||||
|
@ -106,7 +106,7 @@ namespace SicRT.Modules
|
|||
|
||||
DATA.Subscribe("CassAR.LocalJobName", () =>
|
||||
{
|
||||
var jb = _lstControlJobs.FirstOrDefault(x => x.Module == "CassAR");
|
||||
var jb = _lstControlJobs.LastOrDefault(x => x.Module == "CassAR");
|
||||
if (jb != null)
|
||||
return jb.Name;
|
||||
return "";
|
||||
|
@ -1172,10 +1172,29 @@ namespace SicRT.Modules
|
|||
{
|
||||
if (CheckAllWaferReturned(pj, true) && CheckAllPmCleaned(pj) && CheckAllDummyWaferReturned())
|
||||
{
|
||||
if (_unload.IsAvailable && _buffer.IsAvailable && _tmRobot.IsAvailable && _load.IsAvailable
|
||||
&& _waferRobot.IsAvailable && _unload.NoTray(0)
|
||||
&& _trayRobot.IsAvailable && _tmRobot.NoTray(0)
|
||||
&& _load.NoTray(0) && _waferRobot.NoWafer(0) && _trayRobot.NoTray(0))
|
||||
var isPjDone = true;
|
||||
|
||||
// 检查当前PJ中的所有Wafer是否都回到Cass中,并状态为完成工艺
|
||||
foreach (var wafer in pj.SlotWafers)
|
||||
{
|
||||
// 未找到晶圆信息,可能晶圆已被取走,正在做工艺
|
||||
var waferInfo = GetModule(GetWaferReturnedCassette(wafer.Item1)).GetWaferInfo(wafer.Item2);
|
||||
if (waferInfo == null)
|
||||
{
|
||||
isPjDone = false;
|
||||
break;
|
||||
}
|
||||
|
||||
// wafer回到cass,但晶圆工艺状态不是“完成”或“失败”,表示当前晶圆可能还未做工艺
|
||||
if (waferInfo.ProcessState != WaferProcessStatus.Completed
|
||||
&& waferInfo.ProcessState != WaferProcessStatus.Failed)
|
||||
{
|
||||
isPjDone = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isPjDone)
|
||||
{
|
||||
pj.SetState(EnumProcessJobState.ProcessingComplete);
|
||||
JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
|
||||
|
@ -1254,6 +1273,14 @@ namespace SicRT.Modules
|
|||
}
|
||||
|
||||
JobDataRecorder.EndCJ(cj.InnerId.ToString(), aborted_cj, unprocessed_cj);
|
||||
|
||||
// 如果系统配置的提示条件为PerJob,当CJ结束时提示。
|
||||
var scJobDoneAlert = SC.SafeGetStringValue("System.ProcessDoneAlertMode", "");
|
||||
if(string.IsNullOrEmpty(scJobDoneAlert))
|
||||
LOG.Error("Unable to find System.ProcessDoneAlertMode in system config, JobDone Alert is ignored.");
|
||||
else if (scJobDoneAlert == "PerJob")
|
||||
OP.DoOperation("System.AlertJobDone", ModuleName.System, 0);
|
||||
|
||||
_dbCallback.LotFinished(cj);
|
||||
}
|
||||
}
|
||||
|
@ -1373,7 +1400,16 @@ namespace SicRT.Modules
|
|||
}
|
||||
if (_lstControlJobs.Count == 0)
|
||||
{
|
||||
// 如果系统配置的提示条件为AllJob,当CJ结束时提示。
|
||||
var scJobDoneAlert = SC.SafeGetStringValue("System.ProcessDoneAlertMode", "");
|
||||
if (string.IsNullOrEmpty(scJobDoneAlert))
|
||||
LOG.Error("Unable to find System.ProcessDoneAlertMode in system config, JobDone Alert is ignored.");
|
||||
else if (scJobDoneAlert == "AllJob")
|
||||
OP.DoOperation("System.AlertJobDone", ModuleName.System, 0);
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -1728,6 +1764,20 @@ namespace SicRT.Modules
|
|||
// TM把Wafer和Tray放如UnLoad后,先冷却,再分离,然后取Tray前Purge
|
||||
if (_unload.HasWafer(0) && _unload.HasTray(0))
|
||||
{
|
||||
// Cooling
|
||||
if (!_unload.CheckCoolingCompleted())
|
||||
{
|
||||
GetWaferSequenceCoolingTime(_unload.Module, 0, out int coolingTime);
|
||||
|
||||
if (coolingTime < 1)
|
||||
{
|
||||
coolingTime = 300;
|
||||
}
|
||||
|
||||
_unload.Cooling(true, coolingTime);
|
||||
return;
|
||||
}
|
||||
|
||||
// 取Tray前Purge
|
||||
if (!_unload.CheckPurgedBeforeTrayPicking())
|
||||
{
|
||||
|
@ -1743,14 +1793,6 @@ namespace SicRT.Modules
|
|||
return;
|
||||
}
|
||||
|
||||
// Cooling
|
||||
if (!_unload.CheckCoolingCompleted())
|
||||
{
|
||||
GetWaferSequenceCoolingTime(_unload.Module, 0, out var coolingTime);
|
||||
_unload.Cooling(true, coolingTime);
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果没分离,先分离
|
||||
if (!_unload.CheckWaferTraySeparated())
|
||||
{
|
||||
|
@ -2046,14 +2088,30 @@ namespace SicRT.Modules
|
|||
&& _load.CheckWaferNeedProcess(0);
|
||||
if (canPlace)
|
||||
{
|
||||
if (_load.CheckWaferNeedProcess(0, _pm1.Module) && _tmRobot.GetWaferInfo(0).TrayOriginSlot % 2 == 1)
|
||||
if (_load.CheckWaferNeedProcess(0, _pm1.Module))
|
||||
{
|
||||
return;
|
||||
if(_tmRobot.GetWaferInfo(0).TrayOriginSlot % 2 == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(_buffer.HasTray(0) && _buffer.NoWafer(0))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (_load.CheckWaferNeedProcess(0, _pm2.Module) && _tmRobot.GetWaferInfo(0).TrayOriginSlot % 2 == 0)
|
||||
if (_load.CheckWaferNeedProcess(0, _pm2.Module))
|
||||
{
|
||||
return;
|
||||
if (_tmRobot.GetWaferInfo(0).TrayOriginSlot % 2 == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_buffer.HasTray(1) && _buffer.NoWafer(1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (_load.IsReadyForPlace(ModuleName.TMRobot, 0))
|
||||
|
@ -2929,6 +2987,15 @@ namespace SicRT.Modules
|
|||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(_buffer.HasTrayAndNotExceedProcessCount(0) && _buffer.NoWafer(0)) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(0) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(2) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(4) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(6))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckWaferNeedProcess(position.Module, position.Slot, ModuleName.PM2))
|
||||
|
@ -2937,6 +3004,15 @@ namespace SicRT.Modules
|
|||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(_buffer.HasTrayAndNotExceedProcessCount(1) && _buffer.NoWafer(1)) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(1) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(3) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(5) &&
|
||||
!_cassetteBL.HasTrayAndNotExceedProcessCount(7))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -272,6 +272,9 @@ namespace SicRT.Equipments
|
|||
return Result.RUN;
|
||||
}
|
||||
|
||||
if (!_tmRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
|
||||
if (!_source.IsReadyForPick(ModuleName.TMRobot, _moveTask.SourceSlot))
|
||||
{
|
||||
if (!_source.PrepareTransfer(ModuleName.TMRobot, EnumTransferType.Pick, _moveTask.SourceSlot))
|
||||
|
@ -292,9 +295,6 @@ namespace SicRT.Equipments
|
|||
|
||||
_source.WaitTransfer(ModuleName.TMRobot);
|
||||
}
|
||||
|
||||
if (!_tmRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -312,6 +312,9 @@ namespace SicRT.Equipments
|
|||
if (!_destination.IsAvailable)
|
||||
return Result.RUN;
|
||||
|
||||
if (!_tmRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
|
||||
if (_destination.NoTray(_moveTask.DestinationSlot))
|
||||
{
|
||||
if (!_destination.IsReadyForPlace(ModuleName.TMRobot, _moveTask.DestinationSlot))
|
||||
|
@ -331,9 +334,6 @@ namespace SicRT.Equipments
|
|||
|
||||
_destination.WaitTransfer(ModuleName.TMRobot);
|
||||
}
|
||||
|
||||
if (!_tmRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -447,6 +447,11 @@ namespace SicRT.Equipments
|
|||
return Result.RUN;
|
||||
}
|
||||
|
||||
if (!_waferRobot.IsAvailable)
|
||||
{
|
||||
return Result.RUN;
|
||||
}
|
||||
|
||||
if (!_source.IsReadyForPick(ModuleName.WaferRobot, _moveTask.SourceSlot))
|
||||
{
|
||||
if (!_source.PrepareTransfer(ModuleName.WaferRobot, EnumTransferType.Pick, _moveTask.SourceSlot))
|
||||
|
@ -475,9 +480,6 @@ namespace SicRT.Equipments
|
|||
else
|
||||
_source.WaitTransfer(ModuleName.WaferRobot);
|
||||
}
|
||||
|
||||
if (!_waferRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -495,6 +497,11 @@ namespace SicRT.Equipments
|
|||
if (!_destination.IsAvailable)
|
||||
return Result.RUN;
|
||||
|
||||
if (!_waferRobot.IsAvailable)
|
||||
{
|
||||
return Result.RUN;
|
||||
}
|
||||
|
||||
if (_destination.NoWafer(_moveTask.DestinationSlot))
|
||||
{
|
||||
if (!_destination.IsReadyForPlace(ModuleName.WaferRobot, _moveTask.DestinationSlot))
|
||||
|
@ -522,9 +529,6 @@ namespace SicRT.Equipments
|
|||
else
|
||||
_destination.WaitTransfer(ModuleName.WaferRobot);
|
||||
}
|
||||
|
||||
if (!_waferRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -637,6 +641,11 @@ namespace SicRT.Equipments
|
|||
return Result.RUN;
|
||||
}
|
||||
|
||||
if (!_trayRobot.IsAvailable)
|
||||
{
|
||||
return Result.RUN;
|
||||
}
|
||||
|
||||
if (!_source.IsReadyForPick(ModuleName.TrayRobot, _moveTask.SourceSlot))
|
||||
{
|
||||
if (!_source.PrepareTransfer(ModuleName.TrayRobot, EnumTransferType.Pick, _moveTask.SourceSlot))
|
||||
|
@ -662,9 +671,6 @@ namespace SicRT.Equipments
|
|||
|
||||
_source.WaitTransfer(ModuleName.TrayRobot);
|
||||
}
|
||||
|
||||
if (!_trayRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -682,6 +688,9 @@ namespace SicRT.Equipments
|
|||
if (!_destination.IsAvailable)
|
||||
return Result.RUN;
|
||||
|
||||
if (!_trayRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
|
||||
if (_destination.NoTray(_moveTask.DestinationSlot))
|
||||
{
|
||||
if (!_destination.IsReadyForPlace(ModuleName.TrayRobot, _moveTask.DestinationSlot))
|
||||
|
@ -706,9 +715,6 @@ namespace SicRT.Equipments
|
|||
|
||||
_destination.WaitTransfer(ModuleName.TrayRobot);
|
||||
}
|
||||
|
||||
if (!_trayRobot.IsAvailable)
|
||||
return Result.RUN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using Aitex.Core.RT.SCCore;
|
||||
using SicModules.Cassettes;
|
||||
using SicModules.PMs;
|
||||
using SicRT.Equipments.Systems;
|
||||
|
@ -108,8 +108,11 @@ namespace SicRT.Modules.Schedulers
|
|||
&& _lastTransferAction == TaskType.Place
|
||||
&& WaferManager.Instance.CheckHasWafer(_module, _lastTransferSlot))
|
||||
{
|
||||
//EV.PostMessage(Module.ToString(), EventEnum.PJ_DONE, _module, (_lastTransferSlot + 1).ToString());
|
||||
OP.DoOperation("System.AlertJobDone", _module, _lastTransferSlot + 1);
|
||||
var scJobDoneAlert = SC.SafeGetStringValue("System.ProcessDoneAlertMode", "");
|
||||
if (string.IsNullOrEmpty(scJobDoneAlert))
|
||||
LOG.Error("Unable to find System.ProcessDoneAlertMode in system config, JobDone Alert is ignored.");
|
||||
else if (scJobDoneAlert == "PerWafer")
|
||||
OP.DoOperation("System.AlertJobDone", _module, _lastTransferSlot + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -627,6 +627,12 @@ namespace SicRT.Equipments.Systems
|
|||
return true;
|
||||
});
|
||||
|
||||
OP.Subscribe("System.BuzzerOff", (s, objects) =>
|
||||
{
|
||||
EV.AckAlarmEvents();
|
||||
_mainSignalTower.SwitchOffBuzzer(true);
|
||||
return true;
|
||||
});
|
||||
|
||||
#region Recipe Editor Lock Password Management
|
||||
|
||||
|
@ -671,26 +677,23 @@ namespace SicRT.Equipments.Systems
|
|||
|
||||
private void Instance_OnAlarmEvent(EventItem obj)
|
||||
{
|
||||
FSM_MSG msg;
|
||||
if (obj.Level == EventLevel.Warning)
|
||||
msg = FSM_MSG.WARNING;
|
||||
else if (obj.Level == EventLevel.Alarm)
|
||||
if (obj.Level is EventLevel.Alarm or EventLevel.Warning)
|
||||
{
|
||||
msg = FSM_MSG.ALARM;
|
||||
// 产生新的警告或报警时,取消Buzzer静音
|
||||
_mainSignalTower?.SwitchOffBuzzer(false);
|
||||
|
||||
if(obj.Source == null)
|
||||
{
|
||||
// 如果是Warning
|
||||
if (obj.Level == EventLevel.Warning)
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果设备产生报警,则向设备所在的Module发送状态机信号,切换到Error状态。
|
||||
if (obj.Source == null)
|
||||
return;
|
||||
|
||||
// 产生报警后,立即将报警设备所在的Module强制切换到Error状态。
|
||||
if (Modules.ContainsKey(ModuleHelper.Converter(obj.Source)))
|
||||
{
|
||||
Modules[ModuleHelper.Converter(obj.Source)]?.PostMsg(msg, obj.Id, obj.Description);
|
||||
Modules[ModuleHelper.Converter(obj.Source)]?.PostMsg(FSM_MSG.ALARM, obj.Id, obj.Description);
|
||||
}
|
||||
|
||||
// 产生新的报警时,重新启用Buzzer
|
||||
_mainSignalTower?.SwitchOffBuzzer(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
using SicRT.Equipments.Systems;
|
||||
using Aitex.Core.RT.IOCore.Interlock;
|
||||
using SicRT.Equipments.Systems;
|
||||
using MECF.Framework.UI.Client.TrayThickness.HistoryData;
|
||||
using MECF.Framework.Common.Aitex.Core.Common.DeviceData;
|
||||
using Aitex.Core.Util;
|
||||
|
||||
namespace SicRT.Instances
|
||||
{
|
||||
|
@ -65,21 +67,28 @@ namespace SicRT.Instances
|
|||
// 若过早的使能DeviceManager,被卸载的Module可能产生误报警。
|
||||
Singleton<DeviceEntity>.Instance.Initialize();
|
||||
|
||||
// make sure the PLC data has been synced at least once to avoid erroneous warnings or alarms.
|
||||
IoProviderManager.Instance.WaitFirstSync(5000);
|
||||
|
||||
HistoryCoatingManager.Instance.Initialize();
|
||||
|
||||
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.TM].IsInstalled)
|
||||
IoManager.Instance.Initialize(PathManager.GetCfgDir() + "tm\\interlock.xml");
|
||||
Singleton<InterlockManager>.Instance.Initialize(PathManager.GetCfgDir() + "tm\\interlock.xml", IoManager.Instance);
|
||||
|
||||
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1].IsInstalled)
|
||||
IoManager.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm1\\interlockPM1.xml");
|
||||
Singleton<InterlockManager>.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm1\\interlockPM1.xml", IoManager.Instance);
|
||||
|
||||
if (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM2].IsInstalled)
|
||||
IoManager.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm2\\interlockPM2.xml");
|
||||
Singleton<InterlockManager>.Instance.Initialize($"{PathManager.GetCfgDir()}pm\\pm2\\interlockPM2.xml", IoManager.Instance);
|
||||
|
||||
|
||||
|
||||
Singleton<ProcessHistoryItemsDefault>.Instance.Initialize();
|
||||
|
||||
//! DataCollectionManager必须在最后初始化,否则在其之后注册的DATA数据均会被忽略
|
||||
Singleton<DataCollectionManager>.Instance.Initialize();
|
||||
|
||||
Singleton<ProcessHistoryItemsDefault>.Instance.Initialize();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -51,5 +51,5 @@ using System.Windows;
|
|||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
// 方法是按如下所示使用“*”: :
|
||||
|
||||
[assembly: AssemblyVersion("1.1.4.15")]
|
||||
[assembly: AssemblyInformationalVersion("自动通用版(有EFEM)")]
|
||||
[assembly: AssemblyVersion("1.1.10.34")]
|
||||
[assembly: AssemblyInformationalVersion("南京百识专用")]
|
|
@ -3,81 +3,276 @@
|
|||
Auto-GE 自动通用版(适用有EFEM设备)
|
||||
|
||||
----
|
||||
## Version 1.1.10.34
|
||||
**2024-10-08**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
- 新特性
|
||||
- 1.PM开腔时关闭V75后延时2s再打开V76阀
|
||||
|
||||
## Version 1.1.10.33
|
||||
**2024-09-26**
|
||||
|
||||
- Bug修复
|
||||
- 修正Buzzer静音后,日志文件尺寸会快速增长的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.9.32
|
||||
**2024-09-14**
|
||||
|
||||
- Bug修复
|
||||
- 修正AutoRunning过程中再CreateJob JobName不会改变的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.9.31
|
||||
**2024-09-11**
|
||||
|
||||
- Bug修复
|
||||
- 修正Job结束后,蜂鸣器无法被禁用的问题
|
||||
- 修正WaferRobot从Aligner取片时,连续按Reset,Aligner上的Wafer信息可能丢失的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
|
||||
## Version 1.1.8.30
|
||||
**2024-08-22**
|
||||
|
||||
- Bug修复
|
||||
- 修正当多个CJ执行时,单个PJ无法正确结束的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.7.29
|
||||
**2024-08-12**
|
||||
|
||||
- Bug修复
|
||||
- 修正工艺中温度变化速率过快时,报警不准确的问题
|
||||
- 修正系统配置列表太宽,Set按钮被遮挡的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.6.28
|
||||
**2024-07-29**
|
||||
|
||||
- Bug修复
|
||||
- 修正安装后配置文件被覆盖的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.5.27
|
||||
**2024-07-23**
|
||||
|
||||
- Bug修复
|
||||
- 修正多个CJ运行时,单个Job结束后,无法响蜂鸣器提示的问题
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.4.26
|
||||
**2024-07-04**
|
||||
|
||||
- Bug修复
|
||||
- 1.修正PM PostProcess关闭DO-PostProcessRunning导致Warning的问题
|
||||
|
||||
|
||||
## Version 1.1.4.25
|
||||
**2024-07-01**
|
||||
|
||||
- Bug修复
|
||||
- 1.修正PM PostProcess结束后未关闭DO-PostProcessRunning的问题
|
||||
-
|
||||
- 新特性
|
||||
-
|
||||
-
|
||||
## Version 1.1.4.24
|
||||
**2024-06-24**
|
||||
|
||||
- Bug修复
|
||||
- 1.修正AutoTransfer中Buffer有对应的空盘,TMRobot将Unload出来的盘送到Load中导致流程被宕的问题
|
||||
-
|
||||
- 新特性
|
||||
-
|
||||
|
||||
## Version 1.1.4.23
|
||||
**2024-05-07**
|
||||
|
||||
- Bug修复
|
||||
- 1.修正Interlock有时不起作用的BUG
|
||||
-
|
||||
- 新特性
|
||||
- 1.在PreProcess、Procss、PostProcess过程中检查对应的DO-PreProcessRunning、DO-ProcessRunning、DO-PostProcessRunning信号,
|
||||
- 若为false则PM宕机
|
||||
-
|
||||
## Version 1.1.4.2104
|
||||
**2024-04-22**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
- 新特性
|
||||
- 添加Process历史数据导出功能
|
||||
-
|
||||
|
||||
|
||||
## Version 1.1.4.2103
|
||||
**2024-04-19**
|
||||
|
||||
- Bug修复
|
||||
- 1.修正上银Robot Pick和Place过程中可能出现动作未执行完流程已走完的问题
|
||||
- 新特性
|
||||
-
|
||||
-
|
||||
## Version 1.1.4.2102
|
||||
**2024-03-20**
|
||||
|
||||
- Bug修复
|
||||
- 1.解决Robot 手动Pick和Place时偶尔出现多次进入Pick和Place问题
|
||||
- 新特性
|
||||
-
|
||||
|
||||
## Version 1.1.4.2101
|
||||
**2024-03-07**
|
||||
|
||||
- Bug修复
|
||||
- 修正IO列表打开过慢的问题
|
||||
- 新特性
|
||||
- Unload先Cooling再Purge
|
||||
- Recipe对比界面添加刷按钮
|
||||
- 昂坤测温配置节点读取错误修改
|
||||
- Process单步历史记录,非数据类型配置项不获取值
|
||||
- Process单步历史记录,添加配置项新增查询内容
|
||||
- Unload先Cooling再Purge
|
||||
- 工艺结束蜂鸣器提示时机可配置为Job结束,或Wafer结束
|
||||
|
||||
## Version 1.1.4.21
|
||||
**2024-02-02**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
- 新特性
|
||||
-1.ProcessIdle前增加闸板阀关闭检查
|
||||
-2.Process前增加闸板阀关闭检查
|
||||
-3.隔热罩升起时检测TMRobot Extend Enable信号
|
||||
|
||||
|
||||
## Version 1.1.4.20
|
||||
**2024-02-01**
|
||||
|
||||
- Bug修复
|
||||
- 1.添加TM DO09、DO11、DO13、DO15与DI-31的互锁
|
||||
- 新特性
|
||||
-
|
||||
## Version 1.1.4.19
|
||||
**2024-01-25**
|
||||
|
||||
- Bug修复
|
||||
- 1.Robot的状态提示Warning改为Info
|
||||
- 新特性
|
||||
|
||||
-
|
||||
## Version 1.1.4.18
|
||||
**2024-01-23**
|
||||
|
||||
- Bug修复
|
||||
- 修正EFEM Aligner 功能按钮不生效的问题
|
||||
- 新特性
|
||||
- EFEM界面Aligner 功能可以显示参数,Simulator对新的Aligner指令进行响应
|
||||
- PC报警无输出内容,添加配置项
|
||||
## Version 1.1.4.17
|
||||
**2024-01-18**
|
||||
|
||||
- Bug修复
|
||||
- 修正安装文件中错误包含_AccountEx.xml的问题
|
||||
- 新特性
|
||||
- 优化Process历史记录查询
|
||||
- 控件模块是否在线禁用右击菜单和拖拽,修改模块PM1,PM1,Load,UnLoad
|
||||
|
||||
## Version 1.1.4.16
|
||||
**2024-01-15**
|
||||
|
||||
- Bug修复
|
||||
- 修改PM和TM闸板阀,打开和关闭时的检测逻辑
|
||||
- 取Wafer时判断Buffer和Cassette里是否有对应的Tray
|
||||
- Cassette不存在由Warning改为Alarm
|
||||
- PM CoolingWater U4 D0-195,配置项修改
|
||||
- 新特性
|
||||
- 无
|
||||
|
||||
## Version 1.1.4.15
|
||||
**2024-01-09**
|
||||
|
||||
- Bug修复
|
||||
- 修正多次Logout、Login操作后,UI会变卡顿的问题
|
||||
- 修正多次Logout、Login操作后,UI会变卡顿的问题
|
||||
|
||||
- 新特性
|
||||
- 无
|
||||
- 无
|
||||
|
||||
|
||||
## Version 1.1.4.14
|
||||
**2024-01-05**
|
||||
|
||||
- Bug修复
|
||||
- 修改TMRobot Pick Buffer1层条件判断的BUG
|
||||
- 修改TMRobot Pick Buffer1层条件判断的BUG
|
||||
|
||||
- 新特性
|
||||
- ReturnAll里Unload冷却时间定为300s
|
||||
- ReturnAll里Unload冷却时间定为300s
|
||||
|
||||
## Version 1.1.4.13
|
||||
**2023-12-28**
|
||||
|
||||
- Bug修复
|
||||
- 修正工艺结束后,蜂鸣器提示无法自动关闭的问题
|
||||
- 修正加载Interlock配置文件时,引发集合枚举时发生变化的异常的问题
|
||||
- 修正工艺结束后,蜂鸣器提示无法自动关闭的问题
|
||||
- 修正加载Interlock配置文件时,引发集合枚举时发生变化的异常的问题
|
||||
- 新特性
|
||||
- VT阀添加Reset功能
|
||||
- VT阀添加Reset功能
|
||||
|
||||
|
||||
## Version 1.1.4.12
|
||||
**2023-12-28**
|
||||
|
||||
- Bug修复
|
||||
- 无
|
||||
- 无
|
||||
- 新特性
|
||||
- VT阀添加Reset功能
|
||||
- VT阀添加Reset功能
|
||||
|
||||
## Version 1.1.4.11
|
||||
**2023-12-22**
|
||||
|
||||
- Bug修复
|
||||
- 蝶阀StopRame改成将计时器停止
|
||||
- 蝶阀StopRame改成将计时器停止
|
||||
- 新特性
|
||||
-
|
||||
-
|
||||
|
||||
## Version 1.1.4.10
|
||||
**2023-12-15**
|
||||
|
||||
- Bug修复
|
||||
- InterlockManager中Monitor扫描忽略翻转时,键值对集合中不包含对象时,continue当前循环
|
||||
- InterlockManager中Monitor扫描忽略翻转时,键值对集合中不包含对象时,continue当前循环
|
||||
- 新特性
|
||||
- 添加ProcessHistory历史记录查询
|
||||
- 重新整理测温部分
|
||||
- 添加ProcessHistory历史记录查询
|
||||
- 重新整理测温部分
|
||||
|
||||
## Version 1.1.4.9
|
||||
**2023-12-11**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
-
|
||||
- 新特性
|
||||
- TM和仿真添加DI-45点位,TM添加DI-45对应的Seneor
|
||||
- 在UnLoadSeparateRoutine中添加DI-45检测逻辑
|
||||
- 在SC UnLoad中配置SeparationLog报警等级
|
||||
- TM和仿真添加DI-45点位,TM添加DI-45对应的Seneor
|
||||
- 在UnLoadSeparateRoutine中添加DI-45检测逻辑
|
||||
- 在SC UnLoad中配置SeparationLog报警等级
|
||||
|
||||
|
||||
## Version 1.1.4.8
|
||||
**2023-12-08**
|
||||
|
||||
- Bug修复
|
||||
- 修正删除和另存为Recipe时,弹出空对话框的问题
|
||||
- 修正新建Recipe时,默认保存上个打开的Recipe的内容的问题
|
||||
- 修正Sequence编辑器中的Recipe文件名中没有显示其所在文件夹名称的问题
|
||||
- 修正删除和另存为Recipe时,弹出空对话框的问题
|
||||
- 修正新建Recipe时,默认保存上个打开的Recipe的内容的问题
|
||||
- 修正Sequence编辑器中的Recipe文件名中没有显示其所在文件夹名称的问题
|
||||
- 新特性
|
||||
- 无
|
||||
- 无
|
||||
|
||||
|
||||
## Version 1.1.4.7
|
||||
|
@ -162,7 +357,7 @@ Auto-GE 自动通用版(适用有EFEM设备)
|
|||
**2023-11-14**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
-
|
||||
- 新特性
|
||||
- 气柜加热带温度监控,使用单通道参数设置,在SC配置中PM.PM1.GasBoxTemp PM.PM2.GasBoxTemp
|
||||
|
||||
|
@ -170,48 +365,48 @@ Auto-GE 自动通用版(适用有EFEM设备)
|
|||
**2023-11-02**
|
||||
|
||||
- Bug修复
|
||||
-
|
||||
-
|
||||
- 新特性
|
||||
- 气柜加热带温度监控,使用单通道参数设置,在SC配置中PM.PM1.GasBoxTemp PM.PM2.GasBoxTemp
|
||||
|
||||
## Version 1.1.32.52
|
||||
**2023-10-26**
|
||||
- Bug修复
|
||||
- 修正当Recipe参数无法从格式模板中找到时,没有详细错误提示的问题
|
||||
- 根据PM1的IO报警信息配置PM2配置,修改PM2水温报警
|
||||
- PM offline 前加入install判断,未加载的PM腔不进行offline提示
|
||||
- 删除PM的DI-29点位及报警信息
|
||||
- 删除AE多余检测
|
||||
- 修正当Recipe参数无法从格式模板中找到时,没有详细错误提示的问题
|
||||
- 根据PM1的IO报警信息配置PM2配置,修改PM2水温报警
|
||||
- PM offline 前加入install判断,未加载的PM腔不进行offline提示
|
||||
- 删除PM的DI-29点位及报警信息
|
||||
- 删除AE多余检测
|
||||
- 新特性
|
||||
- PM offline 前加入install判断,未加载的PM腔不进行offline提示
|
||||
- 自动设备增加inch类型参数选项
|
||||
- Recipe对比功能
|
||||
- PM offline 前加入install判断,未加载的PM腔不进行offline提示
|
||||
- 自动设备增加inch类型参数选项
|
||||
- Recipe对比功能
|
||||
|
||||
|
||||
## Version 1.1.31.51
|
||||
**2023-10-20**
|
||||
|
||||
- Bug修复
|
||||
- 修改部分data绑定不保存数据库
|
||||
- 修复Interlock项: do-100 和 do-49触发前 di-9 必须为0
|
||||
- 修复 EFEM SlitValueRoutine 触发时提示文本缺失名称
|
||||
- 修改部分data绑定不保存数据库
|
||||
- 修复Interlock项: do-100 和 do-49触发前 di-9 必须为0
|
||||
- 修复 EFEM SlitValueRoutine 触发时提示文本缺失名称
|
||||
- 新特性
|
||||
- 新增配置对比功能,每次开RT时提示配置修改项,并在配置界面显示修改过的内容,并可以回退配置
|
||||
- 每次配置文件变更都有备份,也可从本地进行修复
|
||||
- interlock表更新 不同腔体开门时需要判断两个腔体压差在范围内
|
||||
|
||||
- 每次配置文件变更都有备份,也可从本地进行修复
|
||||
- interlock表更新 不同腔体开门时需要判断两个腔体压差在范围内
|
||||
|
||||
## Version 1.1.31.50
|
||||
**2023-10-20**
|
||||
|
||||
- Bug修复
|
||||
|
||||
|
||||
- 新特性
|
||||
- 新增伊顿eaton UPS配置及监控,可在DEVICE界面查看
|
||||
## Version 1.1.31.49
|
||||
**2023-10-19**
|
||||
|
||||
- Bug修复
|
||||
|
||||
|
||||
- 新特性
|
||||
- 添加昂坤双通道获取温度
|
||||
- 昂坤添加测温参数可配置
|
||||
|
@ -220,7 +415,7 @@ Auto-GE 自动通用版(适用有EFEM设备)
|
|||
**2023-10-18**
|
||||
|
||||
- Bug修复
|
||||
|
||||
|
||||
- 新特性
|
||||
- 删除PM Interlock配置的DI-29
|
||||
- PM K阀组增加V111控制
|
||||
|
@ -229,13 +424,13 @@ Auto-GE 自动通用版(适用有EFEM设备)
|
|||
**2023-09-15**
|
||||
|
||||
- Bug修复
|
||||
|
||||
|
||||
|
||||
- 新特性
|
||||
- interlock_bypass分腔体单独控制
|
||||
- interlock表更新
|
||||
- 不同recipe的data曲线数据对比功能
|
||||
-
|
||||
-
|
||||
------
|
||||
## Version 1.1.30.46
|
||||
**2023-09-15**
|
||||
|
@ -339,9 +534,9 @@ Auto-GE 自动通用版(适用有EFEM设备)
|
|||
- 修正ProcessMonitor窗口打开时,Logout时没有自动关闭该窗口的问题
|
||||
- 新特性
|
||||
- 优化旁路互锁打开时的执行逻辑
|
||||
- 禁止手动启动工艺
|
||||
- 禁止PM从Offline切换至Online
|
||||
- 禁止PM退出Service模式
|
||||
- 禁止手动启动工艺
|
||||
- 禁止PM从Offline切换至Online
|
||||
- 禁止PM退出Service模式
|
||||
- LL Lid打开时输出信息等级由Warning更改为Info
|
||||
- PM Process结束,磁流体转速将为0后的输出信息等级由Warning更改为Info
|
||||
- 软件信息增加“Auto-GE”字串,指示当前版本为自动通用版
|
||||
|
|
|
@ -105,6 +105,9 @@
|
|||
<Reference Include="MECF.Framework.UI.Core">
|
||||
<HintPath>..\ThirdParty\MECF.Framework\MECF.Framework.UI.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Sicentury.Core">
|
||||
<HintPath>..\ThirdParty\MECF.Framework\Sicentury.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
;Name and file
|
||||
Name "Sic ${ver1}.${ver2}.${ver3}.${ver4}"
|
||||
OutFile "Sic_自动通用有EFEM_Setup_v${ver1}.${ver2}.${ver3}.${ver4}.exe"
|
||||
OutFile "Sic百识_Setup_v${ver1}.${ver2}.${ver3}.${ver4}.exe"
|
||||
|
||||
;Default installation folder
|
||||
;InstallDir "$LOCALAPPDATA\Modern UI Test"
|
||||
|
|
|
@ -579,11 +579,18 @@ xcopy /e "$(ProjectDir)..\..\SicRT\bin\Debug\*.*" "$(ProjectDir)..\Packages\SicR
|
|||
|
||||
echo 清理SicRT文件夹
|
||||
del "$(ProjectDir)..\Packages\SicRT\*.pdb"
|
||||
del "$(ProjectDir)..\Packages\SicRT\config\_sc.*"
|
||||
del "$(ProjectDir)..\Packages\SicRT\config\_scdatachangedlog.txt"
|
||||
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Config\Account\_Account.xml" del "$(ProjectDir)..\Packages\SicRT\Config\Account\_Account.xml"
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Objects" del "$(ProjectDir)..\Packages\SicRT\Objects\*.obj"
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Config\Account\_AccountEx.xml" del "$(ProjectDir)..\Packages\SicRT\Config\Account\_AccountEx.xml"
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Config\ConfigBackup" rd "$(ProjectDir)..\Packages\SicRT\Config\ConfigBackup" /s /q
|
||||
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Objects" rd "$(ProjectDir)..\Packages\SicRT\Objects" /s /q
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Maintain" rd "$(ProjectDir)..\Packages\SicRT\Maintain" /s /q
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Logs" rd "$(ProjectDir)..\Packages\SicRT\Logs" /s /q
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Recipes" rd "$(ProjectDir)..\Packages\SicRT\Recipes" /s /q</PreBuildEvent>
|
||||
if exist "$(ProjectDir)..\Packages\SicRT\Recipes" rd "$(ProjectDir)..\Packages\SicRT\Recipes" /s /q
|
||||
</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>echo 清理旧的打包文件。。。
|
||||
|
|
|
@ -5,11 +5,17 @@
|
|||
xmlns:Common="clr-namespace:SicUI.Controls.Common"
|
||||
xmlns:controls="clr-namespace:SicUI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
|
||||
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
|
||||
xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="38"
|
||||
d:DesignWidth="416"
|
||||
mc:Ignorable="d">
|
||||
mc:Ignorable="d"
|
||||
x:Name="mainw">
|
||||
<UserControl.Resources>
|
||||
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"/>
|
||||
</UserControl.Resources>
|
||||
<Viewbox Stretch="Uniform">
|
||||
<Canvas
|
||||
x:Name="root"
|
||||
|
@ -66,10 +72,16 @@
|
|||
</Common:AxisCanvas>
|
||||
<Canvas.RenderTransform>
|
||||
<TransformGroup>
|
||||
<RotateTransform Angle="{Binding RotateAngle}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding TranslateX}" />
|
||||
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" />
|
||||
</TransformGroup>
|
||||
</Canvas.RenderTransform>
|
||||
<!--<Canvas.RenderTransform>
|
||||
<TransformGroup>
|
||||
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX}" />
|
||||
</TransformGroup>
|
||||
</Canvas.RenderTransform>-->
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
</UserControl>
|
||||
|
|
|
@ -49,19 +49,25 @@ namespace SicUI.Controls.M2C4Parts
|
|||
public static readonly DependencyProperty ShowDockProperty =
|
||||
DependencyProperty.Register("ShowDock", typeof(bool), typeof(AtmRobotMultiLP), new PropertyMetadata(false));
|
||||
|
||||
// Using a DependencyProperty as the backing store for RotateAngel. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty RotateAngleProperty =
|
||||
DependencyProperty.Register("RotateAngel", typeof(int), typeof(AtmRobotMultiLP), new PropertyMetadata(0));
|
||||
|
||||
public int TranslateX
|
||||
public double RotateAngle
|
||||
{
|
||||
get { return (int)GetValue(TranslateXProperty); }
|
||||
get { return (double)GetValue(RotateAngleProperty); }
|
||||
set { SetValue(RotateAngleProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for RotateAngle. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty RotateAngleProperty =
|
||||
DependencyProperty.Register("RotateAngle", typeof(double), typeof(AtmRobotMultiLP), new PropertyMetadata(0.0));
|
||||
|
||||
public double TranslateX
|
||||
{
|
||||
get { return (double)GetValue(TranslateXProperty); }
|
||||
set { SetValue(TranslateXProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for TranslateX. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty TranslateXProperty =
|
||||
DependencyProperty.Register("TranslateX", typeof(int), typeof(AtmRobotMultiLP), new PropertyMetadata(0));
|
||||
DependencyProperty.Register("TranslateX", typeof(double), typeof(AtmRobotMultiLP), new PropertyMetadata(0.0));
|
||||
|
||||
public MECF.Framework.UI.Client.ClientBase.WaferInfo Wafer1
|
||||
{
|
||||
|
@ -336,7 +342,7 @@ namespace SicUI.Controls.M2C4Parts
|
|||
m.Items.Add(new MenuItem() { Header = "Move", Command = self.MoveCommand, CommandParameter = new RobotMoveInfo() { BladeTarget = position.Key, Action = RobotAction.Moving, ArmTarget = arm } });
|
||||
menus.Add(m);
|
||||
}
|
||||
self.Menu = menus;
|
||||
//self.Menu = menus;
|
||||
self.MoveTo(new RobotMoveInfo() { BladeTarget = positions.First().Key, Action = RobotAction.None });
|
||||
}
|
||||
|
||||
|
@ -527,5 +533,4 @@ namespace SicUI.Controls.M2C4Parts
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -370,7 +370,7 @@
|
|||
Canvas.Top="183"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding PM1EnableWaferClick}"
|
||||
IsRotary="{Binding IsPm1WaferRotary}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
WaferData="{Binding PM1Wafer}" />
|
||||
|
@ -387,7 +387,7 @@
|
|||
Canvas.Top="184"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding PM2EnableWaferClick}"
|
||||
IsRotary="{Binding IsPm2WaferRotary}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
WaferData="{Binding PM2Wafer}" />
|
||||
|
@ -404,7 +404,7 @@
|
|||
Canvas.Top="358"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding UnLoadEnableWaferClick}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
WaferData="{Binding UnLoadWafer}" />
|
||||
</Canvas>
|
||||
|
@ -415,7 +415,7 @@
|
|||
Canvas.Top="476"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding LoadLockEnableWaferClick}"
|
||||
ToolTipService.ShowOnDisabled="True"
|
||||
WaferData="{Binding LoadLockWafer}" />
|
||||
</Canvas>
|
||||
|
|
|
@ -192,7 +192,7 @@
|
|||
Canvas.Top="183"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding PM1EnableWaferClick}"
|
||||
IsRotary="{Binding IsPm1WaferRotary}"
|
||||
WaferData="{Binding PM1Wafer}" />
|
||||
</Canvas>
|
||||
|
@ -208,7 +208,7 @@
|
|||
Canvas.Top="184"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding PM2EnableWaferClick}"
|
||||
IsRotary="{Binding IsPm2WaferRotary}"
|
||||
WaferData="{Binding PM2Wafer}" />
|
||||
</Canvas>
|
||||
|
@ -224,7 +224,7 @@
|
|||
Canvas.Top="358"
|
||||
Width="66"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding UnLoadEnableWaferClick}"
|
||||
WaferData="{Binding UnLoadWafer}" />
|
||||
</Canvas>
|
||||
<Canvas Visibility="{Binding IsLLInstalled, Converter={StaticResource BoolVisibilityConverter}}">
|
||||
|
@ -239,7 +239,7 @@
|
|||
Canvas.Top="477"
|
||||
Width="60"
|
||||
Height="60"
|
||||
IsEnabled="{Binding EnableWaferClick}"
|
||||
IsEnabled="{Binding LoadLockEnableWaferClick}"
|
||||
WaferData="{Binding LoadLockWafer}" />
|
||||
</Canvas>
|
||||
</Canvas>
|
||||
|
|
|
@ -6,10 +6,14 @@
|
|||
xmlns:controls="clr-namespace:SicUI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
|
||||
xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="38"
|
||||
d:DesignWidth="416"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"/>
|
||||
</UserControl.Resources>
|
||||
<Viewbox Stretch="Uniform">
|
||||
<Canvas
|
||||
x:Name="root"
|
||||
|
@ -60,8 +64,8 @@
|
|||
</Common:AxisCanvas>
|
||||
<Canvas.RenderTransform>
|
||||
<TransformGroup>
|
||||
<RotateTransform Angle="{Binding RotateAngle}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding TranslateX}" />
|
||||
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX}" />
|
||||
</TransformGroup>
|
||||
</Canvas.RenderTransform>
|
||||
</Canvas>
|
||||
|
|
|
@ -49,19 +49,25 @@ namespace SicUI.Controls.M2C4Parts
|
|||
public static readonly DependencyProperty ShowDockProperty =
|
||||
DependencyProperty.Register("ShowDock", typeof(bool), typeof(RobotEfemTray), new PropertyMetadata(false));
|
||||
|
||||
// Using a DependencyProperty as the backing store for RotateAngel. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty RotateAngleProperty =
|
||||
DependencyProperty.Register("RotateAngel", typeof(int), typeof(RobotEfemTray), new PropertyMetadata(0));
|
||||
|
||||
public int TranslateX
|
||||
public double RotateAngle
|
||||
{
|
||||
get { return (int)GetValue(TranslateXProperty); }
|
||||
get { return (double)GetValue(RotateAngleProperty); }
|
||||
set { SetValue(RotateAngleProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for RotateAngle. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty RotateAngleProperty =
|
||||
DependencyProperty.Register("RotateAngle", typeof(double), typeof(RobotEfemTray), new PropertyMetadata(0.0));
|
||||
|
||||
public double TranslateX
|
||||
{
|
||||
get { return (double)GetValue(TranslateXProperty); }
|
||||
set { SetValue(TranslateXProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for TranslateX. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty TranslateXProperty =
|
||||
DependencyProperty.Register("TranslateX", typeof(int), typeof(RobotEfemTray), new PropertyMetadata(0));
|
||||
DependencyProperty.Register("TranslateX", typeof(double), typeof(RobotEfemTray), new PropertyMetadata(0.0));
|
||||
|
||||
public MECF.Framework.UI.Client.ClientBase.WaferInfo Wafer1
|
||||
{
|
||||
|
@ -335,7 +341,7 @@ namespace SicUI.Controls.M2C4Parts
|
|||
m.Items.Add(new MenuItem() { Header = "Move", Command = self.MoveCommand, CommandParameter = new RobotMoveInfo() { BladeTarget = position.Key, Action = RobotAction.Moving, ArmTarget = arm } });
|
||||
menus.Add(m);
|
||||
}
|
||||
self.Menu = menus;
|
||||
// self.Menu = menus;
|
||||
self.MoveTo(new RobotMoveInfo() { BladeTarget = positions.First().Key, Action = RobotAction.None });
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,14 @@
|
|||
xmlns:controls="clr-namespace:SicUI.Controls"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:SicUI.Controls.M2C4Parts"
|
||||
xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="38"
|
||||
d:DesignWidth="416"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<extendedControls:BindingProxy x:Key="proxy" Data="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"/>
|
||||
</UserControl.Resources>
|
||||
<Viewbox Stretch="Uniform">
|
||||
<Canvas
|
||||
x:Name="root"
|
||||
|
@ -61,8 +65,8 @@
|
|||
</Common:AxisCanvas>
|
||||
<Canvas.RenderTransform>
|
||||
<TransformGroup>
|
||||
<RotateTransform Angle="{Binding RotateAngle}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding TranslateX}" />
|
||||
<RotateTransform Angle="{Binding Source={StaticResource proxy},Path=Data.RotateAngle}" CenterY="30" />
|
||||
<TranslateTransform x:Name="translate" X="{Binding Source={StaticResource proxy},Path=Data.TranslateX}" />
|
||||
</TransformGroup>
|
||||
</Canvas.RenderTransform>
|
||||
</Canvas>
|
||||
|
|
|
@ -48,20 +48,25 @@ namespace SicUI.Controls.M2C4Parts
|
|||
// Using a DependencyProperty as the backing store for ShowDock. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty ShowDockProperty =
|
||||
DependencyProperty.Register("ShowDock", typeof(bool), typeof(RobotEfemWafer), new PropertyMetadata(false));
|
||||
|
||||
// Using a DependencyProperty as the backing store for RotateAngel. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty RotateAngleProperty =
|
||||
DependencyProperty.Register("RotateAngel", typeof(int), typeof(RobotEfemWafer), new PropertyMetadata(0));
|
||||
|
||||
public int TranslateX
|
||||
public double RotateAngle
|
||||
{
|
||||
get { return (int)GetValue(TranslateXProperty); }
|
||||
get { return (double)GetValue(RotateAngleProperty); }
|
||||
set { SetValue(RotateAngleProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for RotateAngle. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty RotateAngleProperty =
|
||||
DependencyProperty.Register("RotateAngle", typeof(double), typeof(RobotEfemWafer), new PropertyMetadata(0.0));
|
||||
|
||||
public double TranslateX
|
||||
{
|
||||
get { return (double)GetValue(TranslateXProperty); }
|
||||
set { SetValue(TranslateXProperty, value); }
|
||||
}
|
||||
|
||||
// Using a DependencyProperty as the backing store for TranslateX. This enables animation, styling, binding, etc...
|
||||
public static readonly DependencyProperty TranslateXProperty =
|
||||
DependencyProperty.Register("TranslateX", typeof(int), typeof(RobotEfemWafer), new PropertyMetadata(0));
|
||||
DependencyProperty.Register("TranslateX", typeof(double), typeof(RobotEfemWafer), new PropertyMetadata(0.0));
|
||||
|
||||
public MECF.Framework.UI.Client.ClientBase.WaferInfo Wafer1
|
||||
{
|
||||
|
@ -429,7 +434,7 @@ namespace SicUI.Controls.M2C4Parts
|
|||
m.Items.Add(new MenuItem() { Header = "Move", Command = self.MoveCommand, CommandParameter = new RobotMoveInfo() { BladeTarget = position.Key, Action = RobotAction.Moving, ArmTarget = arm } });
|
||||
menus.Add(m);
|
||||
}
|
||||
self.Menu = menus;
|
||||
// self.Menu = menus;
|
||||
self.MoveTo(new RobotMoveInfo() { BladeTarget = positions.First().Key, Action = RobotAction.None });
|
||||
}
|
||||
|
||||
|
|
|
@ -449,6 +449,11 @@
|
|||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="controls:ModuleStatusIndicator">
|
||||
<Setter Property="Margin" Value="0,2,4,2"/>
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
<controls:ModuleStatusIndicator
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
|
@ -588,11 +593,13 @@
|
|||
VerticalContentAlignment="Center"
|
||||
BorderBrush="Gray"
|
||||
Content="Log"
|
||||
Margin="0 1"
|
||||
Style="{DynamicResource TopLable_LeftBottom}" />
|
||||
<Grid
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="13">
|
||||
Grid.ColumnSpan="6"
|
||||
Margin="0 2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="90" />
|
||||
|
|
|
@ -39,6 +39,7 @@ using MECF.Framework.UI.Client.Core;
|
|||
using MECF.Framework.UI.Client.ClientBase.Dialog;
|
||||
using MECF.Framework.Common.Account.Permissions;
|
||||
using MECF.Framework.Common.MECF.Framework.Common.SCCore;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace SicUI.Client
|
||||
{
|
||||
|
@ -524,7 +525,7 @@ namespace SicUI.Client
|
|||
|
||||
public void BuzzerOff()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"System.AckAllAlarms");
|
||||
InvokeClient.Instance.Service.DoOperation($"System.BuzzerOff");
|
||||
}
|
||||
|
||||
#region Login/Logout Operations
|
||||
|
|
|
@ -1842,51 +1842,46 @@
|
|||
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="1"
|
||||
Margin="0,-30,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Orientation="Horizontal">
|
||||
<Grid Width="420" Margin="0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="100" />
|
||||
<ColumnDefinition Width="100" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="24" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
</Grid.RowDefinitions>
|
||||
<!-- Row 1 -->
|
||||
<Label
|
||||
<Grid Width="400" Margin="0,0" Grid.Row="1" Grid.Column="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="100" />
|
||||
<ColumnDefinition Width="100" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="24" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="32" />
|
||||
</Grid.RowDefinitions>
|
||||
<!-- Row 1 -->
|
||||
<Label
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="4"
|
||||
HorizontalContentAlignment="Center"
|
||||
VerticalContentAlignment="Center"
|
||||
Content="Aligner"
|
||||
Style="{DynamicResource Table_TitleStyle}" />
|
||||
<Border
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="Status"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="1"
|
||||
|
@ -1894,7 +1889,7 @@
|
|||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
|
@ -1902,88 +1897,88 @@
|
|||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding AlignerStatus}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Padding="0,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Home"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="AlignerHome" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="AlignerHome" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="3"
|
||||
Padding="0,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Abort"
|
||||
ToolTip="Abort the motions in queue.">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Abort">
|
||||
<cal:Parameter Value="Aligner" />
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<!-- Row 2 -->
|
||||
<Border
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Abort">
|
||||
<cal:Parameter Value="Aligner" />
|
||||
</cal:ActionMessage>
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<!-- Row 2 -->
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="2"
|
||||
Padding="0,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="Align"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="AlignerAlignerRoutine" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="AlignerAlignerRoutine" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="2"
|
||||
Grid.Column="3"
|
||||
Padding="0,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="0,0,1,1">
|
||||
<StackPanel Orientation="Horizontal" />
|
||||
</Border>
|
||||
<StackPanel Orientation="Horizontal" />
|
||||
</Border>
|
||||
|
||||
<!-- Row 3 -->
|
||||
<Border
|
||||
<!-- Row 3 -->
|
||||
<Border
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
|
@ -1991,111 +1986,217 @@
|
|||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="开真空"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_CVN" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="寻边"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_BAL" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_CVN" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="关真空"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_CVF" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="读取真空"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_CVD" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_CVF" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="量测中心"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_MTM" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="寻边"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_BAL" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Row 4 -->
|
||||
<Border
|
||||
<!-- Row 4 -->
|
||||
<Border
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="Vacuum"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding AlignerVacuum}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Padding="0,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="量测中心"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_MTM" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="读取真空"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_CVD" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<!-- Row 5 -->
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="Pre-Error"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding AlignerPError}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Padding="0,1,0,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="错误信息"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_PER" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="错误信息"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_PER" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="清除报警"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_ERS" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
<Button
|
||||
Width="80"
|
||||
Height="25"
|
||||
Margin="10,0"
|
||||
Content="清除报警"
|
||||
IsEnabled="{Binding IsEnableAligner}">
|
||||
<i:Interaction.Triggers>
|
||||
<i:EventTrigger EventName="Click">
|
||||
<cal:ActionMessage MethodName="Aligner_ERS" />
|
||||
</i:EventTrigger>
|
||||
</i:Interaction.Triggers>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<!-- Row 6 -->
|
||||
<Border
|
||||
Grid.Row="6"
|
||||
Grid.Column="0"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Title}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="Response"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
<Border
|
||||
Grid.Row="6"
|
||||
Grid.ColumnSpan="3"
|
||||
Grid.Column="1"
|
||||
Padding="5,1"
|
||||
Background="{DynamicResource Table_BG_Content}"
|
||||
BorderBrush="{DynamicResource Table_BD}"
|
||||
BorderThickness="1,0,0,1">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Arial"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource FG_Black}"
|
||||
Text="{Binding AlignerResponse}"
|
||||
TextWrapping="Wrap" />
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</UserControl>
|
||||
|
|
|
@ -103,6 +103,16 @@ namespace SicUI.Models.Maintenances.TM
|
|||
}
|
||||
#endregion
|
||||
|
||||
#region 右键菜单
|
||||
|
||||
[Subscription("Rt.Status")]
|
||||
public string RtStatus { get; set; }
|
||||
|
||||
public bool UnLoadEnableWaferClick => !UnLoadIsOnline || RtStatus == "Idle";
|
||||
|
||||
public bool LoadLockEnableWaferClick => !LLIsOnline || RtStatus == "Idle";
|
||||
|
||||
#endregion
|
||||
|
||||
#region EFEM,Aligner
|
||||
[Subscription("EFEM.Status")]
|
||||
|
@ -111,6 +121,15 @@ namespace SicUI.Models.Maintenances.TM
|
|||
[Subscription("EFEM.IsOnline")]
|
||||
public bool EFEMIsOnline { get; set; }
|
||||
|
||||
[Subscription("Aligner.HiWinAligner.Vacuum")]
|
||||
public string AlignerVacuum { get; set; }
|
||||
|
||||
[Subscription("Aligner.HiWinAligner.PError")]
|
||||
public string AlignerPError { get; set; }
|
||||
|
||||
[Subscription("Aligner.HiWinAligner.Response")]
|
||||
public string AlignerResponse { get; set; }
|
||||
|
||||
public bool IsEFEMEnableManualOperation => !EFEMIsOnline && EFEMStatus == "Idle";
|
||||
|
||||
public bool IsWaferRobotEnableManualOperation => !WaferRobotIsOnline && WaferRobotState == "Idle";
|
||||
|
@ -121,34 +140,34 @@ namespace SicUI.Models.Maintenances.TM
|
|||
InvokeClient.Instance.Service.DoOperation($"Aligner.Home");
|
||||
}
|
||||
|
||||
//开启真空
|
||||
//开启真空1
|
||||
public void Aligner_CVN()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwVacuumOn");
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwCVN");
|
||||
}
|
||||
|
||||
//晶圆寻边与辅正
|
||||
//晶圆寻边与辅正1
|
||||
public void Aligner_BAL()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwAlign");
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwBAL");
|
||||
}
|
||||
|
||||
//关闭真空
|
||||
//关闭真空1
|
||||
public void Aligner_CVF()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwVacuumOff");
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwCVF");
|
||||
}
|
||||
|
||||
//读取真空值
|
||||
//读取真空值1
|
||||
public void Aligner_CVD()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwCVD");
|
||||
}
|
||||
|
||||
//移至测量中心点
|
||||
//移至测量中心点1
|
||||
public void Aligner_MTM()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwMoveToMeasurement");
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwMTM");
|
||||
}
|
||||
|
||||
//读取最后的错误信息
|
||||
|
@ -160,7 +179,7 @@ namespace SicUI.Models.Maintenances.TM
|
|||
//清除报警
|
||||
public void Aligner_ERS()
|
||||
{
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwClearError");
|
||||
InvokeClient.Instance.Service.DoOperation($"Aligner.HiWinAligner.HwERS");
|
||||
}
|
||||
|
||||
public void Aligner_Abort()
|
||||
|
|
|
@ -27,6 +27,18 @@ namespace SicUI.Client.Models.Platform.TM
|
|||
public string RtStatus { get; set; }
|
||||
|
||||
public bool EnableWaferClick => RtStatus == "Idle";
|
||||
|
||||
//控件右击菜单
|
||||
public bool PM1EnableWaferClick => !PM1IsOnline || RtStatus == "Idle";
|
||||
|
||||
public bool PM2EnableWaferClick => !PM2IsOnline || RtStatus == "Idle";
|
||||
|
||||
public bool UnLoadEnableWaferClick => !UnLoadIsOnline || RtStatus == "Idle";
|
||||
|
||||
public bool LoadLockEnableWaferClick => !LLIsOnline || RtStatus == "Idle";
|
||||
//控件右击菜单
|
||||
|
||||
|
||||
public bool LLEnableWaferClick => true;
|
||||
|
||||
public bool LoadValveIsEnable => !LLIsOnline;
|
||||
|
|
|
@ -690,9 +690,25 @@ namespace SicUI.Models.Operations.Overviews
|
|||
|
||||
#endregion
|
||||
|
||||
[Subscription("UnLoad.IsOnline")]
|
||||
public bool IsOnlineUnLoad { get; set; }
|
||||
[Subscription("LoadLock.IsOnline")]
|
||||
public bool IsOnlineLL { get; set; }
|
||||
|
||||
#region Button Logic
|
||||
|
||||
//控件右击菜单
|
||||
public bool EnableWaferClick => RtStatus == "Idle";
|
||||
|
||||
public bool PM1EnableWaferClick => !PM1IsOnline || RtStatus == "Idle";
|
||||
|
||||
public bool PM2EnableWaferClick => !PM2IsOnline || RtStatus == "Idle";
|
||||
|
||||
public bool UnLoadEnableWaferClick => !IsOnlineUnLoad || RtStatus == "Idle";
|
||||
|
||||
public bool LoadLockEnableWaferClick => !IsOnlineLL || RtStatus == "Idle";
|
||||
//控件右击菜单
|
||||
|
||||
public bool LLEnableWaferClick => true;
|
||||
|
||||
public bool IsEnableAbort
|
||||
|
|
|
@ -54,5 +54,5 @@ using System.Windows;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("1.1.4.15")]
|
||||
[assembly: AssemblyInformationalVersion("自动通用版(有EFEM)")]
|
||||
[assembly: AssemblyVersion("1.1.10.34")]
|
||||
[assembly: AssemblyInformationalVersion("南京百识专用")]
|
||||
|
|
|
@ -75,8 +75,7 @@ if exist "$(ProjectDir)..\SicSetup\Packages\SicUI\PresetGroups" rd "$(ProjectDir
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CommandLine, Version=2.9.1.0, Culture=neutral, PublicKeyToken=5a870481e358d379, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="CommandLine">
|
||||
<HintPath>..\ThirdParty\MECF.Framework\CommandLine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
using CommandLine;
|
||||
|
||||
|
||||
using CommandLine;
|
||||
|
||||
namespace SicUI
|
||||
{
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue