wangxinhui
2024-12-26 78b99e5348592a29ca1393a5e13db619cc4eba56
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
using HslCommunication;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using WIDESEA_Common;
using WIDESEA_Common.Tools;
using WIDESEA_Core.Utilities;
using WIDESEA_Services.Services;
using WIDESEA_WCS.WCSClient;
using static FreeSql.Internal.GlobalFilter;
 
namespace WIDESEA_WCS.SchedulerExecute.AGV
{
    public partial class AGVSchedulerExecute
    {
        /// <summary>
        /// 传递AGV与卷帘门信号
        /// </summary>
        public static void AgvAndEquiWork_JLM()
        {
            PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度");
            PLCClient oiplc1F = WCSService.Clients.Find(v => v.PLCName == PLCConst.PLCName1FLKHCJ);
 
            #region 无线io模块 104卷绕中控 开门信号传递
            int comErr = 0;//自动门掉线  "拆包间卷帘门139", "涂布正负极卷帘门142",
            double doorCode = 2.0; //自动门ID
            double doorState = 24.0;//自动门状态,1门关到位,2 门开到位,3门未到位
            double doorOpen = 26.0; //自动门控制开
 
            int RKErr = 450;//自动门掉线
            double RKCode = 452.0; //自动门ID
            double RKState = 474.0;//自动门状态,1门关到位,2 门开到位,3门未到位
            double RKOpen = 476.0; //自动门控制开
            try
            {
                if (agvjrplc == null)
                {
                    return;
                }
                List<string> Door = new List<string> { "负极库前门", "正极库前门", "负极库后门", "正极库后门", "正级库223门", "组装风铃门前门", "组装风铃门后门", "组装226门", "组装227门", "组装228门", "组装229门" };
 
                foreach (var item in Door)
                {
                    OperateResult<bool> R_comErr = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + doorOpen);
                    if (!R_comErr.IsSuccess)
                    {
                        continue;
                    }
                    //AGV请求开门
                    if (R_comErr.Content)
                    {
                        Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
                        Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
                        Doorsignal.Add("DoorName", item.ToString());//item.ToString()
                        string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
                        WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
                        //if (item == "组装风铃门前门")
                        //{
                        //    Console.WriteLine(wificontent.Status);
                        //}
                        if (wificontent.Status)
                        {
                            //if (item == "组装风铃门前门")
                            //{
                            //    Console.WriteLine(Convert.ToUInt16(wificontent.Data) );
                            //}
                            if (Convert.ToBoolean(wificontent.Data) == false)//自动门掉线
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                            }
                            else if (Convert.ToUInt16(wificontent.Data) == 2)//开门到位
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
                            }
                            else if (Convert.ToUInt16(wificontent.Data) == 3)//门未到位
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
                            }
                        }
                    }
                    else
                    {
                        //OperateResult<UInt16> R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState);
                        //if (R_stationDockSteps.Content == 1)//关门到位
                        //{
                        //    comErr += 30;
                        //    doorCode += 30;
                        //    doorState += 30;
                        //    doorOpen += 30;
                        //    continue;
                        //}
                        //else
                        //{
                        // WIDESEA_Common.Tools.WriteLog.GetLog("断开开门信号").Write($"Info:{item}+{DateTime.Now}", "断开开门信号");
                        //AGV不给开门信号的时候 断开开门信号
                        Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
                        Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
                        Doorsigna1.Add("DoorName", item.ToString());
                        string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
                        WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
                        if (wificontent2.Status)
                        {
                            if (Convert.ToBoolean(wificontent2.Data) == false)//自动门掉线
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                            }
                            ////else if (Convert.ToUInt16(wificontent2.Data) == 1)//关门到位
                            ////{
                            ////    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
                            ////}
                            else
                            {
                                //关门未到位
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
                            }
                        }
                        //}
                    }
                    comErr += 30;
                    doorCode += 30;
                    doorState += 30;
                    doorOpen += 30;
                }
                //入壳卷帘门 24/12/12新增
                OperateResult<bool> R_RKOpen = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + RKOpen);
                if (!R_RKOpen.IsSuccess)
                {
                    return;
                }
                //AGV请求开门
                if (R_RKOpen.Content)
                {
                    OperateResult RKOpenJLM = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.Write("s=2;12",true);
                    if (RKOpenJLM.IsSuccess)
                    {
                        OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8612");
                        if (JLMOpen.Content)//开门到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 2);
                        }
                        else//门未到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3);
                        }
                    }
                    else
                    {
                        OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKErr), true);
                    }
                }
                else
                {
                    //AGV不给开门信号的时候 断开开门信号
                    OperateResult RKOpenJLM = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.Write("s=2;12", false);
                    if (RKOpenJLM.IsSuccess)
                    {
                        OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8613");
                        if (JLMOpen.Content)//关门到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 1);
                        }
                        else//门未到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3);
                        }
                    }
                    else
                    {
                        OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKErr), true);
                    }
                }
            }
            catch (Exception ex)
            {
                WriteLog.GetLog().Write("传递组装AGV与卷帘门信号异常" + ex.Message.ToString() + DateTime.Now, "传递组装AGV与卷帘门信号");
            }
            #endregion
 
           // WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递");
 
        }
 
 
    }
}