using Rs.Controls; using Rs.Framework; using Rs.MotionPlat.Commom; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Rs.MotionPlat.Flow { public class SafeControl { private SafeControl() { } private static SafeControl instance; public static SafeControl Instance { get { if (instance == null) { instance = new SafeControl(); } return instance; } } public void Init() { if (AxisControl.LoadX != null) AxisControl.LoadX.FunSafeCheck += LoadX_FunSafeCheck; if (AxisControl.LoadY != null) AxisControl.LoadY.FunSafeCheck += LoadY_FunSafeCheck; if (AxisControl.TurnoverY != null) AxisControl.TurnoverY.FunSafeCheck += TurnoverY_FunSafeCheck; } private bool TurnoverY_FunSafeCheck() { if (SysConfigParam.GetValue("CheckSafeEnable")) { AxisControl.PressZ.GetOrgStatus(out bool bOrg); if (!bOrg) return false; AxisControl.TurnoverZ.GetOrgStatus(out bOrg); if (!bOrg) return false; } return true; } private bool LoadY_FunSafeCheck() { if(SysConfigParam.GetValue("CheckSafeEnable")) { bool bOnOrg = false; if (!Ops.IsOn("上下气缸原位")) { MessageQueue.Instance.Warn("上下气缸原位 off"); return false; } for (int i = 1; i < 9; i++) { AxisControl.GetAxis($"NozzleZ{i}").GetOrgStatus(out bOnOrg); if (!bOnOrg) { MessageQueue.Instance.Warn($"NozzleZ{i} is hasn't org signal"); return false; } } } return true; } private bool LoadX_FunSafeCheck() { if (SysConfigParam.GetValue("CheckSafeEnable")) { bool bOnOrg = false; if (!Ops.IsOn("上下气缸原位")) { MessageQueue.Instance.Warn("上下气缸原位 off"); return false; } for (int i = 1; i < 9; i ++) { AxisControl.GetAxis($"NozzleZ{i}").GetOrgStatus(out bOnOrg); if (!bOnOrg) { MessageQueue.Instance.Warn($"NozzleZ{i} hasn't org signal"); return false; } } } return true; } /// /// 检测排料Y轴是否可以到周转盘 /// /// private bool CanGoTurnoverTray() { //获取周转Y轴的位置,当排料Y轴去周转盘的时候,检测是否安全 double turnoverYPos = Ops.GetCurPosition("TurnoverY"); if (turnoverYPos - SysConfigParam.GetValue("PressY") < -1) return false; return true; } public bool XYCanMove() { if (!CanGoTurnoverTray()) return false; return true; } } }