12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099 |
- using AGV_WPF.Tools;
- using AGV_WPF_Global;
- using HslCommunication;
- using HslCommunication.LogNet;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Configuration;
- using System.Data;
- using System.Data.OleDb;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using WCS.API;
- using WCS.API.Model;
- namespace AGV_WPF
- {
- public partial class DispatchSystem7515 : Form
- {
- public static DataTable dtStation = new DataTable();
- public static DataTable dtStation1 = new DataTable();
- public static DataTable dtStationPLC = new DataTable();
- public static DataTable dtType = new DataTable();
- static LogNetDateTime logNetDateTimeSPS;
- private static object portLock1 = new object();
- private delegate void InvokeDelegate();
- List<string> listTypeRoutes = new List<string>();
- List<string> listTypes = new List<string>();
- List<Button> listTypeBtns = new List<Button>();
- public static DataTable dtCombineTraffic = new DataTable();
- public static DataTable dtCombineTrafficPLC = new DataTable();
- static LogNetDateTime logNetDateTimeCJYTraffic;
- static LogNetDateTime logNetDateTimeCTraffic;
- DataTable DtTraffic = new DataTable();
- LogNetDateTime logNetTraffic;
- static LogNetDateTime logNetDateTimeError;
- LogNetDateTime logNetTraffic2;
- DataTable DtRedGreenBox = new DataTable();
- public DispatchSystem7515()
- {
- InitializeComponent();
- }
- private void DispatchSystem7515_Load(object sender, EventArgs e)
- {
- if (!Directory.Exists("D:/Logs/工位放行记录"))
- {
- Directory.CreateDirectory("D:/Logs/工位放行记录");
- }
- logNetDateTimeSPS = new LogNetDateTime("D:/Logs/工位放行记录", GenerateMode.ByEveryDay);
- if (!Directory.Exists("D:/Logs/调度报错记录"))
- {
- Directory.CreateDirectory("D:/Logs/调度报错记录");
- }
- logNetDateTimeError = new LogNetDateTime("D:/Logs/调度报错记录", GenerateMode.ByEveryDay);
- if (!Directory.Exists("D:/Logs/井源联合管制记录"))
- {
- Directory.CreateDirectory("D:/Logs/井源联合管制记录");
- }
- logNetDateTimeCJYTraffic = new LogNetDateTime("D:/Logs/井源联合管制记录", GenerateMode.ByEveryDay);
- if (!Directory.Exists("D:/Logs/联合管制记录"))
- {
- Directory.CreateDirectory("D:/Logs/联合管制记录");
- }
- logNetDateTimeCTraffic = new LogNetDateTime("D:/Logs/联合管制记录", GenerateMode.ByEveryDay);
- string path = "管制点记录";
- if (!Directory.Exists("D:/AGVLogs/" + path))
- {
- Directory.CreateDirectory("D:/AGVLogs/" + path);
- }
- logNetTraffic = new LogNetDateTime("D:/AGVLogs/" + path, GenerateMode.ByEveryDay);
- string path2 = "管制点记录2";
- if (!Directory.Exists("D:/AGVLogs/" + path2))
- {
- Directory.CreateDirectory("D:/AGVLogs/" + path2);
- }
- logNetTraffic2 = new LogNetDateTime("D:/AGVLogs/" + path2, GenerateMode.ByEveryDay);
- this.FormClosing += DispatchSystem7515_FormClosing;
- StartHttpServer();
- LoadConfig();
- Task.Factory.StartNew(() => ScanLogFilesDateTime());
- }
- void ScanLogFilesDateTime()
- {
- while (true)
- {
- try
- {
- string m_Directory = @"Exception";
- string[] logNetExceptionFiles = Directory.GetFiles(m_Directory);
- if (logNetExceptionFiles != null && logNetExceptionFiles.Length > 7)
- {
- foreach (var file in logNetExceptionFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string m_DirectoryLog = @"Log";
- if (!System.IO.Directory.Exists(m_DirectoryLog))
- {
- System.IO.Directory.CreateDirectory(m_DirectoryLog);
- }
- string[] logNetFiles = Directory.GetFiles(m_DirectoryLog);
- if (logNetFiles != null && logNetFiles.Length > 7)
- {
- foreach (var file in logNetFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string[] logNetBoxFiles = Directory.GetFiles("D:/Logs/对接盒记录");
- if (logNetBoxFiles != null && logNetBoxFiles.Length > 7)
- {
- foreach (var file in logNetBoxFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string[] logNetStationReleaseAGVFiles = Directory.GetFiles("D:/Logs/工位放行记录");
- if (logNetStationReleaseAGVFiles != null && logNetStationReleaseAGVFiles.Length > 7)
- {
- foreach (var file in logNetStationReleaseAGVFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string[] logNetErrorFiles = Directory.GetFiles("D:/Logs/调度报错记录");
- if (logNetErrorFiles != null && logNetErrorFiles.Length > 7)
- {
- foreach (var file in logNetErrorFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string[] logNetJYUnionTrafficFiles = Directory.GetFiles("D:/Logs/井源联合管制记录");
- if (logNetJYUnionTrafficFiles != null && logNetJYUnionTrafficFiles.Length > 7)
- {
- foreach (var file in logNetJYUnionTrafficFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string[] logNetUnionTrafficFiles = Directory.GetFiles("D:/Logs/联合管制记录");
- if (logNetUnionTrafficFiles != null && logNetUnionTrafficFiles.Length > 7)
- {
- foreach (var file in logNetUnionTrafficFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string path2 = "管制点记录2";
- string[] logNetTraffic2Files = Directory.GetFiles("D:/AGVLogs/" + path2);
- if (logNetTraffic2Files != null && logNetTraffic2Files.Length > 7)
- {
- foreach (var file in logNetTraffic2Files)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- string path = "管制点记录";
- string[] logNetTrafficFiles = Directory.GetFiles("D:/AGVLogs/" + path);
- if (logNetTrafficFiles != null && logNetTrafficFiles.Length > 7)
- {
- foreach (var file in logNetTrafficFiles)
- {
- if (File.GetLastWriteTime(file) < DateTime.Now.AddDays(-7))
- {
- File.Delete(file);
- }
- }
- }
- }
- catch
- {
- }
- Thread.Sleep(60000);
- }
- }
- private void DispatchSystem7515_FormClosing(object sender, FormClosingEventArgs e)
- {
- e.Cancel = true;
- }
- ConcurrentDictionary<string, TrafficCombineConnector> dictTrafficCombineConnector = new ConcurrentDictionary<string, TrafficCombineConnector>();
- ConcurrentDictionary<int, Button> dictRegionLockButton = new ConcurrentDictionary<int, Button>();
- public void LoadConfig()
- {
- string currPath = System.AppDomain.CurrentDomain.BaseDirectory;
- string dataPath = currPath + @"data";
- string dataFile = dataPath + @"\物料信息表.xls";
- try
- {
- string confStr1 = @"Provider=Microsoft.ACE.OLEDB.12.0;";
- string confStr2 = @"Persist Security Info=false;";
- string confStr3 = @"Data Source=" + dataFile + ";";
- string confStr4 = @"Extended Properties=" + "'Excel 12.0;HDR=YES;IMEX=1'";
- string connStr = confStr1 + confStr2 + confStr3 + confStr4;
- OleDbConnection oleDC = new OleDbConnection(connStr);
- OleDbDataAdapter oleDDA1 = new OleDbDataAdapter("Select * From [放行配置表$]", oleDC);
- oleDDA1.Fill(dtStation);
- OleDbDataAdapter oleDDA2 = new OleDbDataAdapter("Select * From [自动工位表$]", oleDC);
- oleDDA2.Fill(dtStationPLC);
- OleDbDataAdapter oleDDA3 = new OleDbDataAdapter("Select * From [类型配置表$]", oleDC);
- oleDDA3.Fill(dtType);
- OleDbDataAdapter oleDDA4 = new OleDbDataAdapter("Select * From [联合管制表$]", oleDC);
- oleDDA4.Fill(dtCombineTraffic);
- OleDbDataAdapter oleDDA5 = new OleDbDataAdapter("Select * From [放行盒配置表$]", oleDC);
- oleDDA5.Fill(dtStation1);
- OleDbDataAdapter oleDDA22 = new OleDbDataAdapter("Select * From [管制配置表$]", oleDC);
- oleDDA22.Fill(DtTraffic);
- OleDbDataAdapter oleDDA222 = new OleDbDataAdapter("Select * From [红绿灯配置$]", oleDC);
- oleDDA222.Fill(DtRedGreenBox);
- try
- {
- OleDbDataAdapter oleDDA40 = new OleDbDataAdapter("Select * From [井源联合管制表$]", oleDC);
- oleDDA40.Fill(dtCombineTrafficPLC);
- }
- catch (Exception ex)
- {
- //MessageBox.Show(ex.StackTrace);
- }
- oleDC.Close();
- //foreach (DataColumn dcol in dtCombineTrafficPLC.Columns)
- //{
- // if (dcol.ColumnName.Contains("DB"))// && !dcol.ColumnName.Contains("心跳"))
- // {
- // DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
- // col.HeaderText = dcol.ColumnName;
- // col.Name = dcol.ColumnName;
- // col.ReadOnly = true;
- // col.Resizable = DataGridViewTriState.True;
- // col.SortMode = DataGridViewColumnSortMode.Automatic;
- // dataGridView2.Columns.Add(col);
- // }
- //}
- //for (int i = 0; i < dtCombineTrafficPLC.Rows.Count; i++)
- //{
- // if (dtCombineTrafficPLC.Columns.Contains("PLC地址"))
- // {
- // int index = dataGridView2.Rows.Add();
- // dataGridView2.Rows[index].Cells[0].Value = dtCombineTrafficPLC.Rows[i][0].ToString();
- // var dr = dtCombineTrafficPLC.Rows[i];
- // string ip = dr["PLC地址"].ToString();
- // string agvheartbitdb = dr["AGV心跳DB"].ToString();
- // string plcheartbitdb = dr["PLC心跳DB"].ToString();
- // if (!string.IsNullOrEmpty(ip) && IPAddress.TryParse(ip, out IPAddress iPAddress))
- // {
- // if (!dictTrafficCombineConnector.ContainsKey(ip))
- // {
- // dictTrafficCombineConnector[ip] = new TrafficCombineConnector(ip, agvheartbitdb, plcheartbitdb);
- // }
- // Task.Factory.StartNew(() => TrafficCombine(dr, dictTrafficCombineConnector[ip]));
- // Thread.Sleep(50);
- // }
- // }
- //}
- if (dtCombineTraffic.Rows.Count > 0)
- {
- DAL.ZSql zSql = new DAL.ZSql();
- foreach (DataRow dr in dtCombineTraffic.Rows)
- {
- string sql = "if not exists (select 1 from T_TrafficCombine where TrafficCombineID = " + dr["管制区号"].ToString() + ") " +
- "INSERT INTO T_TrafficCombine(TrafficCombineID) VALUES(" + dr["管制区号"].ToString() + ")";
- zSql.Open(sql);
- }
- zSql.Close();
- }
- //for (int i = 0; i < dtTraffic.Rows.Count; i++)
- //{
- // MyTest.ManagedThreadPoolcs.ManagedThreadPool.QueueUserWorkItem(new WaitCallback(TrafficByDispatch), dtTraffic.Rows[i]);
- //}
- {
- //listTypeRoutes.AddRange(dtType.Rows[2][1].ToString().Split(';'));
- //listTypes.AddRange(dtType.Rows[1][1].ToString().Split(';'));
- int X = 10, Y = 10;
- GroupBox gp = new GroupBox();
- // for (int a = 0; a < dtType.Rows.Count; a++)
- {
- //gp = new GroupBox();
- //gp.Text = "类型";
- //gp.Location = new Point(X, Y);
- //gp.AutoSize = true;
- //tabPage3.Controls.Add(gp);
- //int x = 10, y = 50;
- //listTypeRoutes = dtType.Rows[2][1].ToString().Split(';').ToList();
- //var listType = dtType.Rows[1][1].ToString().Split(';');
- //listTypes = listType.ToList();
- //for (int i = 0; i < listType.Length; i++)
- //{
- // Button btn = new Button();
- // btn.Text = listType[i].ToString();
- // btn.Location = new Point(x, y);
- // btn.Font = new Font("宋体", 12);
- // btn.Size = new Size(100, 80);
- // btn.Tag = listTypeRoutes[i];
- // btn.BackColor = Color.FromKnownColor(KnownColor.Control);
- // if (listType[i] == GlobalPara.Type.ToString())
- // {
- // btn.BackColor = Color.FromKnownColor(KnownColor.Green);
- // }
- // btn.Click += new EventHandler(Btn_Click1);
- // gp.Controls.Add(btn);
- // x += btn.Size.Width + 20;
- // listTypeBtns.Add(btn);
- //}
- }
- Button btnShiled = new Button();
- btnShiled.Text = GlobalPara.CombineTrafficShield ? "联合管制区屏蔽模式" : "联合管制区申请模式";
- btnShiled.Location = new Point(X, Y);
- btnShiled.Font = new Font("宋体", 15);
- btnShiled.Size = new Size(360, 80);
- //btn.Tag = trafficid;
- btnShiled.Click += BtnShiled_Click; ;
- //btn.MouseClick += Btn_MouseClick;
- btnShiled.BackColor = GlobalPara.CombineTrafficShield ? Color.Red : Color.Green;
- tabPage3.Controls.Add(btnShiled);
- X = 10; Y = 150;
- if (dtCombineTraffic.Rows.Count > 0)
- {
- foreach (DataRow dr in dtCombineTraffic.Rows)
- {
- //List<string> listIn = dr["进管制地标"].ToString().Split(';').ToList();
- //List<string> listTraffic = dr["管制区内地标"].ToString().Split(';').ToList();
- //List<string> listOut = dr["出管制地标"].ToString().Split(';').ToList();
- int.TryParse(dr["管制区号"].ToString(), out int trafficid);
- if (trafficid <= 0)
- {
- continue;
- }
- Button btn = new Button();
- string regionarrange = "(双击释放)";
- btn.Text = "联合管制区" + trafficid + regionarrange;
- btn.Location = new Point(X, Y);
- btn.Font = new Font("宋体", 15);
- btn.Size = new Size(360, 80);
- btn.Tag = trafficid;
- btn.Click += BtnHuaXiao_Click;//Btn_Click
- //btn.MouseClick += Btn_MouseClick;
- btn.BackColor = Color.FromKnownColor(KnownColor.Control);
- X += btn.Size.Width + 20;
- tabPage3.Controls.Add(btn);
- dictRegionLockButton[trafficid] = btn;
- //if (j % 8 == 0)
- //{
- // X = 10; Y += btn.Height + 20;
- //}
- }
- }
- //Task.Factory.StartNew(() => TypeThread());
- new Task(() => ScanHuaXiaoRegionLockButtons()).Start();//ScanRegionLockButtons
- }
- //foreach (DataColumn dcol in dtStationPLC.Columns)
- //{
- // if (dcol.ColumnName.Contains("DB"))// && !dcol.ColumnName.Contains("心跳"))
- // {
- // DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
- // col.HeaderText = dcol.ColumnName;
- // col.Name = dcol.ColumnName;
- // col.ReadOnly = true;
- // col.Resizable = DataGridViewTriState.True;
- // col.SortMode = DataGridViewColumnSortMode.Automatic;
- // dataGridView1.Columns.Add(col);
- // }
- //}
- //for (int i = 0; i < dtStationPLC.Rows.Count; i++)
- //{
- // int index = dataGridView1.Rows.Add();
- // dataGridView1.Rows[index].Cells[0].Value = dtStationPLC.Rows[i][0].ToString();
- // dataGridView1.Rows[index].Cells[1].Value = dtStationPLC.Rows[i][1].ToString();
- // dataGridView1.Rows[index].Cells[1].ToolTipText = dtStationPLC.Rows[i]["PLC地址"].ToString();
- // var dr = dtStationPLC.Rows[i];
- // // MyTest.ManagedThreadPoolcs.ManagedThreadPool.QueueUserWorkItem(new WaitCallback(Test), dtStation.Rows[i]);
- // Task.Factory.StartNew(() => Test(dr));
- // Thread.Sleep(50);
- //}
- for (int i = 0; i < dtCombineTraffic.Rows.Count; i++)
- {
- var dr = dtCombineTraffic.Rows[i];
- Task.Factory.StartNew(() => TrafficCombineRequest(dr));//TrafficCombineItself
- Thread.Sleep(50);
- }
- for (int i = 0; i < dtStation1.Rows.Count; i++)
- {
- var dr = dtStation1.Rows[i];
- Task.Factory.StartNew(() => ReleaseThread(dr));
- Thread.Sleep(50);
- }
- for (int i = 0; i < DtTraffic.Rows.Count; i++)
- {
- var a = i;
- Task.Factory.StartNew(() => TrafficByDispatch(a));
- Thread.Sleep(50);
- }
- Task.Factory.StartNew(ThreadProc2);
- }
- catch (System.Exception ex)
- {
- MessageBox.Show(ex.StackTrace);
- }
- }
- private void BtnShiled_Click(object sender, EventArgs e)
- {
- Button btn = sender as Button;
- if (GlobalPara.CombineTrafficShield)
- {
- if (MessageBox.Show("是否切换为联合管制申请模式", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
- GlobalPara.CombineTrafficShield = false;
- Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- cfa.AppSettings.Settings["CombineTrafficShield"].Value = GlobalPara.CombineTrafficShield.ToString();
- cfa.Save();
- btn.Text = GlobalPara.CombineTrafficShield ? "联合管制区屏蔽模式" : "联合管制区申请模式";
- string temp0 = $"按钮切换为联合管制申请模式";
- AddLog(temp0, "联合管制");
- }
- }
- else
- {
- if (MessageBox.Show("是否切换为联合管制屏蔽模式", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
- GlobalPara.CombineTrafficShield = true;
- Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- cfa.AppSettings.Settings["CombineTrafficShield"].Value = GlobalPara.CombineTrafficShield.ToString();
- cfa.Save();
- btn.Text = GlobalPara.CombineTrafficShield ? "联合管制区屏蔽模式" : "联合管制区申请模式";
- string temp0 = $"按钮切换为联合管制屏蔽模式";
- AddLog(temp0, "联合管制");
- }
- }
- btn.BackColor = GlobalPara.CombineTrafficShield ? Color.Red : Color.Green;
- }
- DateTime datetimeClick = DateTime.Now;
- private void Btn_Click(object sender, EventArgs e)
- {
- if (datetimeClick.AddSeconds(0.6) > DateTime.Now)
- {
- datetimeClick = DateTime.Now;
- Button btn = sender as Button;
- if (btn != null)
- {
- btn.Invoke(new InvokeDelegate(delegate
- {
- int regionlockid = (int)btn.Tag;
- if (regionlockid > 0)
- {
- JObject objCombineTrafficState = new JObject();
- objCombineTrafficState["TrafficID"] = regionlockid;
- string resultCombineTrafficStateStr = GlobalPara.PostUrl(objCombineTrafficState.ToString(), GlobalPara.CombineTrafficStateURL);
- JObject objResult = JObject.Parse(resultCombineTrafficStateStr);
- string str = objResult["RequestTime"].ToString();
- if (DateTime.TryParse(str, out DateTime dtRequestTime))
- {
- int.TryParse(objResult["TrafficAGV"].ToString(), out int trafficagv);
- int.TryParse(objResult["RequestID"].ToString(), out int occupyID);
- string occupyCompany = occupyID == 1 ? "佳顺" : occupyID >= 1 ? "华晓" : "未知";
- if (occupyID > 0 && trafficagv > 0)
- {
- JObject obj = new JObject();
- obj["RequestID"] = objResult["RequestID"].ToString();
- obj["TrafficAGV"] = objResult["TrafficAGV"].ToString();
- obj["Step"] = 2;
- obj["TrafficID"] = regionlockid;
- obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string temp = $"强制是释放{occupyCompany}AGV{trafficagv}占用的管制区:{obj["TrafficID"]}";
- AddLog(temp.ToString(), "联合管制");
- string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.CombineTrafficURL);
- JObject objResult1 = JObject.Parse(resultStr);
- if (bool.TryParse(objResult1["Success"].ToString(), out bool result) && result)
- {
- temp = $"强制释放{occupyCompany}AGV{trafficagv}占用的管制区:{obj["TrafficID"]}成功";
- AddLog(temp.ToString(), "联合管制");
- }
- else
- {
- temp = $"强制释放{occupyCompany}AGV{trafficagv}占用的管制区:{obj["TrafficID"]}失败";
- AddLog(temp.ToString(), "联合管制");
- }
- }
- }
- }
- }));
- }
- }
- else
- {
- datetimeClick = DateTime.Now;
- }
- }
- void ScanRegionLockButtons()
- {
- while (true)
- {
- try
- {
- if (dictRegionLockButton != null)
- {
- foreach (var item in dictRegionLockButton)
- {
- int trafficid = item.Key;
- JObject objCombineTrafficState = new JObject();
- objCombineTrafficState["TrafficID"] = trafficid;
- string resultCombineTrafficStateStr = GlobalPara.PostUrl(objCombineTrafficState.ToString(), GlobalPara.CombineTrafficStateURL);
- JObject objResult = JObject.Parse(resultCombineTrafficStateStr);
- string str = objResult["RequestTime"].ToString();
- int.TryParse(objResult["TrafficAGV"].ToString(), out int trafficagv);
- int.TryParse(objResult["RequestID"].ToString(), out int occupyID);
- string occupyCompany = occupyID == 1 ? "佳顺" : occupyID >= 1 ? "华晓" : "未知";
- string msg = objResult["Msg"].ToString();// = "未知";
- string regionarrange = "(双击释放)";
- if (string.IsNullOrEmpty(msg))
- {
- string tip = "联合管制区" + trafficid + regionarrange;
- if (occupyID > 0)
- {
- tip = tip + "\r\n" + "occupyCompany" + "AGV" + trafficagv + "占用";
- }
- else
- {
- tip = tip + "\r\n未占用";
- }
- if (dictRegionLockButton.ContainsKey(trafficid))
- {
- Button btn = dictRegionLockButton[trafficid];
- btn.Invoke(new InvokeDelegate(delegate
- {
- btn.Text = tip;
- }));
- }
- }
- else
- {
- string tip = "联合管制区" + trafficid + regionarrange;
- if (occupyID > 0)
- {
- tip = tip + "\r\n" + msg;
- }
- }
- }
- }
- }
- catch
- {
- }
- Thread.Sleep(1000);
- }
- }
- private void BtnHuaXiao_Click(object sender, EventArgs e)
- {
- if (datetimeClick.AddSeconds(0.6) > DateTime.Now)
- {
- datetimeClick = DateTime.Now;
- Button btn = sender as Button;
- if (btn != null)
- {
- btn.Invoke(new InvokeDelegate(delegate
- {
- int Areacode = (int)btn.Tag;
- if (Areacode > 0 && btn.Text.Contains("双击释放"))
- {
- try
- {
- string resultCombineTrafficStateStr = GlobalPara.GetUrl(GlobalPara.HuaXiaoCombineTrafficStateURL + "/" + Areacode);
- if (!string.IsNullOrEmpty(resultCombineTrafficStateStr))
- {
- JObject objResult = JObject.Parse(resultCombineTrafficStateStr);
- int code = (int)objResult["code"];
- if (code == 200)
- {
- string strData = objResult["data"].ToString();
- if (!string.IsNullOrEmpty(strData))
- {
- JObject objData = JObject.Parse(strData);
- int.TryParse(objData["AgvNum"].ToString(), out int agvnum);
- bool.TryParse(objData["IsLocked"].ToString(), out bool islocked);
- if (islocked)
- {
- JObject obj = new JObject();
- obj["mapid"] = 1;
- obj["passingagv"] = agvnum;
- obj["areacode"] = Areacode;
- //obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string temp = $"双击按钮强制释放AGV:{agvnum}占用联合管制区:{Areacode}";
- AddLog(temp.ToString(), "联合管制");
- AddLog("请求内容:" + obj.ToString(), "联合管制");
- string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.HuaXiaoCombineTrafficUnLockURL);
- AddLog("响应内容:" + resultStr, "联合管制");
- JObject objResult1 = JObject.Parse(resultStr);
- if ((int)objResult1["code"] == 200&& (bool)objResult1["code"])
- {
- temp = $"双击按钮强制释放AGV:{agvnum}占用联合管制区:{Areacode}成功";
- AddLog(temp, "联合管制");
- }
- else
- {
- temp = $"双击按钮强制释放AGV:{agvnum}占用联合管制区:{Areacode}失败";
- AddLog(temp, "联合管制");
- }
- }
- }
- else
- {
- AddLog($"双击按钮强制释放,获取联合管制区{Areacode}占用状态data为空", "联合管制");
- }
- }
- }
- else
- {
- AddLog($"双击按钮强制释放,获取联合管制区{Areacode}占用状态失败", "联合管制");
- }
- }
- catch (Exception ex)
- {
- AddLog("双击按钮强制释放异常:" + ex.ToString(), "联合管制");
- }
- }
- }));
- }
- }
- else
- {
- datetimeClick = DateTime.Now;
- }
- }
- void ScanHuaXiaoRegionLockButtons()
- {
- while (true)
- {
- try
- {
- if (dictRegionLockButton != null)
- {
- foreach (var item in dictRegionLockButton)
- {
- int Areacode = item.Key;
- string tip = "联合管制区" + Areacode;
- string tipBellow = "";
- try
- {
- string resultCombineTrafficStateStr = GlobalPara.GetUrl(GlobalPara.HuaXiaoCombineTrafficStateURL + "/" + Areacode);
- if (!string.IsNullOrEmpty(resultCombineTrafficStateStr))
- {
- JObject objResult = JObject.Parse(resultCombineTrafficStateStr);
- int code = (int)objResult["code"];
- if (code == 200)
- {
- string strData = objResult["data"].ToString();
- if (!string.IsNullOrEmpty(strData))
- {
- JObject objData = JObject.Parse(strData);
- int.TryParse(objData["AgvNum"].ToString(), out int agvnum);
- bool.TryParse(objData["IsLocked"].ToString(), out bool islocked);
- if (!islocked)
- {
- tipBellow = "未占用";
- }
- else if (islocked && agvnum < 10000)
- {
- tip = tip + "(双击释放)";
- tipBellow = "佳顺AGV" + agvnum + "占用";
- }
- if (islocked && agvnum > 10000)
- {
- tip = tip + "(双击释放)";
- tipBellow = "华晓AGV" + agvnum + "占用";
- }
- }
- else
- {
- tipBellow = "区域状态返回data为空";
- }
- }
- }
- else
- {
- tipBellow = $"获取联合管制区占用状态失败";
- }
- }
- catch (Exception ex)
- {
- tipBellow = $"获取联合管制区占用状态接口异常";
- }
- tip = tip + "\r\n" + tipBellow;
- if (dictRegionLockButton.ContainsKey(Areacode))
- {
- Button btn = dictRegionLockButton[Areacode];
- btn.Invoke(new InvokeDelegate(delegate
- {
- btn.Text = tip;
- }));
- }
- }
- }
- }
- catch
- {
- }
- Thread.Sleep(1000);
- }
- }
- public void ThreadProc2()
- {
- while (true)
- {
- try
- {
- var infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true).ToList();
- for (int i = 0; i < DtRedGreenBox.Rows.Count; i++)
- {
- var info = infos.Find(o => DtRedGreenBox.Rows[i][2].ToString().Split(';').Contains(o.MARKNUM.ToString()));
- if (info != null)
- {
- Tools.DispatcherTool.AlarmStartOrStop(1, int.Parse(DtRedGreenBox.Rows[i][0].ToString()), DtRedGreenBox.Rows[i][3].ToString());
- }
- else
- {
- Tools.DispatcherTool.AlarmStartOrStop(2, int.Parse(DtRedGreenBox.Rows[i][0].ToString()), DtRedGreenBox.Rows[i][3].ToString());
- }
- }
- }
- catch (Exception)
- {
- }
- Thread.Sleep(200);
- }
- }
- public void ThreadProc3(DataRow dr)
- {
- while (true)
- {
- try
- {
- var infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true).ToList();
- {
- var info = infos.Find(o => dr["放行盒地标"].ToString().Equals(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- Tools.DispatcherTool.AgvReadOnStop(info.MARKNUM, info.ROUTENUM, 0, dr["IP地址"].ToString());
- }
- else
- {
- Tools.DispatcherTool.AgvReleasedOnStop(int.Parse(dr["放行盒地标"].ToString()), 0, 0, dr["IP地址"].ToString());
- }
- }
- }
- catch (Exception)
- {
- }
- Thread.Sleep(1000);
- }
- }
- private void Btn_Click1(object sender, EventArgs e)
- {
- Button btn = (Button)sender;
- if (btn.BackColor == SystemColors.Control)
- {
- if (MessageBox.Show("是否切换类型为:" + btn.Text, "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
- btn.BackColor = Color.Green;
- // GlobalPara.TypeRoute = int.Parse(btn.Tag.ToString());
- GlobalPara.Type = btn.Text;
- Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- cfa.AppSettings.Settings[GlobalPara.strType].Value = btn.Text.ToString();
- cfa.Save();
- for (int i = 0; i < listTypeBtns.Count; i++)
- {
- if (listTypeBtns[i].Text != btn.Text)
- {
- listTypeBtns[i].BackColor = SystemColors.Control;
- }
- }
- }
- }
- }
- public void ReleaseThread(DataRow dr)
- {
- while (true)
- {
- try
- {
- var Infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true);
- var info = Infos.Find(o => dr["放行地标"].ToString().Equals(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- DispatcherTool.AgvReadOnStop(info.MARKNUM, info.ROUTENUM, dr["IP地址"].ToString());
- }
- else
- {
- DispatcherTool.AgvReleasedOnStop(int.Parse(dr["放行地标"].ToString()), 0, dr["IP地址"].ToString());
- }
- }
- catch (Exception)
- {
- }
- Thread.Sleep(500);
- }
- }
- public void TypeThread()
- {
- while (true)
- {
- try
- {
- var infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true && o.AGVNUM > 0).ToList();
- var info = infos.Find(o => o.MARKNUM.ToString() == dtType.Rows[0][1].ToString() && o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- if (listTypes.Contains(GlobalPara.Type))
- {
- int route = int.Parse(listTypeRoutes[listTypes.IndexOf(GlobalPara.Type)]);
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, route);
- }
- }
- }
- catch (Exception)
- {
- }
- Thread.Sleep(500);
- }
- }
- public void TrafficCombine(DataRow dr)
- {
- HslCommunication.Profinet.Siemens.SiemensS7Net s7 = null;
- {
- {
- {
- s7 = new HslCommunication.Profinet.Siemens.SiemensS7Net(HslCommunication.Profinet.Siemens.SiemensPLCS.S200Smart,
- dr["PLC地址"].ToString());
- }
- }
- s7.ConnectTimeOut = 1200;
- s7.ReceiveTimeOut = 1200;
- s7.SetPersistentConnection();
- }
- while (true)
- {
- try
- {
- var Infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true);
- var info = Infos.Find(o => dr["进管制地标"].ToString().Split(';').Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- var result0 = s7.ReadBool(dr["进管制DB"].ToString());
- if (result0.Content != true)
- {
- s7.Write(dr["进管制DB"].ToString(), true);
- string str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},写入请求信号", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号"].ToString());
- AddLog(str, "井源联合管制");
- }
- var result = s7.ReadBool(dr["允许进入DB"].ToString());
- if (result.Content == true)
- {
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0, 0, 10);
- string str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},收到允许进入信号", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号"].ToString());
- AddLog(str, "井源联合管制");
- Thread.Sleep(2000);
- var info2 = GlobalPara.AgvInfoDic.Values.ToList().Find(o => o.AGVNUM == info.AGVNUM && o.RUNSTATUS_Cur == 0x40 && o.ConnectStatus == true);
- if (info2 != null)
- {
- s7.Write(dr["管制区DB"].ToString(), true);
- str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},写入管制区有车信号(AGV在请求卡已被放行)", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号"].ToString());
- AddLog(str, "井源联合管制");
- }
- }
- }
- else
- {
- var result0 = s7.ReadBool(dr["进管制DB"].ToString());
- if (result0.Content != false)
- {
- s7.Write(dr["进管制DB"].ToString(), false);
- string str = string.Format("管制区编号:{0},无车在请求卡停止,清除请求信息", dr["管制区号"].ToString());
- AddLog(str, "井源联合管制");
- }
- }
- info = Infos.Find(o => dr["管制区内地标"].ToString().Split(';').Contains(o.MARKNUM.ToString()));
- if (info != null)
- {
- var result0 = s7.ReadBool(dr["管制区DB"].ToString());
- if (result0.Content != true)
- {
- s7.Write(dr["管制区DB"].ToString(), true);
- string str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},写入管制区有车信号(AGV在读到管制区内的卡)", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号".ToString()]);
- AddLog(str, "井源联合管制");
- }
- }
- else
- {
- var result0 = s7.ReadBool(dr["管制区DB"].ToString());
- if (result0.Content != false)
- {
- s7.Write(dr["管制区DB"].ToString(), false);
- string str = string.Format("管制区编号:{0},无车在管制区内,清除管制区有车信息", dr["管制区号"].ToString());
- AddLog(str, "井源联合管制");
- }
- }
- }
- catch (Exception)
- {
- }
- Thread.Sleep(500);
- }
- }
- //void TrafficCombine(DataRow dr, TrafficCombineConnector trafficCombineConnector)
- //{
- // int index = dtCombineTrafficPLC.Rows.IndexOf(dr);
- // while (true)
- // {
- // try
- // {
- // //读取PLC值显示
- // foreach (DataColumn dcol in dtCombineTrafficPLC.Columns)
- // {
- // if (dcol.ColumnName.Contains("DB") && !string.IsNullOrEmpty(dr[dcol.ColumnName].ToString()))
- // {
- // var result = trafficCombineConnector.ReadBool(dr[dcol.ColumnName].ToString());
- // if (dataGridView2.IsHandleCreated && this.IsHandleCreated)
- // {
- // dataGridView2.Invoke(new InvokeDelegate(delegate
- // {
- // dataGridView2.Rows[index].Cells[dcol.ColumnName].Value = result;
- // if (dataGridView2.Rows[index].Cells[dcol.ColumnName].ToolTipText != dr[dcol.ColumnName].ToString())
- // {
- // dataGridView2.Rows[index].Cells[dcol.ColumnName].ToolTipText = dr[dcol.ColumnName].ToString();
- // }
- // }));
- // }
- // }
- // }
- // if (!trafficCombineConnector.PLCAlive)
- // {
- // AddLog("PLC连接断开", "井源联合管制");
- // continue;
- // }
- // bool entering = false;
- // var Infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true);
- // var infoAtRequestIn = Infos.Find(o => dr["进管制地标"].ToString().Split(';').Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur != 0x41);
- // if (infoAtRequestIn != null)
- // {
- // entering = true;
- // }
- // var infoInRegion = Infos.Find(o => dr["管制区内地标"].ToString().Split(';').Contains(o.MARKNUM.ToString()));
- // if (infoInRegion != null|| entering)//正在进入或者,管制区内有车
- // {
- // var result0 = trafficCombineConnector.ReadBool(dr["管制区DB"].ToString());
- // if (result0 != true)
- // {
- // trafficCombineConnector.Write(dr["进管制DB"].ToString(), true);
- // trafficCombineConnector.Write(dr["管制区DB"].ToString(), true);
- // string str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},写入管制区有车信号(AGV在读到管制区内的卡)", infoInRegion.AGVNUM, infoInRegion.MARKNUM, infoInRegion.ROUTENUM, dr["管制区号".ToString()]);
- // AddLog(str, "井源联合管制");
- // }
- // }
- // else
- // {
- // var info = Infos.Find(o => dr["进管制地标"].ToString().Split(';').Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- // if (info != null)
- // {
- // //entering = true;
- // var result0 = trafficCombineConnector.ReadBool(dr["进管制DB"].ToString());
- // if (result0 != true)
- // {
- // trafficCombineConnector.Write(dr["进管制DB"].ToString(), true);
- // string str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},写入请求信号", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号"].ToString());
- // AddLog(str, "井源联合管制");
- // }
- // var result = trafficCombineConnector.ReadBool(dr["允许进入DB"].ToString());
- // if (result == true)
- // {
- // trafficCombineConnector.Write(dr["管制区DB"].ToString(), true);
- // DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0, 0, 10);//info.AGVNUM,
- // string str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},收到允许进入信号,放行AGV", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号"].ToString());
- // AddLog(str, "井源联合管制");
- // //Thread.Sleep(2000);
- // //var info2 = GlobalPara.AgvInfoDic.Values.ToList().Find(o => o.AGVNUM == info.AGVNUM && o.RUNSTATUS_Cur == 0x40 && o.ConnectStatus == true);
- // //if (info2 != null)
- // //{
- // // //trafficCombineConnector.Write(dr["管制区DB"].ToString(), true);
- // // str = string.Format("AGV编号{0},地标:{1},路线:{2},管制区编号:{3},写入管制区有车信号(AGV在请求卡已被放行)", info.AGVNUM, info.MARKNUM, info.ROUTENUM, dr["管制区号"].ToString());
- // // AddLog(str, "联合管制");
- // //}
- // }
- // }
- // else
- // {
- // var result00 = trafficCombineConnector.ReadBool(dr["管制区DB"].ToString());
- // var result01 = trafficCombineConnector.ReadBool(dr["进管制DB"].ToString());
- // if (result00 || result01)
- // {
- // trafficCombineConnector.Write(dr["进管制DB"].ToString(), false);
- // trafficCombineConnector.Write(dr["管制区DB"].ToString(), false);
- // string str = string.Format("管制区编号:{0},无车在管制区内,且无车在请求进入卡,清除管制区有车信息", dr["管制区号"].ToString());
- // AddLog(str, "井源联合管制");
- // }
- // }
- // }
- // //var result1 = trafficCombineConnector.ReadBool(dr["管制区DB"].ToString());
- // //if (!result1)//管制区内无车
- // //{
- // //}
- // }
- // catch (Exception ex)
- // {
- // AddLog(ex.ToString(), "井源联合管制");
- // }
- // Thread.Sleep(500);
- // }
- //}
- //public void Test(object Dr)
- //{
- // if (Dr != null)
- // {
- // DataRow dr = (DataRow)Dr;
- // int index = dtStationPLC.Rows.IndexOf(dr);
- // HslCommunication.Profinet.Siemens.SiemensS7Net s7 = null;
- // {
- // if (dr.Table.Columns.Contains("PLC类型")&&!string.IsNullOrEmpty(dr["PLC类型"].ToString()))
- // {
- // if (dr["PLC类型"].ToString().Trim() == "2")
- // {
- // s7 = new HslCommunication.Profinet.Siemens.SiemensS7Net(HslCommunication.Profinet.Siemens.SiemensPLCS.S200Smart,
- // dr["PLC地址"].ToString());
- // }
- // if (dr["PLC类型"].ToString().Trim() == "1")
- // {
- // s7 = new HslCommunication.Profinet.Siemens.SiemensS7Net(HslCommunication.Profinet.Siemens.SiemensPLCS.S1200,
- // dr["PLC地址"].ToString());
- // }
- // }
- // else
- // {
- // s7 = new HslCommunication.Profinet.Siemens.SiemensS7Net(HslCommunication.Profinet.Siemens.SiemensPLCS.S1200,
- // dr["PLC地址"].ToString());
- // s7.Rack = (byte)0;
- // s7.Slot = (byte)0;
- // }
- // s7.ConnectTimeOut = 1200;
- // s7.ReceiveTimeOut = 1200;
- // s7.SetPersistentConnection();
- // }
- // while (true)
- // {
- // try
- // {
- // //心跳
- // if (!string.IsNullOrEmpty(dr["中控心跳DB"].ToString()))
- // {
- // var HeartBit = s7.ReadBool(dr["中控心跳DB"].ToString());
- // if (!HeartBit.IsSuccess)
- // {
- // Thread.Sleep(1000);
- // continue;
- // }
- // {
- // s7.Write(dr["中控心跳DB"].ToString(), !HeartBit.Content);
- // }
- // }
- // var infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true && o.AGVNUM > 0).ToList();
- // //进入
- // {
- // var info = infos.Find(o => o.MARKNUM.ToString() == dr["请求进入地标"].ToString() && o.RUNSTATUS_Cur == 0x41);
- // if (info != null)
- // {
- // s7.Write(dr["请求进入DB"].ToString(), true);
- // var inResult = s7.ReadBool(dr["允许进入DB"].ToString());
- // if (inResult.Content == true)
- // {
- // DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- // }
- // }
- // else
- // {
- // s7.Write(dr["请求进入DB"].ToString(), false);
- // }
- // }
- // //到位
- // {
- // var info = infos.Find(o => o.MARKNUM.ToString() == dr["工位地标"].ToString()&& o.RUNSTATUS_Cur == 0x41);
- // if (info != null)
- // {
- // s7.Write(dr["到位DB"].ToString(), true);
- // var inResult = s7.ReadBool(dr["放行DB"].ToString());
- // if (inResult.Content == true)
- // {
- // DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- // }
- // }
- // else
- // {
- // s7.Write(dr["到位DB"].ToString(), false);
- // }
- // }
- // //离开
- // {
- // var info = infos.Find(o => o.MARKNUM.ToString() == dr["离开完成地标"].ToString()&& o.RUNSTATUS_Cur == 0x41);
- // if (info != null)
- // {
- // for (int i = 0; i < 5; i++)
- // {
- // s7.Write(dr["离开完成DB"].ToString(), true);
- // Thread.Sleep(300);
- // }
- // //if (info.RUNSTATUS_Cur == 0x41)
- // {
- // if(dr.Table.Columns.Contains("离开完成自动放行"))
- // {
- // if (dr["离开完成自动放行"].ToString().Trim() == "1")
- // {
- // DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- // }
- // }
- // else
- // {
- // DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- // }
- // }
- // }
- // else
- // {
- // s7.Write(dr["离开完成DB"].ToString(), false);
- // }
- // }
- // {
- // if (dr.Table.Columns.Contains("安全DB"))
- // {
- // if(!string.IsNullOrEmpty(dr["安全DB"].ToString()))
- // {
- // var inResult = s7.ReadBool(dr["安全DB"].ToString());
- // if (inResult.Content == false)
- // {
- // var info1 = infos.Find(o => o.MARKNUM.ToString() == dr["请求进入地标"].ToString() && o.RUNSTATUS_Cur == 0x40);
- // var info2 = infos.Find(o => o.MARKNUM.ToString() == dr["工位地标"].ToString() && o.RUNSTATUS_Cur == 0x40);
- // if (info1 != null || info2 != null)
- // {
- // var info = info1 == null ? info2 : info1;
- // DispatcherTool.ControlAGVBy1071(info.AGVNUM, 1);
- // }
- // }
- // else if (inResult.Content == true)
- // {
- // var info1 = infos.Find(o => o.MARKNUM.ToString() == dr["请求进入地标"].ToString() && o.RUNSTATUS_Cur == 0x43);
- // var info2 = infos.Find(o => o.MARKNUM.ToString() == dr["工位地标"].ToString() && o.RUNSTATUS_Cur == 0x43);
- // if (info1 != null || info2 != null)
- // {
- // var info = info1 == null ? info2 : info1;
- // DispatcherTool.ControlAGVBy1071(info.AGVNUM, 0);
- // }
- // }
- // }
- // }
- // }
- // {
- // if (dr.Table.Columns.Contains("叫车DB")&& dr.Table.Columns.Contains("叫车地标"))
- // {
- // if (!string.IsNullOrEmpty(dr["叫车DB"].ToString())&& !string.IsNullOrEmpty(dr["叫车地标"].ToString()))
- // {
- // var inResult = s7.ReadBool(dr["叫车DB"].ToString());
- // if (inResult.Content == true)
- // {
- // var info1 = infos.Find(o => o.MARKNUM.ToString() == dr["叫车地标"].ToString() && (o.RUNSTATUS_Cur == 0x41|| o.RUNSTATUS_Cur == 0x44));
- // if (info1 != null )
- // {
- // DispatcherTool.ReleaseAgvOnStop(info1.MARKNUM, 0);
- // }
- // }
- // }
- // }
- // }
- // //读取PLC值显示
- // foreach (DataColumn dcol in dtStationPLC.Columns)
- // {
- // if (dcol.ColumnName.Contains("DB")&&!string.IsNullOrEmpty(dr[dcol.ColumnName].ToString()))
- // {
- // var result = s7.ReadBool(dr[dcol.ColumnName].ToString());
- // if (dataGridView1.IsHandleCreated && this.IsHandleCreated)
- // {
- // dataGridView1.Invoke(new InvokeDelegate(delegate
- // {
- // dataGridView1.Rows[index].Cells[dcol.ColumnName].Value = result.Content;
- // if(dataGridView1.Rows[index].Cells[dcol.ColumnName].ToolTipText!= dr[dcol.ColumnName].ToString())
- // {
- // dataGridView1.Rows[index].Cells[dcol.ColumnName].ToolTipText = dr[dcol.ColumnName].ToString();
- // }
- // }));
- // }
- // }
- // }
- // Thread.Sleep(500);
- // }
- // catch (Exception)
- // {
- // }
- // }
- // }
- //}
- public void StartHttpServer()
- {
- string address = "http://" + GlobalPara.HostIPSPS + ":" + GlobalPara.HostIPSPSPort;
- if (WcsServerHost.Instance.StartServer(address))
- {
- toolStripStatusLabel1.Text = $"Http服务启动成功,地址:{address}";
- }
- else
- {
- toolStripStatusLabel1.Text = $"Http服务启动失败,地址:{address}";
- }
- }
- public static void AddLog(string log, string FileName)
- {
- try
- {
- string content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\t\t" + log;
- RichTextBox richTextBox = new RichTextBox();
- if (FileName.Contains("放行交互"))
- {
- //richTextBox = richTextBox1;
- //if (logNetDateTimeSPS != null)
- //{
- // logNetDateTimeSPS.WriteInfo(log);
- //}
- }
- else if (FileName.Contains("井源联合管制"))
- {
- //richTextBox = richTextBox2;
- //if (logNetDateTimeCJYTraffic != null)
- //{
- // logNetDateTimeCJYTraffic.WriteInfo(log);
- //}
- }
- else if (FileName.Contains("联合管制"))
- {
- richTextBox = richTextBox2;
- if (logNetDateTimeCTraffic != null)
- {
- logNetDateTimeCTraffic.WriteInfo(log);
- }
- }
- else if (FileName.Contains("调度管制"))
- {
- richTextBox = richTextBox3;
- }
- richTextBox.BeginInvoke((Action)(() =>
- {
- if (richTextBox.Lines.Length > 1000)
- {
- richTextBox.Clear();
- }
- int textLength = richTextBox.TextLength;
- richTextBox.AppendText(content);
- richTextBox.AppendText(Environment.NewLine);
- richTextBox.Select(textLength, 4);
- {
- richTextBox.ScrollToCaret();
- }
- }));
- }
- catch (Exception e) { }
- }
- public static DataResponseSPS2 ReleaseAGV(Model.ReleaseInfo3 StationInfo)
- {
- DataResponseSPS2 dataResponse = new DataResponseSPS2();
- dataResponse.code = "E";
- var drs = dtStation.Select("boxParts='" + StationInfo.boxParts + "' and trigger='" + StationInfo.trigger + "'");
- if (drs != null && drs.Length > 0)
- {
- var Infos = GlobalPara.AgvInfoDic.Values.ToList();
- var infos = Infos.FindAll(o => o.MARKNUM.ToString() == drs[0]["工位地标"].ToString() && o.ConnectStatus);
- if (infos != null && infos.Count > 0)
- {
- var info = infos.Find(o => o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- dataResponse.code = "S";
- dataResponse.desc = string.Format("AGV车号:{0},地标:{1},路线:{2},boxParts:{3},trigger:{5},状态:{4},放行成功", info.AGVNUM, info.MARKNUM, info.ROUTENUM, StationInfo.boxParts, info.RUNSTATUS_Cur, StationInfo.trigger);
- //var temp = listReleaseInfos.Find(o => o.AGVNUM == info.AGVNUM && o.MARKNUM == info.MARKNUM);
- //if (temp != null)
- //{
- // listReleaseInfos.Remove(temp);
- //}
- }
- else
- {
- dataResponse.desc = string.Format("AGV车号:{0},地标:{1},路线:{2},boxParts:{3},trigger:{5},状态:{4},AGV未处于停止状态,无法放行", info.AGVNUM, info.MARKNUM, info.ROUTENUM, StationInfo.boxParts, info.RUNSTATUS_Cur, StationInfo.trigger);
- }
- }
- else
- {
- dataResponse.desc = string.Format("无AGV在 boxParts:{0},trigger:{1} 上,无法放行", StationInfo.boxParts, StationInfo.trigger);
- }
- }
- else
- {
- dataResponse.desc = string.Format("无工位信息 boxParts:{0},trigger:{1} ,无法放行", StationInfo.boxParts, StationInfo.trigger);
- }
- return dataResponse;
- }
- public void TrafficByDispatch(int i)
- {
- if (DtTraffic.Rows.Count > 0)
- {
- bool b = true;
- while (b)
- {
- try
- {
- // if (!GlobalPara.IsOneKeySleep)
- {
- var listModel = GlobalPara.AgvInfoDic.Values.ToList();
- // for (int i = 0; i < DtTraffic.Rows.Count; i++)
- {
- List<string> listIn = DtTraffic.Rows[i][0].ToString().Split(';').ToList();
- List<string> listTraffic = DtTraffic.Rows[i][1].ToString().Split(';').ToList();
- var results = listModel.FindAll(o => listIn.Contains(o.MARKNUM.ToString()) && o.ConnectStatus == true);
- // }
- if (results != null && results.Count > 0)
- {
- var result = results.OrderBy(o => o.LastModifyMarkTime).ToList()[0];
- var results2 = listModel.FindAll(o => listTraffic.Contains(o.MARKNUM.ToString()) && o.ConnectStatus == true);
- if (listIn.Count == 1 && results.Count > 1)
- {
- logNetTraffic2.WriteInfo("管制区号:" + DtTraffic.Rows[i][2].ToString() + ",管制区进卡有两台的车,重新判断,等待AGV车:(" + result.AGVNUM + "," + result.MARKNUM + ")");
- Thread.Sleep(500);
- continue;
- }
- if (results == null || results2.Count <= 0)
- {
- var results3 = listModel.FindAll(o => result.MARKNUM == o.MARKNUM && o.RUNSTATUS_Cur != 0x41 && o.ConnectStatus == true);
- if (results3 != null && results3.Count <= 0)
- {
- int route = 0; int targetMark = 0;
- DispatcherTool.ReleaseAgvOnStop(result.MARKNUM, route, targetMark, 1);
- lock (portLock1)
- {
- logNetTraffic.WriteInfo(result.AGVNUM + "号AGV符合放行条件,地标为:" + result.MARKNUM + ",路线为" + route + ",目的地标为" + targetMark);
- string content = result.AGVNUM + "号AGV符合放行条件,地标为:" + result.MARKNUM + ",路线为" + route + ",目的地标为" + targetMark;
- AddLog(content, "调度管制");
- }
- }
- else
- {
- if (results3 != null && results3.Count > 0)
- {
- if (results3[0].AGVNUM == result.AGVNUM && result.RUNSTATUS_Cur == 0x41)
- {
- int route = 0; int targetMark = 0;
- DispatcherTool.ReleaseAgvOnStop(result.MARKNUM, route, targetMark, 1);
- lock (portLock1)
- {
- logNetTraffic.WriteInfo(result.AGVNUM + "号AGV符合放行条件2,地标为:" + result.MARKNUM + ",路线为" + route + ",目的地标为" + targetMark);
- string content = result.AGVNUM + "号AGV符合放行条件2,地标为:" + result.MARKNUM + ",路线为" + route + ",目的地标为" + targetMark;
- AddLog(content, "调度管制");
- }
- }
- else
- {
- logNetTraffic2.WriteInfo("管制区号:" + DtTraffic.Rows[i][2].ToString() + ",管制点有车:(" + results3[0].AGVNUM + "," + results3[0].MARKNUM + "),重新判断,等待AGV车:(" + result.AGVNUM + "," + result.MARKNUM + ")");
- }
- }
- }
- }
- else
- {
- if (results2 != null && results2.Count > 0)
- {
- logNetTraffic2.WriteInfo("管制区号:" + DtTraffic.Rows[i][2].ToString() + ",管制区有车:(" + results2[0].AGVNUM + "," + results2[0].MARKNUM + "),重新判断,等待AGV车:(" + result.AGVNUM + "," + result.MARKNUM + ")");
- }
- }
- }
- }
- }
- }
- catch (Exception e)
- {
- logNetDateTimeError.WriteInfo(e.StackTrace);
- }
- finally
- {
- }
- Thread.Sleep(500);
- }
- }
- }
- public void TrafficByDispatch0(int i)
- {
- if (DtTraffic.Rows.Count > 0)
- {
- bool b = true;
- while (b)
- {
- try
- {
- // if (!GlobalPara.IsOneKeySleep)
- {
- var listModel = GlobalPara.AgvInfoDic.Values.ToList();
- // for (int i = 0; i < DtTraffic.Rows.Count; i++)
- {
- List<string> listIn = DtTraffic.Rows[i][0].ToString().Split(';').ToList();
- List<string> listTraffic = DtTraffic.Rows[i][1].ToString().Split(';').ToList();
- var results = listModel.FindAll(o => listIn.Contains(o.MARKNUM.ToString()) && o.ConnectStatus == true);
- // }
- if (results != null && results.Count > 0)
- {
- var result = results.OrderBy(o => o.LastModifyMarkTime).ToList()[0];
- var results2 = listModel.FindAll(o => listTraffic.Contains(o.MARKNUM.ToString()) && o.ConnectStatus == true);
- if (listIn.Count == 1 && results.Count > 1)
- {
- continue;
- }
- if (results == null || results2.Count <= 0)
- {
- var results3 = listModel.FindAll(o => result.MARKNUM == o.MARKNUM && o.RUNSTATUS != 0x41 && o.ConnectStatus == true);
- if (results3 != null && results3.Count <= 0)
- {
- int route = result.ROUTENUM; int targetMark = 0;
- DispatcherTool.ReleaseAgvOnStop(result.MARKNUM, route, targetMark, 1);
- string content = result.AGVNUM + "号AGV符合放行条件,地标为:" + result.MARKNUM + ",路线为" + route + ",目的地标为" + targetMark;
- AddLog(content, "调度管制");
- logNetTraffic.WriteInfo(content);
- }
- }
- }
- }
- }
- }
- catch (Exception e)
- {
- }
- finally
- {
- }
- Thread.Sleep(500);
- }
- }
- }
- public static JObject TrafficCombineLock(JObject obj)
- {
- JObject resultObj = new JObject();
- resultObj["Status"] = "NG";
- resultObj["Message"] = "请求的主机无效";
- lock (portLock1)
- {
- try
- {
- //int Step = (int)obj["Step"];
- int TrafficID = (int)obj["AreaName"];
- int TrafficFlag = (int)obj["EquipType"];
- string AGVID = obj["EquipNumber"].ToString();
- string RequestTime = DateTime.Now.ToString();
- //if (Step == 1)
- {
- DAL.ZSql zsql = new DAL.ZSql();
- string sql = "select * from T_TrafficCombine where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- DataTable temp = zsql.m_table.Copy();
- if (temp.Rows.Count > 0)
- {
- var dr = temp.Rows[0];
- if (dr["TrafficFlag"].ToString() == "0" || dr["TrafficFlag"].ToString() == TrafficFlag.ToString() && dr["TrafficAGV"].ToString() == AGVID)
- {
- resultObj["Status"] = "OK";
- resultObj["Message"] = "申请进入成功,请快速通过";
- sql = "update T_TrafficCombine set TrafficFlag=" + TrafficFlag + ",LastInTime='" + RequestTime + "',TrafficAGV='" + AGVID + "' where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- }
- else
- {
- resultObj["Status"] = "NG4";
- resultObj["Message"] = "该管制区内已有车";
- }
- }
- else
- {
- resultObj["Status"] = "NG3";
- resultObj["Message"] = "TrafficID不存在";
- }
- zsql.Close();
- }
- }
- catch (Exception e)
- {
- resultObj["Status"] = "NG1";
- resultObj["Message"] = e.Message;
- }
- }
- return resultObj;
- }
- public static JObject TrafficCombineUnLock(JObject obj)
- {
- JObject resultObj = new JObject();
- resultObj["Status"] = "NG";
- resultObj["Message"] = "请求的主机无效";
- lock (portLock1)
- {
- try
- {
- //int Step = (int)obj["Step"];
- int TrafficID = (int)obj["AreaName"];
- int TrafficFlag = (int)obj["EquipType"];
- string AGVID = obj["EquipNumber"].ToString();
- string RequestTime = DateTime.Now.ToString();
- {
- DAL.ZSql zsql = new DAL.ZSql();
- string sql = "select * from T_TrafficCombine where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- DataTable temp = zsql.m_table.Copy();
- if (temp.Rows.Count > 0)
- {
- var dr = temp.Rows[0];
- if (dr["TrafficFlag"].ToString() == TrafficFlag.ToString() && dr["TrafficAGV"].ToString() == AGVID)
- {
- resultObj["Status"] = "OK";
- resultObj["Message"] = "申请离开成功,请快速离开";
- sql = "update T_TrafficCombine set TrafficFlag=0,LastOutTime='" + RequestTime + "',TrafficAGV='NOAGV' where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- }
- else
- {
- resultObj["Status"] = "NG5";
- resultObj["Message"] = "该车已离开管制区";
- }
- }
- else
- {
- resultObj["Status"] = "NG3";
- resultObj["Message"] = "TrafficID不存在";
- }
- zsql.Close();
- }
- //else
- //{
- // resultObj["Status"] = "NG2";
- // resultObj["Message"] = "Step参数大于2,不合格";
- //}
- }
- catch (Exception e)
- {
- resultObj["Status"] = "NG1";
- resultObj["Message"] = e.Message;
- }
- }
- return resultObj;
- }
- public static JObject TrafficCombine(JObject obj)
- {
- JObject resultObj = new JObject();
- resultObj["Code"] = 100;
- resultObj["Success"] = false;
- resultObj["Msg"] = "未知异常";
- lock (portLock1)
- {
- try
- {
- int Step = (int)obj["Step"];
- int TrafficID = (int)obj["TrafficID"];
- int TrafficFlag = (int)obj["RequestID"];
- string AGVID = obj["TrafficAGV"].ToString();
- string RequestTime = obj["RequestTime"].ToString();
- if (Step == 1)
- {
- DAL.ZSql zsql = new DAL.ZSql();
- string sql = "select * from T_TrafficCombine where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- DataTable temp = zsql.m_table.Copy();
- if (temp.Rows.Count > 0)
- {
- var dr = temp.Rows[0];
- if (dr["TrafficFlag"].ToString() == "0" || dr["TrafficFlag"].ToString() == TrafficFlag.ToString() && dr["TrafficAGV"].ToString() == AGVID)
- {
- resultObj["Code"] = 0;
- resultObj["Success"] = true;
- resultObj["Msg"] = "申请进入成功,请快速通过";
- sql = "update T_TrafficCombine set TrafficFlag=" + TrafficFlag + ",LastInTime='" + RequestTime + "',TrafficAGV='" + AGVID + "' where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- }
- else
- {
- resultObj["Code"] = 4;
- resultObj["Msg"] = "该管制区内已有车";
- }
- }
- else
- {
- resultObj["Code"] = 3;
- resultObj["Msg"] = "TrafficID不存在";
- }
- zsql.Close();
- }
- else if (Step == 2)
- {
- DAL.ZSql zsql = new DAL.ZSql();
- string sql = "select * from T_TrafficCombine where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- DataTable temp = zsql.m_table.Copy();
- if (temp.Rows.Count > 0)
- {
- var dr = temp.Rows[0];
- if (dr["TrafficFlag"].ToString() == TrafficFlag.ToString() && dr["TrafficAGV"].ToString() == AGVID)
- {
- resultObj["Code"] = 0;
- resultObj["Success"] = true;
- resultObj["Msg"] = "申请离开成功,请快速离开";
- sql = "update T_TrafficCombine set TrafficFlag=0,LastOutTime='" + RequestTime + "',TrafficAGV='NOAGV' where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- }
- else
- {
- resultObj["Code"] = 5;
- resultObj["Msg"] = "该车已离开管制区";
- }
- }
- else
- {
- resultObj["Code"] = 3;
- resultObj["Msg"] = "TrafficID不存在";
- }
- zsql.Close();
- }
- else
- {
- resultObj["Code"] = 2;
- resultObj["Msg"] = "Step参数大于2,不合格";
- }
- }
- catch (Exception e)
- {
- resultObj["Code"] = 1;
- resultObj["Msg"] = e.Message;
- }
- }
- return resultObj;
- }
- public static JObject TrafficCombineState(JObject obj)
- {
- //JObject resultObj = new JObject();
- //resultObj["Code"] = 100;
- //resultObj["Success"] = false;
- //resultObj["Msg"] = "未知异常";
- JObject resultObj = new JObject();
- resultObj["RequestID"] = "0";
- resultObj["TrafficAGV"] = "UnKown";
- //obj["Step"] = 1;
- resultObj["TrafficID"] = obj["TrafficID"].ToString();
- resultObj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- resultObj["Msg"] = "未知";
- lock (portLock1)
- {
- try
- {
- int TrafficID = (int)obj["TrafficID"];
- DAL.ZSql zsql = new DAL.ZSql();
- string sql = "select * from T_TrafficCombine where TrafficCombineID=" + TrafficID;
- zsql.Open(sql);
- DataTable temp = zsql.m_table.Copy();
- if (temp.Rows.Count > 0)
- {
- var dr = temp.Rows[0];
- resultObj["RequestID"] = dr["TrafficFlag"].ToString();
- resultObj["TrafficAGV"] = dr["TrafficAGV"].ToString();
- resultObj["RequestTime"] = dr["LastInTime"].ToString();
- resultObj["Msg"] = "";
- }
- else
- {
- resultObj["Msg"] = "TrafficID不存在";
- }
- zsql.Close();
- }
- catch (Exception e)
- {
- resultObj["Msg"] = "获取管制区:" + obj["TrafficID"] + "异常," + e.Message;
- }
- }
- return resultObj;
- }
- public void TrafficCombineItself(DataRow dr)
- {
- List<string> listIn = dr["进管制地标"].ToString().Split(';').ToList();
- List<string> listTraffic = dr["管制区内地标"].ToString().Split(';').ToList();
- List<string> listOut = dr["出管制地标"].ToString().Split(';').ToList();
- while (true)
- {
- try
- {
- var infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true).ToList();
- {
- //var info = infos.Find(o => dr["进管制地标"].ToString().Equals(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- var info = infos.Find(o => listIn.Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- if (GlobalPara.CombineTrafficShield)
- {
- string temp0 = $"联合管制申请屏蔽,AGV{info.AGVNUM}自动放行进入联合管制区:{dr["管制区号"].ToString()}";
- AddLog(temp0, "联合管制");
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- }
- else
- {
- JObject obj = new JObject();
- obj["RequestID"] = GlobalPara.CombineTrafficID;
- obj["TrafficAGV"] = info.AGVNUM.ToString();
- obj["Step"] = 1;
- obj["TrafficID"] = int.Parse(dr["管制区号"].ToString());
- obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string temp = $"佳顺AGV:{info.AGVNUM}申请进入管制区:{obj["TrafficID"]},等待允许";
- AddLog(temp.ToString(), "联合管制");
- string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.CombineTrafficURL);
- JObject objResult = JObject.Parse(resultStr);
- if ((int)objResult["Code"] == 0)
- {
- temp = $"佳顺AGV:{info.AGVNUM}申请进入管制区:{obj["TrafficID"]},联合管制允许进入";
- AddLog(temp, "联合管制");
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- }
- }
- }
- //info = infos.Find(o => dr["出管制地标"].ToString().Equals(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- //info = infos.Find(o => listOut.Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- //if (info != null)
- //{
- // JObject obj = new JObject();
- // obj["RequestID"] = GlobalPara.CombineTrafficID;
- // obj["TrafficAGV"] = info.AGVNUM.ToString();
- // obj["Step"] = 2;
- // obj["TrafficID"] = int.Parse(dr["管制区号"].ToString());
- // obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- // string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.CombineTrafficURL);
- // JObject objResult = JObject.Parse(resultStr);
- // if ((int)objResult["Code"] == 0)
- // {
- // DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- // }
- //}
- info = infos.Find(o => listOut.Contains(o.MARKNUM.ToString()) || (listIn.Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur != 0x41) || listTraffic.Contains(o.MARKNUM.ToString()));
- if (info == null)
- {
- JObject objCombineTrafficState = new JObject();
- objCombineTrafficState["TrafficID"] = int.Parse(dr["管制区号"].ToString());
- string resultCombineTrafficStateStr = GlobalPara.PostUrl(objCombineTrafficState.ToString(), GlobalPara.CombineTrafficStateURL);
- JObject objResult = JObject.Parse(resultCombineTrafficStateStr);
- string str = objResult["RequestTime"].ToString();
- //if (DateTime.TryParse(str, out DateTime dtRequestTime))
- {
- if (objResult["RequestID"].ToString() == GlobalPara.CombineTrafficID)//&& dtRequestTime.AddSeconds(3) <= DateTime.Now
- {
- JObject obj = new JObject();
- obj["RequestID"] = GlobalPara.CombineTrafficID;
- obj["TrafficAGV"] = objResult["TrafficAGV"].ToString();
- obj["Step"] = 2;
- obj["TrafficID"] = int.Parse(dr["管制区号"].ToString());
- obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string temp = $"佳顺AGV:{objResult["TrafficAGV"]}申请离开管制区:{obj["TrafficID"]}";
- AddLog(temp.ToString(), "联合管制");
- string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.CombineTrafficURL);
- }
- }
- }
- }
- }
- catch (Exception ex)
- {
- AddLog(ex.ToString(), "联合管制");
- }
- Thread.Sleep(1000);
- }
- }
- public void TrafficCombineRequest(DataRow dr)
- {
- List<string> listIn = dr["进管制地标"].ToString().Split(';').ToList();
- List<string> listTraffic = dr["管制区内地标"].ToString().Split(';').ToList();
- List<string> listOut = dr["出管制地标"].ToString().Split(';').ToList();
- int Areacode = int.Parse(dr["管制区号"].ToString());
- while (true)
- {
- try
- {
- var infos = GlobalPara.AgvInfoDic.Values.ToList().FindAll(o => o.ConnectStatus == true).ToList();
- {
- //var info = infos.Find(o => dr["进管制地标"].ToString().Equals(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur == 0x41);
- var info = infos.Find(o => listIn.Contains(o.MARKNUM.ToString())&& !o.TrafficFlag && o.RUNSTATUS_Cur == 0x41);
- if (info != null)
- {
- if (GlobalPara.CombineTrafficShield)
- {
- string temp0 = $"当前为联合管制屏蔽模式,AGV{info.AGVNUM}自动放行进入联合管制区:{Areacode}";
- AddLog(temp0, "联合管制");
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- }
- else
- {
- JObject obj = new JObject();
- obj["mapid"] = 1;
- obj["passingagv"] = info.AGVNUM;
- obj["specifiedagvunlock"] = true;
- obj["areacode"] = Areacode;
- //obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string temp = $"佳顺AGV:{info.AGVNUM}申请进入管制区:{Areacode},等待允许";
- AddLog(temp.ToString(), "联合管制");
- AddLog("请求内容:"+obj.ToString(), "联合管制");
- string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.HuaXiaoCombineTrafficLockURL);
- AddLog("响应内容:" + resultStr, "联合管制");
- JObject objResult = JObject.Parse(resultStr);
- if ((int)objResult["code"] == 200&& (bool)objResult["data"])
- {
- temp = $"佳顺AGV:{info.AGVNUM}申请进入管制区:{Areacode},联合管制允许进入";
- AddLog(temp, "联合管制");
- DispatcherTool.ReleaseAgvOnStop(info.MARKNUM, 0);
- Thread.Sleep(3000);
- continue;
- }
- else
- {
- temp = $"佳顺AGV:{info.AGVNUM}申请进入管制区:{Areacode},联合管制禁止进入,原因:{objResult["msg"].ToString()}";
- AddLog(temp, "联合管制");
- }
-
- }
- }
- if (!GlobalPara.CombineTrafficShield)
- {
- info = infos.Find(o => (listIn.Contains(o.MARKNUM.ToString()) && o.RUNSTATUS_Cur != 0x41) || listTraffic.Contains(o.MARKNUM.ToString()));//listOut.Contains(o.MARKNUM.ToString()) ||
- if (info == null)
- {
- string resultCombineTrafficStateStr = GlobalPara.GetUrl(GlobalPara.HuaXiaoCombineTrafficStateURL + "/" + Areacode);
- if (!string.IsNullOrEmpty(resultCombineTrafficStateStr))
- {
- JObject objResult = JObject.Parse(resultCombineTrafficStateStr);
- int code = (int)objResult["code"];
- if (code == 200)
- {
- string strData = objResult["data"].ToString();
- if (!string.IsNullOrEmpty(strData))
- {
- JObject objData = JObject.Parse(strData);
- int.TryParse(objData["AgvNum"].ToString(), out int agvnum);
- bool.TryParse(objData["IsLocked"].ToString(), out bool islocked);
- if (islocked && agvnum < 10000)
- {
- JObject obj = new JObject();
- obj["mapid"] = 1;
- obj["passingagv"] = agvnum;
- obj["areacode"] = Areacode;
- //obj["RequestTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string temp = $"佳顺AGV:{agvnum}上报离开管制区:{Areacode}";
- AddLog(temp.ToString(), "联合管制");
- AddLog("请求内容:" + obj.ToString(), "联合管制");
- string resultStr = GlobalPara.PostUrl(obj.ToString(), GlobalPara.HuaXiaoCombineTrafficUnLockURL);
- AddLog("响应内容:" + resultStr, "联合管制");
- JObject objResult1 = JObject.Parse(resultStr);
- if ((int)objResult1["code"] == 200&& (bool)objResult1["code"])
- {
- temp = $"佳顺AGV:{agvnum}上报离开管制区:{Areacode}成功";
- AddLog(temp, "联合管制");
- }
- else
- {
- temp = $"佳顺AGV:{agvnum }上报离开管制区:{Areacode}失败";
- AddLog(temp, "联合管制");
- }
- }
- }
- else
- {
- AddLog($"联合管制区{Areacode}占用状态data为空", "联合管制");
- }
- }
- }
- else
- {
- AddLog($"获取联合管制区{Areacode}占用状态失败", "联合管制");
- }
- }
- }
- }
- }
- catch (Exception ex)
- {
- AddLog(ex.InnerException.ToString(), "联合管制");
- }
- Thread.Sleep(1000);
- }
- }
- }
- class TrafficCombineConnector
- {
- public HslCommunication.Profinet.Siemens.SiemensS7Net s7 = null;
- public string PLCIP;
- public string AGVHeartBitDB;
- public string PLCHeartBitDB;
- public TrafficCombineConnector(string plcip, string agvheartbitdb, string plcheartbitdb)
- {
- PLCIP = plcip;
- AGVHeartBitDB = agvheartbitdb;
- PLCHeartBitDB = plcheartbitdb;
- s7 = new HslCommunication.Profinet.Siemens.SiemensS7Net(HslCommunication.Profinet.Siemens.SiemensPLCS.S200Smart,
- PLCIP);
- s7.ConnectTimeOut = 1200;
- s7.ReceiveTimeOut = 1200;
- s7.SetPersistentConnection();
- Task.Factory.StartNew(() => ScanHeartBit());
- }
- public bool PLCAlive = false;
- void ScanHeartBit()
- {
- bool plcheartbit = false;
- bool agvheartbit = false;
- DateTime chageDateTime = DateTime.MinValue;
- while (true)
- {
- try
- {
- agvheartbit = !agvheartbit;
- s7.Write(AGVHeartBitDB, agvheartbit);
- OperateResult operateResult = s7.ReadBool(PLCHeartBitDB);
- if (s7.ReadBool(PLCHeartBitDB).IsSuccess)
- {
- if (plcheartbit != s7.ReadBool(PLCHeartBitDB).Content)
- {
- plcheartbit = !plcheartbit;
- chageDateTime = DateTime.Now;
- }
- }
- if (chageDateTime.AddSeconds(5) < DateTime.Now)
- {
- PLCAlive = false;
- }
- else
- {
- PLCAlive = true;
- }
- }
- catch
- {
- }
- Thread.Sleep(500);
- }
- }
- public bool ReadBool(string db)
- {
- return s7.ReadBool(db).IsSuccess && s7.ReadBool(db).Content;
- }
- public bool Write(string db, bool value)
- {
- s7.Write(db, value);
- return s7.ReadBool(db).IsSuccess && (s7.ReadBool(db).Content == value);
- }
- }
- }
|