wangxinhui
17 小时以前 67348f250a1b7970059698002949a5e0a5f3c52f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
http://192.168.35.2:50060/xxx/xxx
 
//获取读取
                short R_HoisterSysStatus = otherDevice.Communicator.Read<short>("DB1.2012.0");//自动状态3为自动
                short R_HoisterCurrent = otherDevice.Communicator.Read<short>("DB1.2024.0");//当前层
                short R_HoisterRunStatus = otherDevice.Communicator.Read<short>("DB1.2014.0");//运行状态1无货待命 2
                short R_HoisterDoorStatus = otherDevice.Communicator.Read<short>("DB1.2026.0");
                short W_HoisterDoorStatus = otherDevice.Communicator.Read<short>("DB1.2028.0");
                if (R_HoisterSysStatus != 3)
                {
                    return agvResponse.Error($"设备状态不为自动");
                }
                bool IsSuccess = false;
                switch (agvHoisterApplyDTO.Request)
                {
                    case "1":
                        //判断提升机是否在当前层 如果当前层,关门状态,无货待命直接写入开门信号
                        if (R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && R_HoisterRunStatus == 1 && R_HoisterDoorStatus == 2)
                        {
                            IsSuccess = otherDevice.Communicator.Write("DB1.2008.0", (short)1);
                        }
                        //判断提升机不在当前层 如果不在当前层,关门状态,无货待命直接写入移动开门信号(当前)
                        else if (R_HoisterCurrent != agvHoisterApplyDTO.CurrentLayer && R_HoisterRunStatus == 1 && R_HoisterDoorStatus == 2)
                        {
                            bool WriteSuccess2 = otherDevice.Communicator.Write("DB1.2004.0", (short)agvHoisterApplyDTO.CurrentLayer);
                            bool WriteSuccess1 = otherDevice.Communicator.Write("DB1.2000.0", 99);
                        }
                        return IsSuccess ? agvResponse.OK($"请求{agvHoisterApplyDTO.Request}成功,{agvHoisterApplyDTO.ReceiveTaskID}", "1") : agvResponse.Error($"请求{agvHoisterApplyDTO.Request}失败,{agvHoisterApplyDTO.ReceiveTaskID}");
                    case "2":
                        //判断提升机是否在当前层 如果当前层,开门状态,无货待命 放行
                        if (R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && R_HoisterRunStatus == 1 && R_HoisterDoorStatus == 1)
                        {
                            IsSuccess = true;
                        }
                        return IsSuccess ? agvResponse.OK($"请求{agvHoisterApplyDTO.Request}成功,{agvHoisterApplyDTO.ReceiveTaskID}", "2") : agvResponse.Error($"请求{agvHoisterApplyDTO.Request}失败,{agvHoisterApplyDTO.ReceiveTaskID}");
                    case "3":
                        //判断提升机是否在当前层 如果当前层,开门状态,有货待命写入关门信号
                        if (R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && R_HoisterRunStatus == 3 && R_HoisterDoorStatus == 1 && W_HoisterDoorStatus != 2)
                        {
                            otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 2);
                        }
                        //判断提升机是否在当前层 如果当前层,关门状态,有货待命写入移动开门信号(目的)
                        if (R_HoisterCurrent == agvHoisterApplyDTO.CurrentLayer && R_HoisterRunStatus == 3 && R_HoisterDoorStatus == 2)
                        {
                            otherDevice.SetValue(W_HoisterDB.W_HoisterTarget, agvHoisterApplyDTO.TargetLayer);
                            otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 1);
                            otherDevice.SetValue(W_HoisterDB.W_HoisterTask, 99);
                            IsSuccess = true;
                        }
                        return IsSuccess ? agvResponse.OK($"请求{agvHoisterApplyDTO.Request}成功,{agvHoisterApplyDTO.ReceiveTaskID}", "3") : agvResponse.Error($"请求{agvHoisterApplyDTO.Request}失败,{agvHoisterApplyDTO.ReceiveTaskID}");
                    case "4":
                        //判断提升机是否在目的层 如果目的层,开门状态,有货待命 放行
                        if (R_HoisterCurrent == agvHoisterApplyDTO.TargetLayer && R_HoisterRunStatus == 3 && R_HoisterDoorStatus == 1)
                        {
                            IsSuccess = true;
                        }
                        return IsSuccess ? agvResponse.OK($"请求{agvHoisterApplyDTO.Request}成功,{agvHoisterApplyDTO.ReceiveTaskID}", "4") : agvResponse.Error($"请求{agvHoisterApplyDTO.Request}失败,{agvHoisterApplyDTO.ReceiveTaskID}");
                    case "5":
                        //判断提升机是否在目的层 如果目的层,开门状态,无货待命写入关门信号
                        if (R_HoisterCurrent == agvHoisterApplyDTO.TargetLayer && R_HoisterRunStatus == 1 && R_HoisterDoorStatus == 1)
                        {
                            otherDevice.SetValue(W_HoisterDB.W_HoisterDoorStatus, 2);
                            IsSuccess = true;
                        }
                        return IsSuccess ? agvResponse.OK($"请求{agvHoisterApplyDTO.Request}成功,{agvHoisterApplyDTO.ReceiveTaskID}", "5") : agvResponse.Error($"请求{agvHoisterApplyDTO.Request}失败,{agvHoisterApplyDTO.ReceiveTaskID}");
                    default:
                        return agvResponse.Error($"未找到对应请求,Request:{agvHoisterApplyDTO.Request}");
                }