wangxinhui
2024-11-06 8f392cc88b0768b74efca3b68785cf5aa1c38e70
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
using HslCommunication;
using System;
using System.Collections.Generic;
using System.Linq;
using WIDESEA_Common.Tools;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Services.IRepositories;
using WIDESEA_Services.Repositories;
using WIDESEA_WCS.WCSClient;
 
namespace WIDESEA_WCS.SchedulerExecute.AGV
{
    public partial class AGVSchedulerExecute
    {
        /// <summary>
        /// 传递AGV与提升机动作流对接信号
        /// </summary>
        public static void AgvAndEquiWork_TSJ3()
        {
            VOLContext Context = new VOLContext();
            Idt_plcinfodetailRepository plcdetailRep = new dt_plcinfodetailRepository(Context);
            Idt_plcinfoheadRepository plcheadRep = new dt_plcinfoheadRepository(Context);
            PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度");
 
            #region 组装车间提升机信号传递
            List<string> ZZCJ = new List<string> { "提升机3" };
            double RuLiaoKo_DJLC = 90.0;
            double RuLiaoKo_SBBJ = 92.0;
            int AGV_uplen = 3200;
            int agv_dowen = 3300;
            int agv_eupdown = 3400;
            int agv_endown = 3500;
            try
            {
                foreach (var tsj in ZZCJ)
                {
                    if (tsj == null) return;
                    PLCClient agv_plc = WCSService.Clients.Find(v => v.PLCName == tsj);
                    if (agv_plc == null)
                    {
                        return;
                        //AGV_uplen += 400;
                        //agv_dowen += 400;
                        //agv_eupdown += 400;
                        //agv_endown += 400;
                        //continue;
                    }
                    #region MyRegion
                    //AGV一楼上二楼
                    //AGV请求进入风淋室
                    //AGV一楼上二楼风淋室不需要吹风,所以避开吹风对接,需要知道风淋门的光电检测没有有AGV在里面,AGV请求开一门
 
                    //AGV请求进入提升机
                    //AGV一楼上二楼风淋室不需要吹风,所以避开吹风对接,需要知道风淋门的光电检测有AGV在里面,AGV请求开二门,agv请求进入提升机
 
 
                    //AGV二楼下一楼  
                    //AGV从提升机进入风淋室
                    //需要知道风淋门的光电检测没有有AGV在里面,AGV请求开二门
 
                    //AGV从风淋室往一门出来 风淋室需要吹风,所以做吹风对接
                    //需要知道风淋门的光电检测AGV在里面,AGV请求开一门,就等待风吹完,吹风完成
                    //风淋室会自动打开门,WCS获取到开门到位信号代表风吹完了让AGV出去
                    #endregion
 
                    #region 一楼上二楼组装提升机信号传递
                    //读取AGV报警信号入口
                    OperateResult<bool> R_UP_hrea = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002." + (agv_dowen + RuLiaoKo_SBBJ));
                    //写入提升机
                    OperateResult W_bj_tsj = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.192", R_UP_hrea.Content);
                    //---------
                    //读取AGV对接流程 一楼AGV请求进入提升机
                    OperateResult<Int16> R_UP_djlc = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002." + (agv_dowen + RuLiaoKo_DJLC));
                    //写入提升机
                    OperateResult W_djlc_tsj = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.190", R_UP_djlc.Content);
 
                    //读取提升机报警信号
                    OperateResult<bool> R_bj_tsj = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.92");
                    //写入agv
                    OperateResult W_bj_agv = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (AGV_uplen + RuLiaoKo_SBBJ), R_bj_tsj.Content);
                    //---------
                    //读取提升机对接流程  一楼是否允许AGV进入提升机
                    OperateResult<Int16> R_UP_TSJ = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB51.90");
                    //写入AGV
                    OperateResult W_djlc_AGV = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (AGV_uplen + RuLiaoKo_DJLC), R_UP_TSJ.Content);
                    #endregion
 
                    #region 二楼下一楼组装提升机信号传递
                    //读取AGV报警信号出口
                    OperateResult<bool> R_UP_hrea2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002." + (agv_endown + RuLiaoKo_SBBJ));
                    //写入提升机
                    OperateResult W_bj_tsj2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.392", R_UP_hrea2.Content);
                    //---------
                    //读取AGV对接流程 二楼AGV请求进入提升机
                    OperateResult<Int16> R_UP_djlc2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002." + (agv_endown + RuLiaoKo_DJLC));
                    //写入提升机
                    OperateResult W_djlc_tsj2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.390", R_UP_djlc2.Content);
                    //读取提升机报警信号
 
                    OperateResult<bool> R_bj_tsj2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.292");
                    //写入agv
                    OperateResult W_bj_agv2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (agv_eupdown + RuLiaoKo_SBBJ), R_bj_tsj2.Content);
                    //---------
                    //读取提升机对接流程  二楼是否允许AGV进入提升机
                    OperateResult<Int16> R_UP_TSJ2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB51.290");
                    //写入AGV
                    OperateResult W_djlc_AGV2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (agv_eupdown + RuLiaoKo_DJLC), R_UP_TSJ2.Content);
                    #endregion
                }
 
            }
            catch (Exception ex)
            {
                WriteLog.GetLog().Write("传递组装AGV与正极提升机动作流对接信号" + ex.Message.ToString() + DateTime.Now, "传递组装AGV与正极提升机动作流对接信号");
            }
 
 
            #endregion
 
           // WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递");
        }
 
        public static byte[] SpiltnotByte_0(byte[] ReadByte)
        {
            byte[] Read_94_1byte = new byte[8];
            for (int i = 1; i <= ReadByte.Count() - 8; i++)
            {
                Read_94_1byte[i - 1] = ReadByte[i - 1];
            }
            return Read_94_1byte;
        }
        public static byte[] SpiltnotByte_8(byte[] ReadByte)
        {
            byte[] Read_94_8byte = new byte[8];
            for (int i = 8; i < ReadByte.Count(); i++)
            {
                Read_94_8byte[i - 8] = ReadByte[i];
            }
            return Read_94_8byte;
        }
 
 
        public static byte[] SpiltByte_0(byte[] ReadByte)
        {
            byte[] Read_94_1byte = new byte[8];
            for (int i = 1; i <= ReadByte.Count() - 8; i++)
            {
                Read_94_1byte[i - 1] = ReadByte[i];
                Read_94_1byte[i] = ReadByte[i - 1];
                i++;
            }
            return Read_94_1byte;
        }
        public static byte[] SpiltByte_8(byte[] ReadByte)
        {
            byte[] Read_94_8byte = new byte[8];
            for (int i = 9; i <= ReadByte.Count(); i++)
            {
                Read_94_8byte[i - 9] = ReadByte[i];
                Read_94_8byte[i - 8] = ReadByte[i - 1];
                i++;
            }
            return Read_94_8byte;
        }
    }
}