コード例 #1
0
        public dynamic StartAgvAction(dynamic p)
        {
            string a     = p.agvname;
            bool   found = false;
            var    agvs  = Main.Database.Fetch <SqlDbAGVLocation>("WHERE name = @0 AND plc_address <> 0", a);

            foreach (var agv in agvs)
            {
                found = true;

                bool test = false;

                if (!test)
                {
                    // only signal the agv's
                    agv.start_wanted = true;
                    agv.Update();
                }
                else
                {
                    // orders should come from AS400

                    if (agv.direction == "in")
                    {
                        TransportOrder dbn = new TransportOrder()
                        {
                            //ID = TransportOrder.GetNextNegativeID(),
                            ID       = TransportOrder.GetNextID(),
                            Priority = 100,
                            // OrderState = item.OrderState,
                            AGV           = 0,
                            AGVdest       = 0,
                            CylinderState = 1,
                            Diameter      = -1,
                            Direction     = 1,
                            Label         = "##REST##",
                            ItemNumber    = "",
                            JobNumber     = "test",

                            AGV_location_machinename = agv.machine_name,
                            rewind_code = agv.rewind_code,
                            manual_mode = 0,

                            Inserted   = DateTime.UtcNow,
                            LastChange = DateTime.UtcNow,

                            AGVrequested = new DateTime(2000, 1, 1),
                            AGVdone      = new DateTime(2000, 1, 1),
                            AGVsource    = 0,
                            LSReached    = new DateTime(2000, 1, 1),
                        };

                        dbn.State = TransportOrder.OrderStates.New;

                        dbn.TransportSource = TransportOrder.Destinations.Press;
                        if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                        {
                            dbn.TransportSource = TransportOrder.Destinations.Laminator;
                        }
                        dbn.TransportTarget = TransportOrder.Destinations.Storage;

                        // incoming

                        // unknown diameter
                        var nc = CreateCylinder("##REST##", -1, "", "test");
                        dbn.Cylinder_ID = nc.Cylinder_ID;
                        dbn.Insert();

                        agv.storage_order_id = dbn.ID;
                        agv.Update();
                    }

                    if (agv.direction == "out")
                    {
                        Cylinder cyl  = null;
                        var      cyls = Main.Database.Fetch <Cylinder>("WHERE Number='2125511'");
                        foreach (var cy_test in cyls)
                        {
                            if (cy_test.InRack)
                            {
                                cyl = cy_test;
                                break;
                            }
                        }

                        if (cyl == null)
                        {
                            return(Response.AsText("NO CYLINDER FOUND"));
                        }

                        TransportOrder dbn = new TransportOrder()
                        {
                            ID       = TransportOrder.GetNextNegativeID(),
                            Priority = 100,
                            // OrderState = item.OrderState,
                            AGV           = 0,
                            AGVdest       = 0,
                            Cylinder_ID   = cyl.Cylinder_ID,
                            CylinderState = cyl.CylinderState_ID,
                            Diameter      = cyl.Diameter,
                            Label         = cyl.Number,
                            ItemNumber    = cyl.ItemNumber,
                            JobNumber     = "test",

                            AGV_location_machinename = agv.machine_name,
                            rewind_code = agv.rewind_code,
                            manual_mode = 0,

                            LoadingStation = 10 + agv.iotable,

                            Inserted   = DateTime.UtcNow,
                            LastChange = DateTime.UtcNow,

                            AGVrequested = new DateTime(2000, 1, 1),
                            AGVdone      = new DateTime(2000, 1, 1),
                            AGVsource    = 0,
                            LSReached    = new DateTime(2000, 1, 1),
                        };

                        dbn.State = TransportOrder.OrderStates.New;

                        // outgoing
                        dbn.TransportSource = TransportOrder.Destinations.Storage;
                        dbn.TransportTarget = TransportOrder.Destinations.Press;
                        if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                        {
                            dbn.TransportTarget = TransportOrder.Destinations.Laminator;
                        }

                        dbn.Insert();

                        agv.storage_order_id = dbn.ID;
                        agv.start_wanted     = false;
                        agv.Update();
                    }
                }
            }

            if (found)
            {
                return(Response.AsRedirect("/agv/table"));
            }
            else
            {
                return(Response.AsText("NAME NOT FOUND"));
            }
        }
