Browse Source

Optimize GalilSimulator; Modify SRD simulator;

niuyx 1 week ago
parent
commit
b0beffaf5a

+ 2 - 2
CyberX8_RT/Config/Devices/GalilControllerCfg-Simulator.xml

@@ -236,7 +236,7 @@
 		<GalilAxisConfig Name="SRD1.Rotation" Index="0" Type="GalilRotation" CNType="-1">
 			<Speed>529400</Speed>
 			<Acceleration>84000</Acceleration>
-			<Deceleration>84000</Deceleration>
+			<Deceleration>4000000</Deceleration>
 			<HomingSpeed>2500</HomingSpeed>
 			<HomingOffset>0</HomingOffset>
 			<HomingTimeOut>60000</HomingTimeOut>
@@ -250,7 +250,7 @@
 		<GalilAxisConfig Name="SRD2.Rotation" Index="1" Type="GalilRotation" CNType="-1">
 			<Speed>529400</Speed>
 			<Acceleration>84000</Acceleration>
-			<Deceleration>84000</Deceleration>
+			<Deceleration>4000000</Deceleration>
 			<HomingSpeed>2500</HomingSpeed>
 			<HomingOffset>0</HomingOffset>
 			<HomingTimeOut>60000</HomingTimeOut>

+ 6 - 6
CyberX8_RT/Config/Devices/WagoControllerCfg-Simulator.xml

@@ -440,8 +440,8 @@
 		<Dig_Out>
 			<DOGroup Name="7">
 				<DO Name="c_SRD1_LIFT_UP"  Address="512" Invert="false"/>
-				<DO Name="c_SRD1_150_FLIPPERS_IN"  Address="513" Invert="true"/>
-				<DO Name="c_SRD1_200_FLIPPERS_IN"  Address="514" Invert="true"/>
+				<DO Name="c_SRD1_150_FLIPPERS_IN"  Address="513" Invert="false"/>
+				<DO Name="c_SRD1_200_FLIPPERS_IN"  Address="514" Invert="false"/>
 				<DO Name="c_SRD1_Shutter_Close"  Address="515" Invert="false"/>
 				<DO Name="c_SRD1_WATER_ON"  Address="516" Invert="false"/>
 				<DO Name="c_SRD1_CHUCK_VACUUM"  Address="517" Invert="true"/>
@@ -450,8 +450,8 @@
 			</DOGroup>
 			<DOGroup Name="8">
 				<DO Name="c_SRD2_LIFT_UP"  Address="520" Invert="false"/>
-				<DO Name="c_SRD2_150_FLIPPERS_IN"  Address="521" Invert="true"/>
-				<DO Name="c_SRD2_200_FLIPPERS_IN"  Address="522" Invert="true"/>
+				<DO Name="c_SRD2_150_FLIPPERS_IN"  Address="521" Invert="false"/>
+				<DO Name="c_SRD2_200_FLIPPERS_IN"  Address="522" Invert="false"/>
 				<DO Name="c_SRD2_Shutter_Close"  Address="523" Invert="false"/>
 				<DO Name="c_SRD2_WATER_ON"  Address="524" Invert="false"/>
 				<DO Name="c_SRD2_CHUCK_VACUUM"  Address="525" Invert="true"/>
@@ -475,8 +475,8 @@
 		</Dig_Out>
 		<Ano_In>
 			<AIGroup Name="1">
-				<AI Name="r_SRD1_CHUCK_VACUUM_anlg"  Address="0" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
-				<AI Name="r_SRD2_CHUCK_VACUUM_anlg"  Address="1" Scaling="0=3276.7,-757.5=16383.5" DataType="short"/>
+				<AI Name="r_SRD1_CHUCK_VACUUM_anlg"  Address="0" Scaling="-757.5=3276.7,757.5=16383.5" DataType="short"/>
+				<AI Name="r_SRD2_CHUCK_VACUUM_anlg"  Address="1" Scaling="-757.5=3276.7,757.5=16383.5" DataType="short"/>
 				<AI Name="AI2"  Address="2" Scaling="13=0,150=32767" DataType="short"/>
 				<AI Name="AI3"  Address="3" Scaling="13=0,150=32767" DataType="short"/>
 			</AIGroup>

+ 4 - 4
CyberX8_RT/Config/Devices/WagoControllerCfg.xml

@@ -440,8 +440,8 @@
 		<Dig_Out>
 			<DOGroup Name="7">
 				<DO Name="c_SRD1_LIFT_UP"  Address="512" Invert="false"/>
