GalilAxisManager.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Aitex.Core.RT.Log;
  2. using Aitex.Core.RT.SCCore;
  3. using Aitex.Core.Util;
  4. using MECF.Framework.Common.Beckhoff.ModuleIO;
  5. using MECF.Framework.Common.Device.Festo;
  6. using MECF.Framework.Common.TwinCat;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace MECF.Framework.Common.Device.Galil
  13. {
  14. public class GalilAxisManager : Singleton<GalilAxisManager>
  15. {
  16. #region 内部变量
  17. /// <summary>
  18. /// 模块变量更新委托字典(key-模块.变量,value-变量委托事件
  19. /// </summary>
  20. private Dictionary<string, BeckhoffDelegate.OnUpdateModuleVariableValue> _moduleVariableActionDic = new Dictionary<string, BeckhoffDelegate.OnUpdateModuleVariableValue>();
  21. /// <summary>
  22. /// 变量数值字典(key-io变量名称,value-数值)
  23. /// </summary>
  24. private Dictionary<string, object> _nameVariableValueDic = new Dictionary<string, object>();
  25. #endregion
  26. /// <summary>
  27. /// 注册变量数值发生变化回调
  28. /// </summary>
  29. /// <param name="moduleName"></param>
  30. /// <param name="variable"></param>
  31. /// <param name="onUpdateModuleVariableValue"></param>
  32. public void SubscribeModuleVariable(string moduleName, string variable, BeckhoffDelegate.OnUpdateModuleVariableValue onUpdateModuleVariableValue)
  33. {
  34. string name = $"{moduleName}.{variable}";
  35. _moduleVariableActionDic[name] = onUpdateModuleVariableValue;
  36. if (_nameVariableValueDic.ContainsKey(name))
  37. {
  38. _moduleVariableActionDic[name].Invoke(variable, _nameVariableValueDic[name]);
  39. }
  40. }
  41. /// <summary>
  42. /// 更新IO数值
  43. /// </summary>
  44. /// <param name="name"></param>
  45. /// <param name="value"></param>
  46. public void UpdateIoValue(string name, object value)
  47. {
  48. bool _enableRead = SC.GetValue<bool>("Twincat.EnableReadLog");
  49. if (_enableRead)
  50. {
  51. LOG.WriteBackgroundLog(eEvent.INFO_GALIL, "System", $"read {name} value {value}");
  52. }
  53. _nameVariableValueDic[name] = value;
  54. if (_moduleVariableActionDic.ContainsKey(name))
  55. {
  56. string[] strAry = name.Split('.');
  57. if (strAry.Length != 0)
  58. {
  59. _moduleVariableActionDic[name].Invoke(strAry[strAry.Length - 1], value);
  60. }
  61. }
  62. }
  63. }
  64. }