コード例 #2
0
ファイル: AGVTester.cs プロジェクト: AlexBroecker/WIP_PC
        private void CreateAgvOrder(SqlDbAGVLocation agv)
        {
            int priority = Main.Database.ExecuteScalar <int>("SELECT COALESCE(MAX(Priority), 10) + 10 FROM StorageOrders");

            if (priority <= 0)
            {
                priority = 110;
            }

            // orders should come from AS400

            if (agv.direction == "in")
            {
                TransportOrder dbn = new TransportOrder()
                {
                    //ID = TransportOrder.GetNextNegativeID(),
                    ID       = TransportOrder.GetNextID(),
                    Priority = priority,
                    // OrderState = item.OrderState,
                    AGV           = 0,
                    AGVdest       = 0,
                    CylinderState = 1,
                    Diameter      = -1,
                    Direction     = 1,
                    Label         = "##REST##",
                    ItemNumber    = "",
                    JobNumber     = "test",

                    AGV_location_machinename = agv.machine_name,
                    rewind_code = agv.rewind_code,
                    manual_mode = 0,

                    Inserted   = DateTime.UtcNow,
                    LastChange = DateTime.UtcNow,

                    AGVrequested = new DateTime(2000, 1, 1),
                    AGVdone      = new DateTime(2000, 1, 1),
                    AGVsource    = 0,
                    LSReached    = new DateTime(2000, 1, 1),
                };

                dbn.State = TransportOrder.OrderStates.New;

                dbn.TransportSource = TransportOrder.Destinations.Press;
                if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                {
                    dbn.TransportSource = TransportOrder.Destinations.Laminator;
                }
                dbn.TransportTarget = TransportOrder.Destinations.Storage;

                // incoming

                // unknown diameter
                var nc = CreateCylinder("##REST##", -1, "", "test");
                dbn.Cylinder_ID = nc.Cylinder_ID;
                dbn.Insert();

                agv.storage_order_id = dbn.ID;
                agv.Update();
            }

            if (agv.direction == "out")
            {
                Cylinder cyl = GetRandomCylinder();

                TransportOrder dbn = new TransportOrder()
                {
                    ID       = TransportOrder.GetNextID(),
                    Priority = priority,
                    // OrderState = item.OrderState,
                    AGV           = 0,
                    AGVdest       = 0,
                    Cylinder_ID   = cyl.Cylinder_ID,
                    CylinderState = cyl.CylinderState_ID,
                    Diameter      = cyl.Diameter,
                    Label         = cyl.Number,
                    ItemNumber    = cyl.ItemNumber,
                    JobNumber     = "test",

                    AGV_location_machinename = agv.machine_name,
                    rewind_code = agv.rewind_code,
                    manual_mode = 0,

                    LoadingStation = 0,

                    Inserted   = DateTime.UtcNow,
                    LastChange = DateTime.UtcNow,

                    AGVrequested = new DateTime(2000, 1, 1),
                    AGVdone      = new DateTime(2000, 1, 1),
                    AGVsource    = 0,
                    LSReached    = new DateTime(2000, 1, 1),
                };

                dbn.State = TransportOrder.OrderStates.New;

                // outgoing
                dbn.TransportSource = TransportOrder.Destinations.Storage;
                dbn.TransportTarget = TransportOrder.Destinations.Press;
                if (dbn.AGV_location_machinename.ToLowerInvariant().Contains("lam"))
                {
                    dbn.TransportTarget = TransportOrder.Destinations.Laminator;
                }

                dbn.Insert();

                agv.storage_order_id = dbn.ID;
                agv.start_wanted     = false;
                agv.Update();
            }
        }
コード例 #3
0
        public dynamic SaveLoadingstationData(dynamic parameters)
        {
            try
            {
                var update = this.Bind <DataOnLoadingStation>();
                if (update == null)
                {
                    return(this.Error("Exception saving data, no data given!"));
                }

                List <Cylinder> search = Cylinder.LoadCylinders(update.label);

                Hook ls_out = Hook.LoadingStation(parameters.id, inside: false);
                if (ls_out.CylinderID != 0 && ls_out.CylinderNumber != update.label)
                {
                    return(this.Error("Loadig-Station already occupied"));
                }
                Hook ls_in = Hook.LoadingStation(parameters.id, inside: true);
                if (ls_in.CylinderID != 0)
                {
                    return(this.Error("Loadig-Station already occupied (inside)"));
                }

                int cyl_id = 0;
                if (search != null && search.Count == 1)
                {
                    cyl_id = search[0].Cylinder_ID;
                }

                if (search == null || search.Count == 0)
                {
                    Cylinder c = new Cylinder()
                    {
                        Number = update.label
                    };
                    cyl_id        = Cylinder.GetNextId();
                    c.Cylinder_ID = cyl_id;
                    c.Created     = DateTime.Now;
                    c.Diameter    = update.diameter;

                    c.Info          = "";
                    c.ItemNumber    = update.item;
                    c.JobNumber     = update.jobnumber;
                    c.ProductLength = 0;


                    c.LastLoad     = new DateTime(2000, 1, 1);
                    c.LastModified = new DateTime(2000, 1, 1);
                    c.LastMoved    = new DateTime(2000, 1, 1);
                    c.LastUnload   = new DateTime(2000, 1, 1);
                    c.NextNeeded   = new DateTime(2000, 1, 1);
                    c.ReadyAfter   = new DateTime(2000, 1, 1);
                    c.TargetTime   = new DateTime(2000, 1, 1);

                    c.Width = 2300;

                    c.Insert();
                }

                ls_out.CylinderID = cyl_id;

                TransportOrder ta = new TransportOrder();
                ta.ID = TransportOrder.GetNextID();

                switch (update.id)
                {
                case 1:
                    ta.TransportSource = TransportOrder.Destinations.Press;
                    ta.SourceHook      = Hook.LS01_outside.ToString(",");
                    break;

                case 2:
                    ta.TransportSource = TransportOrder.Destinations.Press;
                    ta.SourceHook      = Hook.LS02_outside.ToString(",");
                    break;

                case 3:
                    ta.TransportSource = TransportOrder.Destinations.Press;
                    ta.SourceHook      = Hook.LS03_outside.ToString(",");
                    break;

                default:
                    return(this.Error("wrong loading station number given!"));
                }
                ta.TransportTarget = TransportOrder.Destinations.Storage;

                ta.Inserted    = DateTime.Now;
                ta.Cylinder_ID = cyl_id;
                ta.State       = TransportOrder.OrderStates.New;
                ta.Insert();
            }
            catch (Exception ex)
            {
                return(this.Error("Exception SaveLoadingstationData", ex));
            }

            return(Response.AsRedirect($"/loadingstation/{parameters.id}"));
        }