Ejemplo n.º 1
0
        private double? CalcOppositeSensorScaleXZ(SensorOpposite senserOpposite, double[] inputData, string axisName)
        {
            double? scalex = null;
            if (senserOpposite != null)
            {
                if (senserOpposite.SensorList0.Count == 1 && senserOpposite.SensorList1.Count == 1)
                {
                    int index0 = senserOpposite.SensorList0[0].ChNo - 1;
                    int index1 = senserOpposite.SensorList1[0].ChNo - 1;
                    double data0 = inputData[index0 + 1];
                    double data1 = inputData[index1 + 1];
                    double datahigh0 = _SensorsHighValue[index0] - _SensorsLowValue[index0];
                    double datahigh1 = _SensorsHighValue[index1] - _SensorsLowValue[index1];

                    if (datahigh0 <= 0)
                        datahigh0 = _DefaultDataHigh;

                    if (datahigh1 <= 0)
                        datahigh1 = _DefaultDataHigh;

                    //double x0 = data0 - _SensorsLowValue[index0];
                    //double x1 = data1 - _SensorsLowValue[index1];

                    double x0 = (_MaxOffsetY / datahigh0) * (data0 - _SensorsLowValue[index0]);
                    double x1 = (_MaxOffsetY / datahigh1) * (data1 - _SensorsLowValue[index1]);

                    if (axisName == "X")
                    {
                        if (senserOpposite.SensorList0[0].Way == WayType.RIGHT)
                            x0 *= -1;

                        if (senserOpposite.SensorList1[0].Way == WayType.RIGHT)
                            x1 *= -1;
                    }
                    else if (axisName == "Z")
                    {
                        if (senserOpposite.SensorList0[0].Way == WayType.DOWN)
                            x0 *= -1;

                        if (senserOpposite.SensorList1[0].Way == WayType.DOWN)
                            x1 *= -1;
                    }

                    //double distance = senserOpposite.Distance + ((x1 - x0) / 1000);
                    double distance = senserOpposite.Distance + (x1 - x0);
                    if (distance < 0)
                        distance = 0;

                    scalex = Math.Abs(distance / senserOpposite.Distance);

                    if (scalex > _MaxScaleXZ)
                        scalex = _MaxScaleXZ;
                }
            }
            return scalex;
        }
Ejemplo n.º 2
0
        private void OppositeSensorCalulation(List<SensorPosition>[] senPosList)
        {
            bool isx = false;

            for (int i = 0; i < senPosList.Length; i++)
            {
                List<SensorPosition> senposleft = new List<SensorPosition>();
                List<SensorPosition> senposright = new List<SensorPosition>();

                if (senPosList[i] != null)
                {
                    if (senPosList[i].Count > 1)
                    {
                        foreach (SensorPosition senpos in senPosList[i])
                        {
                            if (senpos.Way == WayType.LEFT)
                            {
                                senposleft.Add(senpos);
                                isx = true;
                            }
                            else if (senpos.Way == WayType.RIGHT)
                            {
                                senposright.Add(senpos);
                                isx = true;
                            }
                            else if (senpos.Way == WayType.UP)
                            {
                                senposright.Add(senpos);
                                isx = false;
                            }
                            else if (senpos.Way == WayType.DOWN)
                            {
                                senposright.Add(senpos);
                                isx = false;
                            }
                        }
                    }

                    if (senposleft.Count > 0 && senposright.Count > 0)
                    {
                        SensorOpposite[] senopposite = null;
                        if (isx)
                            senopposite = _SensorXOppositeArrays;
                        else
                            senopposite = _SensorZOppositeArrays;

                        if (senopposite[i] == null)
                            senopposite[i] = new SensorOpposite();

                        senopposite[i].SensorList0 = senposleft;
                        senopposite[i].SensorList1 = senposright;

                        //if (isx)
                        //    senopposite[i].Distance = senposright[0].X - senposleft[0].X;
                        //else
                        //    senopposite[i].Distance = senposright[0].Z - senposleft[0].Z;

                        Model3DGroup upgroup = _MachineModel.UpperPartModel3DGroup.Children[0] as Model3DGroup;
                        Model3DGroup downgroup = _MachineModel.LowerPartModel3DGroup.Children[0] as Model3DGroup;

                        TargetType target = senposright[0].Target;
                        Model3D model = null;
                        double objectwidth = 0;
                        if (target == TargetType.STRIPPER)
                            model = upgroup.Children[3];
                        else if (target == TargetType.UPPER_PRESS)
                            model = upgroup.Children[2];
                        else if (target == TargetType.UPPER)
                            model = upgroup.Children[1];
                        else if (target == TargetType.LOWER)
                            model = downgroup.Children[1];
                        else if (target == TargetType.LOWER_PRESS)
                            model = downgroup.Children[2];

                        if (isx)
                        {
                            objectwidth = model.Bounds.SizeX;
                        }
                        else
                        {
                            objectwidth = model.Bounds.SizeZ;
                        }

                        senopposite[i].Distance = objectwidth;
                    }
                }
            }
        }