示例#1
0
 public static void MoveAxisToAbsPosition(CNCMachine machine, float axisXMachMax, float axisXMachMin, float axisYMachMax, float axisYMachMin, CNCPort xPosPort, CNCPort yPosPort, CNCPort moveStartPort, float absX, float absY)
 {
     if (((machine != null) && (xPosPort != null)) && ((yPosPort != null) && (moveStartPort != null)))
     {
         SyntecRemoteCNC cNCStation = GetCNCStation(machine.MachineIP.ToString());
         if (cNCStation != null)
         {
             CNCPosition cncPosition = new CNCPosition();
             if (GetPosition(cNCStation, cncPosition))
             {
                 List <float> dist = new List <float>();
                 if (cncPosition.AxisName.Count > 0)
                 {
                     dist.Add(absX - cncPosition.Abs[0]);
                 }
                 else
                 {
                     dist.Add(0f);
                 }
                 if (cncPosition.AxisName.Count > 1)
                 {
                     dist.Add(absY - cncPosition.Abs[1]);
                 }
                 else
                 {
                     dist.Add(0f);
                 }
                 MoveAxis(cNCStation, dist, axisXMachMax, axisXMachMin, axisYMachMax, axisYMachMin, xPosPort.PortNumber, yPosPort.PortNumber, moveStartPort.PortNumber, machine.ResetPortIntervalTime.Value);
             }
         }
     }
 }
示例#2
0
 public static bool GetPosition(SyntecRemoteCNC cnc, CNCPosition cncPosition)
 {
     if (cnc != null)
     {
         short    decPoint = 0;
         string[] axisName = null;
         string[] unit     = null;
         float[]  mach     = null;
         float[]  abs      = null;
         float[]  rel      = null;
         float[]  dist     = null;
         short    num2     = cnc.READ_position(out axisName, out decPoint, out unit, out mach, out abs, out rel, out dist);
         if (num2 == 0)
         {
             cncPosition.AxisName = axisName.ToList <string>();
             cncPosition.DecPoint = decPoint;
             cncPosition.Unit     = unit.ToList <string>();
             cncPosition.Mach     = mach.ToList <float>();
             cncPosition.Abs      = abs.ToList <float>();
             cncPosition.Rel      = rel.ToList <float>();
             cncPosition.Dist     = dist.ToList <float>();
             return(true);
         }
         cncPosition.ErrMsg = cnc.Host + " : " + num2.ToString();
     }
     return(false);
 }
示例#3
0
 public static bool GetPosition(CNCMachine machine, CNCPosition cncPosition)
 {
     if (machine == null)
     {
         return(false);
     }
     return(GetPosition(GetCNCStation(machine.MachineIP.ToString()), cncPosition));
 }
示例#4
0
        public static void MoveAxis(SyntecRemoteCNC cnc, List <float> dist, float axisXMachMax, float axisXMachMin, float axisYMachMax, float axisYMachMin, int axisXRegisterAddr, int axisYRegisterAddr, int moveStartPort, int resetPortInterval)
        {
            CNCPosition cncPosition = new CNCPosition();

            if (GetPosition(cnc, cncPosition))
            {
                if ((cncPosition.AxisName.Count > 0) && (dist.Count > 0))
                {
                    float num = cncPosition.Mach[0] + dist[0];
                    if (num > axisXMachMax)
                    {
                        num = axisXMachMax;
                    }
                    if (num < axisXMachMin)
                    {
                        num = axisXMachMin;
                    }
                    num *= CarryLine.Common.Common.AxisUnitRate;
                    cnc.WRITE_plc_register(axisXRegisterAddr, axisXRegisterAddr, new int[] { (int)num });
                }
                if ((cncPosition.AxisName.Count > 1) && (dist.Count > 1))
                {
                    float num2 = cncPosition.Mach[1] + dist[1];
                    if (num2 > axisYMachMax)
                    {
                        num2 = axisYMachMax;
                    }
                    if (num2 < axisYMachMin)
                    {
                        num2 = axisYMachMin;
                    }
                    num2 *= CarryLine.Common.Common.AxisUnitRate;
                    cnc.WRITE_plc_register(axisYRegisterAddr, axisYRegisterAddr, new int[] { (int)num2 });
                }
                cnc.WRITE_plc_register(moveStartPort, moveStartPort, new int[1]);
                Thread.Sleep(resetPortInterval);
                cnc.WRITE_plc_register(moveStartPort, moveStartPort, new int[] { 1 });
                Thread.Sleep(resetPortInterval);
                cnc.WRITE_plc_register(moveStartPort, moveStartPort, new int[1]);
            }
        }