2 次代碼提交 469149c326 ... 1e3a0c9c46

作者 SHA1 備註 提交日期
  chenkui 1e3a0c9c46 Merge branch 'master' of http://git.jetplasma-oa.com/JetPlasma/PunkHPX8 3 周之前
  chenkui 09f5be5798 update BeckhoffIOManager write aoValue 3 周之前

+ 3 - 2
Framework/Common/TwinCat/BeckhoffIOManager.cs

@@ -234,11 +234,12 @@ namespace MECF.Framework.Common.TwinCat
         /// <returns></returns>
         public bool WriteIoValue(string name,object value)
         {
-            if(ScalingManager.Instance.IsContained(name))
+            if (ScalingManager.Instance.IsContained(name))
             {
                 if(double.TryParse(value.ToString(),out var output))
                 {
-                    var result = ScalingManager.Instance.CalculateTwincatValueByInput(name,output);
+                    BeckhoffItem item = BeckhoffItemManager.Instance.GetWriteBeckhoffItem(name);
+                    var result = ScalingManager.Instance.CalculateTwincatValueByInput(name,output,item!=null?item.DataType:"int");
                     if(result.Item1)
                     {
                         return TwincatAdoManager.Instance.WriteValue(name, result.Item2);

+ 16 - 0
Framework/Common/TwinCat/Scaling.cs

@@ -24,5 +24,21 @@ namespace MECF.Framework.Common.TwinCat
         {
             return (int)Math.Round(((y - _scaleB) / _scaleA));
         }
+        public object CaculateXByY(double y,string dateType)
+        {
+            switch (dateType.ToLower())
+            {
+                case "int":
+                    return (short)Math.Round(((y - _scaleB) / _scaleA));
+                case "uint":
+                    return (ushort)Math.Round(((y - _scaleB) / _scaleA));
+                case "dint":
+                    return (int)Math.Round(((y - _scaleB) / _scaleA));
+                case "udint":
+                    return (uint)Math.Round(((y - _scaleB) / _scaleA));
+                default:
+                    return (int)Math.Round(((y - _scaleB) / _scaleA));
+            }
+        }
     }
 }

+ 17 - 0
Framework/Common/TwinCat/ScalingMamager.cs

@@ -113,5 +113,22 @@ namespace MECF.Framework.Common.TwinCat
                 return (false, 0);
             }
         }
+        /// <summary>
+        /// 计算Twincat数值
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="y"></param>
+        /// <returns></returns>
+        public (bool, object) CalculateTwincatValueByInput(string name, double y,string dataType)
+        {
+            if (_scalingDic.ContainsKey(name))
+            {
+                return (true, _scalingDic[name].CaculateXByY(y,dataType));
+            }
+            else
+            {
+                return (false, 0);
+            }
+        }
     }
 }