-				<DO Name="c_SRD1_150_FLIPPERS_IN"  Address="513" Invert="true"/>
-				<DO Name="c_SRD1_200_FLIPPERS_IN"  Address="514" Invert="true"/>
+				<DO Name="c_SRD1_150_FLIPPERS_IN"  Address="513" Invert="false"/>
+				<DO Name="c_SRD1_200_FLIPPERS_IN"  Address="514" Invert="false"/>
 				<DO Name="c_SRD1_Shutter_Close"  Address="515" Invert="false"/>
 				<DO Name="c_SRD1_WATER_ON"  Address="516" Invert="false"/>
 				<DO Name="c_SRD1_CHUCK_VACUUM"  Address="517" Invert="true"/>
@@ -450,8 +450,8 @@
 			</DOGroup>
 			<DOGroup Name="8">
 				<DO Name="c_SRD2_LIFT_UP"  Address="520" Invert="false"/>
-				<DO Name="c_SRD2_150_FLIPPERS_IN"  Address="521" Invert="true"/>
-				<DO Name="c_SRD2_200_FLIPPERS_IN"  Address="522" Invert="true"/>
+				<DO Name="c_SRD2_150_FLIPPERS_IN"  Address="521" Invert="false"/>
+				<DO Name="c_SRD2_200_FLIPPERS_IN"  Address="522" Invert="false"/>
 				<DO Name="c_SRD2_Shutter_Close"  Address="523" Invert="false"/>
 				<DO Name="c_SRD2_WATER_ON"  Address="524" Invert="false"/>
 				<DO Name="c_SRD2_CHUCK_VACUUM"  Address="525" Invert="true"/>

+ 4 - 6
CyberX8_Simulator/Devices/GalilSocketSimulator.cs

@@ -578,15 +578,13 @@ namespace CyberX8_Simulator.Devices
         /// 实时更新电机数据
         /// </summary>
         /// <param name="datasDic"></param>
-        private void UpdateRealTimeMotionData(Dictionary<string, SimulatorMotionData> datasDic)
+        private void UpdateRealTimeMotionData(KeyValuePair<string, SimulatorMotionData> dataPair)
         {
-            foreach(var dataItem in datasDic)
+            if (_axisNameIndexDic.ContainsKey(dataPair.Key))
             {
-                if (_axisNameIndexDic.ContainsKey(dataItem.Key))
-                {
-                    UpdateAxisData(_axisNameIndexDic[dataItem.Key], dataItem.Value);
-                }
+                UpdateAxisData(_axisNameIndexDic[dataPair.Key], dataPair.Value);
             }
+           
         }
         /// <summary>
         /// 更新Galil Input datas

+ 8 - 8
CyberX8_Simulator/Devices/WagoSocketSimulator.cs

@@ -259,7 +259,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 ? 5000 : 15000;
+                _srd1currentVacuumValue = value ? 10000 : 4000;
                 UpdataAIShorts("r_SRD1_CHUCK_VACUUM_anlg", _srd1currentVacuumValue);
                 UpdataDIBytes("r_SRD1_CHUCK_VAC_OK", value ? 0 : 1);
                 
@@ -267,21 +267,21 @@ 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 ? 5000 : 15000;
+                _srd2currentVacuumValue = value ? 10000 : 4000;
                 UpdataAIShorts("r_SRD2_CHUCK_VACUUM_anlg", _srd2currentVacuumValue);
                 UpdataDIBytes("r_SRD2_CHUCK_VAC_OK", value ? 0 : 1);
             }
             if (DONameIndexDic.ContainsKey("c_SRD1_CHUCK_ATM_ON") && position == DONameIndexDic["c_SRD1_CHUCK_ATM_ON"])
             {
                 value = _doNameWagoDODic["c_SRD1_CHUCK_ATM_ON"].Invert ? !value : value;
-                _srd1currentVacuumValue = value ? _srd1currentVacuumValue - 8000 : _srd1currentVacuumValue;
+                _srd1currentVacuumValue = value ? _srd1currentVacuumValue + 6000 : _srd1currentVacuumValue;
                 UpdataAIShorts("r_SRD1_CHUCK_VACUUM_anlg", _srd1currentVacuumValue);
                 
             }
             if (DONameIndexDic.ContainsKey("c_SRD2_CHUCK_ATM_ON") && position == DONameIndexDic["c_SRD2_CHUCK_ATM_ON"])
             {
                 value = _doNameWagoDODic["c_SRD2_CHUCK_ATM_ON"].Invert ? !value : value;
-                _srd2currentVacuumValue = value ? _srd2currentVacuumValue - 8000 : _srd2currentVacuumValue;
+                _srd2currentVacuumValue = value ? _srd2currentVacuumValue + 6000 : _srd2currentVacuumValue;
                 UpdataAIShorts("r_SRD2_CHUCK_VACUUM_anlg", _srd2currentVacuumValue);
             }
             //Water
