예제 #1
0
        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();
            }
        }
예제 #2
0
        private void Agv_grid_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex < 0 || e.ColumnIndex < 0)
                {
                    return;
                }

                SqlDbAGVLocation row = agv_grid.Rows[e.RowIndex].DataBoundItem as SqlDbAGVLocation;
                if (e.ColumnIndex == agv_grid.Columns.Count - 1)
                {
                    CreateAgvOrder(row);
                }
                if (agv_grid.Columns[e.ColumnIndex].HeaderText == "pallet")
                {
                    row.modbus_bit_read = !row.modbus_bit_read;
                    if (row.modbus_bit_read)
                    {
                        row.modbus_bit_last_on = DateTime.UtcNow;
                    }
                    else
                    {
                        row.modbus_bit_last_off = DateTime.UtcNow;
                    }

                    row.modbus_last_exception_date = new DateTime(2000, 1, 1);
                    row.modbus_last_exception_text = "";

                    row.Update();

                    foreach (DataGridViewRow drow in agv_grid.Rows)
                    {
                        SqlDbAGVLocation ddrow = drow.DataBoundItem as SqlDbAGVLocation;
                        if (ddrow != null && ddrow.modbus_address == row.modbus_address &&
                            ddrow.modbus_bit == row.modbus_bit && ddrow.modbus_bit_read != row.modbus_bit_read)
                        {
                            ddrow.modbus_bit_read = row.modbus_bit_read;

                            if (ddrow.modbus_bit_read)
                            {
                                ddrow.modbus_bit_last_on = DateTime.UtcNow;
                            }
                            else
                            {
                                ddrow.modbus_bit_last_off = DateTime.UtcNow;
                            }

                            ddrow.modbus_last_exception_date = new DateTime(2000, 1, 1);
                            ddrow.modbus_last_exception_text = "";

                            ddrow.Update();
                        }
                    }
                }
                if (agv_grid.Columns[e.ColumnIndex].HeaderText == "start")
                {
                    row.start_wanted = !row.start_wanted;
                    row.Update();
                }
            }
            catch
            { }
        }