public XYUZPoint GetDstMachinePos(int nNozzleIndex) { if (nNozzleIndex > NozzleMgr.GetInstance().nozzleArr.Length || nNozzleIndex < 0) { return(new XYUZPoint()); } return(NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].DstMachinePos); }
public void SetObjMachinePos(int nNozzleIndex, double dObjx, double dObjy, double dObju) { if (eventUpdatNozzleData != null) { eventUpdatNozzleData(nNozzleIndex, "SetObjMachinePos", dObjx, dObjy, dObju); } NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].ObjMachinePos = new XYUPoint() { x = dObjx, y = dObjy, u = dObju, }; }
public void SetDstMachinePos(int nNozzleIndex, double dDstx, double dDsty, double dDstu, double Z = 0) { if (eventUpdatNozzleData != null) { eventUpdatNozzleData(nNozzleIndex, "SetDstMachinePos", dDstx, dDsty, dDstu); } NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].DstMachinePos = new XYUZPoint() { x = dDstx, y = dDsty, u = dDstu, z = Z, }; }
/// <summary> /// 初始化产品数据参数 /// </summary> public static void InitProductNum() { NozzleMgr.GetInstance().Read(); try { StationTable stationTable = (StationTable)StationMgr.GetInstance().GetStation("转盘站"); TableData.GetInstance().Add(stationTable.GetStationPointDic()["A工位AA位"].pointU, 2); TableData.GetInstance().Add(stationTable.GetStationPointDic()["A工位夹取位"].pointU, 2); TableData.GetInstance().Add(stationTable.GetStationPointDic()["B工位AA位"].pointU, 1); TableData.GetInstance().Add(stationTable.GetStationPointDic()["B工位夹取位"].pointU, 1); TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["A工位AA位"].pointU, "A_AA"); TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["A工位夹取位"].pointU, "A_Pick"); TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["B工位AA位"].pointU, "B_AA"); TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["B工位夹取位"].pointU, "B_Pick"); TableData.GetInstance().AddStationResult("A_AA", false); TableData.GetInstance().AddStationResult("A_Pick", false); TableData.GetInstance().AddStationResult("B_AA", false); TableData.GetInstance().AddStationResult("B_Pick", false); TableData.GetInstance().AddStationResult("A_UnLoadLoad", false); TableData.GetInstance().AddStationResult("B_UnLoadLoad", false); TableData.GetInstance().dicTableCmdStart.Add("A_AA", false); TableData.GetInstance().dicTableCmdStart.Add("B_AA", false); TableData.GetInstance().dicTableCmdStart.Add("A_Pick", false); TableData.GetInstance().dicTableCmdStart.Add("B_Pick", false); TableData.GetInstance().dicTableCmdStart.Add("A_UnLoadLoad", false); TableData.GetInstance().dicTableCmdStart.Add("B_UnLoadLoad", false); TableData.GetInstance().AxisNo = stationTable.AxisU; TableData.GetInstance().listPoss.Clear(); TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["A工位夹取位"].pointU); TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["A工位AA位"].pointU); TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["B工位夹取位"].pointU); TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["B工位AA位"].pointU); } catch (Exception e) { } // }
protected override void StationWork(int step) { if (ParamSetMgr.GetInstance().GetIntParam("右剥料屏蔽") == 1) { ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", true); return; } WaranResult waranResult; bool bfind = ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"); bool bgooripos = ParamSetMgr.GetInstance().GetBoolParam("右剥料归位"); PlaneState planeState = PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState; NozzleState nozzleState = NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState; if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") && ParamSetMgr.GetInstance().GetBoolParam("右剥料归位") && PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState == PlaneState.None && NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState == NozzleState.Have && GlobalVariable.g_StationState == StationState.StationStateRun) { Info(string.Format("右装料平台有无感应器{0},右搜寻蜂鸣器成功{1},右拨料平台状态{2},右剥料吸嘴状态{3} 右剥料归位{4}", IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器"), ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"), PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState, NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState, ParamSetMgr.GetInstance().GetBoolParam("右剥料归位"))); ///loadState = LoadState.exceing; Carray(); // loadState = LoadState.None; } switch (step) { case (int)StationStep.step_init: Init(); retry_FindBuzzer: waranResult = FindBuzzer(); if (waranResult == WaranResult.Retry) { goto retry_FindBuzzer; } if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功")) { retry_go_蜂鸣器顶位: if (sys.g_AppMode == AppMode.AirRun) { ParamSetMgr.GetInstance().SetIntParam("右蜂鸣器顶位", (int)GetStationPointDic()["装料原始位"].pointZ); } WaranResult waranResult1 = MoveSigleAxisPosWaitInpos(AxisZ, ParamSetMgr.GetInstance().GetIntParam("右蜂鸣器顶位"), (int)MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, false, this, 60000); if (waranResult1 == WaranResult.Retry) { goto retry_go_蜂鸣器顶位; } } MoveSigleAxisPosWaitInpos(AxisY, GetStationPointDic()["剥料准备位"].pointY, (double)SpeedType.High, 20, false, this, 60000); PushMultStep((int)StationStep.step_Separate); ParamSetMgr.GetInstance().SetBoolParam("右剥料归位", true); ParamSetMgr.GetInstance().SetIntParam("右剥料次数", 0); DelCurrentStep(); break; case (int)StationStep.step_Separate: ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false); if (PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState == PlaneState.None) { break; } int Count = ParamSetMgr.GetInstance().GetIntParam("右剥料次数"); if (Count > 6) { PushMultStep((int)StationStep.step_Separate); DelCurrentStep(); break; } Separate(Count); Count = ParamSetMgr.GetInstance().GetIntParam("右剥料次数"); if (Count >= 2 && Count <= 6) { ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", true); PushMultStep((int)StationStep.step_WaitGetFinish); DelCurrentStep(); } else if (Count > 6) { ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false); PushMultStep((int)StationStep.step_Separate); DelCurrentStep(); break; } else { PushMultStep((int)StationStep.step_Separate); DelCurrentStep(); } break; case (int)StationStep.step_WaitGetFinish: if (ParamSetMgr.GetInstance().GetBoolParam("右剥料取料完成")) { ParamSetMgr.GetInstance().SetBoolParam("右剥料取料完成", false); PushMultStep((int)StationStep.step_Separate); DelCurrentStep(); } break; } }
private void LoadWortk(bool bManual = false) { try { if (!ParamSetMgr.GetInstance().GetBoolParam("右剥料回原点成功")) { return; } if (!IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器") && !ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") && loadState != LoadState.exceing && sys.g_AppMode == AppMode.AirRun && GlobalVariable.g_StationState == StationState.StationStateRun) { Info(string.Format("右装料平台有无感应器{0},右搜寻蜂鸣器成功{1},右拨料平台状态{2},右剥料吸嘴状态{3} 右剥料归位{4}", IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器"), ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"), PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState, NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState, ParamSetMgr.GetInstance().GetBoolParam("右剥料归位"))); retry_find: loadState = LoadState.exceing; WaranResult waranResult = FindBuzzer(); if (waranResult == WaranResult.Retry) { goto retry_find; } loadState = LoadState.None; } if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") && ParamSetMgr.GetInstance().GetBoolParam("右装料平台上升到位") && NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState == NozzleState.None && loadState != LoadState.exceing && GlobalVariable.g_StationState == StationState.StationStateRun) { Info(string.Format("右装料平台有无感应器{0},右搜寻蜂鸣器成功{1},右拨料平台状态{2},右剥料吸嘴状态{3} 右剥料归位{4}", IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器"), ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"), PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState, NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState, ParamSetMgr.GetInstance().GetBoolParam("右剥料归位"))); loadState = LoadState.exceing; Pick(); loadState = LoadState.None; } if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") && !ParamSetMgr.GetInstance().GetBoolParam("右装料平台上升到位") && GlobalVariable.g_StationState == StationState.StationStateRun) { Info("装料步进运动"); int pos = MotionMgr.GetInstace().GetAxisPos(AxisZ); double steplen = ParamSetMgr.GetInstance().GetDoubleParam("装料步长"); pos = pos + (int)(steplen * nResolutionZ); MoveSigleAxisPosWaitInpos(AxisZ, pos, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, this); ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", true); } } catch (Exception e) { loadState = LoadState.None; Warn("异常发生" + e.Message); return; } }
public bool Carray(bool bmanul = false) { Info("右剥料工站:搬运气缸开始搬运物料"); WaranResult waranResult; // CheckAndUp(bmanul); retry_carry_up: ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false); Info("右装料Z轴气缸电磁阀 上升"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_up; } StationRightPackage stationLeftPackage = (StationRightPackage)StationMgr.GetInstance().GetStation("右贴装站"); int AxisYNooFPageBack = stationLeftPackage.AxisY; int AxiXYNooFPageBack = stationLeftPackage.AxisX; retry_carryMoving: if (MotionMgr.GetInstace().GetHomeFinishFlag(AxisY) == AxisHomeFinishFlag.Homed && MotionMgr.GetInstace().GetAxisPos(AxisY) > GetStationPointDic()["剥料准备位"].pointY - 50 && MotionMgr.GetInstace().GetHomeFinishFlag(AxisYNooFPageBack) == AxisHomeFinishFlag.Homed && MotionMgr.GetInstace().GetAxisPos(AxisYNooFPageBack) < stationLeftPackage.GetStationPointDic()["搬料安全位"].pointY - 50 ) { #if false IOMgr.GetInstace().WriteIoBit("右剥料前推压紧气缸电磁阀", true); waranResult = CheckIobyName("右剥料前推压紧气缸到位", true, "右剥料工站:右剥料前推压紧气缸到位失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMoving; } IOMgr.GetInstace().WriteIoBit("右剥料压紧气缸电磁阀", true); waranResult = CheckIobyName("右剥料压紧气缸到位", true, "右剥料工站:右剥料压紧气缸到位失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMoving; } #endif Info("右装料搬运气缸电磁阀 移动搬料"); IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", true); waranResult = CheckIobyName("右装料搬运气缸到位", true, "右剥料工站:右装料搬运气缸到位失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMoving; } // CheckBuzzerPlaneAndUp(); retry_carry_down: Info("右装料Z轴气缸电磁阀 下降"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", true); waranResult = CheckIobyName("右装料Z轴气缸到位", true, "右剥料工站:右装料Z轴气缸原下降失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_down; } Info("右装料真空吸电磁阀 关闭"); Info("右装料破真空电磁阀 打开"); Info("右剥料真空吸电磁阀 打开"); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", true); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", true); Thread.Sleep(ParamSetMgr.GetInstance().GetIntParam("吸真空延时")); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); retry_carry_up2: Info("右装料Z轴气缸电磁阀 上升"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升 失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_up2; } waranResult = CheckIobyName("右剥料真空检测", true, "右剥料工站:Carray:蜂鸣器片 在剥料平台未吸紧", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_down; } Info("右装料真空吸电磁阀 复检 检查料是否脱落"); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true); waranResult = CheckIobyName("右装料真空检测", false, "右剥料工站 :Carray:蜂鸣器片 在装料抓手上未脱离", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_down; } IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); retry_carryMovingback: Info("右装料搬运气缸电磁阀 移动搬料"); IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", false); waranResult = CheckIobyName("右装料搬运气缸原位", true, "右剥料工站:Carray:搬运气缸回到原位", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMovingback; } IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料后压紧气缸电磁阀", false); ParamSetMgr.GetInstance().SetIntParam("右剥料次数", 0); NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState = NozzleState.None; PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState = PlaneState.Have; return(true); } else { Info("Y轴 在剥料准备位前 不能移动 请挪开 或者 右剥料平台Y轴 没有回原点"); return(false); WaranResult waranResult2 = AlarmMgr.GetIntance().WarnWithDlg("Y轴 在剥料准备位前 不能移动 请挪开 或者 右剥料平台Y轴 没有回原点", bmanul ? null : this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry); if (waranResult2 == WaranResult.Retry) { goto retry_carryMoving; } } }
public bool Pick(bool bmanul = false) { WaranResult waranResult; // CheckAndUp(bmanul); retry_carry_up: Info("右装料Z轴气缸电磁阀 上升"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_up; } if (bmanul || NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState == NozzleState.None) { retry_Self_Checking: IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", true); waranResult = CheckIobyName("右剥料真空检测", false, "右剥料平台:Carray:蜂鸣器片 在剥料平台有料 请挪开", bmanul); if (waranResult == WaranResult.Retry) { IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false); goto retry_Self_Checking; } IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true); waranResult = CheckIobyName("右装料真空检测", false, "右剥料平台:Carray:蜂鸣器片 右装料吸嘴可能堵住", bmanul); if (waranResult == WaranResult.Retry) { IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); goto retry_Self_Checking; } retry_carry: IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", false); Info("右装料搬运气缸 移动到装料顶部"); waranResult = CheckIobyName("右装料搬运气缸原位", true, "右剥料工站:右装料搬运气缸原位未到,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry; } Info("右装料Z轴气缸电磁阀 下降"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", true); waranResult = CheckIobyName("右装料Z轴气缸到位", true, "右剥料工站:右装料Z轴气缸电磁阀 下降失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry; } Info("右装料破真空电磁阀 关闭"); Info("右装料真空吸电磁阀 打开"); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true); Thread.Sleep(ParamSetMgr.GetInstance().GetIntParam("吸真空延时")); retry_carry_1: Info("右装料Z轴气缸电磁阀 上升"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_1; } Info("右装料真空吸 检查"); waranResult = CheckIobyName("右装料真空检测", true, "右剥料工站:右装料真空吸 检查失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry; } NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState = NozzleState.Have; ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", false); } return(true); }
public XYUPoint GetObjSnapPos(int nNozzleIndex) { return(NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].ObjSnapMachinePos); }