@@ -435,10 +435,10 @@ namespace CyberX8_Simulator.Devices
             if (DINameIndexDic.ContainsKey("r_SRD2_200_FLIPPER1_OUT")) DIBytes[DINameIndexDic["r_SRD2_200_FLIPPER1_OUT"]] = 1;
             if (DINameIndexDic.ContainsKey("r_SRD2_200_FLIPPER2_OUT")) DIBytes[DINameIndexDic["r_SRD2_200_FLIPPER2_OUT"]] = 1;
             if (DINameIndexDic.ContainsKey("r_SRD2_200_FLIPPER3_OUT")) DIBytes[DINameIndexDic["r_SRD2_200_FLIPPER3_OUT"]] = 1;
-            if (DONameIndexDic.ContainsKey("c_SRD1_150_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD1_150_FLIPPERS_IN"]] = 1;
-            if (DONameIndexDic.ContainsKey("c_SRD2_150_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD2_150_FLIPPERS_IN"]] = 1;
-            if (DONameIndexDic.ContainsKey("c_SRD1_200_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD1_200_FLIPPERS_IN"]] = 1;
-            if (DONameIndexDic.ContainsKey("c_SRD2_200_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD2_200_FLIPPERS_IN"]] = 1;
+            if (DONameIndexDic.ContainsKey("c_SRD1_150_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD1_150_FLIPPERS_IN"]] = 0;
+            if (DONameIndexDic.ContainsKey("c_SRD2_150_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD2_150_FLIPPERS_IN"]] = 0;
+            if (DONameIndexDic.ContainsKey("c_SRD1_200_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD1_200_FLIPPERS_IN"]] = 0;
+            if (DONameIndexDic.ContainsKey("c_SRD2_200_FLIPPERS_IN")) DOBytes[DONameIndexDic["c_SRD2_200_FLIPPERS_IN"]] = 0;
             if (DONameIndexDic.ContainsKey("c_SRD1_LIFT_UP")) DOBytes[DONameIndexDic["c_SRD1_LIFT_UP"]] = 1;
             if (DONameIndexDic.ContainsKey("c_SRD2_LIFT_UP")) DOBytes[DONameIndexDic["c_SRD2_LIFT_UP"]] = 1;
             if (DINameIndexDic.ContainsKey("r_SRD1_WAFER_PRESENT")) DIBytes[DINameIndexDic["r_SRD1_WAFER_PRESENT"]] = 1;

+ 6 - 6
Framework/Common/Simulator/MotorSimulator.cs

@@ -83,7 +83,7 @@ namespace MECF.Framework.Common.Simulator
 
         //delegate
         #region Delegate
-        public delegate void UpdateVariableValueMotionDatasChanged(Dictionary<string, SimulatorMotionData> datasDic);
+        public delegate void UpdateVariableValueMotionDatasChanged(KeyValuePair<string, SimulatorMotionData> datasDic);
         public delegate void UpdateVariableValueInputDatasChanged(string module, string VariableName, bool value);
         public delegate void UpdateVariableValueWagoDatasChanged(string sourceName,string targetName, bool value, bool invert);
         #endregion
@@ -159,7 +159,7 @@ namespace MECF.Framework.Common.Simulator
                     {
                         double value = item.ScaleFactor / 30;
                         _axisDataDic[item.Name] = item;
-                        _motorNameMinStepDic[item.Name] = (int)((value < 100) ? 100 : value);                        
+                        _motorNameMinStepDic[item.Name] = (int)((value < 200) ? 200 : value);                        
                     }
                 }
                 
@@ -214,10 +214,10 @@ namespace MECF.Framework.Common.Simulator
                 //对应电机进行模拟
                 MotorMotionSimulator(motorItem);
                 //实时更新电机数据
-                UpdateMotionDatas(_motorNameDataDic);
+                UpdateMotionDatas(motorItem);
                 //更新InputDatas
                 UpdateInputDatas(motorItem);                              
-            }
+            }           
             UpdateDatasByMutiAxisDatas();
             return true;
         }
@@ -225,11 +225,11 @@ namespace MECF.Framework.Common.Simulator
         /// 通知Galil模块motion数据变化
         /// </summary>
         /// <param name="data"></param>
-        private void UpdateMotionDatas(Dictionary<string, SimulatorMotionData> datasDic)
+        private void UpdateMotionDatas(KeyValuePair<string, SimulatorMotionData> dataPair)
         {
             if (OnUpdateMotionDatasChanged != null)
             {
-                OnUpdateMotionDatasChanged(datasDic);
+                OnUpdateMotionDatasChanged(dataPair);
             }
         }
         /// <summary>