Browse Source

Revise SRD chuckVacuum and liftup precondition;

niuyx 1 month ago
parent
commit
197aa5b250

+ 5 - 0
CyberX8_RT/Devices/SRD/SrdCommonChuckVacuumRoutine.cs

@@ -94,6 +94,11 @@ namespace CyberX8_RT.Devices.SRD
             }
             else
             {
+                if (_srdCommon.CommonData.LiftUp)
+                {
+                    LOG.WriteLog(eEvent.ERR_SRD, Module, $"Lift up is on. Can't chuck vacuum");
+                    return RState.Failed;
+                }
                 return Runner.Start(Module, "Chuck Vacuum On");
             }
         }

+ 12 - 1
CyberX8_RT/Devices/SRD/SrdCommonLiftUpRoutine.cs

@@ -76,7 +76,18 @@ namespace CyberX8_RT.Devices.SRD
             _liftUp = (bool)objs[0];
             _srdCommon = DEVICE.GetDevice<SrdCommonDevice>($"{Module}.Common");
             if (_liftUp)
-            {
+            {               
+                if (!_srdCommon.CommonData.ChuckVacuum)
+                {
+                    LOG.WriteLog(eEvent.ERR_SRD, Module, $"Chuck vacuum is on. Can't lift up");
+                    return RState.Failed;
+                }
+                int vacuumOffLimit = SC.GetValue<int>("SRD.ChuckVacuumOffLimit");
+                if (_srdCommon.CommonData.VacuumValue < vacuumOffLimit)
+                {
+                    LOG.WriteLog(eEvent.ERR_SRD, Module, $"Chuck vacuum is off, but VacuumValue:{_srdCommon.CommonData.VacuumValue} < VacuumOff Limit:{vacuumOffLimit}");
+                    return RState.Failed;
+                }
                 return Runner.Start(Module, "Lift Up On");
             }
             else

+ 2 - 2
CyberX8_Simulator/Devices/WagoSocketSimulator.cs

@@ -262,7 +262,7 @@ namespace CyberX8_Simulator.Devices
             if (DONameIndexDic.ContainsKey("c_SRD1_CHUCK_VACUUM") && position == DONameIndexDic["c_SRD1_CHUCK_VACUUM"])
             {
                 value = (_doNameWagoDODic["c_SRD1_CHUCK_VACUUM"].Invert ) ? !value : value;
-                _srd1currentVacuumValue = value ? 10000 : 4000;
+                _srd1currentVacuumValue = value ? _srd1currentVacuumValue : 4000;
                 UpdataAIShorts("r_SRD1_CHUCK_VACUUM_anlg", _srd1currentVacuumValue);
                 UpdataDIBytes("r_SRD1_CHUCK_VAC_OK", value ? 0 : 1);
                 
@@ -270,7 +270,7 @@ namespace CyberX8_Simulator.Devices
             if (DONameIndexDic.ContainsKey("c_SRD2_CHUCK_VACUUM") && position == DONameIndexDic["c_SRD2_CHUCK_VACUUM"])
             {
                 value = _doNameWagoDODic["c_SRD2_CHUCK_VACUUM"].Invert ? !value : value;
-                _srd2currentVacuumValue = value ? 10000 : 4000;
+                _srd2currentVacuumValue = value ? _srd2currentVacuumValue : 4000;
                 UpdataAIShorts("r_SRD2_CHUCK_VACUUM_anlg", _srd2currentVacuumValue);
                 UpdataDIBytes("r_SRD2_CHUCK_VAC_OK", value ? 0 : 1);
             }