123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using Aitex.Core.RT.Log;
- using Aitex.Core.Util;
- using CyberX8_RT.Devices.AXIS.CANOpen;
- using CyberX8_RT.Devices.AXIS.Galil;
- using CyberX8_RT.Devices.AXIS.GalilLipsel;
- using CyberX8_RT.Devices.AXIS.Yaskawa;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- namespace CyberX8_RT.Devices.AXIS
- {
- public class AxisManager : Singleton<AxisManager>
- {
- /// <summary>
- /// 模块电机字典
- /// </summary>
- private Dictionary<string, List<JetAxisBase>> _moduleAxisDictionary = new Dictionary<string, List<JetAxisBase>>();
- /// <summary>
- /// 获取Axis对象
- /// </summary>
- /// <param name="type"></param>
- /// <param name="module"></param>
- /// <param name="name"></param>
- /// <returns></returns>
- public JetAxisBase GetAxisInstance(string type,string module,string name)
- {
- switch(type)
- {
- case "Copley":
- return new CanOpenAxis(module, name);
- case "Yaskawa":
- return new YaskawaAxis(module, name);
- case "Maxon":
- return new MaxonAxis(module, name);
- case "Galil":
- return new GalilAxis(module, name);
- case "GalilLipsel":
- return new GalilLipselAxis(module, name);
- default:
- return null;
- }
- }
- /// <summary>
- /// 将Axis增加至模块字典
- /// </summary>
- /// <param name="moduleName"></param>
- /// <param name="axis"></param>
- public void AddModuleAxis(string moduleName, JetAxisBase axis)
- {
- if (_moduleAxisDictionary.ContainsKey(moduleName))
- {
- List<JetAxisBase> lst=_moduleAxisDictionary[moduleName];
- if(lst.FindIndex(O=>O.Name==axis.Name&&O.Module==moduleName)==-1)
- {
- lst.Add(axis);
- }
- }
- else
- {
- List<JetAxisBase> lst = new List<JetAxisBase>();
- lst.Add(axis);
- _moduleAxisDictionary[moduleName] = lst;
- }
- }
- /// <summary>
- /// 获取模块电机集合
- /// </summary>
- /// <returns></returns>
- public List<JetAxisBase> GetModuleAxisList(string moduleName)
- {
- return _moduleAxisDictionary.ContainsKey(moduleName) ? _moduleAxisDictionary[moduleName]:null;
- }
- /// <summary>
- /// 检验模块电机是否均上电
- /// </summary>
- /// <returns></returns>
- public bool CheckModuleAxisSwitchOn(string module,string name)
- {
- List<JetAxisBase> axises = AxisManager.Instance.GetModuleAxisList(module);
- if (axises != null)
- {
- foreach (JetAxisBase axis in axises)
- {
- if (!axis.IsSwitchOn)
- {
- LOG.WriteLog(eEvent.ERROR_PUF_NOT_SWITCHON, $"{module}", $"{axis.Name} is switch off");
- return false;
- }
- }
- }
- return true;
- }
- }
- }
|