init: CATL电池线SCADA首次入库
This commit is contained in:
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
.vs/
|
||||
packages/
|
||||
bin/
|
||||
obj/
|
||||
*.user
|
||||
*.suo
|
||||
*.cache
|
||||
*.log
|
||||
*.zip
|
||||
*.rar
|
||||
*.7z
|
||||
_system~.ini
|
||||
BIN
DLL/ABB.Robotics.Controllers.PC.dll
Normal file
BIN
DLL/ABB.Robotics.Controllers.PC.dll
Normal file
Binary file not shown.
BIN
DLL/BasicData.dll
Normal file
BIN
DLL/BasicData.dll
Normal file
Binary file not shown.
BIN
DLL/BouncyCastle.Crypto.dll
Normal file
BIN
DLL/BouncyCastle.Crypto.dll
Normal file
Binary file not shown.
BIN
DLL/BsRmlib.EDM.dll
Normal file
BIN
DLL/BsRmlib.EDM.dll
Normal file
Binary file not shown.
BIN
DLL/BsRmlib32.dll
Normal file
BIN
DLL/BsRmlib32.dll
Normal file
Binary file not shown.
BIN
DLL/BsRmlib64.dll
Normal file
BIN
DLL/BsRmlib64.dll
Normal file
Binary file not shown.
BIN
DLL/ConLink.dll
Normal file
BIN
DLL/ConLink.dll
Normal file
Binary file not shown.
BIN
DLL/ConLink19.dll
Normal file
BIN
DLL/ConLink19.dll
Normal file
Binary file not shown.
BIN
DLL/DataLinkMesWork.dll
Normal file
BIN
DLL/DataLinkMesWork.dll
Normal file
Binary file not shown.
BIN
DLL/EnBaseM.dll
Normal file
BIN
DLL/EnBaseM.dll
Normal file
Binary file not shown.
BIN
DLL/Fwlib32.dll
Normal file
BIN
DLL/Fwlib32.dll
Normal file
Binary file not shown.
BIN
DLL/ICSharpCode.SharpZipLib.dll
Normal file
BIN
DLL/ICSharpCode.SharpZipLib.dll
Normal file
Binary file not shown.
BIN
DLL/MQTTnet.Extensions.ManagedClient.dll
Normal file
BIN
DLL/MQTTnet.Extensions.ManagedClient.dll
Normal file
Binary file not shown.
BIN
DLL/MQTTnet.dll
Normal file
BIN
DLL/MQTTnet.dll
Normal file
Binary file not shown.
BIN
DLL/MW_Log.dll
Normal file
BIN
DLL/MW_Log.dll
Normal file
Binary file not shown.
BIN
DLL/MesWork.DeviceDriver.dll
Normal file
BIN
DLL/MesWork.DeviceDriver.dll
Normal file
Binary file not shown.
BIN
DLL/MesWork.MQTT.dll
Normal file
BIN
DLL/MesWork.MQTT.dll
Normal file
Binary file not shown.
BIN
DLL/Microsoft.Extensions.DependencyInjection.Abstractions.dll
Normal file
BIN
DLL/Microsoft.Extensions.DependencyInjection.Abstractions.dll
Normal file
Binary file not shown.
BIN
DLL/Microsoft.Extensions.Logging.Abstractions.dll
Normal file
BIN
DLL/Microsoft.Extensions.Logging.Abstractions.dll
Normal file
Binary file not shown.
BIN
DLL/Microsoft.Extensions.Logging.dll
Normal file
BIN
DLL/Microsoft.Extensions.Logging.dll
Normal file
Binary file not shown.
BIN
DLL/Microsoft.Extensions.Options.dll
Normal file
BIN
DLL/Microsoft.Extensions.Options.dll
Normal file
Binary file not shown.
BIN
DLL/Microsoft.Extensions.Primitives.dll
Normal file
BIN
DLL/Microsoft.Extensions.Primitives.dll
Normal file
Binary file not shown.
BIN
DLL/Microsoft.Win32.Primitives.dll
Normal file
BIN
DLL/Microsoft.Win32.Primitives.dll
Normal file
Binary file not shown.
BIN
DLL/MySql.Data.dll
Normal file
BIN
DLL/MySql.Data.dll
Normal file
Binary file not shown.
17803
DLL/MySql.Data.xml
Normal file
17803
DLL/MySql.Data.xml
Normal file
File diff suppressed because it is too large
Load Diff
BIN
DLL/NPOI.OOXML.dll
Normal file
BIN
DLL/NPOI.OOXML.dll
Normal file
Binary file not shown.
BIN
DLL/NPOI.OpenXml4Net.dll
Normal file
BIN
DLL/NPOI.OpenXml4Net.dll
Normal file
Binary file not shown.
BIN
DLL/NPOI.OpenXmlFormats.dll
Normal file
BIN
DLL/NPOI.OpenXmlFormats.dll
Normal file
Binary file not shown.
BIN
DLL/NPOI.dll
Normal file
BIN
DLL/NPOI.dll
Normal file
Binary file not shown.
BIN
DLL/Nai.Communication.Robot.FanucVarProxy.dll
Normal file
BIN
DLL/Nai.Communication.Robot.FanucVarProxy.dll
Normal file
Binary file not shown.
BIN
DLL/Newtonsoft.Json.dll
Normal file
BIN
DLL/Newtonsoft.Json.dll
Normal file
Binary file not shown.
BIN
DLL/Opc.Ua.Client.dll
Normal file
BIN
DLL/Opc.Ua.Client.dll
Normal file
Binary file not shown.
BIN
DLL/Opc.Ua.Configuration.dll
Normal file
BIN
DLL/Opc.Ua.Configuration.dll
Normal file
Binary file not shown.
BIN
DLL/Opc.Ua.Core.dll
Normal file
BIN
DLL/Opc.Ua.Core.dll
Normal file
Binary file not shown.
BIN
DLL/OpcUaHelper.dll
Normal file
BIN
DLL/OpcUaHelper.dll
Normal file
Binary file not shown.
BIN
DLL/Rhino3dm.dll
Normal file
BIN
DLL/Rhino3dm.dll
Normal file
Binary file not shown.
BIN
DLL/Robot.Common.dll
Normal file
BIN
DLL/Robot.Common.dll
Normal file
Binary file not shown.
BIN
DLL/Robot.MessageBus.dll
Normal file
BIN
DLL/Robot.MessageBus.dll
Normal file
Binary file not shown.
BIN
DLL/RobotMapper.dll
Normal file
BIN
DLL/RobotMapper.dll
Normal file
Binary file not shown.
BIN
DLL/RobotStudio.Services.RobApi.Desktop.dll
Normal file
BIN
DLL/RobotStudio.Services.RobApi.Desktop.dll
Normal file
Binary file not shown.
BIN
DLL/RobotStudio.Services.RobApi.dll
Normal file
BIN
DLL/RobotStudio.Services.RobApi.dll
Normal file
Binary file not shown.
BIN
DLL/Robots.dll
Normal file
BIN
DLL/Robots.dll
Normal file
Binary file not shown.
BIN
DLL/S7.Net.dll
Normal file
BIN
DLL/S7.Net.dll
Normal file
Binary file not shown.
BIN
DLL/Serilog.Extensions.Logging.dll
Normal file
BIN
DLL/Serilog.Extensions.Logging.dll
Normal file
Binary file not shown.
BIN
DLL/Serilog.dll
Normal file
BIN
DLL/Serilog.dll
Normal file
Binary file not shown.
BIN
DLL/SqlCmd.dll
Normal file
BIN
DLL/SqlCmd.dll
Normal file
Binary file not shown.
BIN
DLL/System.Net.Http.Formatting.dll
Normal file
BIN
DLL/System.Net.Http.Formatting.dll
Normal file
Binary file not shown.
BIN
DLL/System.Net.Http.dll
Normal file
BIN
DLL/System.Net.Http.dll
Normal file
Binary file not shown.
BIN
DLL/System.Runtime.InteropServices.RuntimeInformation.dll
Normal file
BIN
DLL/System.Runtime.InteropServices.RuntimeInformation.dll
Normal file
Binary file not shown.
BIN
DLL/System.Web.Cors.dll
Normal file
BIN
DLL/System.Web.Cors.dll
Normal file
Binary file not shown.
BIN
DLL/System.Web.Http.Cors.dll
Normal file
BIN
DLL/System.Web.Http.Cors.dll
Normal file
Binary file not shown.
BIN
DLL/System.Web.Http.SelfHost.dll
Normal file
BIN
DLL/System.Web.Http.SelfHost.dll
Normal file
Binary file not shown.
BIN
DLL/System.Web.Http.dll
Normal file
BIN
DLL/System.Web.Http.dll
Normal file
Binary file not shown.
BIN
DLL/Ubiety.Dns.Core.dll
Normal file
BIN
DLL/Ubiety.Dns.Core.dll
Normal file
Binary file not shown.
BIN
DLL/WeifenLuo.WinFormsUI.Docking.dll
Normal file
BIN
DLL/WeifenLuo.WinFormsUI.Docking.dll
Normal file
Binary file not shown.
BIN
DLL/Zstandard.Net.dll
Normal file
BIN
DLL/Zstandard.Net.dll
Normal file
Binary file not shown.
BIN
DLL/fwlibe1.dll
Normal file
BIN
DLL/fwlibe1.dll
Normal file
Binary file not shown.
BIN
DLL/log4net.dll
Normal file
BIN
DLL/log4net.dll
Normal file
Binary file not shown.
BIN
DLL/netstandard.dll
Normal file
BIN
DLL/netstandard.dll
Normal file
Binary file not shown.
41
DT_SCADA/App.config
Normal file
41
DT_SCADA/App.config
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
|
||||
<!--是启用写监控报错日志-->
|
||||
<add key="IsWriteMonitorLog" value="0"/>
|
||||
<add key="IsDemoMesServer" value="1"/>
|
||||
<add key="BasicDataTableFile" value="SignalTable.xlsx"/>
|
||||
<!--通讯服务方式 1:Socket 2:MQTT -->
|
||||
<add key="ConnectType" value="2"/>
|
||||
<add key="IpPortSub" value="127.0.0.1:1883,MesWork"/>
|
||||
<add key="MesServer_SendProtocol_Tag" value="TOBS??SCADAMain/47FAA6D0-745C-455C-AD54-4D5C52860070?DT|C_B_TagIDTrigger|"/>
|
||||
<add key="MesServer_SendProtocol_Joint" value="TOBS??SCADAMain/47FAA6D0-745C-455C-AD54-4D5C52860070?DT|C_B_JointMoveTo|"/>
|
||||
<add key="MesServer_SendProtocol_Info_Fast" value="TOBS??SCADAMain/DT_DeviceInfo?DT|C_B_DeviceInfo_Fast|"/>
|
||||
<add key="MesServer_SendProtocol_Info_Slow" value="TOBS??SCADAMain/DT_DeviceInfo?DT|C_B_DeviceInfo_Slow|"/>
|
||||
<add key="MesServer_SendProtocol_DeviceInfo" value="TOBS??SCADAMain/47FAA6D0-745C-455C-AD54-4D5C52860070?MES|C_B_DeviceInfo|"/>
|
||||
<add key="MesServer_SendProtocol_Plc" value="WEB/InstantMessaging/CATL/MisServer/"/>
|
||||
<add key="OpName" value="CG060"/>
|
||||
<!--充电数据同步时间-->
|
||||
<add key="SyncTime" value="600000"/>
|
||||
<add key="TokenSyncTime" value="300000"/>
|
||||
<add key="Url_WebApi_Char" value="http://127.0.0.1:9984"/>
|
||||
<add key="AK" value="SH-00056_00001"/>
|
||||
<add key="SK" value="a5f9383b728fb51e627b536f1a3e9476"/>
|
||||
<add key="salt" value="catl"/>
|
||||
<!--WebAPi-->
|
||||
<add key="WebSvrUrlPort" value="http://0.0.0.0:9984" />
|
||||
<!--数据库-->
|
||||
<!--<add key="ConnectionString" value="server=192.168.10.3;database=AMES_CATL_LFP;uid=sa;pwd=126.com;Connection Reset=FALSE;Max Pool Size = 1000" />-->
|
||||
<add key="ConnectionString" value="server=192.168.10.3;database=AMES_CATL_LFP;uid=sa;pwd=126.com;Connection Reset=FALSE;Max Pool Size = 1000" />
|
||||
|
||||
<!--打标机-->
|
||||
<add key="MarkingMachine_Ip" value="192.168.10.39"/>
|
||||
<add key="MarkingMachine_Port" value="3500"/>
|
||||
|
||||
|
||||
</appSettings>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||
</startup>
|
||||
</configuration>
|
||||
562
DT_SCADA/BusinessCode/AppConfig.cs
Normal file
562
DT_SCADA/BusinessCode/AppConfig.cs
Normal file
@@ -0,0 +1,562 @@
|
||||
using DeviceDriver_BasicData;
|
||||
using ExternalDataSync;
|
||||
using Newtonsoft.Json;
|
||||
using NJ_ZC;
|
||||
using NPOI.OpenXmlFormats.Spreadsheet;
|
||||
using OpcBasic;
|
||||
using Rhino.Geometry;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Security.Policy;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using SystemFramework;
|
||||
using static Focas1;
|
||||
using static System.Configuration.ConfigurationManager;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp {
|
||||
public static MesWorkForm mesWorkForm = null;
|
||||
}
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static int IsWriteMonitorLog = Convert.ToInt32(AppSettings["IsWriteMonitorLog"]);
|
||||
public static int IsDemoMesServer = Convert.ToInt32(AppSettings["IsDemoMesServer"]);
|
||||
public static string BasicDataTableFile = AppSettings["BasicDataTableFile"];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static int ConnectType = Convert.ToInt32(AppSettings["ConnectType"]);
|
||||
|
||||
public static string IpPortSub = AppSettings["IpPortSub"];
|
||||
public static string MesServer_SendProtocol_Tag = AppSettings["MesServer_SendProtocol_Tag"];
|
||||
public static string MesServer_SendProtocol_Joint = AppSettings["MesServer_SendProtocol_Joint"];
|
||||
public static string MesServer_SendProtocol_Info_Fast = AppSettings["MesServer_SendProtocol_Info_Fast"];
|
||||
public static string MesServer_SendProtocol_Info_Slow = AppSettings["MesServer_SendProtocol_Info_Slow"];
|
||||
public static string MesServer_SendProtocol_Plc = AppSettings["MesServer_SendProtocol_Plc"];
|
||||
|
||||
public static string MesServer_SendProtocol_DeviceInfo = AppSettings["MesServer_SendProtocol_DeviceInfo"];
|
||||
|
||||
public static string ConnectionString = AppSettings["ConnectionString"];
|
||||
|
||||
public static string WebSvrUrlPort = AppSettings["WebSvrUrlPort"];
|
||||
|
||||
public static string MarkingMachine_Ip = AppSettings["MarkingMachine_Ip"];
|
||||
public static string MarkingMachine_Port = AppSettings["MarkingMachine_Port"];
|
||||
public static string Url_WebApi_Char = AppSettings["Url_WebApi_Char"];
|
||||
public static string AK = AppSettings["AK"];
|
||||
public static string SK = AppSettings["SK"];
|
||||
public static string salt = AppSettings["salt"];
|
||||
|
||||
public static int TokenSyncTime = Convert.ToInt32(AppSettings["TokenSyncTime"]);
|
||||
public static int SyncTime = Convert.ToInt32(AppSettings["SyncTime"]);
|
||||
public static string charDataToken = "";
|
||||
public static long charDataTokenTime = 0;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static Dictionary<string,object> dc_Robot = new Dictionary<string, object>();
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static Dictionary<string, B_Read_N_Axis> dc_Name_Axis = new Dictionary<string, B_Read_N_Axis>();
|
||||
public static Dictionary<string, B_Read_N_AxisCard> dc_Name_Axis_Card = new Dictionary<string, B_Read_N_AxisCard>();
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static AgvRead agvRead = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static ScadaConfig scadaConfig = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static ConcurrentQueue<ParamT> taskSql = new ConcurrentQueue<ParamT>();
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static string StationName = "DDV_SXYJ";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static bool OnLine_PLC_1 = false;
|
||||
public static bool OnLine_PLC_2 = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static bool OnLine_SQL = false;
|
||||
|
||||
/// <summary>
|
||||
/// 监控数据的所有变化,从这里产生
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
public override void OPCTagData_TagDataOnChangeMIS(object sender, CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(MIS_Funtion, e);
|
||||
}
|
||||
/// <summary>
|
||||
/// 定时触发,检测PLC在线状态,周期:3 s
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="eState"></param>
|
||||
public override void PlcStateEvent(object sender, PlcStateEvetnArgs eState)
|
||||
{
|
||||
var ip = eState.IP.ToString();
|
||||
var onLine = (bool)eState.OnLine;
|
||||
|
||||
switch (ip)
|
||||
{
|
||||
case "192.168.10.40":
|
||||
OnLine_PLC_1 = onLine;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="t"></param>
|
||||
/// <param name="location"></param>
|
||||
/// <param name="content"></param>
|
||||
public override void E_WriteLog(Enum_LogType t, string location, string content)
|
||||
{
|
||||
WriteLog(content);
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
new System.Threading.Mutex(true, $"DT_SCADA_{IpPortSub}", out bool bCanRun);
|
||||
if (!bCanRun)
|
||||
{
|
||||
MessageBox.Show("产线信号监控 程序 已经在运行!不可重复启动!");
|
||||
return;
|
||||
}
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(Temp.mesWorkForm = new MesWorkForm());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读写取方法
|
||||
/// </summary>
|
||||
/// <param name="readWhat"></param>
|
||||
/// <param name="opOrIp"></param>
|
||||
private void DemoRead(string doWhat, string opOrIp)
|
||||
{
|
||||
try
|
||||
{
|
||||
string opName = "OP1010";
|
||||
object tagValue = 1;
|
||||
bool result = false;
|
||||
ConcurrentDictionary<string, object> tagAdrListTagFormat = null;
|
||||
|
||||
switch (doWhat)
|
||||
{
|
||||
case "TagID":
|
||||
tagValue = ReadPLC("71010001");
|
||||
result = WritePLC("71010001", tagValue);
|
||||
break;
|
||||
case "TagTypeCodeID":
|
||||
tagValue = ReadPLC(10, opName);
|
||||
result = WritePLC(10, opName, tagValue);
|
||||
break;
|
||||
case "OpAllTag"://OP所有点
|
||||
tagAdrListTagFormat = ReadPLC_GroupData(opOrIp);
|
||||
break;
|
||||
case "OpMonitorTag"://OP监控点
|
||||
tagAdrListTagFormat = ReadPLC_GroupMonitor(opOrIp);
|
||||
break;
|
||||
case "IpAllTag"://IP所有点
|
||||
tagAdrListTagFormat = ReadPLC_IpTag(opOrIp);
|
||||
break;
|
||||
case "IpMonitorTag"://IP监控点
|
||||
tagAdrListTagFormat = ReadPLC_IpMonitorTag(opOrIp);
|
||||
break;
|
||||
case "RegionRead"://按区域读取(起始地址 + 长度)
|
||||
{
|
||||
string tagStartAdr = "DB411.10";
|
||||
ushort tagAdrListMaxLength = 100;
|
||||
GetDbAndMaxLengthByOpName(opOrIp, out tagStartAdr, out tagAdrListMaxLength);
|
||||
tagAdrListTagFormat = ReadQualityDataList(opOrIp, tagStartAdr, tagAdrListMaxLength);
|
||||
}
|
||||
break;
|
||||
case "ReadBytes"://按区域读取(起始地址 + 长度)
|
||||
{
|
||||
string tagStartAdr = "DB411.10";
|
||||
ushort tagAdrListMaxLength = 100;
|
||||
var bates1 = ReadByteData_Op(opOrIp, tagStartAdr, tagAdrListMaxLength);
|
||||
var bates2 = ReadByteData_Ip(opOrIp, tagStartAdr, tagAdrListMaxLength);
|
||||
}
|
||||
break;
|
||||
case "WriteBytes"://按区域读取(起始地址 + 长度)
|
||||
{
|
||||
string tagStartAdr = "DB411.10";
|
||||
var result1 = WritePLC_Bytes_Op(opOrIp, tagStartAdr, new byte[1024]);
|
||||
var result2 = WritePLC_Bytes_Ip(opOrIp, tagStartAdr, new byte[1024]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//ReadByteData_Op(string opName, string startAdrr, ushort length)
|
||||
foreach (System.Collections.Generic.KeyValuePair<string, object> de in tagAdrListTagFormat)//得到工位监控点哈希表
|
||||
{
|
||||
TagFormat TF = (TagFormat)de.Value;
|
||||
string recResult = TF.OpName + " (" + TF.TagTypeCodeID + ")" + TF.TagValue.ToString(); ;
|
||||
}
|
||||
}
|
||||
catch (System.Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog("listView_ShowQualityData_Init" + err);
|
||||
}
|
||||
|
||||
//var tagTypeCodeIDList = DriverCache[CacheType.Cache_OpTagTypeCodeIDList];
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
/// <returns></returns>
|
||||
private string Hello_You_All_Never_Know(string[] args)
|
||||
{
|
||||
return Guid.NewGuid().ToString()+ Guid.NewGuid().ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
static private void Loop()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
taskSql.TryDequeue(out ParamT tp);
|
||||
if (tp != null)
|
||||
{
|
||||
var procedureName = tp.procedureName;
|
||||
var sqlParameter = tp.sqlParameter;
|
||||
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref sqlParameter, out string errorMessage);
|
||||
if (errorMessage.Length > 0)
|
||||
{
|
||||
errorMessage = errorMessage.Replace("'", "**");
|
||||
LogRecord.LogRecord.Insert_Log(LogRecord.LogRecord.Type_Log.Alarm, errorMessage);
|
||||
}
|
||||
}
|
||||
if (taskSql.Count < 5)
|
||||
{
|
||||
Thread.Sleep(15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CommunicationCheckOnLine()
|
||||
{
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
MesWorkForm.OnLine_SQL = DataLinkMesWork.SQLCommon.ExecuteDataTable("select getdate()", ConnectionString, out DataTable dt, out string err);
|
||||
}
|
||||
catch (Exception) { }
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
}
|
||||
|
||||
static private void LineCount()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var opName in MesWorkForm.opNameList)
|
||||
{
|
||||
var count_Total = ReadPLC(10, opName).ToString();
|
||||
var count_OK = count_Total;
|
||||
var count_NG = count_Total;
|
||||
|
||||
var pName = "Event_ProduceCount_Update";
|
||||
var sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@DeviceCode", opName),
|
||||
new SqlParameter("@Online", true.ToString()),
|
||||
new SqlParameter("@StationName", opName),
|
||||
new SqlParameter("@Count_OK", count_OK),
|
||||
new SqlParameter("@Count_NG", count_NG),
|
||||
new SqlParameter("@Count_Total", count_Total),
|
||||
};
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = pName,
|
||||
sqlParameter = sqlParameter
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
}
|
||||
|
||||
static private void StationNameStatus_Insert()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var opName in MesWorkForm.opNameList)
|
||||
{
|
||||
/*
|
||||
1 警报数
|
||||
2 运行
|
||||
*/
|
||||
var status = "-1";
|
||||
try
|
||||
{
|
||||
var alarm = ReadPLC(1, opName).ToString().ToLower().Replace("true","1").Replace("false", "0");
|
||||
var run = ReadPLC(2, opName).ToString().ToLower().Replace("true", "1").Replace("false", "0");
|
||||
if (Convert.ToInt32(alarm) > 0)
|
||||
{
|
||||
status = "2";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Convert.ToInt32(run) > 0)
|
||||
{
|
||||
status = "1";
|
||||
}
|
||||
else
|
||||
{
|
||||
status = "0";
|
||||
}
|
||||
}
|
||||
if (alarm == "-1" & run == "-1")
|
||||
{
|
||||
status = "-1";
|
||||
}
|
||||
}
|
||||
catch (Exception errr)
|
||||
{
|
||||
}
|
||||
|
||||
var pName = "Event_StationStatus_Insert";
|
||||
var sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@Status", status),
|
||||
new SqlParameter("@ChangeTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")),
|
||||
};
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = pName,
|
||||
sqlParameter = sqlParameter
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(60_000);
|
||||
}
|
||||
}
|
||||
static private void StationNameStatus_Update()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var opName in MesWorkForm.opNameList)
|
||||
{
|
||||
/*
|
||||
1 警报数
|
||||
2 运行
|
||||
*/
|
||||
var status = "-1";
|
||||
try
|
||||
{
|
||||
var alarm = ReadPLC(1, opName).ToString().ToLower().Replace("true", "1").Replace("false", "0");
|
||||
var run = ReadPLC(2, opName).ToString().ToLower().Replace("true", "1").Replace("false", "0");
|
||||
if (Convert.ToInt32(alarm) > 0)
|
||||
{
|
||||
status = "2";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Convert.ToInt32(run) > 0)
|
||||
{
|
||||
status = "1";
|
||||
}
|
||||
else
|
||||
{
|
||||
status = "0";
|
||||
}
|
||||
}
|
||||
if (alarm == "-1" & run == "-1")
|
||||
{
|
||||
status = "-1";
|
||||
}
|
||||
}
|
||||
catch (Exception errr)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
var pName = "Event_StationStatus_Update";
|
||||
var sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@Status", status),
|
||||
new SqlParameter("@ChangeTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")),
|
||||
};
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = pName,
|
||||
sqlParameter = sqlParameter
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(2000);
|
||||
}
|
||||
}
|
||||
static private void StationNameDeviceData_Insert()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var opName in MesWorkForm.opNameList)
|
||||
{
|
||||
|
||||
var CreatTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
var opData = ReadPLC_GroupData(opName);
|
||||
foreach (KeyValuePair<string, object> item in opData)
|
||||
{
|
||||
var thisTagID = item.Key;
|
||||
var thisTF = (TagFormat)item.Value;
|
||||
var thisTagTypeCodeID = thisTF.TagTypeCodeID;
|
||||
var thisItemName = thisTF.ItemName;
|
||||
var thisValue = thisTF.TagValue;
|
||||
|
||||
var pName = "Event_DeviceData_Insert";
|
||||
var sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@DeviceCode", opName),
|
||||
new SqlParameter("@Online", true.ToString()),
|
||||
new SqlParameter("@StationName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", thisTagTypeCodeID),
|
||||
new SqlParameter("@ItemName", thisItemName),
|
||||
new SqlParameter("@TagValue", thisValue),
|
||||
new SqlParameter("@TagID", thisTagID),
|
||||
new SqlParameter("@CreateTime", CreatTime),
|
||||
};
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = pName,
|
||||
sqlParameter = sqlParameter
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(60_000);
|
||||
}
|
||||
}
|
||||
|
||||
static private void StationNameDeviceData_Update()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var opName in MesWorkForm.opNameList)
|
||||
{
|
||||
var CreatTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
var opData = ReadPLC_GroupData(opName);
|
||||
foreach (KeyValuePair<string, object> item in opData)
|
||||
{
|
||||
var thisTagID = item.Key;
|
||||
var thisTF = (TagFormat)item.Value;
|
||||
var thisTagTypeCodeID = thisTF.TagTypeCodeID;
|
||||
var thisItemName = thisTF.ItemName;
|
||||
var thisValue = thisTF.TagValue;
|
||||
|
||||
var pName = "Event_DeviceData_Update";
|
||||
var sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@DeviceCode", opName),
|
||||
new SqlParameter("@Online", true.ToString()),
|
||||
new SqlParameter("@StationName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", thisTagTypeCodeID),
|
||||
new SqlParameter("@ItemName", thisItemName),
|
||||
new SqlParameter("@TagValue", thisValue),
|
||||
new SqlParameter("@TagID", thisTagID),
|
||||
new SqlParameter("@CreateTime", CreatTime),
|
||||
};
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = pName,
|
||||
sqlParameter = sqlParameter
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(2000);
|
||||
}
|
||||
}
|
||||
|
||||
static private void SelectData_WritePLC_Task()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
B_DB_Opera.SelectData_WritePLC();
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void WriteLog(string msg)
|
||||
{
|
||||
MW_Log.LoggerHelper.Info("Alarm", msg);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
277
DT_SCADA/BusinessCode/B_DB_Opera.cs
Normal file
277
DT_SCADA/BusinessCode/B_DB_Opera.cs
Normal file
@@ -0,0 +1,277 @@
|
||||
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class B_DB_Opera
|
||||
{
|
||||
|
||||
public static void Event_WorkStart(string opName, int tagTypeCodeID, string partType, string tagID)
|
||||
{
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_WorkStart",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", tagTypeCodeID),
|
||||
new SqlParameter("@PartType", partType),
|
||||
new SqlParameter("@ChangeTime",ChangeTime),
|
||||
new SqlParameter("@TagID", tagID)
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static void Event_WorkEnd(string opName, int tagTypeCodeID, string partType
|
||||
, string barCode, int qualityMask, int outCount, int duration
|
||||
, string tagID)
|
||||
{
|
||||
/*
|
||||
@OpName nvarchar(50) = null,
|
||||
@TagTypeCodeID int = 0,
|
||||
@PartType int = 0,
|
||||
@BarCode nvarchar(2048) = null,
|
||||
@QualityMask int = 0,
|
||||
@OutCount int = 0,
|
||||
@Duration int = 0,
|
||||
@ChangeTime datetime = null,
|
||||
@TagID nvarchar(200) = null
|
||||
*/
|
||||
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_WorkEnd",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", tagTypeCodeID),
|
||||
new SqlParameter("@PartType", partType),
|
||||
new SqlParameter("@BarCode", barCode),
|
||||
new SqlParameter("@QualityMask", qualityMask),
|
||||
new SqlParameter("@OutCount", outCount),
|
||||
new SqlParameter("@Duration", duration),
|
||||
new SqlParameter("@ChangeTime",ChangeTime),
|
||||
new SqlParameter("@TagID", tagID)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void Event_Signal_Log(string opName, int tagTypeCodeID, string value, string tagID)
|
||||
{
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_Signal_Log",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", tagTypeCodeID),
|
||||
new SqlParameter("@Value", value),
|
||||
new SqlParameter("@ChangeTime",ChangeTime),
|
||||
new SqlParameter("@TagID", tagID)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public static void Event_Alarm_Start(string opName, int tagTypeCodeID, string alarmText, string tagID)
|
||||
{
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_Alarm_Start",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", tagTypeCodeID),
|
||||
new SqlParameter("@AlarmText", alarmText),
|
||||
new SqlParameter("@ChangeTime",ChangeTime),
|
||||
new SqlParameter("@TagID", tagID)
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static void Event_Alarm_End(string opName, int tagTypeCodeID, string alarmText, string tagID)
|
||||
{
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_Alarm_End",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", tagTypeCodeID),
|
||||
new SqlParameter("@AlarmText", alarmText),
|
||||
new SqlParameter("@ChangeTime",ChangeTime),
|
||||
new SqlParameter("@TagID", tagID)
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static void Event_AlarmAndTip_Start(string opName, int tagTypeCodeID, string alarmText, string tagID,int Alarm1_Tip2)
|
||||
{
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_AlarmAndTip_Start",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@OpName", opName),
|
||||
new SqlParameter("@TagTypeCodeID", tagTypeCodeID),
|
||||
new SqlParameter("@AlarmText", alarmText),
|
||||
new SqlParameter("@ChangeTime",ChangeTime),
|
||||
new SqlParameter("@TagID", tagID),
|
||||
new SqlParameter("@Alarm1_Tip2", Alarm1_Tip2),
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static void MES_StatusChange(string opName, int StatusCode, string TriggerTime)
|
||||
{
|
||||
SqlParameter[] thisParms = new SqlParameter[3];
|
||||
thisParms[0] = new SqlParameter("@opName", opName);
|
||||
thisParms[1] = new SqlParameter("@StatusCode", StatusCode);
|
||||
thisParms[2] = new SqlParameter("@TriggerTime", TriggerTime);
|
||||
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "设备管理_状态变化新增",
|
||||
sqlParameter = thisParms
|
||||
});
|
||||
}
|
||||
|
||||
public static void ClearLog()
|
||||
{
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_Delete_Station_记录_日志_运行日志",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
new SqlParameter("@工位号", "DDV")
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void Exec_DispatchSql()
|
||||
{
|
||||
MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
{
|
||||
procedureName = "Event_Delete_部分历史数据",
|
||||
sqlParameter = new SqlParameter[] {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void SelectData_WritePLC()
|
||||
{
|
||||
var procedureName = "TV_PLC写入_查询";
|
||||
var sqlParameter = new SqlParameter[] { };
|
||||
|
||||
DataLinkMesWork.SQLCommon.ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref sqlParameter,out DataTable dt, out string errorMessage);
|
||||
if (dt.Rows.Count > 0)
|
||||
{
|
||||
//select isnull(@前悬基准时间,0) as 前悬基准时间,isnull(@后悬基准时间,0) as 后悬基准时间,
|
||||
//isnull(@前悬应到人数, 0) as 前悬应到人数,isnull(@后悬应到人数, 0) as 后悬应到人数
|
||||
var 前悬基准时间_79 = dt.Rows[0]["前悬基准时间"].ToString();
|
||||
var 前悬应到人数_77 = dt.Rows[0]["前悬应到人数"].ToString();
|
||||
var 前悬抽检频率_83 = dt.Rows[0]["前悬抽检频率"].ToString();
|
||||
|
||||
var 后悬基准时间_80 = dt.Rows[0]["后悬基准时间"].ToString();
|
||||
var 后悬应到人数_78 = dt.Rows[0]["后悬应到人数"].ToString();
|
||||
var 后悬抽检频率_84 = dt.Rows[0]["后悬抽检频率"].ToString();
|
||||
|
||||
var opName_QX = "OP1010";
|
||||
MesWorkForm.WritePLC(79, opName_QX, 前悬基准时间_79);
|
||||
MesWorkForm.WritePLC(77, opName_QX, 前悬应到人数_77);
|
||||
MesWorkForm.WritePLC(83, opName_QX, 前悬抽检频率_83);
|
||||
var opName_HX = "OP1020";
|
||||
MesWorkForm.WritePLC(80, opName_HX, 后悬基准时间_80);
|
||||
MesWorkForm.WritePLC(78, opName_HX, 后悬应到人数_78);
|
||||
MesWorkForm.WritePLC(84, opName_HX, 后悬抽检频率_84);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool BaseData_tagTable_QualityData_B5A_IndexInsert(string EngineID, string tagID, string EngineType, int EngineTypeID, string opName, int isGoodBad, string PartPalletCode, out int Id_tagCF)
|
||||
{
|
||||
string procedureName;
|
||||
procedureName = "CATL_测量数据合格索引_增加_加注设备";
|
||||
Id_tagCF = 0;
|
||||
SqlParameter[] thisParms = new SqlParameter[4];
|
||||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@TagID_CF", tagID);
|
||||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@EngineID", EngineID);
|
||||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@Id_tagCF", Id_tagCF);
|
||||
thisParms[3].Direction = ParameterDirection.Output;
|
||||
|
||||
if (DataLinkMesWork.SQLCommon.ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out string errorMessage))
|
||||
{
|
||||
Id_tagCF = Convert.ToInt32(thisParms[3].Value.ToString());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static bool BaseData_tagTable_QualityData_B5A_Insert(string EngineID, int Id_tagCF, string opName, DataTable dt, bool IsCheck = false)
|
||||
{
|
||||
string procedureName;
|
||||
procedureName = "CATL_测量数据合格_增加_加注设备";
|
||||
SqlParameter[] thisParms = new SqlParameter[7];
|
||||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@Id_tagCF", Id_tagCF);
|
||||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@TagID", SqlDbType.NVarChar, 100, "TagID");
|
||||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@TagValue", SqlDbType.NVarChar, 100, "TagValue");
|
||||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@IsGoodBad", SqlDbType.Int, 4, "IsGoodBad");
|
||||
thisParms[4] = new System.Data.SqlClient.SqlParameter("@EngineID", EngineID);
|
||||
thisParms[5] = new System.Data.SqlClient.SqlParameter("@上限值", SqlDbType.NVarChar, 100, "上限值");
|
||||
thisParms[6] = new System.Data.SqlClient.SqlParameter("@下限值", SqlDbType.NVarChar, 100, "下限值");
|
||||
|
||||
return DataLinkMesWork.SQLCommon.ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, dt, out string errorMessage);
|
||||
}
|
||||
|
||||
public static bool BaseData_tagTable_CharData_Insert(string vin, string testCode, string testStatus, string testBeginTime, string testEndTime, string faultInfo, string syncTime, out string errorMessage)
|
||||
{
|
||||
string procedureName;
|
||||
procedureName = "CATL_充电数据_增加";
|
||||
SqlParameter[] thisParms = new SqlParameter[7];
|
||||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@vin", vin);
|
||||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@testCode", testCode);
|
||||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@testStatus", testStatus);
|
||||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@testBeginTime", testBeginTime);
|
||||
thisParms[4] = new System.Data.SqlClient.SqlParameter("@testEndTime", testEndTime);
|
||||
thisParms[5] = new System.Data.SqlClient.SqlParameter("@faultInfo", faultInfo);
|
||||
thisParms[6] = new System.Data.SqlClient.SqlParameter("@同步时间", syncTime);
|
||||
|
||||
return DataLinkMesWork.SQLCommon.ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out errorMessage);
|
||||
}
|
||||
|
||||
public static bool GetQualityDataCount(string EngineID, string opName, out DataTable dt)
|
||||
{
|
||||
dt = new DataTable();
|
||||
string procedureName;
|
||||
procedureName = "CATL_测量数据合格_查询测试次数";
|
||||
SqlParameter[] thisParms = new SqlParameter[2];
|
||||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@EngineID", EngineID);
|
||||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||||
|
||||
return DataLinkMesWork.SQLCommon.ExecuteStoredProcedure(procedureName, MesWorkForm.ConnectionString, ref thisParms, out dt, out string errorMessage);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
65
DT_SCADA/BusinessCode/Loop_Fast.cs
Normal file
65
DT_SCADA/BusinessCode/Loop_Fast.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
//using OpcBasic;
|
||||
//using Robot.Common;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace MesWork
|
||||
//{
|
||||
// public partial class Temp { }
|
||||
// public partial class MesWorkForm
|
||||
// {
|
||||
|
||||
// private void Loop_Fast_Task()
|
||||
// {
|
||||
// new Thread(new ThreadStart(Loop_Fast_Exec)) { IsBackground = true }.Start();
|
||||
// }
|
||||
|
||||
// private void Loop_Fast_Exec()
|
||||
// {
|
||||
// while (true)
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// var tagValue = Read_Fast();
|
||||
// S_C_B_Info_Slow(tagValue);
|
||||
// }
|
||||
// catch (Exception err)
|
||||
// {
|
||||
// }
|
||||
// Thread.Sleep(2000);
|
||||
// }
|
||||
// }
|
||||
|
||||
// private Param_Slow Read_Fast()
|
||||
// {
|
||||
// var param_Slow = new Param_Slow();
|
||||
|
||||
// param_Slow.produce_task_no = ReadPLC(10, "OP1000").ToString();
|
||||
// param_Slow.agv_from_loc = agvRead.from_loc;
|
||||
// param_Slow.agv_to_loc = agvRead.to_loc;
|
||||
|
||||
|
||||
// var lib = new List<Param_Lib>();
|
||||
// var jointArray = MesWorkForm.ReadPLC_GroupData("OP1000_L");
|
||||
// foreach (KeyValuePair<string, object> item in jointArray)
|
||||
// {
|
||||
// var TF = (TagFormat)item.Value;
|
||||
// var index = Convert.ToInt32(TF.ShaftID).ToString();
|
||||
// var value = TF.TagValue.ToString();
|
||||
// lib.Add(new Param_Lib { lib_loc_no = index, lib_content = value });
|
||||
// }
|
||||
|
||||
// return param_Slow;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
|
||||
122
DT_SCADA/BusinessCode/Loop_Slow.cs
Normal file
122
DT_SCADA/BusinessCode/Loop_Slow.cs
Normal file
@@ -0,0 +1,122 @@
|
||||
using OpcBasic;
|
||||
using Robot.Common;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
|
||||
private void Loop_Slow_Task()
|
||||
{
|
||||
new Thread(new ThreadStart(Loop_Slow_Exec)) { IsBackground = true}.Start();
|
||||
}
|
||||
|
||||
private void Loop_Slow_Exec()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
var tagValue = Read();
|
||||
S_C_B_Info_Slow(tagValue);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
Thread.Sleep(2000);
|
||||
}
|
||||
}
|
||||
|
||||
private Param_Slow Read()
|
||||
{
|
||||
var param_Slow = new Param_Slow();
|
||||
|
||||
param_Slow.produce_task_no = ReadPLC(10, "OP1000").ToString();
|
||||
param_Slow.agv_from_loc = agvRead.from_loc;
|
||||
param_Slow.agv_to_loc = agvRead.to_loc;
|
||||
|
||||
|
||||
var lib = new List<Param_Lib>();
|
||||
var jointArray = MesWorkForm.ReadPLC_GroupData("OP1000_L");
|
||||
foreach (KeyValuePair<string, object> item in jointArray)
|
||||
{
|
||||
var TF = (TagFormat)item.Value;
|
||||
var index = Convert.ToInt32(TF.ShaftID).ToString();
|
||||
var value = TF.TagValue.ToString().ToLower () == "true"?"1":"0";
|
||||
lib.Add(new Param_Lib { lib_loc_no = index , lib_content = value });
|
||||
}
|
||||
param_Slow.lib = lib.OrderBy(o=>Convert.ToInt32(o.lib_loc_no)).ToList();
|
||||
|
||||
return param_Slow;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class Param_Slow
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string produce_task_no
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string agv_from_loc
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string agv_to_loc
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<Param_Lib> lib
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class Param_Lib
|
||||
{
|
||||
public string lib_loc_no
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string lib_content
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
219
DT_SCADA/BusinessCode/MIS_Funtion.cs
Normal file
219
DT_SCADA/BusinessCode/MIS_Funtion.cs
Normal file
@@ -0,0 +1,219 @@
|
||||
|
||||
using ABB.Robotics.Controllers.IOSystemDomain;
|
||||
using BasicData;
|
||||
using DeviceDriver_BasicData;
|
||||
using Newtonsoft.Json;
|
||||
using OpcBasic;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Web;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
namespace MesWork
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
/// <summary>
|
||||
/// 处理MIS逻辑
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
private void MIS_Funtion(object e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var msgEvent = (CustomeEvetnArgs)e;
|
||||
if (msgEvent.TagValue == null) return;
|
||||
|
||||
var tagID = msgEvent.TagID.ToString();
|
||||
var opName = msgEvent.OpName.ToString();
|
||||
var tagTypeCodeID = (int)msgEvent.TagTypeCodeID;
|
||||
var tagTypeID = (EnumTagTypeID)msgEvent.TagTypeID;
|
||||
var TagTypeCodeID = (EnumTagTypeCodeID)tagTypeCodeID;
|
||||
var alarmMsg = msgEvent.TagName.ToString();
|
||||
var tagValue = "";
|
||||
switch (tagTypeID)
|
||||
{
|
||||
case EnumTagTypeID.BOOL:
|
||||
tagValue = (Convert.ToInt32(msgEvent.TagValue)).ToString();
|
||||
break;
|
||||
default:
|
||||
tagValue = msgEvent.TagValue.ToString();
|
||||
break;
|
||||
}
|
||||
|
||||
switch (tagTypeCodeID)
|
||||
{
|
||||
case 14:
|
||||
MesWorkForm.WritePLC(15, opName, tagValue);
|
||||
break;
|
||||
case 19:
|
||||
if (tagValue == "1")
|
||||
{
|
||||
DataTable dt_WWW = BuildDataTables_WWW();
|
||||
SaveQualityData(opName, tagValue, tagID, out dt_WWW);
|
||||
string qty = JsonConvert.SerializeObject(dt_WWW);
|
||||
string SendMessage = "MES|ShowTimelyQuality_Resources|" + opName + "|" + qty;
|
||||
SendMsg(opName, MesServer_SendProtocol_Plc, SendMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
MesWorkForm.WritePLC(20, opName, "0");
|
||||
}
|
||||
break;
|
||||
// 扫码完成,比对结果
|
||||
case 65:
|
||||
if (tagValue == "1")
|
||||
{
|
||||
GetQualityDataCount(opName);
|
||||
}
|
||||
else
|
||||
{
|
||||
MesWorkForm.WritePLC(66, opName, 0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{ }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static void SaveQualityData(string opName, string tagValue, string tagID, out DataTable dt_WWW, bool isCheck = false)
|
||||
{
|
||||
int id_tagCF;
|
||||
int qualityMask = 0;
|
||||
int engineTypeID = 0;
|
||||
string engineID = "";
|
||||
string engineType = "";
|
||||
string partPallet = "";
|
||||
string orderFormPlc = "";
|
||||
DataTable BasicDataTagValueUpDown = new DataTable();
|
||||
DataTable BasicDataTagValue = new DataTable();
|
||||
dt_WWW = BuildDataTables_WWW();
|
||||
Hashtable valueList;
|
||||
try
|
||||
{
|
||||
|
||||
// 加注结果
|
||||
//dt_WWW.Rows.Add(GetQualityData(opName, 63, isOk).ItemArray);
|
||||
string isOk = MesWorkForm.ReadPLC(63, opName).ToString();
|
||||
engineID = MesWorkForm.ReadPLC(64, opName).ToString();
|
||||
engineID = engineID.Replace(" ", "");
|
||||
// 真空值
|
||||
dt_WWW.Rows.Add(GetQualityData(opName, 60, isOk).ItemArray);
|
||||
// 加注量
|
||||
dt_WWW.Rows.Add(GetQualityData(opName, 61, isOk).ItemArray);
|
||||
// 节拍时间
|
||||
dt_WWW.Rows.Add(GetQualityData(opName, 62, isOk).ItemArray);
|
||||
|
||||
|
||||
DateTime lastupdatetime = DateTime.Now;
|
||||
//保存质量数
|
||||
B_DB_Opera.BaseData_tagTable_QualityData_B5A_IndexInsert(engineID, tagID, engineType, engineTypeID, opName, qualityMask, partPallet, out id_tagCF);
|
||||
B_DB_Opera.BaseData_tagTable_QualityData_B5A_Insert(engineID, id_tagCF, opName, dt_WWW, isCheck);
|
||||
//回写保存完成数据
|
||||
WritePLC(20, opName, true);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
WritePLC(20, opName, true);
|
||||
}
|
||||
}
|
||||
|
||||
static public DataTable BuildDataTables_WWW()
|
||||
{
|
||||
DataTable table;
|
||||
DataColumnCollection columns;
|
||||
table = new DataTable();
|
||||
columns = table.Columns;
|
||||
table.Columns.Add("TagID", typeof(System.String));
|
||||
table.Columns.Add("TagValue", typeof(System.String));
|
||||
table.Columns.Add("IsGoodBad", typeof(System.Int32));
|
||||
table.Columns.Add("测量位置", typeof(System.String));
|
||||
table.Columns.Add("测量项目", typeof(System.String));
|
||||
table.Columns.Add("工位号", typeof(System.String));
|
||||
table.Columns.Add("理论值", typeof(System.String));
|
||||
table.Columns.Add("上限值", typeof(System.String));
|
||||
table.Columns.Add("下限值", typeof(System.String));
|
||||
table.Columns.Add("测量单位", typeof(System.String));
|
||||
table.Columns.Add("列位置", typeof(System.Int32));
|
||||
table.Columns.Add("变量排序", typeof(System.Int32));
|
||||
|
||||
return table;
|
||||
}
|
||||
public static DataRow GetQualityData(string opName, int tagTypeCode, string isOk)
|
||||
{
|
||||
string TagValueUp = "";
|
||||
string TagValueDown = "";
|
||||
DataRow dr = BuildDataTables_WWW().NewRow();
|
||||
var qualityData = (TagFormat)MesWorkForm.ReadPLC_TF(tagTypeCode, opName);
|
||||
if(tagTypeCode == 61)
|
||||
{
|
||||
TagValueUp = MesWorkForm.ReadPLC(67, opName).ToString();
|
||||
TagValueDown = MesWorkForm.ReadPLC(68, opName).ToString();
|
||||
}
|
||||
if (tagTypeCode == 60)
|
||||
{
|
||||
TagValueUp = MesWorkForm.ReadPLC(69, opName).ToString();
|
||||
}
|
||||
dr["TagID"] = qualityData.TagID;
|
||||
dr["测量位置"] = qualityData.ShaftID;
|
||||
dr["测量项目"] = qualityData.ItemName;
|
||||
dr["测量单位"] = qualityData.Unit;
|
||||
dr["上限值"] = TagValueUp;
|
||||
dr["下限值"] = TagValueDown;
|
||||
dr["理论值"] = qualityData.TagValeNormal;
|
||||
dr["工位号"] = opName;
|
||||
dr["列位置"] = qualityData.TagOrderBy;
|
||||
dr["变量排序"] = qualityData.TagItemOrderBy;
|
||||
dr["IsGoodBad"] = isOk;
|
||||
dr["TagValue"] = Convert.ToString(qualityData.TagValue);
|
||||
return dr;
|
||||
}
|
||||
|
||||
public static void GetQualityDataCount(string opName)
|
||||
{
|
||||
string engineID = "";
|
||||
engineID = MesWorkForm.ReadPLC(64, opName).ToString();
|
||||
if(engineID == null || engineID == "")
|
||||
{
|
||||
WritePLC(66, opName, 2);
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
DataTable dt = null;
|
||||
B_DB_Opera.GetQualityDataCount(engineID, opName, out dt);
|
||||
if (dt != null && dt.Rows.Count > 0)
|
||||
{
|
||||
WritePLC(66, opName, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
WritePLC(66, opName, 1);
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
WritePLC(66, opName, 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
31
DT_SCADA/BusinessCode/PLC_State.cs
Normal file
31
DT_SCADA/BusinessCode/PLC_State.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using DeviceDriver_BasicData;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
/// <summary>
|
||||
/// PLC状态展示
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
void ShowPlcStateList(object obj)
|
||||
{
|
||||
var eState = (PlcStateEvetnArgs)obj;
|
||||
string ip = eState.IP.ToString();
|
||||
string onState = eState.OnLine.ToString();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
119
DT_SCADA/Core/B_AGV.cs
Normal file
119
DT_SCADA/Core/B_AGV.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using DatabaseClient;
|
||||
using Opc.Ua;
|
||||
using OpcBasic;
|
||||
using Robot.Common;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Threading;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class AgvRead
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string from_to_loc = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string from_to_loc_old = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string tagID = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string opName = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string connectStr = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool onLine = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string update_time = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string from_loc = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string to_loc = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void Start(string connectStr,int interval, int intervalUpdate ,string tagID,string opName)
|
||||
{
|
||||
this.connectStr = connectStr;
|
||||
this.tagID = tagID;
|
||||
this.opName = opName;
|
||||
|
||||
new Thread(new ThreadStart(delegate () {
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
from_to_loc = ReadAgv();
|
||||
if (from_to_loc_old != from_to_loc)
|
||||
{
|
||||
from_to_loc_old = from_to_loc;
|
||||
|
||||
MesWorkForm.S_C_B_TagIDTrigger(opName,this.tagID, from_to_loc);
|
||||
}
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
})).Start();
|
||||
|
||||
}
|
||||
public string ReadAgv()
|
||||
{
|
||||
var value = "";
|
||||
try
|
||||
{
|
||||
var sql =
|
||||
$" SELECT aid,from_loc,to_loc,start_run,update_time FROM agv_from_to" +
|
||||
$" ORDER BY aid LIMIT 1";
|
||||
MysqlClient.ExecQueryDataTable(sql, this.connectStr, out DataTable dt, out string err);
|
||||
onLine = err.Length < 1;
|
||||
if (onLine == false)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
if (dt.Rows.Count > 0)
|
||||
{
|
||||
var aid = dt.Rows[0]["aid"].ToString();
|
||||
var from_loc = dt.Rows[0]["from_loc"].ToString();
|
||||
var to_loc = dt.Rows[0]["to_loc"].ToString();
|
||||
var start_run = dt.Rows[0]["start_run"].ToString();
|
||||
update_time = dt.Rows[0]["update_time"].ToString();
|
||||
|
||||
this.from_loc = from_loc;
|
||||
this.to_loc = to_loc;
|
||||
|
||||
value = $"{from_loc}__{to_loc}";
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
613
DT_SCADA/Core/B_Cnc_Edm.cs
Normal file
613
DT_SCADA/Core/B_Cnc_Edm.cs
Normal file
@@ -0,0 +1,613 @@
|
||||
using BsRmlib.EDM;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.XSSF.Model;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Drawing;
|
||||
using System.Security.Claims;
|
||||
using System.Threading;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public class B_Cnc_Edm
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private CClient edm = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool OnLine = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string ip = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int port = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int interval = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool isRun = true;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Id = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Name = "";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 机床状态
|
||||
/// -1-离线,0-待机,1-运行,2-报警
|
||||
/// </summary>
|
||||
public int edmCtrlStatus = 0;
|
||||
/// <summary>
|
||||
/// 机床报警号及信息
|
||||
/// </summary>
|
||||
public ushort edmGetError = 0;
|
||||
public ushort edmGetError_Old = 0;
|
||||
public string edmGetErrMsg = "";
|
||||
/// <summary>
|
||||
/// 机床提示号及信息
|
||||
/// </summary>
|
||||
public ushort edmGetComment = 0;
|
||||
public ushort edmGetComment_Old = 0;
|
||||
public string edmGetComMsg = "";
|
||||
/// <summary>
|
||||
/// 机床电流电压
|
||||
/// </summary>
|
||||
public int edmGetCurrent = 0;
|
||||
public int edmGetVoltage = 0;
|
||||
|
||||
public string programName = "";
|
||||
|
||||
|
||||
|
||||
public string edmGetRunTime = "";
|
||||
|
||||
public string progContent = "";
|
||||
|
||||
public uint toolNum_Set = 0;
|
||||
|
||||
public ushort doorAtStatus = 3;
|
||||
public ushort doorAtStatus_Old = 3;
|
||||
|
||||
public DateTime start = DateTime.Now;
|
||||
|
||||
public ushort workbench_HasPart = 0;
|
||||
public ushort workbench_HasPart_Old = 0;
|
||||
public ushort spindleClamp_HasPart = 0;
|
||||
public ushort spindleClamp_HasPart_Old = 0;
|
||||
public ushort toolLib_HasPart = 0;
|
||||
public ushort toolLib_HasPart_Old = 0;
|
||||
public int IsSpark = 0;
|
||||
public int IsSpark_Old = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
public double[] absolute_j = new double[12];
|
||||
public double[] relative_j = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] machine_j = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] jDemo = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<JointConfig> Joints = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string sendStr_Old = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string payloadInfoStr_Old = "";
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public B_Cnc_Edm()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ipPort"></param>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="modelManagement"></param>
|
||||
/// <param name="modelCode"></param>
|
||||
public void Start(string ip, int port,int interval, int intervalUpdate, string DeviceCode, string OpName, List<JointConfig> Joints
|
||||
,string tagID_DoorOpen = "", string tagID_DoorClose = ""
|
||||
, string tagID_Workbench = "", string tagID_SpindleClamp = "", string tagID_ToolLib = "", string modelCode_Spark = "")
|
||||
{
|
||||
this.ip = ip;
|
||||
this.port = port;
|
||||
this.interval = interval;
|
||||
this.Id = DeviceCode;
|
||||
this.Name = OpName;
|
||||
this.Joints = Joints;
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (edm == null)
|
||||
{
|
||||
edmCtrlStatus = -1;
|
||||
ReConnRobot();
|
||||
}
|
||||
if (OnLine = edm.IsConnected())
|
||||
{
|
||||
machine_j = ReadResult_To_Array();
|
||||
|
||||
//到位状态:O:打开或关闭过程中,1:打开到位,2:关闭到位
|
||||
doorAtStatus = edm.EdmStatFrontDoor();
|
||||
if (doorAtStatus_Old != doorAtStatus)
|
||||
{
|
||||
switch (doorAtStatus_Old)
|
||||
{
|
||||
case 0://0->其他:不处理
|
||||
break;
|
||||
case 1://1->0:关闭
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, tagID_DoorClose, "1");
|
||||
break;
|
||||
case 2://2->0:打开
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, tagID_DoorOpen, "1");
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
doorAtStatus_Old = doorAtStatus;
|
||||
|
||||
//机床状态;0-停止,1-运行,2-报警,3-暂停
|
||||
var edmCtrlStatus_NC = edm.EdmCtrlStatus();
|
||||
|
||||
switch (edmCtrlStatus_NC)
|
||||
{
|
||||
case EnumEdmStatus.Stop:
|
||||
edmCtrlStatus = 0;
|
||||
break;
|
||||
case EnumEdmStatus.Run:
|
||||
edmCtrlStatus = 1;
|
||||
break;
|
||||
case EnumEdmStatus.Halt:
|
||||
edmCtrlStatus = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
//机床报警号及信息
|
||||
edmGetError = edm.EdmGetError();
|
||||
edmGetErrMsg = edm.EdmGetErrMsg(edmGetError);
|
||||
if (edmGetError_Old != edmGetError)
|
||||
{
|
||||
// B_DB_Opera.Event_AlarmAndTip_Start(Name, edmGetError, edmGetErrMsg, edmGetError.ToString(),1);
|
||||
}
|
||||
edmGetError_Old = edmGetError;
|
||||
|
||||
//机床提示号及信息
|
||||
edmGetComment = edm.EdmGetComment();
|
||||
edmGetComMsg = edm.EdmGetComMsg(edmGetComment);
|
||||
if (edmGetComment_Old != edmGetComment)
|
||||
{
|
||||
// B_DB_Opera.Event_AlarmAndTip_Start(Name, edmGetComment, edmGetComMsg, edmGetComment.ToString(),2);
|
||||
}
|
||||
edmGetComment_Old = edmGetComment;
|
||||
|
||||
//机床电流电压
|
||||
edmGetCurrent = edm.EdmGetCurrent();
|
||||
edmGetVoltage = edm.EdmGetVoltage();
|
||||
|
||||
if (edmGetCurrent > 5)
|
||||
{
|
||||
IsSpark = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsSpark = 0;
|
||||
}
|
||||
|
||||
if (IsSpark_Old != IsSpark)
|
||||
{
|
||||
// MesWorkForm.S_C_B_SparkTrigger(Name, modelCode_Spark, IsSpark.ToString());
|
||||
}
|
||||
IsSpark_Old = IsSpark;
|
||||
|
||||
|
||||
|
||||
|
||||
//获取当前机床主程序
|
||||
programName = edm.PrgGetSelMain();
|
||||
|
||||
//运行时间
|
||||
edmGetRunTime = edm.EdmGetRunTime().ToString();
|
||||
|
||||
//程序内容
|
||||
progContent = edm.EdmGetDispNc().nc;
|
||||
|
||||
//刀具号
|
||||
toolNum_Set = edm.EdmGetToolNo();
|
||||
|
||||
|
||||
workbench_HasPart = edm.EdmStatWorkbenExistPiece();
|
||||
if (workbench_HasPart_Old != workbench_HasPart)
|
||||
{
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, tagID_Workbench, workbench_HasPart.ToString());
|
||||
}
|
||||
workbench_HasPart_Old = workbench_HasPart;
|
||||
|
||||
spindleClamp_HasPart = edm.EdmStatSpindleExistTool();
|
||||
if (spindleClamp_HasPart_Old != spindleClamp_HasPart)
|
||||
{
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, tagID_SpindleClamp, spindleClamp_HasPart.ToString());
|
||||
}
|
||||
spindleClamp_HasPart_Old = spindleClamp_HasPart;
|
||||
|
||||
toolLib_HasPart = edm.EdmStatMagaginExistTool();
|
||||
if (toolLib_HasPart_Old != toolLib_HasPart)
|
||||
{
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, tagID_ToolLib, toolLib_HasPart.ToString());
|
||||
}
|
||||
toolLib_HasPart_Old = toolLib_HasPart;
|
||||
}
|
||||
else
|
||||
{
|
||||
edmCtrlStatus = -1;
|
||||
Thread.Sleep(10_000);
|
||||
ReConnRobot();
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < Joints.Count ; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = DeviceCode;
|
||||
Joints[i].Value = machine_j[i].ToString();
|
||||
}
|
||||
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
if (sendStr_Old != sendStr)
|
||||
{
|
||||
sendStr_Old = sendStr;
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate () {
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = DeviceCode;
|
||||
Joints[i].Value = machine_j[i].ToString();
|
||||
}
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(payload);
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{ }
|
||||
Thread.Sleep(intervalUpdate);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
UpdateDataToSql();
|
||||
UpdateStationStatusToSql();
|
||||
|
||||
|
||||
var deviceInfo = new DeviceInfo();
|
||||
deviceInfo.order = "";
|
||||
deviceInfo.Name = Name;
|
||||
deviceInfo.Id = Id;
|
||||
|
||||
deviceInfo.Status = edmCtrlStatus.ToString();
|
||||
deviceInfo.Program = programName;
|
||||
deviceInfo.ProgramStatus = "";
|
||||
deviceInfo.Feed = "";
|
||||
deviceInfo.Speed = "";
|
||||
deviceInfo.Rapid = "";
|
||||
deviceInfo.Current = edmGetCurrent.ToString();
|
||||
deviceInfo.Voltage = edmGetVoltage.ToString();
|
||||
deviceInfo.Axis = new List<AxisInfo>();
|
||||
deviceInfo.Tool = null;
|
||||
deviceInfo.OtherParameter = new List<ParameterInfo>();
|
||||
deviceInfo.Alarm = new List<AlarmInfo>();
|
||||
if (edmGetErrMsg.Length > 0)
|
||||
{
|
||||
deviceInfo.Alarm.Add(new AlarmInfo()
|
||||
{
|
||||
AlarmCode = edmGetError.ToString(),
|
||||
Alarm = edmGetErrMsg,
|
||||
AlarmTime = DateTime.Now.ToString("G")
|
||||
});
|
||||
}
|
||||
deviceInfo.Tip = new List<TipInfo>();
|
||||
if (edmGetComMsg.Length > 0)
|
||||
{
|
||||
deviceInfo.Tip.Add(new TipInfo()
|
||||
{
|
||||
TipCode = edmGetComment.ToString(),
|
||||
Tip = edmGetComMsg,
|
||||
TipTime = DateTime.Now.ToString("G")
|
||||
});
|
||||
}
|
||||
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "X", AxisValue = machine_j[0].ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "Y", AxisValue = machine_j[1].ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "Z", AxisValue = machine_j[2].ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "U", AxisValue = machine_j[3].ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "V", AxisValue = machine_j[4].ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "W", AxisValue = machine_j[5].ToString() });
|
||||
|
||||
var payloadInfoStr = MesWorkForm.Make_DeviceInfo(new List<DeviceInfo>() { deviceInfo });
|
||||
|
||||
DateTime current = DateTime.Now;
|
||||
if ((current - start).TotalMilliseconds > 1000)
|
||||
{
|
||||
// if (payloadInfoStr_Old != payloadInfoStr)
|
||||
{
|
||||
payloadInfoStr_Old = payloadInfoStr;
|
||||
MesWorkForm.SendMsg(payloadInfoStr);
|
||||
}
|
||||
start = current;
|
||||
}
|
||||
|
||||
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
InsertStationStatusToSql();
|
||||
Thread.Sleep(60 * 1000);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void TimelyUpdate()
|
||||
{
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
~B_Cnc_Edm()
|
||||
{
|
||||
DisConn();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
public void DisConn()
|
||||
{
|
||||
isRun = false;
|
||||
Thread.Sleep(199);
|
||||
edm?.Disconnect();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private void ReConnRobot()
|
||||
{
|
||||
if (edm != null)
|
||||
{
|
||||
edm?.Disconnect();
|
||||
}
|
||||
edm = new CClient();
|
||||
var success = edm.Connect(ip, (uint)port);
|
||||
if (success)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <returns></returns>
|
||||
private double[] ReadResult_To_Array()
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
return jDemo;
|
||||
}
|
||||
|
||||
double[] joint = new double[12];
|
||||
|
||||
var X = edm.EdmGetMachine(EnumAxisNo.X) / GetAxisDec(EnumAxisNo.X);
|
||||
var Y = edm.EdmGetMachine(EnumAxisNo.Y) / GetAxisDec(EnumAxisNo.Y);
|
||||
var Z = edm.EdmGetMachine(EnumAxisNo.Z) / GetAxisDec(EnumAxisNo.Z);
|
||||
var U = edm.EdmGetMachine(EnumAxisNo.U) / GetAxisDec(EnumAxisNo.U);
|
||||
var V = 0;
|
||||
var W = 0;
|
||||
|
||||
joint[0] = X;
|
||||
joint[1] = Y;
|
||||
joint[2] = Z;
|
||||
joint[3] = U;
|
||||
joint[4] = V;
|
||||
joint[5] = W;
|
||||
|
||||
|
||||
return joint;
|
||||
}
|
||||
|
||||
private double GetAxisDec(EnumAxisNo axis)
|
||||
{
|
||||
CPosInfo info = edm.EdmGetPosInfo(axis);
|
||||
if (info.dec == 3)
|
||||
return 1000.0;
|
||||
else if (info.dec == 4)
|
||||
return 10000.0;
|
||||
return 1000.0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 手动测试读取
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="j7"></param>
|
||||
/// <returns></returns>
|
||||
public string ReadTest(string robotName)
|
||||
{
|
||||
return "【" + robotName + "】" + MesWorkForm.Move_Joint(Joints);
|
||||
}
|
||||
|
||||
public void UpdateDataToSql()
|
||||
{
|
||||
//StoredProcedure("Event_CNC_Update");
|
||||
}
|
||||
|
||||
//private void StoredProcedure(string pName)
|
||||
//{
|
||||
// var sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@DeviceCode", Id),
|
||||
// new SqlParameter("@Online", OnLine.ToString()),
|
||||
// new SqlParameter("@StationName", Name),
|
||||
// new SqlParameter("@SlaveAddr", $"{ip}:{port}"),
|
||||
// new SqlParameter("@Path", 1),
|
||||
|
||||
// new SqlParameter("@程序号",0 ),
|
||||
// new SqlParameter("@程序名称", programName),
|
||||
// new SqlParameter("@主轴转速组", JsonConvert.SerializeObject(new double[6])),
|
||||
// new SqlParameter("@坐标_绝对组", JsonConvert.SerializeObject(new double[6])),
|
||||
// new SqlParameter("@坐标_相对组", JsonConvert.SerializeObject(new double[6])),
|
||||
// new SqlParameter("@坐标_机械组", JsonConvert.SerializeObject(machine_j)),
|
||||
// new SqlParameter("@伺服负载组", JsonConvert.SerializeObject(new double[6])),
|
||||
// new SqlParameter("@进给速度",0 ),
|
||||
// new SqlParameter("@进给倍率",0),
|
||||
// new SqlParameter("@主轴倍率", 0),
|
||||
// new SqlParameter("@已加工数量",0 ),
|
||||
// new SqlParameter("@总加工数量", 0),
|
||||
// new SqlParameter("@工作模式",JsonConvert.SerializeObject(new double[6] )),
|
||||
// new SqlParameter("@TM模式", 0),
|
||||
// new SqlParameter("@自动模式", 0),
|
||||
// new SqlParameter("@运行状态",0),
|
||||
// new SqlParameter("@轴_停留状态",0),
|
||||
// new SqlParameter("@matb", 0),
|
||||
// new SqlParameter("@急停", 0),
|
||||
// new SqlParameter("@报警",0 ),
|
||||
// new SqlParameter("@编辑状态", 0),
|
||||
// new SqlParameter("@开机时间", 0),
|
||||
// new SqlParameter("@运行时间", edmGetRunTime),
|
||||
// new SqlParameter("@切削时间",0 ),
|
||||
// new SqlParameter("@循环时间", 0),
|
||||
// new SqlParameter("@机床时间", 0),
|
||||
// new SqlParameter("@加工次数", 0),
|
||||
// new SqlParameter("@额定次数", 0),
|
||||
// new SqlParameter("@程序内容", progContent),
|
||||
// new SqlParameter("@刀具号", (int)toolNum_Set),
|
||||
// //北京电火花项目
|
||||
// new SqlParameter("@机床状态",(int)edmCtrlStatus),
|
||||
// new SqlParameter("@报警代码",(int)edmGetError),
|
||||
// new SqlParameter("@报警内容",edmGetErrMsg),
|
||||
// new SqlParameter("@提示代码",(int)edmGetError),
|
||||
// new SqlParameter("@提示内容",edmGetErrMsg),
|
||||
// new SqlParameter("@电流",(int)edmGetCurrent),
|
||||
// new SqlParameter("@电压",(int)edmGetVoltage),
|
||||
|
||||
|
||||
// };
|
||||
// MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
// {
|
||||
// procedureName = pName,
|
||||
// sqlParameter = sqlParameter
|
||||
// });
|
||||
//}
|
||||
|
||||
|
||||
private void UpdateStationStatusToSql()
|
||||
{
|
||||
//Event_StationStatus("Event_StationStatus_Update");
|
||||
}
|
||||
private void InsertStationStatusToSql()
|
||||
{
|
||||
//Event_StationStatus("Event_StationStatus_Insert");
|
||||
}
|
||||
|
||||
//public void Event_StationStatus(string pName)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
|
||||
// MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
// {
|
||||
// procedureName = pName,
|
||||
// sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@OpName", Name),
|
||||
// new SqlParameter("@Status", (int)edmCtrlStatus),
|
||||
// new SqlParameter("@ChangeTime",ChangeTime)
|
||||
// }
|
||||
// });
|
||||
|
||||
// }
|
||||
// catch (Exception err)
|
||||
// {
|
||||
// }
|
||||
|
||||
|
||||
//}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
148
DT_SCADA/Core/B_DeviceState.cs
Normal file
148
DT_SCADA/Core/B_DeviceState.cs
Normal file
@@ -0,0 +1,148 @@
|
||||
using Opc.Ua;
|
||||
using OpcBasic;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Threading;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
namespace MesWork
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class B_DeviceState
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int interval = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int intervalUpdate = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int intervalInsert = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string opName = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public ConcurrentDictionary<string, object> cd_OpNameGroupData = new ConcurrentDictionary<string, object>();
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="intervalUpdate"></param>
|
||||
/// <param name="modelCode"></param>
|
||||
/// <param name="opName"></param>
|
||||
public B_DeviceState(int interval, int intervalUpdate, int intervalInsert, string opName)
|
||||
{
|
||||
this.interval = interval;
|
||||
this.intervalUpdate = intervalUpdate;
|
||||
this.intervalInsert = intervalInsert;
|
||||
this.opName = opName;
|
||||
}
|
||||
public void Start()
|
||||
{
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
cd_OpNameGroupData = MesWorkForm.ReadPLC_GroupData(opName);
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
})) { IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
UpdateDataToSql();
|
||||
Thread.Sleep(intervalUpdate);
|
||||
}
|
||||
})){ IsBackground = true }.Start();
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
InsertDataToSql();
|
||||
Thread.Sleep(intervalInsert);
|
||||
}
|
||||
})){ IsBackground = true }.Start();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void UpdateDataToSql()
|
||||
{
|
||||
StoredProcedure("Event_Device_Update_CurrInfo");
|
||||
}
|
||||
private void InsertDataToSql()
|
||||
{
|
||||
StoredProcedure("Event_Device_Insert_CurrInfo");
|
||||
}
|
||||
|
||||
public void StoredProcedure(string pName)
|
||||
{
|
||||
try
|
||||
{
|
||||
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
|
||||
|
||||
foreach (KeyValuePair<string, object> item in cd_OpNameGroupData)
|
||||
{
|
||||
var TF = (TagFormat)item.Value;
|
||||
|
||||
var TagTypeCodeID = TF.TagTypeCodeID;
|
||||
var TagOrderBy = TF.TagOrderBy;
|
||||
var ItemName = TF.ItemName;
|
||||
var TagValue = TF.TagValue.ToString();
|
||||
var TagID = TF.TagID;
|
||||
|
||||
if (TagTypeCodeID < 1000 | TagTypeCodeID >= 40000)
|
||||
{
|
||||
|
||||
//MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
//{
|
||||
// procedureName = pName,
|
||||
// sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@OpName", opName),
|
||||
// new SqlParameter("@TagTypeCodeID", TagTypeCodeID),
|
||||
// new SqlParameter("@TagOrderBy", TagOrderBy),
|
||||
// new SqlParameter("@ItemName", ItemName),
|
||||
// new SqlParameter("@TagValue", TagValue),
|
||||
// new SqlParameter("@ChangeTime",ChangeTime),
|
||||
// new SqlParameter("@TagID", TagID)
|
||||
// }
|
||||
//});
|
||||
//var sendStr2 = MesWorkForm.MachineQtyDataInfo("C_B_QtyInfo", opName, TagID, TagValue);
|
||||
//MesWorkForm.SendMsg(sendStr2);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
188
DT_SCADA/Core/B_Read_N_Axis.cs
Normal file
188
DT_SCADA/Core/B_Read_N_Axis.cs
Normal file
@@ -0,0 +1,188 @@
|
||||
using Opc.Ua;
|
||||
using OpcBasic;
|
||||
using Robot.Common;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class B_Read_N_Axis
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string sendStr_Temp = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string opName = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
int axisNum = 1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
int interval = 100;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
int intervalUpdate = 10000;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string Id = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string Name = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void Start(int interval, int intervalUpdate ,string opName, List<JointConfig> Joints, string Id, string Name)
|
||||
{
|
||||
this.axisNum = Joints.Count;
|
||||
this.interval = interval;
|
||||
this.intervalUpdate = intervalUpdate;
|
||||
this.opName = opName;
|
||||
|
||||
|
||||
new Thread(new ThreadStart(delegate () { while (true) { try {
|
||||
|
||||
var j = Read_N_Axis(out bool success);
|
||||
if (success == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
//if (j.Select(it => it == 0).Count() == j.Length)
|
||||
//{
|
||||
// continue;
|
||||
//}
|
||||
for (int i = 0; i < j.Length; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = opName;
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
if (sendStr_Temp != sendStr)
|
||||
{
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
MesWorkForm.S_C_B_Info_Fast(Joints);
|
||||
MesWorkForm.WriteLog(sendStr);
|
||||
}
|
||||
sendStr_Temp = sendStr;
|
||||
} catch (Exception err) { } Thread.Sleep(interval);
|
||||
} })).Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate () { while (true) { try {
|
||||
|
||||
var j = Read_N_Axis(out bool success);
|
||||
if (success == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
//if (j.Select(it => it == 0).Count() == j.Length)
|
||||
//{
|
||||
// continue;
|
||||
//}
|
||||
for (int i = 0; i < j.Length; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = opName;
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
MesWorkForm.S_C_B_Info_Fast(Joints);
|
||||
MesWorkForm.WriteLog(sendStr);
|
||||
} catch (Exception err) { } Thread.Sleep(intervalUpdate);
|
||||
}})).Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var deviceInfo = new DeviceInfo();
|
||||
deviceInfo.order = "";
|
||||
deviceInfo.Name = Name;
|
||||
deviceInfo.Id = Id;
|
||||
|
||||
deviceInfo.Axis = new List<AxisInfo>();
|
||||
deviceInfo.OtherParameter = new List<ParameterInfo>();
|
||||
|
||||
var j = Read_N_Axis(out bool success);
|
||||
|
||||
if (success == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
//if (j.Select(it => it == 0).Count() == j.Length)
|
||||
//{
|
||||
// continue;
|
||||
//}
|
||||
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J1", AxisValue = Math.Round(j[0], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J2", AxisValue = Math.Round(j[1], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J3", AxisValue = Math.Round(j[2], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J4", AxisValue = Math.Round(j[3], 2).ToString() });
|
||||
|
||||
var payloadInfoStr = MesWorkForm.Make_DeviceInfo(new List<DeviceInfo>() { deviceInfo });
|
||||
|
||||
MesWorkForm.SendMsg(payloadInfoStr);
|
||||
|
||||
Thread.Sleep(300);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public double[] Read_N_Axis(out bool success)
|
||||
{
|
||||
success = true;
|
||||
double[] p = new double[this.axisNum];
|
||||
|
||||
var jointArray = MesWorkForm.ReadPLC_GroupData(this.opName);
|
||||
if (axisNum != jointArray.Count)
|
||||
{
|
||||
return p;
|
||||
}
|
||||
var listFalse = new List<bool>();
|
||||
foreach (KeyValuePair<string, object> item in jointArray)
|
||||
{
|
||||
var TF = (TagFormat)item.Value;
|
||||
var index = Convert.ToInt32(TF.ShaftID);
|
||||
var value = Convert.ToDouble(TF.TagValue);
|
||||
switch (value)
|
||||
{
|
||||
case -1:
|
||||
case -2:
|
||||
case -5:
|
||||
case 100:
|
||||
listFalse.Add(false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
p[index] = value;
|
||||
}
|
||||
if (listFalse.Count() > 0)
|
||||
{
|
||||
success = false;
|
||||
return p;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
160
DT_SCADA/Core/B_Read_N_AxisCard.cs
Normal file
160
DT_SCADA/Core/B_Read_N_AxisCard.cs
Normal file
@@ -0,0 +1,160 @@
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using NPOI.XSSF.Streaming.Values;
|
||||
using Opc.Ua;
|
||||
using OpcBasic;
|
||||
using Robot.Common;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public class B_Read_N_AxisCard
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string sendStr_Temp = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string opName = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
int axisNum = 1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
int interval = 100;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
int intervalUpdate = 10000;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void Start(int interval, int intervalUpdate ,string opName, List<JointConfig> Joints)
|
||||
{
|
||||
this.axisNum = Joints.Count;
|
||||
this.interval = interval;
|
||||
this.intervalUpdate = intervalUpdate;
|
||||
this.opName = opName;
|
||||
|
||||
|
||||
new Thread(new ThreadStart(delegate () { while (true) { try {
|
||||
|
||||
var j = Read_N_Axis();
|
||||
for (int i = 0; i < j.Length; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = opName;
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
if (sendStr_Temp != sendStr)
|
||||
{
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
MesWorkForm.S_C_B_Info_Fast(Joints);
|
||||
}
|
||||
sendStr_Temp = sendStr;
|
||||
} catch (Exception err) { } Thread.Sleep(interval);
|
||||
} })).Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate () { while (true) { try {
|
||||
|
||||
var j = Read_N_Axis();
|
||||
for (int i = 0; i < j.Length; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = opName;
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
MesWorkForm.S_C_B_Info_Fast(Joints);
|
||||
} catch (Exception err) { } Thread.Sleep(intervalUpdate);
|
||||
}})).Start();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//public double[] Read_N_Axis()
|
||||
//{
|
||||
// double[] p = new double[this.axisNum];
|
||||
|
||||
// var x1 = Convert.ToDouble(MesWorkForm.ReadPLC(101, this.opName).ToString());
|
||||
// var x2 = Convert.ToDouble(MesWorkForm.ReadPLC(102, this.opName).ToString());
|
||||
// var y1 = Convert.ToDouble(MesWorkForm.ReadPLC(201, this.opName).ToString());
|
||||
// var y2 = Convert.ToDouble(MesWorkForm.ReadPLC(202, this.opName).ToString());
|
||||
// var z1 = Convert.ToDouble(MesWorkForm.ReadPLC(301, this.opName).ToString());
|
||||
// var z2 = Convert.ToDouble(MesWorkForm.ReadPLC(302, this.opName).ToString());
|
||||
|
||||
// p[0] = x1 + x2 * 0.001;
|
||||
// p[1] = y1 + y2 * 0.001;
|
||||
// p[2] = z1 + z2 * 0.001;
|
||||
|
||||
// return p;
|
||||
//}
|
||||
|
||||
public double[] Read_N_Axis()
|
||||
{
|
||||
double[] p = new double[this.axisNum];
|
||||
|
||||
//var x1 = Convert.ToDouble(MesWorkForm.ReadPLC(101, this.opName).ToString());
|
||||
//var x2 = Convert.ToDouble(MesWorkForm.ReadPLC(102, this.opName).ToString());
|
||||
//var y1 = Convert.ToDouble(MesWorkForm.ReadPLC(201, this.opName).ToString());
|
||||
//var y2 = Convert.ToDouble(MesWorkForm.ReadPLC(202, this.opName).ToString());
|
||||
//var z1 = Convert.ToDouble(MesWorkForm.ReadPLC(301, this.opName).ToString());
|
||||
//var z2 = Convert.ToDouble(MesWorkForm.ReadPLC(302, this.opName).ToString());
|
||||
|
||||
double x1 = 0;
|
||||
double x2 = 0;
|
||||
double y1 = 0;
|
||||
double y2 = 0;
|
||||
double z1 = 0;
|
||||
double z2 = 0;
|
||||
|
||||
var jointArray = MesWorkForm.ReadPLC_GroupData(this.opName);
|
||||
foreach (KeyValuePair<string, object> item in jointArray)
|
||||
{
|
||||
var TF = (TagFormat)item.Value;
|
||||
var tagTypeCodeID = Convert.ToInt32(TF.TagTypeCodeID);
|
||||
var value = Convert.ToDouble(TF.TagValue);
|
||||
|
||||
switch (tagTypeCodeID)
|
||||
{
|
||||
case 101:
|
||||
x1 = value;
|
||||
break;
|
||||
case 102:
|
||||
x2 = value;
|
||||
break;
|
||||
case 201:
|
||||
y1 = value;
|
||||
break;
|
||||
case 202:
|
||||
y2 = value;
|
||||
break;
|
||||
case 301:
|
||||
z1 = value;
|
||||
break;
|
||||
case 302:
|
||||
z2 = value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
p[0] = x1 + x2 * 0.001;
|
||||
p[1] = y1 + y2 * 0.001;
|
||||
p[2] = z1 + z2 * 0.001;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
305
DT_SCADA/Core/B_Robot_Abb.cs
Normal file
305
DT_SCADA/Core/B_Robot_Abb.cs
Normal file
@@ -0,0 +1,305 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
using ABB.Robotics.Controllers;
|
||||
using ABB.Robotics.Controllers.Discovery;
|
||||
using ABB.Robotics.Controllers.IOSystemDomain;
|
||||
using Robot.Common;
|
||||
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public class B_Robot_Abb
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private Controller abb = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool OnLine = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string ip = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string cname = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int interval = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool isRun = true;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Id = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Name = "";
|
||||
|
||||
|
||||
|
||||
public string robotWorkbench_1 = "";
|
||||
public string robotWorkbench_Old_1 = "";
|
||||
public string robotWorkbench_2 = "";
|
||||
public string robotWorkbench_Old_2 = "";
|
||||
|
||||
public string TagID_Axis_7 = "";
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] j = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] jDemo = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<JointConfig> Joints = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string sendStr_Old = "";
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public B_Robot_Abb()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ipPort"></param>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="modelManagement"></param>
|
||||
/// <param name="modelCode"></param>
|
||||
public void Start(string ip, string cname,int interval, int intervalUpdate, string DeviceCode, string OpName, List<JointConfig> Joints
|
||||
, string TagID_DoorOpen = "", string TagID_DoorClose = "", string TagID_Axis_7 = "")
|
||||
{
|
||||
this.ip = ip;
|
||||
this.cname = cname;
|
||||
this.interval = interval;
|
||||
this.Id = DeviceCode;
|
||||
this.Name = OpName;
|
||||
this.Joints = Joints;
|
||||
this.TagID_Axis_7 = TagID_Axis_7;
|
||||
|
||||
var robotWorkbench_1_Addr = TagID_DoorOpen.Split(',')[0];
|
||||
var robotWorkbench_1_TagID = TagID_DoorOpen.Split(',')[1];
|
||||
var robotWorkbench_2_Addr = TagID_DoorClose.Split(',')[0];
|
||||
var robotWorkbench_2_TagID = TagID_DoorClose.Split(',')[1];
|
||||
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
if (abb == null)
|
||||
{
|
||||
ReConnRobot();
|
||||
}
|
||||
OnLine = abb.Connected;
|
||||
if (OnLine)
|
||||
{
|
||||
j = ReadResult_To_Array();
|
||||
|
||||
robotWorkbench_1 = ReadIO(robotWorkbench_1_Addr);
|
||||
if (robotWorkbench_Old_1 != robotWorkbench_1)
|
||||
{
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, robotWorkbench_1_TagID, robotWorkbench_1);
|
||||
}
|
||||
robotWorkbench_Old_1 = robotWorkbench_1;
|
||||
|
||||
robotWorkbench_2 = ReadIO(robotWorkbench_2_Addr);
|
||||
if (robotWorkbench_Old_2 != robotWorkbench_2)
|
||||
{
|
||||
MesWorkForm.S_C_B_TagIDTrigger(Name, robotWorkbench_2_TagID, robotWorkbench_2);
|
||||
}
|
||||
robotWorkbench_Old_2 = robotWorkbench_2;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(10 * 1000);
|
||||
ReConnRobot();
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < Joints.Count ; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = DeviceCode;
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
if (sendStr_Old != sendStr)
|
||||
{
|
||||
sendStr_Old = sendStr;
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate () {
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = DeviceCode;
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{ }
|
||||
Thread.Sleep(intervalUpdate);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
}
|
||||
|
||||
|
||||
private string ReadIO(string addr)
|
||||
{
|
||||
var valueStr = "";
|
||||
// using (var m = Mastership.Request(abb.Rapid))
|
||||
{
|
||||
var _d = (DigitalSignal)abb.IOSystem.GetSignal(addr);
|
||||
if (_d != null)
|
||||
{
|
||||
valueStr = _d.Value.ToString();
|
||||
}
|
||||
}
|
||||
switch (valueStr.ToLower())
|
||||
{
|
||||
case "0":
|
||||
case "false":
|
||||
valueStr = "0";
|
||||
break;
|
||||
case "1":
|
||||
case "true":
|
||||
valueStr = "1";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return valueStr;
|
||||
}
|
||||
|
||||
~B_Robot_Abb()
|
||||
{
|
||||
DisConn();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
public void DisConn()
|
||||
{
|
||||
isRun = false;
|
||||
Thread.Sleep(199);
|
||||
abb?.Logoff();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private void ReConnRobot()
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
//abb = ControllerFactory.CreateFrom();
|
||||
//abb.Logon(UserInfo.DefaultUser);
|
||||
abb = new Controller();
|
||||
return;
|
||||
}
|
||||
|
||||
if (abb != null)
|
||||
{
|
||||
abb?.Logoff();
|
||||
abb = null;
|
||||
}
|
||||
|
||||
var scanner = new NetworkScanner();
|
||||
var controllers = scanner.GetControllers();
|
||||
foreach (var controllerInfo in controllers)
|
||||
{
|
||||
if (controllerInfo.IPAddress.ToString() == ip & controllerInfo.SystemName == cname)
|
||||
{
|
||||
abb = ControllerFactory.CreateFrom(controllerInfo);
|
||||
abb.Logon(UserInfo.DefaultUser);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <returns></returns>
|
||||
private double[] ReadResult_To_Array()
|
||||
{
|
||||
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
return jDemo;
|
||||
}
|
||||
float j7 = 0f;
|
||||
try
|
||||
{
|
||||
j7 = Convert.ToSingle(MesWorkForm.ReadPLC(TagID_Axis_7).ToString());
|
||||
|
||||
}
|
||||
catch (Exception err )
|
||||
{
|
||||
}
|
||||
|
||||
var joint = new double[12];
|
||||
var currJoint = abb.MotionSystem.ActiveMechanicalUnit.GetPosition();
|
||||
joint[0] = currJoint.RobAx.Rax_1;
|
||||
joint[1] = currJoint.RobAx.Rax_2;
|
||||
joint[2] = currJoint.RobAx.Rax_3;
|
||||
joint[3] = currJoint.RobAx.Rax_4;
|
||||
joint[4] = currJoint.RobAx.Rax_5;
|
||||
joint[5] = currJoint.RobAx.Rax_6;
|
||||
joint[6] = j7;
|
||||
|
||||
return joint;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
418
DT_SCADA/Core/B_Robot_Espon.cs
Normal file
418
DT_SCADA/Core/B_Robot_Espon.cs
Normal file
@@ -0,0 +1,418 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
using HslCommunication.Robot.FANUC;
|
||||
using HslCommunication.Robot.KUKA;
|
||||
using System.Net.Sockets;
|
||||
using Org.BouncyCastle.Bcpg;
|
||||
using System.Text;
|
||||
using Adapters;
|
||||
using static Focas1;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public class B_Robot_Espon
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private Socket espon = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool OnLine = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string ip = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int port = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int interval = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool isRun = true;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string sendV_Temp = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] j = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] jDemo = new double[12];
|
||||
/// <summary>
|
||||
/// 记录老值
|
||||
/// </summary>
|
||||
string axis_act_Old = "-1";
|
||||
/// <summary>
|
||||
/// 焊接中
|
||||
/// </summary>
|
||||
public string clamp_Old = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string clamp = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Id = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Name = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<JointConfig> Joints = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string md5Pos = "";
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public B_Robot_Espon()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ipPort"></param>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="modelManagement"></param>
|
||||
/// <param name="modelCode"></param>
|
||||
public void Start(string ip, int port,int interval, int intervalUpdate, string DeviceCode, string OpName, List<JointConfig> Joints,string TagID_Clamp)
|
||||
{
|
||||
this.ip = ip;
|
||||
this.port = port;
|
||||
this.interval = interval;
|
||||
this.Id = DeviceCode;
|
||||
this.Name = OpName;
|
||||
this.Joints = Joints;
|
||||
var dataRec = new byte[1024 * 1024];
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
int readlen = 0;
|
||||
if (espon == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
try
|
||||
{
|
||||
espon.ReceiveTimeout = 5000;
|
||||
readlen = espon.Receive(dataRec, 0, dataRec.Length, SocketFlags.None);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (readlen <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var str = Encoding.Default.GetString(dataRec, 0, readlen);
|
||||
|
||||
j = ReadResult_To_Array(str, out string clamp);
|
||||
|
||||
if (clamp_Old != clamp)
|
||||
{
|
||||
MesWorkForm.S_C_B_TagIDTrigger(OpName, TagID_Clamp, clamp);
|
||||
}
|
||||
clamp_Old = clamp;
|
||||
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = $"ROBOT_ESPON_{ip.Split('.')[3]}";
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
var md5Str = JsonConvert.SerializeObject(payload);
|
||||
if (md5Pos != md5Str)
|
||||
{
|
||||
md5Pos = md5Str;
|
||||
MesWorkForm.SendMsg(payload);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(15);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
j = jDemo;
|
||||
OnLine = true;
|
||||
continue;
|
||||
}
|
||||
if (espon == null)
|
||||
{
|
||||
ReConnRobot();
|
||||
}
|
||||
var data = Encoding.Default.GetBytes("1");
|
||||
espon.Send(data, 0, data.Length, SocketFlags.None);
|
||||
OnLine = true;
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
OnLine = false;
|
||||
Thread.Sleep(2000);
|
||||
ReConnRobot();
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
|
||||
new Thread(new ThreadStart(delegate () {
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = $"ROBOT_ESPON_{ip.Split('.')[3]}";
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(payload);//FANUC机床的轴位置
|
||||
|
||||
UpdateDataToSql();
|
||||
}
|
||||
catch (Exception err)
|
||||
{ }
|
||||
Thread.Sleep(intervalUpdate);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
var deviceInfo = new DeviceInfo();
|
||||
deviceInfo.order = "";
|
||||
deviceInfo.Name = Name;
|
||||
deviceInfo.Id = Id;
|
||||
|
||||
deviceInfo.Axis = new List<AxisInfo>();
|
||||
deviceInfo.OtherParameter = new List<ParameterInfo>();
|
||||
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J1", AxisValue = Math.Round(j[0], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J2", AxisValue = Math.Round(j[1], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J3", AxisValue = Math.Round(j[2], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J4", AxisValue = Math.Round(j[3], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J5", AxisValue = Math.Round(j[4], 2).ToString() });
|
||||
deviceInfo.Axis.Add(new AxisInfo() { AxisName = "J6", AxisValue = Math.Round(j[5], 2).ToString() });
|
||||
|
||||
var payloadInfoStr = MesWorkForm.Make_DeviceInfo(new List<DeviceInfo>() { deviceInfo });
|
||||
|
||||
MesWorkForm.SendMsg(payloadInfoStr);
|
||||
|
||||
Thread.Sleep(300);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void TimelyUpdate()
|
||||
{
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
~B_Robot_Espon()
|
||||
{
|
||||
DisConn();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
public void DisConn()
|
||||
{
|
||||
isRun = false;
|
||||
Thread.Sleep(199);
|
||||
espon?.Close();
|
||||
espon = null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <returns></returns>
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <returns></returns>
|
||||
private void ReConnRobot()
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
espon = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
return;
|
||||
}
|
||||
|
||||
if (espon != null)
|
||||
{
|
||||
espon?.Close();
|
||||
espon = null;
|
||||
}
|
||||
espon = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
espon.Connect(ip, port);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <returns></returns>
|
||||
private double[] ReadResult_To_Array(string readResult,out string clamp)
|
||||
{
|
||||
clamp = "-1";
|
||||
|
||||
var joint = new double[12];
|
||||
var jStr = readResult.Split(',');
|
||||
|
||||
joint[0] = Math.Round(Convert.ToDouble(jStr[0]), 2);
|
||||
joint[1] = Math.Round(Convert.ToDouble(jStr[1]), 2);
|
||||
joint[2] = Math.Round(Convert.ToDouble(jStr[2]), 2);
|
||||
joint[3] = Math.Round(Convert.ToDouble(jStr[3]), 2);
|
||||
joint[4] = Math.Round(Convert.ToDouble(jStr[4]), 2);
|
||||
joint[5] = Math.Round(Convert.ToDouble(jStr[5]), 2);
|
||||
|
||||
clamp = jStr[6];
|
||||
|
||||
return joint;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 读取数据
|
||||
/// </summary>
|
||||
/// <param name="addr"></param>
|
||||
/// <returns></returns>
|
||||
public string Read_Welding(string addr)
|
||||
{
|
||||
string str = "-1";
|
||||
//if (kuka != null)
|
||||
//{
|
||||
// var r = kuka.ReadString(addr);
|
||||
// if (r.IsSuccess)
|
||||
// {
|
||||
// str = r.Content;
|
||||
// }
|
||||
//}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 手动测试读取
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="j7"></param>
|
||||
/// <returns></returns>
|
||||
public string ReadTest(string robotName)
|
||||
{
|
||||
return "【" + robotName + "】" + MesWorkForm.Move_Joint(Joints);
|
||||
}
|
||||
|
||||
public void UpdateDataToSql()
|
||||
{
|
||||
StoredProcedure("Event_Robot_Update");
|
||||
}
|
||||
private void StoredProcedure(string pName)
|
||||
{
|
||||
//var sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@DeviceCode", DeviceCode),
|
||||
// new SqlParameter("@Online", OnLine),
|
||||
// new SqlParameter("@StationName", OpName),
|
||||
// new SqlParameter("@SlaveAddr", $"{ip}:{port}"),
|
||||
|
||||
// new SqlParameter("@Joint1", j[0]),
|
||||
// new SqlParameter("@Joint2", j[1]),
|
||||
// new SqlParameter("@Joint3", j[2]),
|
||||
|
||||
// new SqlParameter("@Joint4", j[3]),
|
||||
// new SqlParameter("@Joint5", j[4]),
|
||||
// new SqlParameter("@Joint6", j[5]),
|
||||
|
||||
// new SqlParameter("@Joint7", j[6]),
|
||||
// new SqlParameter("@Joint8", j[7]),
|
||||
// new SqlParameter("@Joint9", j[8]),
|
||||
|
||||
// new SqlParameter("@Joint10",j[9]),
|
||||
// new SqlParameter("@Joint11",j[10]),
|
||||
// new SqlParameter("@Joint12",j[11]),
|
||||
// new SqlParameter("@Clamp", welding)
|
||||
// };
|
||||
//MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
//{
|
||||
// procedureName = pName,
|
||||
// sqlParameter = sqlParameter
|
||||
//});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
409
DT_SCADA/Core/B_Robot_Fanuc.cs
Normal file
409
DT_SCADA/Core/B_Robot_Fanuc.cs
Normal file
@@ -0,0 +1,409 @@
|
||||
using HslCommunication.Robot.FANUC;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Threading;
|
||||
using static Focas1;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class B_Robot_Fanuc
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private FanucInterfaceNet fanuc = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool OnLine = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private string ip = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private int port = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private int interval = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private bool isRun = true;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private string cmd = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private string cmd_Welding = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string sendV_Temp = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] j = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] jDemo = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string DeviceCode = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string OpName = "";
|
||||
/// <summary>
|
||||
/// 焊接中
|
||||
/// </summary>
|
||||
int welding = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Id = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string Name = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
List<JointConfig> Joints = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string md5Pos = "";
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public B_Robot_Fanuc()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="intervalUpdate"></param>
|
||||
/// <param name="cmd"></param>
|
||||
/// <param name="cmd_Welding"></param>
|
||||
/// <param name="Id"></param>
|
||||
/// <param name="Name"></param>
|
||||
/// <param name="Joints"></param>
|
||||
public void Start(string ip, int port, int interval, int intervalUpdate, string cmd, string cmd_Welding, string Id, string Name, List<JointConfig> Joints)
|
||||
{
|
||||
this.ip = ip;
|
||||
this.port = port;
|
||||
this.interval = interval;
|
||||
this.cmd = cmd;
|
||||
this.cmd_Welding = cmd_Welding;
|
||||
this.Id = Id;
|
||||
this.Name = Name;
|
||||
this.Joints = Joints;
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
//var weldingStr = Read_Welding(cmd_Welding);
|
||||
//switch (weldingStr.ToLower())
|
||||
//{
|
||||
// case "1":
|
||||
// case "true":
|
||||
// welding = 1;
|
||||
// break;
|
||||
// default:
|
||||
// welding = 0;
|
||||
// break;
|
||||
//}
|
||||
|
||||
if (fanuc == null)
|
||||
{
|
||||
ReConnRobot();
|
||||
}
|
||||
var r = fanuc.ReadString(cmd);
|
||||
OnLine = r.IsSuccess;
|
||||
if (OnLine)
|
||||
{
|
||||
j = ReadResult_To_Array(r.Content);
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(10 * 1000);
|
||||
ReConnRobot();
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = $"ROBOT_FANUC_{ip.Split('.')[3]}";
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
//Joints[0].Value = j[0].ToString();
|
||||
//Joints[1].Value = j[1].ToString();
|
||||
//Joints[2].Value = j[2].ToString();
|
||||
//Joints[3].Value = j[3].ToString();
|
||||
//Joints[4].Value = j[4].ToString();
|
||||
//Joints[5].Value = j[5].ToString();
|
||||
//Joints[6].Value = j[6].ToString();
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
var md5Str = JsonConvert.SerializeObject(payload);
|
||||
if (md5Pos != md5Str)
|
||||
{
|
||||
md5Pos = md5Str;
|
||||
MesWorkForm.SendMsg(payload);//FANUC机床的轴位置
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate () {
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = $"ROBOT_FANUC_{ip.Split('.')[3]}";
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
//Joints[0].Value = j[0].ToString();
|
||||
//Joints[1].Value = j[1].ToString();
|
||||
//Joints[2].Value = j[2].ToString();
|
||||
//Joints[3].Value = j[3].ToString();
|
||||
//Joints[4].Value = j[4].ToString();
|
||||
//Joints[5].Value = j[5].ToString();
|
||||
//Joints[6].Value = j[6].ToString();
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(payload);//FANUC机床的轴位置
|
||||
|
||||
UpdateDataToSql();
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(intervalUpdate);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
}
|
||||
|
||||
public void TimelyUpdate()
|
||||
{
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
~B_Robot_Fanuc()
|
||||
{
|
||||
FanucClose();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
public void FanucClose()
|
||||
{
|
||||
isRun = false;
|
||||
Thread.Sleep(199);
|
||||
fanuc?.ConnectClose();
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <returns></returns>
|
||||
private void ReConnRobot()
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
fanuc = new FanucInterfaceNet();
|
||||
return;
|
||||
}
|
||||
|
||||
if (fanuc != null)
|
||||
{
|
||||
fanuc?.ConnectClose();
|
||||
}
|
||||
fanuc = new FanucInterfaceNet();
|
||||
fanuc.IpAddress = ip;
|
||||
fanuc.Port = port;
|
||||
var connect = fanuc.ConnectServer();
|
||||
if (connect.IsSuccess)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
public void DisConn()
|
||||
{
|
||||
if (fanuc != null)
|
||||
{
|
||||
fanuc?.ConnectClose();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <returns></returns>
|
||||
private double[] ReadResult_To_Array(string readResult)
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
return jDemo;
|
||||
}
|
||||
|
||||
double[] joint = new double[12];
|
||||
|
||||
var recdata = readResult;
|
||||
var jsc = ((JObject)JsonConvert.DeserializeObject(recdata))["Joint"];
|
||||
joint[0] = Convert.ToDouble(jsc[0]);
|
||||
joint[1] = Convert.ToDouble(jsc[1]);
|
||||
joint[2] = Convert.ToDouble(jsc[2]);
|
||||
joint[3] = Convert.ToDouble(jsc[3]);
|
||||
joint[4] = Convert.ToDouble(jsc[4]);
|
||||
joint[5] = Convert.ToDouble(jsc[5]);
|
||||
joint[6] = Convert.ToDouble(jsc[6]);
|
||||
joint[7] = Convert.ToDouble(jsc[7]);
|
||||
joint[8] = Convert.ToDouble(jsc[8]);
|
||||
|
||||
joint[9] = Convert.ToDouble(0);
|
||||
joint[10] = Convert.ToDouble(0);
|
||||
joint[11] = Convert.ToDouble(0);
|
||||
|
||||
joint = new double[]
|
||||
{
|
||||
//Math.Round(Convert.ToDouble(joint[0])*Math.PI/180,4),
|
||||
//Math.Round(Convert.ToDouble(joint[1])*Math.PI/180,4),
|
||||
//Math.Round(( Convert.ToDouble(joint[2])+ Convert.ToDouble(joint[1]))*Math.PI/180 ,4),
|
||||
//Math.Round(Convert.ToDouble(joint[3])*Math.PI/180,4),
|
||||
//Math.Round(Convert.ToDouble(joint[4])*Math.PI/180,4),
|
||||
//Math.Round(Convert.ToDouble(joint[5])*Math.PI/180,4),
|
||||
//Convert.ToDouble(joint[6])/1000,
|
||||
//Convert.ToDouble(joint[7])/1000,
|
||||
//Convert.ToDouble(joint[8])/1000
|
||||
|
||||
Math.Round(Convert.ToDouble(joint[0]),2),
|
||||
Math.Round(Convert.ToDouble(joint[1]),2),
|
||||
Math.Round((Convert.ToDouble(joint[2])+ Convert.ToDouble(joint[1])) ,2),
|
||||
Math.Round(Convert.ToDouble(joint[3]),2),
|
||||
Math.Round(Convert.ToDouble(joint[4]),2),
|
||||
Math.Round(Convert.ToDouble(joint[5]),2),
|
||||
Convert.ToDouble(joint[6])/1000,
|
||||
Convert.ToDouble(joint[7])/1000,
|
||||
Convert.ToDouble(joint[8])/1000,
|
||||
Convert.ToDouble(joint[9]),
|
||||
Convert.ToDouble(joint[10]),
|
||||
Convert.ToDouble(joint[11])
|
||||
};
|
||||
|
||||
|
||||
return joint;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 读取数据
|
||||
/// </summary>
|
||||
/// <param name="addr"></param>
|
||||
/// <returns></returns>
|
||||
public string Read_Welding(string addr)
|
||||
{
|
||||
string str = "-1";
|
||||
//if (kuka != null)
|
||||
//{
|
||||
// var r = kuka.ReadString(addr);
|
||||
// if (r.IsSuccess)
|
||||
// {
|
||||
// str = r.Content;
|
||||
// }
|
||||
//}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 手动测试读取
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="j7"></param>
|
||||
/// <returns></returns>
|
||||
public string ReadTest(string robotName)
|
||||
{
|
||||
return "【" + robotName + "】" + MesWorkForm.Move_Joint(Joints);
|
||||
}
|
||||
|
||||
public void UpdateDataToSql()
|
||||
{
|
||||
StoredProcedure("Event_Robot_Update");
|
||||
}
|
||||
private void StoredProcedure(string pName)
|
||||
{
|
||||
//var sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@DeviceCode", DeviceCode),
|
||||
// new SqlParameter("@Online", OnLine),
|
||||
// new SqlParameter("@StationName", OpName),
|
||||
// new SqlParameter("@SlaveAddr", $"{ip}:{port}"),
|
||||
|
||||
// new SqlParameter("@Joint1", j[0]),
|
||||
// new SqlParameter("@Joint2", j[1]),
|
||||
// new SqlParameter("@Joint3", j[2]),
|
||||
|
||||
// new SqlParameter("@Joint4", j[3]),
|
||||
// new SqlParameter("@Joint5", j[4]),
|
||||
// new SqlParameter("@Joint6", j[5]),
|
||||
|
||||
// new SqlParameter("@Joint7", j[6]),
|
||||
// new SqlParameter("@Joint8", j[7]),
|
||||
// new SqlParameter("@Joint9", j[8]),
|
||||
|
||||
// new SqlParameter("@Joint10",j[9]),
|
||||
// new SqlParameter("@Joint11",j[10]),
|
||||
// new SqlParameter("@Joint12",j[11]),
|
||||
// new SqlParameter("@Clamp", welding)
|
||||
// };
|
||||
//MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
//{
|
||||
// procedureName = pName,
|
||||
// sqlParameter = sqlParameter
|
||||
//});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
386
DT_SCADA/Core/B_Robot_Kuka.cs
Normal file
386
DT_SCADA/Core/B_Robot_Kuka.cs
Normal file
@@ -0,0 +1,386 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
using HslCommunication.Robot.FANUC;
|
||||
using HslCommunication.Robot.KUKA;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class B_Robot_Kuka
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private KukaAvarProxyNet kuka = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public bool OnLine = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private string ip = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private int port = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private int interval = -1;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private bool isRun = true;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private string cmd = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private string cmd_Welding = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string sendV_Temp = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] j = new double[12];
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public double[] jDemo = new double[12];
|
||||
/// <summary>
|
||||
/// 记录老值
|
||||
/// </summary>
|
||||
string axis_act_Old = "-1";
|
||||
/// <summary>
|
||||
/// 焊接中
|
||||
/// </summary>
|
||||
int welding = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Id = "-1";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string Name = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public List<JointConfig> Joints = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string md5Pos = "";
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public B_Robot_Kuka()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ipPort"></param>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="modelManagement"></param>
|
||||
/// <param name="modelCode"></param>
|
||||
public void Start(string ip, int port,int interval, int intervalUpdate, string cmd, string cmd_Welding, string DeviceCode, string OpName, List<JointConfig> Joints)
|
||||
{
|
||||
this.ip = ip;
|
||||
this.port = port;
|
||||
this.interval = interval;
|
||||
this.cmd = cmd;
|
||||
this.cmd_Welding = cmd_Welding;
|
||||
this.Id = DeviceCode;
|
||||
this.Name = OpName;
|
||||
this.Joints = Joints;
|
||||
|
||||
new Thread(new ThreadStart(delegate ()
|
||||
{
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
//var weldingStr = Read_Welding(cmd_Welding);
|
||||
//switch (weldingStr.ToLower())
|
||||
//{
|
||||
// case "1":
|
||||
// case "true":
|
||||
// welding = 1;
|
||||
// break;
|
||||
// default:
|
||||
// welding = 0;
|
||||
// break;
|
||||
//}
|
||||
|
||||
if (kuka == null)
|
||||
{
|
||||
ReConnRobot();
|
||||
}
|
||||
var r = kuka.ReadString(cmd);
|
||||
OnLine = r.IsSuccess;
|
||||
if (OnLine)
|
||||
{
|
||||
j = ReadResult_To_Array(r.Content);
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(10 * 1000);
|
||||
ReConnRobot();
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < Joints.Count ; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = $"ROBOT_KUKA_{ip.Split('.')[3]}";
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
//Joints[0].Value = j[0].ToString();
|
||||
//Joints[1].Value = j[1].ToString();
|
||||
//Joints[2].Value = j[2].ToString();
|
||||
//Joints[3].Value = j[3].ToString();
|
||||
//Joints[4].Value = j[4].ToString();
|
||||
//Joints[5].Value = j[5].ToString();
|
||||
//Joints[6].Value = j[6].ToString();
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
var md5Str = JsonConvert.SerializeObject(payload);
|
||||
if (md5Pos != md5Str)
|
||||
{
|
||||
md5Pos = md5Str;
|
||||
MesWorkForm.SendMsg(payload);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
Thread.Sleep(interval);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
new Thread(new ThreadStart(delegate () {
|
||||
while (isRun)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < Joints.Count; i++)
|
||||
{
|
||||
Joints[i].DeviceCode = $"ROBOT_KUKA_{ip.Split('.')[3]}";
|
||||
Joints[i].Value = j[i].ToString();
|
||||
}
|
||||
//Joints[0].Value = j[0].ToString();
|
||||
//Joints[1].Value = j[1].ToString();
|
||||
//Joints[2].Value = j[2].ToString();
|
||||
//Joints[3].Value = j[3].ToString();
|
||||
//Joints[4].Value = j[4].ToString();
|
||||
//Joints[5].Value = j[5].ToString();
|
||||
//Joints[6].Value = j[6].ToString();
|
||||
|
||||
var payload = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(payload);//FANUC机床的轴位置
|
||||
|
||||
UpdateDataToSql();
|
||||
}
|
||||
catch (Exception err)
|
||||
{ }
|
||||
Thread.Sleep(intervalUpdate);
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true }.Start();
|
||||
|
||||
}
|
||||
|
||||
public void TimelyUpdate()
|
||||
{
|
||||
var sendStr = MesWorkForm.Move_Joint(Joints);
|
||||
MesWorkForm.SendMsg(sendStr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
~B_Robot_Kuka()
|
||||
{
|
||||
DisConn();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
public void DisConn()
|
||||
{
|
||||
isRun = false;
|
||||
Thread.Sleep(199);
|
||||
kuka?.ConnectClose();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <returns></returns>
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="ip"></param>
|
||||
/// <param name="port"></param>
|
||||
/// <returns></returns>
|
||||
private void ReConnRobot()
|
||||
{
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
kuka = new KukaAvarProxyNet();
|
||||
return;
|
||||
}
|
||||
|
||||
if (kuka != null)
|
||||
{
|
||||
kuka?.ConnectClose();
|
||||
}
|
||||
kuka = new KukaAvarProxyNet();
|
||||
kuka.IpAddress = ip;
|
||||
kuka.Port = port;
|
||||
var connect = kuka.ConnectServer();
|
||||
if (connect.IsSuccess)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <returns></returns>
|
||||
private double[] ReadResult_To_Array(string readResult)
|
||||
{
|
||||
//string readResult = "{E6AXIS: A1 -12.03, A2 -97.15, A3 116.47, A4 -30.16, A5 -23.85, A6 27.48, E1 0.0, E2 0.0, E3 0.0, E4 0.0, E5 0.0, E6 0.0}";
|
||||
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
return jDemo;
|
||||
}
|
||||
|
||||
var axis_act = readResult;
|
||||
|
||||
double[] joint = new double[12];
|
||||
|
||||
if (axis_act == "-1")
|
||||
{
|
||||
axis_act = axis_act_Old;
|
||||
}
|
||||
else
|
||||
{
|
||||
//axis_act = Regex.Split(axis_act, ", E4", RegexOptions.IgnoreCase)[0];
|
||||
axis_act = Regex.Split(axis_act, "}", RegexOptions.IgnoreCase)[0];
|
||||
axis_act = axis_act.Replace("{E6AXIS: A1 ", "").Replace(", A2 ", "&").Replace(", A3 ", "&").Replace(", A4 ", "&").Replace(", A5 ", "&").Replace(", A6 ", "&")
|
||||
.Replace(", E1 ", "&").Replace(", E2 ", "&").Replace(", E3 ", "&").Replace(", E4 ", "&").Replace(", E5 ", "&").Replace(", E6 ", "&");
|
||||
axis_act_Old = axis_act;
|
||||
}
|
||||
|
||||
string[] jStr = axis_act.Split('&');
|
||||
|
||||
for (int i = 0; i < jStr.Length; i++)
|
||||
{
|
||||
joint[i] = Math.Round(Convert.ToDouble(jStr[i]), 2);
|
||||
//joint[i] = Convert.ToDouble(jStr[i]);
|
||||
//if (i == 6 | i == 7 | i == 8 | i == 9 | i == 10 | i == 11)
|
||||
// joint[i] = Math.Round(joint[i] / 1000.0, 2);
|
||||
//else
|
||||
// joint[i] = Math.Round(joint[i] * Math.PI / 180, 2);
|
||||
}
|
||||
|
||||
return joint;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 读取数据
|
||||
/// </summary>
|
||||
/// <param name="addr"></param>
|
||||
/// <returns></returns>
|
||||
public string Read_Welding(string addr)
|
||||
{
|
||||
string str = "-1";
|
||||
//if (kuka != null)
|
||||
//{
|
||||
// var r = kuka.ReadString(addr);
|
||||
// if (r.IsSuccess)
|
||||
// {
|
||||
// str = r.Content;
|
||||
// }
|
||||
//}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 手动测试读取
|
||||
/// </summary>
|
||||
/// <param name="j1_6"></param>
|
||||
/// <param name="j7"></param>
|
||||
/// <returns></returns>
|
||||
public string ReadTest(string robotName)
|
||||
{
|
||||
return "【" + robotName + "】" + MesWorkForm.Move_Joint(Joints);
|
||||
}
|
||||
|
||||
public void UpdateDataToSql()
|
||||
{
|
||||
StoredProcedure("Event_Robot_Update");
|
||||
}
|
||||
private void StoredProcedure(string pName)
|
||||
{
|
||||
//var sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@DeviceCode", DeviceCode),
|
||||
// new SqlParameter("@Online", OnLine),
|
||||
// new SqlParameter("@StationName", OpName),
|
||||
// new SqlParameter("@SlaveAddr", $"{ip}:{port}"),
|
||||
|
||||
// new SqlParameter("@Joint1", j[0]),
|
||||
// new SqlParameter("@Joint2", j[1]),
|
||||
// new SqlParameter("@Joint3", j[2]),
|
||||
|
||||
// new SqlParameter("@Joint4", j[3]),
|
||||
// new SqlParameter("@Joint5", j[4]),
|
||||
// new SqlParameter("@Joint6", j[5]),
|
||||
|
||||
// new SqlParameter("@Joint7", j[6]),
|
||||
// new SqlParameter("@Joint8", j[7]),
|
||||
// new SqlParameter("@Joint9", j[8]),
|
||||
|
||||
// new SqlParameter("@Joint10",j[9]),
|
||||
// new SqlParameter("@Joint11",j[10]),
|
||||
// new SqlParameter("@Joint12",j[11]),
|
||||
// new SqlParameter("@Clamp", welding)
|
||||
// };
|
||||
//MesWorkForm.taskSql.Enqueue(new NJ_ZC.ParamT
|
||||
//{
|
||||
// procedureName = pName,
|
||||
// sqlParameter = sqlParameter
|
||||
//});
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
780
DT_SCADA/Core/ElectricEnergyMeter.cs
Normal file
780
DT_SCADA/Core/ElectricEnergyMeter.cs
Normal file
@@ -0,0 +1,780 @@
|
||||
//using ConLink.ModBus;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using static ConLink.BasicFramework.SoftBasic;
|
||||
//using System.Threading;
|
||||
//using System.Threading.Tasks;
|
||||
//using System.Data.SqlClient;
|
||||
|
||||
///// <summary>
|
||||
/////
|
||||
///// </summary>
|
||||
//namespace MesWork
|
||||
|
||||
|
||||
|
||||
///*
|
||||
// public float Ua = 0f;
|
||||
// public float Ub = 0f;
|
||||
// public float Uc = 0f;
|
||||
// public float Uab = 0f;
|
||||
// public float Ubc = 0f;
|
||||
// public float Uca = 0f;
|
||||
// public float Ia = 0f;
|
||||
// public float Ib = 0f;
|
||||
// public float Ic = 0f;
|
||||
// public float Pa = 0f;
|
||||
// public float Pb = 0f;
|
||||
// public float Pc = 0f;
|
||||
// public float P = 0f;
|
||||
// public float Qa = 0f;
|
||||
// public float Qb = 0f;
|
||||
// public float Qc = 0f;
|
||||
// public float Q = 0f;
|
||||
// public float Sa = 0f;
|
||||
// public float Sb = 0f;
|
||||
// public float Sc = 0f;
|
||||
// public float S = 0f;
|
||||
// public float PFa = 0f;
|
||||
// public float PFb = 0f;
|
||||
// public float PFc = 0f;
|
||||
// public float PF = 0f;
|
||||
// public float FR = 0f;
|
||||
// public float Ep1 = 0f;
|
||||
// public float Ep2 = 0f;
|
||||
// public float Eq1 = 0f;
|
||||
// public float Eq2 = 0f;
|
||||
// */
|
||||
|
||||
|
||||
|
||||
///*
|
||||
// @Ua REAL = 0,
|
||||
// @Ub REAL = 0,
|
||||
// @Uc REAL = 0,
|
||||
// @Uab REAL = 0,
|
||||
// @Ubc REAL = 0,
|
||||
// @Uca REAL = 0,
|
||||
// @Ia REAL = 0,
|
||||
// @Ib REAL = 0,
|
||||
// @Ic REAL = 0,
|
||||
// @Pa REAL = 0,
|
||||
// @Pb REAL = 0,
|
||||
// @Pc REAL = 0,
|
||||
// @P REAL = 0,
|
||||
// @Qa REAL = 0,
|
||||
// @Qb REAL = 0,
|
||||
// @Qc REAL = 0,
|
||||
// @Q REAL = 0,
|
||||
// @Sa REAL = 0,
|
||||
// @Sb REAL = 0,
|
||||
// @Sc REAL = 0,
|
||||
// @S REAL = 0,
|
||||
// @PFa REAL = 0,
|
||||
// @PFb REAL = 0,
|
||||
// @PFc REAL = 0,
|
||||
// @PF REAL = 0,
|
||||
// @FR REAL = 0,
|
||||
// @Ep1 REAL = 0,
|
||||
// @Ep2 REAL = 0,
|
||||
// @Eq1 REAL = 0,
|
||||
// @Eq2 REAL = 0
|
||||
// */
|
||||
//{
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public class ElectricEnergyMeter
|
||||
// {
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private string ip = "";
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private int port = 0;
|
||||
// /// <summary>
|
||||
// /// /
|
||||
// /// </summary>
|
||||
// private byte station = 0;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private string opName = "";
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private int intervalRead = 1 * 1000;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private int intervalUpdate = 5 * 1000;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private int intervalInsert = 10 * 1000;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private ModbusTcpNet mbt = null;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private Thread tt = null;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private Thread ttt = null;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private Thread tttt = null;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private string message = "00 00 00 00 00 06 01 03 00 00 00 3C";
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private int offset = 18;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private int index = 0;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ua = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ub = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Uc = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Uab = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ubc = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Uca = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ia = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ib = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ic = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Pa = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Pb = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Pc = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float P = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Qa = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Qb = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Qc = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Q = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Sa = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Sb = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Sc = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float S = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float PFa = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float PFb = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float PFc = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float PF = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float FR = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ep1 = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Ep2 = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Eq1 = 0f;
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// public float Eq2 = 0f;
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
|
||||
// public void Start(string ip,int port,byte station,string opName,int intervalRead
|
||||
// , int intervalUpdate ,int intervalInsert)
|
||||
// {
|
||||
// this.ip = ip;
|
||||
// this.port = port;
|
||||
// this.station = station;
|
||||
// this.opName = opName;
|
||||
// this.intervalRead = intervalRead;
|
||||
// this.intervalUpdate = intervalUpdate;
|
||||
// this.intervalInsert = intervalInsert;
|
||||
|
||||
// mbt = new ModbusTcpNet(ip, port, station);
|
||||
// mbt.AddressStartWithZero = true ;
|
||||
|
||||
// mbt.SetLoginAccount("","");
|
||||
|
||||
// mbt.DataFormat = ConLink.Core.DataFormat.ABCD;
|
||||
// mbt.IsStringReverse = false;
|
||||
|
||||
// var s = mbt.ConnectServer();
|
||||
// var dfg = s.IsSuccess;
|
||||
|
||||
// tt = new Thread(new ThreadStart(Read));
|
||||
// tt.IsBackground = true;
|
||||
// tt.Start();
|
||||
|
||||
// ttt = new Thread(new ThreadStart(Update));
|
||||
// ttt.IsBackground = true;
|
||||
// ttt.Start();
|
||||
|
||||
// tttt = new Thread(new ThreadStart(Insert));
|
||||
// tttt.IsBackground = true;
|
||||
// tttt.Start();
|
||||
|
||||
|
||||
// }
|
||||
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private void Read()
|
||||
// {
|
||||
// while (true)
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// var read = mbt.ReadFromCoreServer(HexStringToBytes(this.message));
|
||||
// if (read.IsSuccess)
|
||||
// {
|
||||
// var rc = read.Content;
|
||||
// var str = ByteToHexString(rc);
|
||||
// //str = "00000000001B010318199A435C199A435C199A435C199A435C199A435C199A435C";
|
||||
// index = 0;
|
||||
// Ua = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4,4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 1;
|
||||
// Ub = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 2;
|
||||
// Uc = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 3;
|
||||
// Uab = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 4;
|
||||
// Ubc = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 5;
|
||||
// Uca = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
|
||||
|
||||
// index = 6;
|
||||
// Ia = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 7;
|
||||
// Ib = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 8;
|
||||
// Ic = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
|
||||
|
||||
// index = 9;
|
||||
// Pa = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 10;
|
||||
// Pb = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 11;
|
||||
// Pc = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 12;
|
||||
// P = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
// index = 13;
|
||||
// Qa = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 14;
|
||||
// Qb = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 15;
|
||||
// Qc = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 16;
|
||||
// Q = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
|
||||
// index = 17;
|
||||
// Sa = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 18;
|
||||
// Sb = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 19;
|
||||
// Sc = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 20;
|
||||
// S = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
|
||||
|
||||
// index = 21;
|
||||
// PFa = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 22;
|
||||
// PFb = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 23;
|
||||
// PFc = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 24;
|
||||
// PF = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
|
||||
|
||||
|
||||
// index = 25;
|
||||
// FR = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
// index = 26;
|
||||
// Ep1 = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
// index = 27;
|
||||
// Ep2 = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
|
||||
// index = 28;
|
||||
// Eq1 = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
// index = 29;
|
||||
// Eq2 = BitConverter.ToSingle(BitConverter.GetBytes(Convert.ToUInt32(
|
||||
// str.Substring(offset + index * 8 + 4, 4) + str.Substring(offset + index * 8 + 0, 4)
|
||||
// , 16)), 0);
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Thread.Sleep(this.intervalRead * 3);
|
||||
// }
|
||||
// }
|
||||
// catch (Exception err)
|
||||
// {
|
||||
|
||||
// }
|
||||
// Thread.Sleep(this.intervalRead);
|
||||
// }
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private void Update()
|
||||
// {
|
||||
// while (true)
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// ExecUpdate();
|
||||
// }
|
||||
// catch (Exception err)
|
||||
// {
|
||||
|
||||
// }
|
||||
// Thread.Sleep(this.intervalUpdate);
|
||||
|
||||
// }
|
||||
// }
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private void Insert()
|
||||
// {
|
||||
// while (true)
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// ExecInsert();
|
||||
// }
|
||||
// catch (Exception err)
|
||||
// {
|
||||
|
||||
// }
|
||||
// Thread.Sleep(this.intervalInsert);
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private void ExecUpdate()
|
||||
// {
|
||||
// /*
|
||||
// public float Ua = 0f;
|
||||
// public float Ub = 0f;
|
||||
// public float Uc = 0f;
|
||||
// public float Uab = 0f;
|
||||
// public float Ubc = 0f;
|
||||
// public float Uca = 0f;
|
||||
// public float Ia = 0f;
|
||||
// public float Ib = 0f;
|
||||
// public float Ic = 0f;
|
||||
// public float Pa = 0f;
|
||||
// public float Pb = 0f;
|
||||
// public float Pc = 0f;
|
||||
// public float P = 0f;
|
||||
// public float Qa = 0f;
|
||||
// public float Qb = 0f;
|
||||
// public float Qc = 0f;
|
||||
// public float Q = 0f;
|
||||
// public float Sa = 0f;
|
||||
// public float Sb = 0f;
|
||||
// public float Sc = 0f;
|
||||
// public float S = 0f;
|
||||
// public float PFa = 0f;
|
||||
// public float PFb = 0f;
|
||||
// public float PFc = 0f;
|
||||
// public float PF = 0f;
|
||||
// public float FR = 0f;
|
||||
// public float Ep1 = 0f;
|
||||
// public float Ep2 = 0f;
|
||||
// public float Eq1 = 0f;
|
||||
// public float Eq2 = 0f;
|
||||
// */
|
||||
|
||||
|
||||
// UpdateCurr();
|
||||
|
||||
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// ///
|
||||
// /// </summary>
|
||||
// private void ExecInsert()
|
||||
// {
|
||||
// /*
|
||||
// public float Ua = 0f;
|
||||
// public float Ub = 0f;
|
||||
// public float Uc = 0f;
|
||||
// public float Uab = 0f;
|
||||
// public float Ubc = 0f;
|
||||
// public float Uca = 0f;
|
||||
// public float Ia = 0f;
|
||||
// public float Ib = 0f;
|
||||
// public float Ic = 0f;
|
||||
// public float Pa = 0f;
|
||||
// public float Pb = 0f;
|
||||
// public float Pc = 0f;
|
||||
// public float P = 0f;
|
||||
// public float Qa = 0f;
|
||||
// public float Qb = 0f;
|
||||
// public float Qc = 0f;
|
||||
// public float Q = 0f;
|
||||
// public float Sa = 0f;
|
||||
// public float Sb = 0f;
|
||||
// public float Sc = 0f;
|
||||
// public float S = 0f;
|
||||
// public float PFa = 0f;
|
||||
// public float PFb = 0f;
|
||||
// public float PFc = 0f;
|
||||
// public float PF = 0f;
|
||||
// public float FR = 0f;
|
||||
// public float Ep1 = 0f;
|
||||
// public float Ep2 = 0f;
|
||||
// public float Eq1 = 0f;
|
||||
// public float Eq2 = 0f;
|
||||
// */
|
||||
|
||||
|
||||
// InsertHis();
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// private bool UpdateCurr()
|
||||
// {
|
||||
// /*
|
||||
// public float Ua = 0f;
|
||||
// public float Ub = 0f;
|
||||
// public float Uc = 0f;
|
||||
// public float Uab = 0f;
|
||||
// public float Ubc = 0f;
|
||||
// public float Uca = 0f;
|
||||
// public float Ia = 0f;
|
||||
// public float Ib = 0f;
|
||||
// public float Ic = 0f;
|
||||
// public float Pa = 0f;
|
||||
// public float Pb = 0f;
|
||||
// public float Pc = 0f;
|
||||
// public float P = 0f;
|
||||
// public float Qa = 0f;
|
||||
// public float Qb = 0f;
|
||||
// public float Qc = 0f;
|
||||
// public float Q = 0f;
|
||||
// public float Sa = 0f;
|
||||
// public float Sb = 0f;
|
||||
// public float Sc = 0f;
|
||||
// public float S = 0f;
|
||||
// public float PFa = 0f;
|
||||
// public float PFb = 0f;
|
||||
// public float PFc = 0f;
|
||||
// public float PF = 0f;
|
||||
// public float FR = 0f;
|
||||
// public float Ep1 = 0f;
|
||||
// public float Ep2 = 0f;
|
||||
// public float Eq1 = 0f;
|
||||
// public float Eq2 = 0f;
|
||||
// */
|
||||
|
||||
// var sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@StationName", opName),
|
||||
// new SqlParameter("@SlaveAddr", ip),
|
||||
|
||||
// new SqlParameter("@Ua", Ua),
|
||||
// new SqlParameter("@Ub", Ub),
|
||||
// new SqlParameter("@Uc", Uc),
|
||||
|
||||
// new SqlParameter("@Uab", Ua),
|
||||
// new SqlParameter("@Ubc", Ub),
|
||||
// new SqlParameter("@Uca", Uc),
|
||||
|
||||
// new SqlParameter("@Ia", Ia),
|
||||
// new SqlParameter("@Ib", Ib),
|
||||
// new SqlParameter("@Ic", Ic),
|
||||
|
||||
// new SqlParameter("@Pa", Pa),
|
||||
// new SqlParameter("@Pb", Pb),
|
||||
// new SqlParameter("@Pc", Pc),
|
||||
// new SqlParameter("@P", Pa),
|
||||
|
||||
// new SqlParameter("@Qa", Qa),
|
||||
// new SqlParameter("@Qb", Qb),
|
||||
// new SqlParameter("@Qc", Qc),
|
||||
// new SqlParameter("@Q", Q),
|
||||
|
||||
// new SqlParameter("@Sa", Sa),
|
||||
// new SqlParameter("@Sb", Sb),
|
||||
// new SqlParameter("@Sc", Sc),
|
||||
// new SqlParameter("@S", S),
|
||||
|
||||
// new SqlParameter("@PFa", PFa),
|
||||
// new SqlParameter("@PFb", PFb),
|
||||
// new SqlParameter("@PFc", PFc),
|
||||
// new SqlParameter("@PF", PF),
|
||||
|
||||
// new SqlParameter("@FR", FR),
|
||||
|
||||
// new SqlParameter("@Ep1", Ep1),
|
||||
// new SqlParameter("@Ep2", Ep2),
|
||||
|
||||
// new SqlParameter("@Eq1", Eq1),
|
||||
// new SqlParameter("@Eq2", Eq2)
|
||||
|
||||
// };
|
||||
// return DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("Event_Meter_Update",MesWorkForm.ConnectionString, ref sqlParameter, out string errorMessage);
|
||||
|
||||
// }
|
||||
// private bool InsertHis()
|
||||
// {
|
||||
// /*
|
||||
// public float Ua = 0f;
|
||||
// public float Ub = 0f;
|
||||
// public float Uc = 0f;
|
||||
// public float Uab = 0f;
|
||||
// public float Ubc = 0f;
|
||||
// public float Uca = 0f;
|
||||
// public float Ia = 0f;
|
||||
// public float Ib = 0f;
|
||||
// public float Ic = 0f;
|
||||
// public float Pa = 0f;
|
||||
// public float Pb = 0f;
|
||||
// public float Pc = 0f;
|
||||
// public float P = 0f;
|
||||
// public float Qa = 0f;
|
||||
// public float Qb = 0f;
|
||||
// public float Qc = 0f;
|
||||
// public float Q = 0f;
|
||||
// public float Sa = 0f;
|
||||
// public float Sb = 0f;
|
||||
// public float Sc = 0f;
|
||||
// public float S = 0f;
|
||||
// public float PFa = 0f;
|
||||
// public float PFb = 0f;
|
||||
// public float PFc = 0f;
|
||||
// public float PF = 0f;
|
||||
// public float FR = 0f;
|
||||
// public float Ep1 = 0f;
|
||||
// public float Ep2 = 0f;
|
||||
// public float Eq1 = 0f;
|
||||
// public float Eq2 = 0f;
|
||||
// */
|
||||
|
||||
// var sqlParameter = new SqlParameter[] {
|
||||
// new SqlParameter("@StationName", opName),
|
||||
// new SqlParameter("@SlaveAddr", ip),
|
||||
|
||||
// new SqlParameter("@Ua", Ua),
|
||||
// new SqlParameter("@Ub", Ub),
|
||||
// new SqlParameter("@Uc", Uc),
|
||||
|
||||
// new SqlParameter("@Uab", Ua),
|
||||
// new SqlParameter("@Ubc", Ub),
|
||||
// new SqlParameter("@Uca", Uc),
|
||||
|
||||
// new SqlParameter("@Ia", Ia),
|
||||
// new SqlParameter("@Ib", Ib),
|
||||
// new SqlParameter("@Ic", Ic),
|
||||
|
||||
// new SqlParameter("@Pa", Pa),
|
||||
// new SqlParameter("@Pb", Pb),
|
||||
// new SqlParameter("@Pc", Pc),
|
||||
// new SqlParameter("@P", Pa),
|
||||
|
||||
// new SqlParameter("@Qa", Qa),
|
||||
// new SqlParameter("@Qb", Qb),
|
||||
// new SqlParameter("@Qc", Qc),
|
||||
// new SqlParameter("@Q", Q),
|
||||
|
||||
// new SqlParameter("@Sa", Sa),
|
||||
// new SqlParameter("@Sb", Sb),
|
||||
// new SqlParameter("@Sc", Sc),
|
||||
// new SqlParameter("@S", S),
|
||||
|
||||
// new SqlParameter("@PFa", PFa),
|
||||
// new SqlParameter("@PFb", PFb),
|
||||
// new SqlParameter("@PFc", PFc),
|
||||
// new SqlParameter("@PF", PF),
|
||||
|
||||
// new SqlParameter("@FR", FR),
|
||||
|
||||
// new SqlParameter("@Ep1", Ep1),
|
||||
// new SqlParameter("@Ep2", Ep2),
|
||||
|
||||
// new SqlParameter("@Eq1", Eq1),
|
||||
// new SqlParameter("@Eq2", Eq2)
|
||||
|
||||
// };
|
||||
// return DataLinkMesWork.SQLCommon.ExecuteStoredProcedure("Event_Meter_Insert", MesWorkForm.ConnectionString, ref sqlParameter, out string errorMessage);
|
||||
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// }
|
||||
//}
|
||||
28
DT_SCADA/Core/ExecSqlServer.cs
Normal file
28
DT_SCADA/Core/ExecSqlServer.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using MesWork;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NJ_ZC
|
||||
{
|
||||
|
||||
public class ParamT
|
||||
{
|
||||
public string procedureName
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "";
|
||||
|
||||
public SqlParameter[] sqlParameter
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
154
DT_SCADA/Core/Load.cs
Normal file
154
DT_SCADA/Core/Load.cs
Normal file
@@ -0,0 +1,154 @@
|
||||
using NJ_ZC;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using OpcBasic;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using SystemFramework;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="dt_Robot"></param>
|
||||
private void LoadDevice(ScadaConfig appConfig)
|
||||
{
|
||||
foreach (var mu in appConfig.MachineTool)
|
||||
{
|
||||
var Enable = mu.Enable;
|
||||
var Type = mu.Type;
|
||||
var ConnectStr = mu.ConnectStr;
|
||||
var Id = mu.Id;
|
||||
var Name = mu.Name;
|
||||
var DataTimeInterval = Convert.ToInt32(mu.DataTimeInterval);
|
||||
var AxesTimeInterval = Convert.ToInt32(mu.AxesTimeInterval);
|
||||
var Joints = mu.Joints;
|
||||
|
||||
var TagID_Clamp = mu.TagID_Clamp;
|
||||
|
||||
|
||||
var IP = "";
|
||||
var Port = 0;
|
||||
|
||||
if (Enable == "1")
|
||||
{
|
||||
switch (Type.ToUpper())
|
||||
{
|
||||
case "ROBOTFANUC":
|
||||
{
|
||||
if (!ConnectStr.Contains(":"))
|
||||
{
|
||||
MessageBox.Show("Json文件中,ConnectStr 值格式错误!");
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
IP = ConnectStr.Split(':')[0];
|
||||
Port = Convert.ToInt32(ConnectStr.Split(':')[1]);
|
||||
var fanuc = new B_Robot_Fanuc();
|
||||
fanuc.Start(IP, Port, AxesTimeInterval, DataTimeInterval, "CurrentPose", "", Id, Name, Joints);
|
||||
dc_Robot.Add($"{Type}|{Id}", fanuc);
|
||||
}
|
||||
break;
|
||||
case "ROBOTKUKA":
|
||||
{
|
||||
if (!ConnectStr.Contains(":"))
|
||||
{
|
||||
MessageBox.Show("Json文件中,ConnectStr 值格式错误!");
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
IP = ConnectStr.Split(':')[0];
|
||||
Port = Convert.ToInt32(ConnectStr.Split(':')[1]);
|
||||
var kuka = new B_Robot_Kuka();
|
||||
kuka.Start(IP, Port, AxesTimeInterval, DataTimeInterval, "$axis_act", "$OUT[8]", Id, Name, Joints);
|
||||
dc_Robot.Add($"{Type}|{Id}", kuka);
|
||||
}
|
||||
break;
|
||||
case "ROBOTABB":
|
||||
{
|
||||
if (!ConnectStr.Contains(":"))
|
||||
{
|
||||
MessageBox.Show("Json文件中,ConnectStr 值格式错误!");
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
IP = ConnectStr.Split(':')[0];
|
||||
var cname = ConnectStr.Split(':')[1];
|
||||
var abb = new B_Robot_Abb();
|
||||
abb.Start(IP, cname, AxesTimeInterval, DataTimeInterval, Id, Name, Joints);
|
||||
dc_Robot.Add($"{Type}|{Id}", abb);
|
||||
}
|
||||
break;
|
||||
case "ROBOTEPSON":
|
||||
{
|
||||
if (!ConnectStr.Contains(":"))
|
||||
{
|
||||
MessageBox.Show("Json文件中,ConnectStr 值格式错误!");
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
IP = ConnectStr.Split(':')[0];
|
||||
Port = Convert.ToInt32(ConnectStr.Split(':')[1]);
|
||||
var espon = new B_Robot_Espon();
|
||||
espon.Start(IP, Port, AxesTimeInterval, DataTimeInterval, Id, Name, Joints, TagID_Clamp);
|
||||
dc_Robot.Add($"{Type}|{Id}", espon);
|
||||
}
|
||||
break;
|
||||
case "AXIS":
|
||||
{
|
||||
var b_Read_N_Axis = new B_Read_N_Axis();
|
||||
b_Read_N_Axis.Start(AxesTimeInterval, DataTimeInterval, ConnectStr, Joints, Id, Name);
|
||||
dc_Name_Axis.Add($"{Type}|{Id}|{ConnectStr}", b_Read_N_Axis);
|
||||
}
|
||||
break;
|
||||
case "AXIS_CARD":
|
||||
{
|
||||
var b_Read_N_AxisCard = new B_Read_N_AxisCard();
|
||||
b_Read_N_AxisCard.Start(AxesTimeInterval, DataTimeInterval, ConnectStr, Joints);
|
||||
dc_Name_Axis_Card.Add($"{Type}|{Id}|{ConnectStr}", b_Read_N_AxisCard);
|
||||
}
|
||||
break;
|
||||
case "AGV":
|
||||
{
|
||||
agvRead = new AgvRead();
|
||||
agvRead.Start(ConnectStr,AxesTimeInterval, DataTimeInterval, Id, Name);
|
||||
}
|
||||
break;
|
||||
case "CNCEDM":
|
||||
{
|
||||
IP = ConnectStr.Split(':')[0];
|
||||
Port = Convert.ToInt32(ConnectStr.Split(':')[1]);
|
||||
|
||||
var edm = new B_Cnc_Edm();
|
||||
edm.Start(IP, Port, AxesTimeInterval, DataTimeInterval, Id, Name, Joints);
|
||||
|
||||
dc_Robot.Add($"{Type}|{Id}", edm);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
53
DT_SCADA/Core/MW.DisConn.cs
Normal file
53
DT_SCADA/Core/MW.DisConn.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using NJ_ZC;
|
||||
using OpcBasic;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using SystemFramework;
|
||||
using static System.Configuration.ConfigurationManager;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
|
||||
public void DisConnect()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var robot in new Dictionary<string,object>(dc_Robot))
|
||||
{
|
||||
var key = robot.Key;
|
||||
var robotObj = robot.Value;
|
||||
var type = key.Split('|')[0];
|
||||
var robotCode = key.Split('|')[1];
|
||||
switch (type)
|
||||
{
|
||||
case "FANUC":
|
||||
((B_Robot_Fanuc)robotObj).DisConn();
|
||||
break;
|
||||
case "KUKA":
|
||||
((B_Robot_Kuka)robotObj).DisConn();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception err){}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
95
DT_SCADA/Core/MysqlClient.cs
Normal file
95
DT_SCADA/Core/MysqlClient.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DatabaseClient
|
||||
{
|
||||
public class MysqlClient
|
||||
{
|
||||
|
||||
public static bool ExecQuerySQL(string sql, string ConnectStr, out string err)
|
||||
{
|
||||
// lock (losk1) {
|
||||
bool success = false;
|
||||
err = "";
|
||||
using (MySqlConnection conn = new MySqlConnection(ConnectStr))
|
||||
{
|
||||
try
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
MySqlCommand command = new MySqlCommand(sql, conn);
|
||||
command.ExecuteNonQuery();
|
||||
success = true;
|
||||
}
|
||||
catch (Exception er)
|
||||
{
|
||||
err = er.Message;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (conn != null)
|
||||
{
|
||||
conn.Close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return success;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static bool ExecQueryDataTable(string sql, string ConnectStr,out DataTable dt, out string err)
|
||||
{
|
||||
bool success = false;
|
||||
err = "";
|
||||
dt = null;
|
||||
using (MySqlConnection conn = new MySqlConnection(ConnectStr))
|
||||
{
|
||||
try
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
MySqlCommand command = new MySqlCommand(sql, conn);
|
||||
MySqlDataAdapter da = new MySqlDataAdapter(command);
|
||||
DataSet ds = new DataSet();
|
||||
da.Fill(ds);
|
||||
|
||||
if (ds.Tables.Count > 0)
|
||||
{
|
||||
dt = ds.Tables[0];
|
||||
}
|
||||
success = true;
|
||||
}
|
||||
catch (Exception er)
|
||||
{
|
||||
err = er.Message;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (conn != null)
|
||||
{
|
||||
conn.Close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
113
DT_SCADA/Core/Remote.Receive.cs
Normal file
113
DT_SCADA/Core/Remote.Receive.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class QingYa_OP0010 { }
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="_Msg"></param>
|
||||
public void LoadClientInfo(object _Msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
string recStr = (string)_Msg;
|
||||
string m_Source = recStr.Split('|')[0];
|
||||
string cmd = recStr.Split('|')[1];
|
||||
//string OpName = recStr.Split('|')[2];
|
||||
//string tagValue = recStr.Split('|')[3];
|
||||
|
||||
switch (m_Source)
|
||||
{
|
||||
case "DT":
|
||||
switch (cmd)
|
||||
{
|
||||
case "B_C_DT_WebLoaded":
|
||||
new TaskFactory().StartNew(delegate () {
|
||||
try
|
||||
{
|
||||
var tagList = DriverCache["Cache_Tag"];
|
||||
foreach (var item in tagList)
|
||||
{
|
||||
var tf = (OpcBasic.TagFormat)item.Value;
|
||||
var tagID = tf.TagID;
|
||||
var tagValue = tf.TagValue.ToString();
|
||||
var tagTypeID = Convert.ToInt32(tf.TagTypeID);
|
||||
var tagTypeCodeID = (int)tf.TagTypeCodeID;
|
||||
var opName = tf.OpName.ToString();
|
||||
if (tagTypeID == 11)
|
||||
{
|
||||
switch (tagValue.ToUpper())
|
||||
{
|
||||
case "1":
|
||||
case "TRUE":
|
||||
tagValue = "1";
|
||||
break;
|
||||
default:
|
||||
tagValue = "0";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
S_C_B_TagIDTrigger(opName,tagID, tagValue);
|
||||
}
|
||||
}
|
||||
catch (Exception ew1) { }
|
||||
//try
|
||||
//{
|
||||
// var from_to_loc = agvRead.ReadAgv();
|
||||
// MesWorkForm.S_C_B_TagIDTrigger(agvRead.connectStr, agvRead.tagID, from_to_loc);
|
||||
//}
|
||||
//catch (Exception ew2) { }
|
||||
});
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "MES":
|
||||
switch (cmd)
|
||||
{
|
||||
case "B_C_DT_WebLoaded":
|
||||
//string OpName = recStr.Split('|')[2];
|
||||
//if (OpName == "AllOpName")
|
||||
//{
|
||||
|
||||
// foreach (var fanucBaseNC in fanucBaseNCArray)
|
||||
// {
|
||||
// fanucBaseNC.SendDataReLoad();
|
||||
// }
|
||||
|
||||
// return;
|
||||
//}
|
||||
//if (fanucBaseNCArray.FirstOrDefault(o => o.OpName == OpName) != null) {
|
||||
// fanucBaseNCArray.FirstOrDefault(o => o.OpName == OpName).SendDataReLoad();
|
||||
//}
|
||||
|
||||
// FanucBaseNC.SendStateDataFirst();
|
||||
|
||||
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err) { }
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
275
DT_SCADA/Core/Remote.Send.cs
Normal file
275
DT_SCADA/Core/Remote.Send.cs
Normal file
@@ -0,0 +1,275 @@
|
||||
using HslCommunication;
|
||||
using HslCommunication.Core.Net;
|
||||
using HslCommunication.Enthernet;
|
||||
using MQTTnet;
|
||||
using MQTTnet.Client.Connecting;
|
||||
using MQTTnet.Client.Disconnecting;
|
||||
using MQTTnet.Client.Options;
|
||||
using MQTTnet.Client.Receiving;
|
||||
using MQTTnet.Extensions.ManagedClient;
|
||||
using MQTTnet.Formatter;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
namespace MesWork
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public partial class Temp { }
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static NetComplexClient complexClient = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
static private IManagedMqttClient mqttClient = null;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
string topic = "";
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
static bool OnLine_Mqtt = false;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="uri"></param>
|
||||
/// <returns></returns>
|
||||
public async Task StartAsync(string uri)
|
||||
{
|
||||
var array = uri.Split(new char[] { ':', ',' });
|
||||
string mqttUser = array[2];
|
||||
string mqttPassword = "";
|
||||
var options = new MqttClientOptions
|
||||
{
|
||||
ClientId = $"{mqttUser}_{Guid.NewGuid().ToString()}",
|
||||
ProtocolVersion = MqttProtocolVersion.V311,
|
||||
ChannelOptions = new MqttClientTcpOptions { Server = array[0], Port = Convert.ToInt32(array[1]) },
|
||||
CleanSession = true,
|
||||
KeepAlivePeriod = TimeSpan.FromSeconds(15),
|
||||
Credentials = new MqttClientCredentials
|
||||
{
|
||||
Username = mqttUser,
|
||||
Password = Encoding.UTF8.GetBytes(mqttPassword)
|
||||
}
|
||||
};
|
||||
mqttClient = new MqttFactory().CreateManagedMqttClient();
|
||||
mqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(OnSubscriberConnected);
|
||||
mqttClient.DisconnectedHandler = new MqttClientDisconnectedHandlerDelegate(OnSubscriberDisconnected);
|
||||
mqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(OnSubscriberMessageReceived);
|
||||
await mqttClient.StartAsync(new ManagedMqttClientOptions { ClientOptions = options });
|
||||
this.topic = array[2];
|
||||
await mqttClient.SubscribeAsync(new MqttTopicFilter { Topic = topic });
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="MesServer_IpPortName"></param>
|
||||
private void ClientConnection(string MesServer_IpPortName)
|
||||
{
|
||||
string serverIP = MesServer_IpPortName.Split(':')[0];
|
||||
string portString = MesServer_IpPortName.Split(':')[1].Split(',')[0];
|
||||
string opNameSocket = MesServer_IpPortName.Split(',')[1];
|
||||
|
||||
if (!IPAddress.TryParse(serverIP, out IPAddress address))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!int.TryParse(portString, out int port))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// 连接 connect
|
||||
complexClient = new NetComplexClient();
|
||||
complexClient.ClientAlias = opNameSocket;
|
||||
complexClient.EndPointServer = new IPEndPoint(address, port);
|
||||
//complexClient.Token = new Guid(textBox3.Text);
|
||||
complexClient.AcceptString += ComplexClient_AcceptString;
|
||||
complexClient.MessageAlerts += ComplexClient_MessageAlerts;
|
||||
complexClient.ClientStart();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
HslCommunication.BasicFramework.SoftBasic.ShowExceptionMessage(ex);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="publish_topic"></param>
|
||||
/// <param name="publish_msg"></param>
|
||||
/// <returns></returns>
|
||||
private static async Task Publish(string publish_topic, string publish_msg)
|
||||
{
|
||||
if (mqttClient != null)
|
||||
{
|
||||
await mqttClient.PublishAsync(new MqttApplicationMessageBuilder().WithTopic(publish_topic).WithPayload(publish_msg).WithAtMostOnceQoS().Build());
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task DisConnectService()
|
||||
{
|
||||
if (mqttClient != null)
|
||||
{
|
||||
await mqttClient.UnsubscribeAsync(new string[] { topic });
|
||||
await mqttClient.StopAsync();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
private void ComplexClient_MessageAlerts(string text)
|
||||
{
|
||||
//if (InvokeRequired)
|
||||
//{
|
||||
// Invoke(new Action<string>(ComplexClient_MessageAlerts), text);
|
||||
// return;
|
||||
//}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 连接完成
|
||||
/// </summary>
|
||||
/// <param name="x"></param>
|
||||
private void OnSubscriberConnected(MqttClientConnectedEventArgs x)
|
||||
{
|
||||
OnLine_Mqtt = true;
|
||||
// textBox1_robotData.Text += "连接完成" + "\r\n";
|
||||
var rec = x.AuthenticateResult.ResultCode.ToString();
|
||||
// label_State.Text = rec;
|
||||
// textBox1_robotData.Text += rec + "\r\n";
|
||||
}
|
||||
/// <summary>
|
||||
/// 断开连接
|
||||
/// </summary>
|
||||
/// <param name="x"></param>
|
||||
private void OnSubscriberDisconnected(MqttClientDisconnectedEventArgs x)
|
||||
{
|
||||
OnLine_Mqtt = false;
|
||||
try
|
||||
{
|
||||
// textBox1_robotData.Text += "断开连接" + "\r\n";
|
||||
|
||||
var rec = x.ClientWasConnected.ToString();
|
||||
// textBox1_robotData.Text += rec + "\r\n";
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
// textBox1_robotData.Text += $"Message:{err.Message}\r\n\r\nStackTrace:{err.StackTrace}" + "\r\n";
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 接收信息
|
||||
/// </summary>
|
||||
/// <param name="x"></param>
|
||||
private void OnSubscriberMessageReceived(MqttApplicationMessageReceivedEventArgs x)
|
||||
{
|
||||
var recStr = x.ApplicationMessage.ConvertPayloadToString();
|
||||
ThreadPool.QueueUserWorkItem(LoadClientInfo, recStr);
|
||||
}
|
||||
/// <summary>
|
||||
/// 接收消息
|
||||
/// </summary>
|
||||
/// <param name="arg1"></param>
|
||||
/// <param name="arg2"></param>
|
||||
/// <param name="arg3"></param>
|
||||
private void ComplexClient_AcceptString(AppSession arg1, NetHandle arg2, string arg3)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(LoadClientInfo, (string)arg3);
|
||||
}
|
||||
|
||||
public static void SendMsg(string str)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (ConnectType)
|
||||
{
|
||||
case 1:
|
||||
complexClient.Send(1, str);
|
||||
break;
|
||||
case 2:
|
||||
//var s = $"{MqttTargetTopic}\\?";
|
||||
//var sendString = Regex.Split(str, s, RegexOptions.IgnoreCase);
|
||||
//TOBS??SCADAMain?DT|C_B_JointMoveTo|
|
||||
var topic = $"{str.Split('?')[2]}";
|
||||
var content = $"{str.Split('?')[3]}";
|
||||
Publish(topic, content);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
public static void SendMsg(string opName, string topic, string content)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch (ConnectType)
|
||||
{
|
||||
case 1:
|
||||
complexClient.Send(1, content);
|
||||
break;
|
||||
case 2:
|
||||
Publish(topic + opName, content);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ConnectService()
|
||||
{
|
||||
switch (ConnectType)
|
||||
{
|
||||
case 1:
|
||||
ClientConnection(IpPortSub);
|
||||
break;
|
||||
case 2:
|
||||
var _task = StartAsync(IpPortSub);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
103
DT_SCADA/Core/ScadaConfig.cs
Normal file
103
DT_SCADA/Core/ScadaConfig.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public class ToolInfo
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string TimeRated { get; set; }
|
||||
public string TimeUsed { get; set; }
|
||||
}
|
||||
|
||||
public class AxisInfo
|
||||
{
|
||||
public string AxisName { get; set; }
|
||||
public string AxisValue { get; set; }
|
||||
}
|
||||
|
||||
public class ParameterInfo
|
||||
{
|
||||
public string ParameterName { get; set; }
|
||||
public string ParameterValue { get; set; }
|
||||
}
|
||||
|
||||
public class AlarmInfo
|
||||
{
|
||||
public string AlarmCode { get; set; } = "83721";
|
||||
public string Alarm { get; set; } = "该吃饭了!";
|
||||
public string AlarmTime { get; set; } = DateTime.Now.ToString();
|
||||
}
|
||||
public class TipInfo
|
||||
{
|
||||
public string TipCode { get; set; } = "1123";
|
||||
public string Tip { get; set; } = "该睡觉了!";
|
||||
public string TipTime { get; set; } = DateTime.Now.ToString();
|
||||
}
|
||||
|
||||
public class DeviceInfo
|
||||
{
|
||||
public string order { get; set; } = "";
|
||||
public string Name { get; set; } = "";
|
||||
public string Id { get; set; } = "";
|
||||
public string Status { get; set; } = "";
|
||||
public string Program { get; set; } = "";
|
||||
public string Feed { get; set; } = "";
|
||||
public string Speed { get; set; } = "";
|
||||
public string Rapid { get; set; } = "";
|
||||
public string ProgramStatus { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 电流
|
||||
/// </summary>
|
||||
public string Current { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 电压
|
||||
/// </summary>
|
||||
public string Voltage { get; set; } = "";
|
||||
|
||||
public ToolInfo Tool { get; set; } = new ToolInfo();
|
||||
public List<AxisInfo> Axis { get; set; } = new List<AxisInfo>();
|
||||
|
||||
public List<ParameterInfo> OtherParameter { get; set; } = new List<ParameterInfo>();
|
||||
public List<AlarmInfo> Alarm { get; set; } = new List<AlarmInfo>();
|
||||
public List<TipInfo> Tip { get; set; } = new List<TipInfo>();
|
||||
|
||||
}
|
||||
|
||||
public class JointConfig
|
||||
{
|
||||
public string DeviceCode { get; set; }
|
||||
public string JointName { get; set; }
|
||||
public string ModelCode { get; set; }
|
||||
public string JointType { get; set; }
|
||||
public string Axis { get; set; }
|
||||
public string Flip { get; set; }
|
||||
public string Value { get; set; }
|
||||
public string ValueFactor { get; set; }
|
||||
public string Delta { get; set; }
|
||||
}
|
||||
|
||||
public class MachineToolConfig
|
||||
{
|
||||
public string Enable { get; set; }
|
||||
public string Type { get; set; }
|
||||
public string ConnectStr { get; set; }
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string DataTimeInterval { get; set; }
|
||||
public string AxesTimeInterval { get; set; }
|
||||
public List<JointConfig> Joints { get; set; }
|
||||
public string TagID_Clamp { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class ScadaConfig
|
||||
{
|
||||
public List<MachineToolConfig> MachineTool { get; set; }
|
||||
}
|
||||
}
|
||||
67
DT_SCADA/Core/SendProtocol.cs
Normal file
67
DT_SCADA/Core/SendProtocol.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using Newtonsoft.Json;
|
||||
using Opc.Ua;
|
||||
using OpcBasic;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 01
|
||||
/// </summary>
|
||||
/// <param name="opName"></param>
|
||||
/// <param name="tagID"></param>
|
||||
/// <param name="tagValue"></param>
|
||||
public static void S_C_B_TagIDTrigger(string opName, string tagID, string tagValue)
|
||||
{
|
||||
SendMsg(MesServer_SendProtocol_Tag + "{\"DeviceCode\":\"" + opName + "\",\"TagID\":\"" + tagID + "\",\"TagValue\":\"" + tagValue + "\"}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 02
|
||||
/// </summary>
|
||||
/// <param name="joints"></param>
|
||||
/// <returns></returns>
|
||||
public static string Move_Joint(List<JointConfig> joints)
|
||||
{
|
||||
var sendStr = MesServer_SendProtocol_Joint + JsonConvert.SerializeObject(joints);
|
||||
return sendStr;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 11
|
||||
/// </summary>
|
||||
/// <param name="tagValue"></param>
|
||||
public static void S_C_B_Info_Fast(List<JointConfig> tagValue)
|
||||
{
|
||||
SendMsg(MesServer_SendProtocol_Info_Fast + JsonConvert.SerializeObject(tagValue));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 12
|
||||
/// </summary>
|
||||
/// <param name="tagValue"></param>
|
||||
public static void S_C_B_Info_Slow(Param_Slow tagValue)
|
||||
{
|
||||
SendMsg(MesServer_SendProtocol_Info_Slow + JsonConvert.SerializeObject(tagValue));
|
||||
}
|
||||
|
||||
|
||||
public static string Make_DeviceInfo(List<DeviceInfo> di)
|
||||
{
|
||||
var sendStr = MesServer_SendProtocol_DeviceInfo + JsonConvert.SerializeObject(di);
|
||||
return sendStr;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
466
DT_SCADA/Core/TagTypeCodeID.cs
Normal file
466
DT_SCADA/Core/TagTypeCodeID.cs
Normal file
@@ -0,0 +1,466 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
///1 X WorkStart 2 工件到位(PLC) 工件到位。托盘到达工位,并且托盘上有工件。
|
||||
///2 X RepairPartStatusPLC 3 RepairPartStatusPLC 备用
|
||||
///3 STRING RepairPathString 4 RepairPathString "工位返修字符串(121211112222111),前2位是西门子字符串格式,第一位是总长度,第二位是实际长度"
|
||||
///4 X EngineTypeGetOverMES 5 传递机型(MES) MES传递总成信息给PLC(上线工位)
|
||||
///5 X PartPalletGoOver 6 PartPalletGoOver 上线工位。0:正常工作;1:空托盘放行,PLC读取到此标志不走申请上线逻辑。
|
||||
///6 X MaterialVerifyOver 7 MaterialVerifyOver MES保存完质量数据,物料数据等与PLC信号交互完成后通知PLC,所以工步都完成,才可以放行工件,正常工作时工件放行的必要条件。
|
||||
///7 X FalseGo 8 FalseGo 按MES界面[不合格放行]按钮,MES发送此信号。操作者判断工件不合格,通知设备,按不合格方式放行工件,工件流转到返修下线工位后,返修下线。MES工作完成MES0.3=1,MES合格放行MES0.5=0,MES0.4=1
|
||||
///8 INT EngineTypeID 9 EngineTypeID MES发动机机型标志(必须PLC)
|
||||
///9 STRING EngineID 10 EngineID MES发动机编号(必须PLC)
|
||||
///10 STRING EngineType 11 机型(MES) MES发动机机型(必须PLC)
|
||||
///11 X PartPalletStatus 13 PartPalletStatus MES激发变量托盘到位离开(必须PLC)
|
||||
///12 X HeartBeatPLC 14 HeartBeatPLC 心跳处理:PLC收到MES心跳信号后,PLC延时5秒后,数值取反再写回PLC,写回PLC开始计时,如果5秒钟MES无反馈报通讯故障。
|
||||
///13 X HeartBeatMIS 15 HeartBeatMIS 间隔时间5S,心跳处理。收到PLC心跳信号后,MES按原值回写。PLC收到MES信号后延时5秒,取反写入,以此循环。
|
||||
///14 X TargetTimeRead 16 TargetTimeRead MES允许可读工位运行时间
|
||||
///15 Int MachineTargetTime 17 MachineTargetTime 目标运行时间
|
||||
///16 Int MachineActualTime 18 MachineActualTime 实际运行时间
|
||||
///17 X MesRead 19 允许保存(PLC) 质量数据可以读数据
|
||||
///18 X MesReadOver 20 保存完成(MES) MES保存完数据(必须MIS)
|
||||
///19 INT QualityMask 21 合格标志(PLC) 质量数据工位合格标志0:没有工作;1:合格 ;2 :不合格(必须PLC)
|
||||
///20 B PalletInfo 22 PalletInfo 0空托盘,1合格件,2不合格件
|
||||
///21 INT RepairStatusPLC 23 RepairStatusPLC 0正常件,1返修件
|
||||
///22 INT OrderNo 24 订单号(MES) 订单号(MES)
|
||||
///23 X StorageNo 25 库位号(MES) 库位号(MES)
|
||||
///24 X AllowPass 26 允许放行(MES) 允许放行
|
||||
///25 X PartLoadFinish 27 PartLoadFinish PartLoadFinish
|
||||
///26 X Reserved_7 28 Reserved_7 备用
|
||||
///27 X Reserved_8 29 Reserved_8 备用
|
||||
///28 X Reserved_9 30 Reserved_9 备用
|
||||
///29 X Reserved_10 31 Reserved_10 备用
|
||||
///30 X Reserved_11 32 Reserved_11 备用
|
||||
///31 X Reserved_12 33 Reserved_12 备用
|
||||
///32 X Reserved_13 34 Reserved_13 备用
|
||||
///33 X Reserved_14 35 Reserved_14 备用
|
||||
///34 Int PLCSPareint1 36 PLCSPareint1 备用
|
||||
///35 Int PLCSPareint2 37 PLCSPareint2 备用
|
||||
///36 Int PLCSPareint3 38 PLCSPareint3 备用
|
||||
///37 STRING PLCSarestring1 39 PLCSarestring1 备用
|
||||
///38 STRING PLCSarestring2 40 PLCSarestring2 备用
|
||||
///39 STRING MarkID 42 MarkID 机体打标号(MES)前2位是西门子字符串格式,第一位是总长度,第二位是实际长度
|
||||
///40 X PartLoad 43 PartLoad 上线工位,PLC向MES申请总成编号。收到该信号后,MES将机型标志(DBB22 ~23)、总成号(DBB24 ~63)、总成机型DBB64 ~103写入PLC。之后MES通过信号“传递机型(DBX0.1)”通知PLC。
|
||||
///41 X EngineTypeGetOverPLC 44 传递机型(PLC) PLC将机型标志(DBB50…51)、工件编号(DBB52…101)、产品型号(DBB102…187)、托盘编号(DBB188…189)准备完毕后,通知MES。
|
||||
///42 X PartLoadOK 48 PartLoadOK 备用
|
||||
///43 X Reserved_18 49 Reserved_18 备用
|
||||
///44 X PalletDown 50 PalletDown 暂时保留,项目未使用
|
||||
///45 X ConfirmOkGo 51 ConfirmOkGo 按MES界面[合格放行]按钮,MES发送此信号。操作者判断工件合格,通知设备,工件按合格方式放行工件。MES工作完成MES0.3=1,MES合格放行MES0.5=1,MES0.4=0
|
||||
///46 X ResetDevice 52 ResetDevice 针对手动工位,无HMI,需要复位设备在MES页面操作。
|
||||
///47 X UnloadCompleted 53 UnloadCompleted 暂时保留,项目未使用
|
||||
///48 X MachineTime_ReadOver 54 MachineTime_ReadOver 备用
|
||||
///49 X Reserved_19 58 Reserved_19 备用
|
||||
///50 X FixOK 59 FixOK 手动拧紧工位,单工步螺栓拧紧完成,通知PC读取数据。
|
||||
///51 X Reserved_21 61 Reserved_21 备用
|
||||
///52 X Reserved_22 62 Reserved_22 备用
|
||||
///53 X Reserved_23 63 Reserved_23 备用
|
||||
///54 X Reserved_24 64 Reserved_24 备用
|
||||
///55 X Reserved_25 65 Reserved_25 备用
|
||||
///56 X FixAllow 66 FixAllow "设备工作的必须信号,对于有物料验证的工位,MES验证完成给出此信号,对于无物料验证工位,MES直接给出此信号。"
|
||||
///57 X FixOver 67 FixOver 用于手动拧紧且有质量数据工位。通知设备当前工步拧紧螺钉工作结束。
|
||||
///58 X MatchingCompleted 68 MatchingCompleted 分线上总线,匹配成功是1;不成功是0。
|
||||
///59 X Match 69 Match 分线上总线,匹配成功是1;不成功是0。
|
||||
///60 X Reserved_2 70 Reserved_2 备用
|
||||
///61 X IsAutoGetEngineID 71 IsAutoGetEngineID 自动手动申请工件编号。0是自动方式;1:手动方式。暂时保留,生成流水号方式是在数据库中实现的
|
||||
///62 X RepairUplineMES 72 RepairUplineMES 上线清空MOBY(针对上线工位):通知PLC从新开始申请上线流程
|
||||
///63 INT EngineTypeID_MES 73 机型代码(MES) MES发动机机型标志(必须MES)
|
||||
///64 STRING EngineID_MES 74 工件编号(MES) MES发动机编号(必须MES)
|
||||
///65 STRING EngineType_MES 75 EngineType_MES MES发动机机型(必须MES)
|
||||
///66 X Reserved_20 76 Reserved_20 备用
|
||||
///67 INT ProcessCode 77 ProcessCode 手动拧紧工位:由MES通知PLC拧紧序号
|
||||
///68 B OnLineState 79 OnLineState 通过线体工位PC实现下达工位工作状态:工位有三种状态:在线、离线、屏蔽。在线:0正常状态,实现正常功能。1离线:设备脱离MES工作,进入不交互模式。
|
||||
///69 INT PartPalletCode 80 托盘号(MES) 托盘编号(B5A)
|
||||
///70 INT BoltCode 88 BoltCode 手动拧紧工位:指导PLC所用套筒
|
||||
///71 INT RepairStatus 93 RepairStatus "0正常件,1返修件。对于上线工位MES给出是正常上线还是返修上线,返修路径"
|
||||
///72 DInt Reserved_15 110 Reserved_15 备用
|
||||
///73 DInt Reserved_16 111 Reserved_16 备用
|
||||
///74 B Reserved_17 112 Reserved_17 备用
|
||||
///75 INT SPareint1 113 SPareint1 备用int1
|
||||
///76 INT SPareint2 114 SPareint2 备用int2
|
||||
///77 INT SPareint3 115 SPareint3 备用int3
|
||||
///78 STRING Sparestring1 116 Sparestring1 备用字符串1
|
||||
///79 STRING Sparestring2 117 Sparestring2 备用字符串2
|
||||
///80 X MachineStatusPutOn 1000 机床上电(PLC) 机床上电(必须PLC)
|
||||
///81 X MachineStatusWorkOn 1001 循环开始(PLC) 循环开始(必须PLC)
|
||||
///82 X MachineStatusAlarm 1002 设备报警(PLC) 机床故障(必须PLC)
|
||||
///83 X MachineStatusNoPart 1003 MachineStatusNoPart 上料无件(必须PLC)
|
||||
///84 X MachineStatusBlock 1004 MachineStatusBlock 下料堵塞(必须PLC)
|
||||
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
/// <summary>
|
||||
/// 这是变量类型代码的配置,几乎是不变的
|
||||
/// 请不要随意修改,为了保证变量版本同一,并且方便维护,请联系发行人修改!
|
||||
/// 请注意,此修改为全局修改!
|
||||
/// </summary>
|
||||
public enum EnumTagTypeCodeID
|
||||
{
|
||||
/// <summary>
|
||||
/// 工件到位(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// 解释:托盘到达工位,并且托盘上有工件。
|
||||
/// </summary>
|
||||
WorkStart = 2,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
RepairPartStatusPLC = 3,
|
||||
/// <summary>
|
||||
/// 工位返修字符串
|
||||
/// 变量类型:String
|
||||
/// 解释:工位返修字符串
|
||||
/// </summary>
|
||||
RepairPathString = 4,
|
||||
/// <summary>
|
||||
/// 传递机型(MES)
|
||||
/// 变量类型:Bool
|
||||
/// 解释:MES传递总成信息给PLC(上线工位)
|
||||
/// </summary>
|
||||
EngineTypeGetOverMES = 5,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PartPalletGoOver = 6,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
MaterialVerifyOver = 7,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
FalseGo = 8,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
EngineTypeID = 9,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
EngineID = 10,
|
||||
/// <summary>
|
||||
/// 机型(MES)
|
||||
/// 变量类型:String
|
||||
/// </summary>
|
||||
EngineType = 11,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PartPalletStatus = 13,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
HeartBeatPLC = 14,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
HeartBeatMIS = 15,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
TargetTimeRead = 16,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
MachineTargetTime = 17,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
MachineActualTime = 18,
|
||||
/// <summary>
|
||||
/// 允许保存(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MesRead = 19,
|
||||
/// <summary>
|
||||
/// 保存完成(MES)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MesReadOver = 20,
|
||||
/// <summary>
|
||||
/// 合格标志(PLC)
|
||||
/// 变量类型:Int
|
||||
/// </summary>
|
||||
QualityMask = 21,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PalletInfo = 22,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
RepairStatusPLC = 23,
|
||||
/// <summary>
|
||||
/// 订单号(MES)
|
||||
/// 变量类型:Int
|
||||
/// </summary>
|
||||
OrderNo = 24,
|
||||
/// <summary>
|
||||
/// 库位号(MES)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
StorageNo = 25,
|
||||
/// <summary>
|
||||
/// 允许放行(MES)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
AllowPass = 26,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PartLoadFinish = 27,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_7 = 28,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_8 = 29,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_9 = 30,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_10 = 31,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_11 = 32,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_12 = 33,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_13 = 34,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_14 = 35,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PLCSPareint1 = 36,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PLCSPareint2 = 37,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PLCSPareint3 = 38,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PLCSarestring1 = 39,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PLCSarestring2 = 40,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
MarkID = 42,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PartLoad = 43,
|
||||
/// <summary>
|
||||
/// 传递机型(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
EngineTypeGetOverPLC = 44,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PartLoadOK = 48,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_18 = 49,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
PalletDown = 50,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
ConfirmOkGo = 51,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
ResetDevice = 52,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
UnloadCompleted = 53,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
MachineTime_ReadOver = 54,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_19 = 58,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
FixOK = 59,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_21 = 61,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_22 = 62,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_23 = 63,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_24 = 64,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_25 = 65,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
FixAllow = 66,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
FixOver = 67,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
MatchingCompleted = 68,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Match = 69,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_2 = 70,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
IsAutoGetEngineID = 71,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
RepairUplineMES = 72,
|
||||
/// <summary>
|
||||
/// 机型代码(MES)
|
||||
/// 变量类型:Int
|
||||
/// </summary>
|
||||
EngineTypeID_MES = 73,
|
||||
/// <summary>
|
||||
/// 工件编号(MES)
|
||||
/// 变量类型:String
|
||||
/// </summary>
|
||||
EngineID_MES = 74,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
EngineType_MES = 75,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_20 = 76,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
ProcessCode = 77,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
OnLineState = 79,
|
||||
/// <summary>
|
||||
/// 托盘号(MES)
|
||||
/// 变量类型:Int
|
||||
/// </summary>
|
||||
PartPalletCode = 80,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
BoltCode = 88,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
RepairStatus = 93,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_15 = 110,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_16 = 111,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Reserved_17 = 112,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
SPareint1 = 113,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
SPareint2 = 114,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
SPareint3 = 115,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Sparestring1 = 116,
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
Sparestring2 = 117,
|
||||
/// <summary>
|
||||
/// 机床上电(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MachineStatusPutOn = 1000,
|
||||
/// <summary>
|
||||
/// 循环开始(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MachineStatusWorkOn = 1001,
|
||||
/// <summary>
|
||||
/// 设备报警(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MachineStatusAlarm = 1002,
|
||||
/// <summary>
|
||||
/// 上料无件(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MachineStatusNoPart = 1003,
|
||||
/// <summary>
|
||||
/// 下料堵塞(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
MachineStatusBlock = 1004,
|
||||
/// <summary>
|
||||
/// 下料堵塞(PLC)
|
||||
/// 变量类型:Bool
|
||||
/// </summary>
|
||||
havePart70 = 10003,
|
||||
}
|
||||
}
|
||||
12890
DT_SCADA/Core/fwlib32.cs
Normal file
12890
DT_SCADA/Core/fwlib32.cs
Normal file
File diff suppressed because it is too large
Load Diff
1271
DT_SCADA/F_RobotMonitor.Designer.cs
generated
Normal file
1271
DT_SCADA/F_RobotMonitor.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
346
DT_SCADA/F_RobotMonitor.cs
Normal file
346
DT_SCADA/F_RobotMonitor.cs
Normal file
@@ -0,0 +1,346 @@
|
||||
using MesWork;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DT_YQJF_DC_SLN
|
||||
{
|
||||
public partial class F_RobotMonitor : Form
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string Curr_RobotKey = "";
|
||||
public string Curr_RobotId = "";
|
||||
string[] AxisString = new string[] { "x", "y", "z" };
|
||||
string[] FilpString = new string[] { "1", "-1" };
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
List<JointConfig> jointsCurrent = new List<JointConfig>();
|
||||
List<DiyJoint> diyJoint = new List<DiyJoint>();
|
||||
|
||||
public F_RobotMonitor()
|
||||
{
|
||||
InitializeComponent();
|
||||
InitComBoxVale();
|
||||
foreach (var item in MesWorkForm.dc_Robot.Keys)
|
||||
{
|
||||
lb_Robot.Items.Add(item);
|
||||
}
|
||||
|
||||
if (MesWorkForm.IsDemoMesServer == 1)
|
||||
{
|
||||
panel_Debug_Btn.Visible = true;
|
||||
panel_Debug_Txt.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
panel_Debug_Btn.Visible = false;
|
||||
panel_Debug_Txt.Visible = false;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void lb_Robot_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
label19_currentId.Text = "";
|
||||
Curr_RobotId = "";
|
||||
var selectedItem = lb_Robot.SelectedItem;
|
||||
if (selectedItem == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
jointsCurrent = new List<JointConfig>();
|
||||
Curr_RobotKey = selectedItem.ToString();
|
||||
GetRobot(Curr_RobotKey, out string type, out string robotCode, out object robotObj);
|
||||
double[] j = null;
|
||||
|
||||
switch (type.ToUpper())
|
||||
{
|
||||
case "ROBOTFANUC":
|
||||
var fanuc = (B_Robot_Fanuc)robotObj;
|
||||
j = fanuc.j;
|
||||
label19_currentId.Text = fanuc.Id;
|
||||
Curr_RobotId = fanuc.Id;
|
||||
break;
|
||||
case "ROBOTKUKA":
|
||||
var kuka = (B_Robot_Kuka)robotObj;
|
||||
jointsCurrent = kuka.Joints;
|
||||
label19_currentId.Text = kuka.Id;
|
||||
Curr_RobotId = kuka.Id;
|
||||
j = kuka.j;
|
||||
break;
|
||||
case "ROBOTABB":
|
||||
var abb = (B_Robot_Abb)robotObj;
|
||||
jointsCurrent = abb.Joints;
|
||||
label19_currentId.Text = abb.Id;
|
||||
Curr_RobotId = abb.Id;
|
||||
j = abb.j;
|
||||
break;
|
||||
case "ROBOTEPSON":
|
||||
var espon = (B_Robot_Espon)robotObj;
|
||||
jointsCurrent = espon.Joints;
|
||||
label19_currentId.Text = espon.Id;
|
||||
Curr_RobotId = espon.Id;
|
||||
j = espon.j;
|
||||
break;
|
||||
case "CNCEDM":
|
||||
var edm = (B_Cnc_Edm)robotObj;
|
||||
jointsCurrent = edm.Joints;
|
||||
label19_currentId.Text = edm.Id;
|
||||
Curr_RobotId = edm.Id;
|
||||
j = edm.machine_j;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
button1.Enabled = true;
|
||||
button2save.Enabled = true;
|
||||
|
||||
ShowJoint(j);
|
||||
ShowJointDT(jointsCurrent);
|
||||
|
||||
txt_Detail.Text = JObject.Parse(JsonConvert.SerializeObject(robotObj)).ToString();
|
||||
|
||||
}
|
||||
|
||||
private void GetRobot(string robotKey,out string type, out string robotCode,out object robotObj)
|
||||
{
|
||||
type = "";
|
||||
robotCode = "";
|
||||
robotObj = null;
|
||||
|
||||
try
|
||||
{
|
||||
type = robotKey.Split('|')[0];
|
||||
robotCode = robotKey.Split('|')[1];
|
||||
robotObj = MesWorkForm.dc_Robot[robotKey];
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
private void InitComBoxVale() {
|
||||
|
||||
foreach (string item in AxisString)
|
||||
{
|
||||
comboBox1_Axis_J1.Items.Add(item);
|
||||
comboBox1_Axis_J2.Items.Add(item);
|
||||
comboBox1_Axis_J3.Items.Add(item);
|
||||
comboBox1_Axis_J4.Items.Add(item);
|
||||
comboBox1_Axis_J5.Items.Add(item);
|
||||
comboBox1_Axis_J6.Items.Add(item);
|
||||
}
|
||||
foreach (string item in FilpString)
|
||||
{
|
||||
comboBox1_Flip_J1.Items.Add(item);
|
||||
comboBox1_Flip_J2.Items.Add(item);
|
||||
comboBox1_Flip_J3.Items.Add(item);
|
||||
comboBox1_Flip_J4.Items.Add(item);
|
||||
comboBox1_Flip_J5.Items.Add(item);
|
||||
comboBox1_Flip_J6.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void ShowJoint(double[] j)
|
||||
{
|
||||
txt_J1.Text = j[0].ToString();
|
||||
txt_J2.Text = j[1].ToString();
|
||||
txt_J3.Text = j[2].ToString();
|
||||
txt_J4.Text = j[3].ToString();
|
||||
txt_J5.Text = j[4].ToString();
|
||||
txt_J6.Text = j[5].ToString();
|
||||
txt_J7.Text = j[6].ToString();
|
||||
txt_J8.Text = j[7].ToString();
|
||||
txt_J9.Text = j[8].ToString();
|
||||
txt_J10.Text = j[9].ToString();
|
||||
txt_J11.Text = j[10].ToString();
|
||||
txt_J12.Text = j[11].ToString();
|
||||
}
|
||||
private void ShowJointDT(List<JointConfig> joints)
|
||||
{
|
||||
if (joints == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < joints.Count; i++)
|
||||
{
|
||||
diyJoint.Add(new DiyJoint()
|
||||
{
|
||||
Axis = joints[i].Axis,
|
||||
Delta = joints[i].Delta,
|
||||
Flip = joints[i].Flip,
|
||||
ModelCode = joints[i].ModelCode,
|
||||
});
|
||||
}
|
||||
comboBox1_Axis_J1.Text = joints[0].Axis.ToString();
|
||||
comboBox1_Axis_J2.Text = joints[1].Axis.ToString();
|
||||
comboBox1_Axis_J3.Text = joints[2].Axis.ToString();
|
||||
comboBox1_Axis_J4.Text = joints[3].Axis.ToString();
|
||||
comboBox1_Axis_J5.Text = joints[4].Axis.ToString();
|
||||
comboBox1_Axis_J6.Text = joints[5].Axis.ToString();
|
||||
|
||||
comboBox1_Flip_J1.Text = joints[0].Flip.ToString();
|
||||
comboBox1_Flip_J2.Text = joints[1].Flip.ToString();
|
||||
comboBox1_Flip_J3.Text = joints[2].Flip.ToString();
|
||||
comboBox1_Flip_J4.Text = joints[3].Flip.ToString();
|
||||
comboBox1_Flip_J5.Text = joints[4].Flip.ToString();
|
||||
comboBox1_Flip_J6.Text = joints[5].Flip.ToString();
|
||||
|
||||
numericUpDown_j1.Text = joints[0].Delta.ToString();
|
||||
numericUpDown_j2.Text = joints[1].Delta.ToString();
|
||||
numericUpDown_j3.Text = joints[2].Delta.ToString();
|
||||
numericUpDown_j4.Text = joints[3].Delta.ToString();
|
||||
numericUpDown_j5.Text = joints[4].Delta.ToString();
|
||||
numericUpDown_j6.Text = joints[5].Delta.ToString();
|
||||
|
||||
}
|
||||
|
||||
private void btn_Fill_Joint_Click(object sender, EventArgs e)
|
||||
{
|
||||
txt_Set_J1.Text = txt_J1.Text;
|
||||
txt_Set_J2.Text = txt_J2.Text;
|
||||
txt_Set_J3.Text = txt_J3.Text;
|
||||
txt_Set_J4.Text = txt_J4.Text;
|
||||
txt_Set_J5.Text = txt_J5.Text;
|
||||
txt_Set_J6.Text = txt_J6.Text;
|
||||
txt_Set_J7.Text = txt_J7.Text;
|
||||
txt_Set_J8.Text = txt_J8.Text;
|
||||
txt_Set_J9.Text = txt_J9.Text;
|
||||
txt_Set_J10.Text = txt_J10.Text;
|
||||
txt_Set_J11.Text = txt_J11.Text;
|
||||
txt_Set_J12.Text = txt_J12.Text;
|
||||
}
|
||||
private void btn_Submit_Click(object sender, EventArgs e)
|
||||
{
|
||||
var jSet = new double[12];
|
||||
jSet[0] = Convert.ToDouble(txt_Set_J1.Text);
|
||||
jSet[1] = Convert.ToDouble(txt_Set_J2.Text);
|
||||
jSet[2] = Convert.ToDouble(txt_Set_J3.Text);
|
||||
jSet[3] = Convert.ToDouble(txt_Set_J4.Text);
|
||||
jSet[4] = Convert.ToDouble(txt_Set_J5.Text);
|
||||
jSet[5] = Convert.ToDouble(txt_Set_J6.Text);
|
||||
jSet[6] = Convert.ToDouble(txt_Set_J7.Text);
|
||||
jSet[7] = Convert.ToDouble(txt_Set_J8.Text);
|
||||
jSet[8] = Convert.ToDouble(txt_Set_J9.Text);
|
||||
jSet[9] = Convert.ToDouble(txt_Set_J10.Text);
|
||||
jSet[10] = Convert.ToDouble(txt_Set_J11.Text);
|
||||
jSet[11] = Convert.ToDouble(txt_Set_J12.Text);
|
||||
|
||||
GetRobot(Curr_RobotKey, out string type, out string robotCode, out object robotObj);
|
||||
switch (type)
|
||||
{
|
||||
case "ROBOTFANUC":
|
||||
var fanuc = (B_Robot_Fanuc)robotObj;
|
||||
fanuc.jDemo = jSet;
|
||||
break;
|
||||
case "ROBOTKUKA":
|
||||
var kuka = (B_Robot_Kuka)robotObj;
|
||||
kuka.jDemo = jSet;
|
||||
break;
|
||||
case "ROBOTABB":
|
||||
var abb = (B_Robot_Abb)robotObj;
|
||||
abb.jDemo = jSet;
|
||||
break;
|
||||
case "ROBOTEPSON":
|
||||
var espon = (B_Robot_Espon)robotObj;
|
||||
espon.jDemo = jSet;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(Curr_RobotId == "")
|
||||
{
|
||||
MessageBox.Show("请选择机器人");
|
||||
}
|
||||
label19_apply.Text = "";
|
||||
try
|
||||
{
|
||||
jointsCurrent[0].Delta = numericUpDown_j1.Text;
|
||||
jointsCurrent[1].Delta = numericUpDown_j2.Text;
|
||||
jointsCurrent[2].Delta = numericUpDown_j3.Text;
|
||||
jointsCurrent[3].Delta = numericUpDown_j4.Text;
|
||||
jointsCurrent[4].Delta = numericUpDown_j5.Text;
|
||||
jointsCurrent[5].Delta = numericUpDown_j6.Text;
|
||||
|
||||
jointsCurrent[0].Axis = comboBox1_Axis_J1.Text;
|
||||
jointsCurrent[1].Axis = comboBox1_Axis_J2.Text;
|
||||
jointsCurrent[2].Axis = comboBox1_Axis_J3.Text;
|
||||
jointsCurrent[3].Axis = comboBox1_Axis_J4.Text;
|
||||
jointsCurrent[4].Axis = comboBox1_Axis_J5.Text;
|
||||
jointsCurrent[5].Axis = comboBox1_Axis_J6.Text;
|
||||
|
||||
jointsCurrent[0].Flip = comboBox1_Flip_J1.Text;
|
||||
jointsCurrent[1].Flip = comboBox1_Flip_J2.Text;
|
||||
jointsCurrent[2].Flip = comboBox1_Flip_J3.Text;
|
||||
jointsCurrent[3].Flip = comboBox1_Flip_J4.Text;
|
||||
jointsCurrent[4].Flip = comboBox1_Flip_J5.Text;
|
||||
jointsCurrent[5].Flip = comboBox1_Flip_J6.Text;
|
||||
label19_apply.Text = "应用成功!\r\n等待数据发送更新";
|
||||
}
|
||||
catch (Exception err )
|
||||
{
|
||||
label19_apply.Text = err.Message;
|
||||
}
|
||||
}
|
||||
|
||||
private void button2save_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Curr_RobotId == "")
|
||||
{
|
||||
MessageBox.Show("请选择机器人");
|
||||
}
|
||||
ScadaConfig scadaConfig = new ScadaConfig();
|
||||
scadaConfig.MachineTool = new List<MachineToolConfig>();
|
||||
for (int i = 0; i < MesWorkForm.scadaConfig.MachineTool.Count; i++)
|
||||
{
|
||||
MachineToolConfig machineToolConfig = MesWorkForm.scadaConfig.MachineTool[i];
|
||||
string Id = machineToolConfig.Id;
|
||||
if (Id == Curr_RobotId)
|
||||
{
|
||||
machineToolConfig.Joints = jointsCurrent;
|
||||
}
|
||||
scadaConfig.MachineTool.Add(machineToolConfig);
|
||||
}
|
||||
|
||||
string scadaConfigStr = JsonConvert.SerializeObject(scadaConfig);
|
||||
System.IO.File.WriteAllText(@"config.json", scadaConfigStr);
|
||||
MessageBox.Show("保存成功");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class DiyJoint
|
||||
{
|
||||
public string ModelCode { get; set; }
|
||||
public string Axis { get; set; }
|
||||
public string Flip { get; set; }
|
||||
public string Delta { get; set; }
|
||||
}
|
||||
}
|
||||
120
DT_SCADA/F_RobotMonitor.resx
Normal file
120
DT_SCADA/F_RobotMonitor.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
257
DT_SCADA/JG.Designer.cs
generated
Normal file
257
DT_SCADA/JG.Designer.cs
generated
Normal file
@@ -0,0 +1,257 @@
|
||||
using System.Windows.Forms;
|
||||
using global::Init;
|
||||
namespace MesWork
|
||||
{
|
||||
partial class MesWorkForm : PlcLinkForm
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
|
||||
}
|
||||
|
||||
#region Windows 窗体设计器生成的代码
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MesWorkForm));
|
||||
this.panel_Btn = new System.Windows.Forms.Panel();
|
||||
this.timer_Status = new System.Windows.Forms.Timer(this.components);
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label41 = new System.Windows.Forms.Label();
|
||||
this.label_Count = new System.Windows.Forms.Label();
|
||||
this.timer_ShowCount = new System.Windows.Forms.Timer(this.components);
|
||||
this.pb_OnLine_SQL = new System.Windows.Forms.PictureBox();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.panel_Menu = new System.Windows.Forms.Panel();
|
||||
this.label_ExitSys = new System.Windows.Forms.Label();
|
||||
this.label_Monitor_PLC = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.pb_OnLine_MQTT = new System.Windows.Forms.PictureBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.pb_OnLine_PLC_1 = new System.Windows.Forms.PictureBox();
|
||||
this.richTextBox1_log = new System.Windows.Forms.RichTextBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.dateTimePicker1_start = new System.Windows.Forms.DateTimePicker();
|
||||
this.dateTimePicker1_end = new System.Windows.Forms.DateTimePicker();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_OnLine_SQL)).BeginInit();
|
||||
this.panel_Menu.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_OnLine_MQTT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_OnLine_PLC_1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel_Btn
|
||||
//
|
||||
resources.ApplyResources(this.panel_Btn, "panel_Btn");
|
||||
this.panel_Btn.Name = "panel_Btn";
|
||||
this.panel_Btn.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.panel_Btn_MouseDoubleClick);
|
||||
//
|
||||
// timer_Status
|
||||
//
|
||||
this.timer_Status.Enabled = true;
|
||||
this.timer_Status.Interval = 500;
|
||||
this.timer_Status.Tick += new System.EventHandler(this.timer_Status_Tick);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// label41
|
||||
//
|
||||
resources.ApplyResources(this.label41, "label41");
|
||||
this.label41.Name = "label41";
|
||||
//
|
||||
// label_Count
|
||||
//
|
||||
resources.ApplyResources(this.label_Count, "label_Count");
|
||||
this.label_Count.Name = "label_Count";
|
||||
//
|
||||
// timer_ShowCount
|
||||
//
|
||||
this.timer_ShowCount.Enabled = true;
|
||||
this.timer_ShowCount.Interval = 500;
|
||||
this.timer_ShowCount.Tick += new System.EventHandler(this.timer_ShowCount_Tick);
|
||||
//
|
||||
// pb_OnLine_SQL
|
||||
//
|
||||
this.pb_OnLine_SQL.Image = global::SCADA_JG.Properties.Resources.断开状态;
|
||||
resources.ApplyResources(this.pb_OnLine_SQL, "pb_OnLine_SQL");
|
||||
this.pb_OnLine_SQL.Name = "pb_OnLine_SQL";
|
||||
this.pb_OnLine_SQL.TabStop = false;
|
||||
//
|
||||
// label11
|
||||
//
|
||||
resources.ApplyResources(this.label11, "label11");
|
||||
this.label11.Name = "label11";
|
||||
//
|
||||
// panel_Menu
|
||||
//
|
||||
this.panel_Menu.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.panel_Menu.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panel_Menu.Controls.Add(this.label_ExitSys);
|
||||
this.panel_Menu.Controls.Add(this.label_Monitor_PLC);
|
||||
resources.ApplyResources(this.panel_Menu, "panel_Menu");
|
||||
this.panel_Menu.Name = "panel_Menu";
|
||||
this.panel_Menu.Paint += new System.Windows.Forms.PaintEventHandler(this.panel_Menu_Paint);
|
||||
//
|
||||
// label_ExitSys
|
||||
//
|
||||
resources.ApplyResources(this.label_ExitSys, "label_ExitSys");
|
||||
this.label_ExitSys.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label_ExitSys.Name = "label_ExitSys";
|
||||
this.label_ExitSys.Click += new System.EventHandler(this.label_ExitSys_Click);
|
||||
//
|
||||
// label_Monitor_PLC
|
||||
//
|
||||
resources.ApplyResources(this.label_Monitor_PLC, "label_Monitor_PLC");
|
||||
this.label_Monitor_PLC.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label_Monitor_PLC.Name = "label_Monitor_PLC";
|
||||
this.label_Monitor_PLC.Click += new System.EventHandler(this.label_Monitor_PLC_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// pb_OnLine_MQTT
|
||||
//
|
||||
this.pb_OnLine_MQTT.Image = global::SCADA_JG.Properties.Resources.断开状态;
|
||||
resources.ApplyResources(this.pb_OnLine_MQTT, "pb_OnLine_MQTT");
|
||||
this.pb_OnLine_MQTT.Name = "pb_OnLine_MQTT";
|
||||
this.pb_OnLine_MQTT.TabStop = false;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
//
|
||||
// pb_OnLine_PLC_1
|
||||
//
|
||||
this.pb_OnLine_PLC_1.Image = global::SCADA_JG.Properties.Resources.断开状态;
|
||||
resources.ApplyResources(this.pb_OnLine_PLC_1, "pb_OnLine_PLC_1");
|
||||
this.pb_OnLine_PLC_1.Name = "pb_OnLine_PLC_1";
|
||||
this.pb_OnLine_PLC_1.TabStop = false;
|
||||
//
|
||||
// richTextBox1_log
|
||||
//
|
||||
resources.ApplyResources(this.richTextBox1_log, "richTextBox1_log");
|
||||
this.richTextBox1_log.Name = "richTextBox1_log";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
resources.ApplyResources(this.button1, "button1");
|
||||
this.button1.Name = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// button2
|
||||
//
|
||||
resources.ApplyResources(this.button2, "button2");
|
||||
this.button2.Name = "button2";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
resources.ApplyResources(this.button3, "button3");
|
||||
this.button3.Name = "button3";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// dateTimePicker1_start
|
||||
//
|
||||
resources.ApplyResources(this.dateTimePicker1_start, "dateTimePicker1_start");
|
||||
this.dateTimePicker1_start.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
|
||||
this.dateTimePicker1_start.Name = "dateTimePicker1_start";
|
||||
//
|
||||
// dateTimePicker1_end
|
||||
//
|
||||
resources.ApplyResources(this.dateTimePicker1_end, "dateTimePicker1_end");
|
||||
this.dateTimePicker1_end.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
|
||||
this.dateTimePicker1_end.Name = "dateTimePicker1_end";
|
||||
//
|
||||
// MesWorkForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.dateTimePicker1_end);
|
||||
this.Controls.Add(this.dateTimePicker1_start);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.richTextBox1_log);
|
||||
this.Controls.Add(this.pb_OnLine_SQL);
|
||||
this.Controls.Add(this.label11);
|
||||
this.Controls.Add(this.label41);
|
||||
this.Controls.Add(this.label_Count);
|
||||
this.Controls.Add(this.pb_OnLine_MQTT);
|
||||
this.Controls.Add(this.pb_OnLine_PLC_1);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.panel_Btn);
|
||||
this.Controls.Add(this.panel_Menu);
|
||||
this.Controls.Add(this.label2);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "MesWorkForm";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MesWorkForm_FormClosing);
|
||||
this.Load += new System.EventHandler(this.MesWorkForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_OnLine_SQL)).EndInit();
|
||||
this.panel_Menu.ResumeLayout(false);
|
||||
this.panel_Menu.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_OnLine_MQTT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pb_OnLine_PLC_1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private Panel panel_Btn;
|
||||
private Timer timer_Status;
|
||||
private Label label2;
|
||||
private Label label41;
|
||||
private Label label_Count;
|
||||
private Timer timer_ShowCount;
|
||||
private PictureBox pb_OnLine_SQL;
|
||||
private Label label11;
|
||||
private FolderBrowserDialog folderBrowserDialog1;
|
||||
private Panel panel_Menu;
|
||||
private Label label_ExitSys;
|
||||
private Label label_Monitor_PLC;
|
||||
private Label label3;
|
||||
private PictureBox pb_OnLine_MQTT;
|
||||
private Label label4;
|
||||
private PictureBox pb_OnLine_PLC_1;
|
||||
private RichTextBox richTextBox1_log;
|
||||
private Button button1;
|
||||
private Button button2;
|
||||
private Button button3;
|
||||
private DateTimePicker dateTimePicker1_start;
|
||||
private DateTimePicker dateTimePicker1_end;
|
||||
}
|
||||
}
|
||||
|
||||
427
DT_SCADA/JG.cs
Normal file
427
DT_SCADA/JG.cs
Normal file
@@ -0,0 +1,427 @@
|
||||
namespace MesWork
|
||||
{
|
||||
using DT_YQJF_DC_SLN;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Net;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Newtonsoft.Json;
|
||||
using System.Security.Cryptography;
|
||||
using ABB.Robotics.Controllers.Configuration;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Web;
|
||||
using System.Collections.Generic;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System.Security.Policy;
|
||||
using System.Data.SqlClient;
|
||||
using MW_Log;
|
||||
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
InitServer initServer = null;
|
||||
|
||||
public static int msgCount = 0;
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public MesWorkForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
CheckForIllegalCrossThreadCalls = false;
|
||||
this.WindowState = FormWindowState.Minimized;
|
||||
LoggerHelper.ShowMsg += MyLogHelper_LogCommit;
|
||||
|
||||
// panel_Menu.Visible = true;
|
||||
|
||||
}
|
||||
private void MesWorkForm_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
|
||||
{
|
||||
e.Cancel = true;
|
||||
}
|
||||
private void label_Monitor_Robot_Click(object sender, EventArgs e)
|
||||
{
|
||||
new F_RobotMonitor().Show(this);
|
||||
}
|
||||
private void label_Monitor_PLC_Click(object sender, EventArgs e)
|
||||
{
|
||||
new OpcForm(IsDemoMesServer).Show(this);
|
||||
}
|
||||
private async void label_ExitSys_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (MessageBox.Show("是否确认退出程序?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
|
||||
{
|
||||
CloseDeviceConn();
|
||||
DisConnect();
|
||||
await DisConnectService();
|
||||
System.Diagnostics.Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
}
|
||||
private void panel_Btn_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
panel_Menu.Visible = !!!panel_Menu.Visible;
|
||||
}
|
||||
|
||||
private void timer_Status_Tick(object sender, EventArgs e)
|
||||
{
|
||||
timer_Status.Enabled = false;
|
||||
Show_OnLineState();
|
||||
timer_Status.Enabled = true;
|
||||
}
|
||||
|
||||
private void Show_OnLineState()
|
||||
{
|
||||
|
||||
OnLineState_C(pb_OnLine_PLC_1, MesWorkForm.OnLine_PLC_1);
|
||||
OnLineState_C(pb_OnLine_SQL, MesWorkForm.OnLine_SQL);
|
||||
OnLineState_C(pb_OnLine_MQTT, MesWorkForm.OnLine_Mqtt);
|
||||
|
||||
}
|
||||
|
||||
private void OnLineState_C(PictureBox pb, bool onLine)
|
||||
{
|
||||
pb.Image = onLine ? global::SCADA_JG.Properties.Resources.连接状态
|
||||
: global::SCADA_JG.Properties.Resources.断开状态;
|
||||
}
|
||||
|
||||
private void timer_ShowCount_Tick(object sender, EventArgs e)
|
||||
{
|
||||
timer_ShowCount.Enabled = false;
|
||||
label_Count.Text = MesWorkForm.taskSql.Count.ToString();
|
||||
timer_ShowCount.Enabled = true;
|
||||
}
|
||||
public static void getCharDataToken()
|
||||
{
|
||||
//while (true)
|
||||
//{
|
||||
|
||||
DateTime startTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||
long timestamp1 = (long)(DateTime.UtcNow - startTime).TotalMilliseconds;
|
||||
//if (charDataTokenTime < timestamp1)
|
||||
//{
|
||||
try
|
||||
{
|
||||
string time = DateTime.Now.ToString("yyyyMMddHHmmss");
|
||||
string newGuid = Guid.NewGuid().ToString("N").Substring(0, 5);
|
||||
long timestamp = (long)(DateTime.UtcNow - startTime).TotalMilliseconds;
|
||||
string reqId = "req_AMES001 _" + time + "_" + newGuid;
|
||||
string authKeyStr = GetMd5Hash(SK + salt + timestamp);
|
||||
|
||||
object reqParams = new { authKey = authKeyStr };
|
||||
//准备请求的数据 反序列化
|
||||
string bodydata = JsonConvert.SerializeObject(reqParams);
|
||||
|
||||
string retString;
|
||||
string url = Url_WebApi_Char + "/openApi/auth/getAuthToken/";
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.Headers.Add("reqId", reqId);
|
||||
request.Headers.Add("timestamp", timestamp.ToString());
|
||||
request.Headers.Add("appKey", AK);
|
||||
//request.Headers.Add("lmt-auth-token", GetMd5Hash(originalString));
|
||||
|
||||
request.Method = "POST";
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(bodydata);
|
||||
request.Accept = "*/*";
|
||||
request.ContentType = "application/json";
|
||||
request.ContentLength = bytes.Length;
|
||||
request.Timeout = 10000;
|
||||
// 准备请求体
|
||||
Stream myResponseStream = request.GetRequestStream();
|
||||
myResponseStream.Write(bytes, 0, bytes.Length);
|
||||
//发送webapi请求 等待相应
|
||||
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
|
||||
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
|
||||
retString = myStreamReader.ReadToEnd();
|
||||
MW_Log.LoggerHelper.Info("获取_Token", retString);
|
||||
// 序列化响应内容
|
||||
CharData_Token mrh = JsonConvert.DeserializeObject<CharData_Token>(retString);
|
||||
int statusCode = (int)response.StatusCode;
|
||||
|
||||
// 对响应内容进行处理 更新数据库标志
|
||||
if (statusCode == 200)
|
||||
{
|
||||
myStreamReader.Close();
|
||||
myResponseStream.Close();
|
||||
if (response != null)
|
||||
{
|
||||
// 成功
|
||||
if (mrh.code == "0")
|
||||
{
|
||||
charDataToken = mrh.data.token;
|
||||
charDataTokenTime = mrh.data.expireTime;
|
||||
MW_Log.LoggerHelper.Info("获取_Token", charDataToken);
|
||||
}
|
||||
else
|
||||
{
|
||||
MW_Log.LoggerHelper.Info("error_Token", mrh.errorDetail);
|
||||
}
|
||||
response.Close();
|
||||
}
|
||||
if (request != null)
|
||||
{
|
||||
request.Abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
MW_Log.LoggerHelper.Info("error_Token", "", err);
|
||||
}
|
||||
//}
|
||||
// Thread.Sleep(TokenSyncTime);
|
||||
//}
|
||||
}
|
||||
public void getCharData()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
//if (charDataToken == "")
|
||||
//{
|
||||
// MyLogHelper_LogCommit("error_charData", "未获取到Token");
|
||||
// MW_Log.LoggerHelper.Info("error_charData", "未获取到Token");
|
||||
// continue;
|
||||
//}
|
||||
|
||||
string beginDateStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
string endDateStr = DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss");
|
||||
CharDataSearchPrams charDataSearchPrams = new CharDataSearchPrams();
|
||||
charDataSearchPrams.beginDate = beginDateStr;
|
||||
charDataSearchPrams.endDate = endDateStr;
|
||||
List<TestResult> testResultList = GetCharData_Details(charDataSearchPrams, out string code, out string errorDetail);
|
||||
string syncTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < testResultList.Count; i++)
|
||||
{
|
||||
string vin = testResultList[i].vin; // deviceId
|
||||
string testCode = testResultList[i].testCode;
|
||||
string testStatus = testResultList[i].testStatus;
|
||||
string testBeginTime = testResultList[i].testBeginTime;
|
||||
string testEndTime = testResultList[i].testEndTime;
|
||||
string faultInfo = testResultList[i].faultInfo;
|
||||
B_DB_Opera.BaseData_tagTable_CharData_Insert(vin, testCode, testStatus, testBeginTime, testEndTime, faultInfo, syncTime, out string errMsg);
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
MyLogHelper_LogCommit("error_charData10", err.Message);
|
||||
MW_Log.LoggerHelper.Info("error_charData11", "", err);
|
||||
}
|
||||
Thread.Sleep(SyncTime);
|
||||
}
|
||||
}
|
||||
static string GetMd5Hash(string input)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
|
||||
byte[] hashBytes = md5.ComputeHash(inputBytes);
|
||||
|
||||
// Convert the byte array to hexadecimal string
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < hashBytes.Length; i++)
|
||||
{
|
||||
sb.Append(hashBytes[i].ToString("X2"));
|
||||
}
|
||||
return sb.ToString().ToLower();
|
||||
}
|
||||
}
|
||||
|
||||
private void MyLogHelper_LogCommit(string type, string msg)
|
||||
{
|
||||
var log = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + " " + type + " " + msg + "\r\n";
|
||||
|
||||
msgCount++;
|
||||
|
||||
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
if (msgCount > 100)
|
||||
{
|
||||
this.richTextBox1_log.Text = "";
|
||||
}
|
||||
this.richTextBox1_log.AppendText(log);
|
||||
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (msgCount > 100)
|
||||
{
|
||||
this.richTextBox1_log.Text = "";
|
||||
}
|
||||
this.richTextBox1_log.AppendText(log);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static List<TestResult> GetCharData_Details(CharDataSearchPrams charDataSearchPrams, out string code, out string errorDetail)
|
||||
{
|
||||
List<TestResult> testResultList = new List<TestResult>();
|
||||
code = "0";
|
||||
errorDetail = "";
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
//准备请求的数据 反序列化
|
||||
string bodydata = JsonConvert.SerializeObject(charDataSearchPrams);
|
||||
|
||||
string retString;
|
||||
string url = Url_WebApi_Char + "/openApi/thirdData/selectBatteryTestResult";
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
DateTime startTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||
string time = DateTime.Now.ToString("yyyyMMddHHmmss");
|
||||
string newGuid = Guid.NewGuid().ToString("N").Substring(0, 5);
|
||||
|
||||
long timestamp = (long)(DateTime.UtcNow - startTime).TotalMilliseconds;
|
||||
string reqId = "req_AMES001 _" + time + "_" + newGuid;
|
||||
string lmt_auth_token = GetMd5Hash(charDataToken + SK + timestamp);
|
||||
|
||||
request.Headers.Add("reqId", reqId);
|
||||
request.Headers.Add("timestamp", timestamp.ToString());
|
||||
request.Headers.Add("appKey", AK);
|
||||
request.Headers.Add("lmt-auth-token", lmt_auth_token);
|
||||
MW_Log.LoggerHelper.Info("selectBatteryTestResultHeaders", $"【reqId】{reqId}【timestamp】{timestamp.ToString()}【appKey】{AK}【lmt-auth-token】{lmt_auth_token}");
|
||||
request.Timeout = 10000;
|
||||
request.Method = "Post";
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(bodydata);
|
||||
request.ContentType = "application/json;charset=utf-8";
|
||||
request.ContentLength = bytes.Length;
|
||||
//MW_Log.LoggerHelper.Info("请求参数_charData_reqId", reqId);
|
||||
//MW_Log.LoggerHelper.Info("请求参数_charData_timestamp", timestamp.ToString());
|
||||
//MW_Log.LoggerHelper.Info("请求参数_charData_appKey", AK);
|
||||
//MW_Log.LoggerHelper.Info("请求参数_charData_lmt-auth-token", lmt_auth_token);
|
||||
// 准备请求体
|
||||
Stream myResponseStream = request.GetRequestStream();
|
||||
myResponseStream.Write(bytes, 0, bytes.Length);
|
||||
//发送webapi请求 等待相应
|
||||
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
|
||||
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
|
||||
retString = myStreamReader.ReadToEnd();
|
||||
MW_Log.LoggerHelper.Info("返回参数_charData", retString);
|
||||
// 序列化响应内容
|
||||
CharData mrh = JsonConvert.DeserializeObject<CharData>(retString);
|
||||
int statusCode = (int)response.StatusCode;
|
||||
|
||||
// 对响应内容进行处理 更新数据库标志
|
||||
if (statusCode == 200)
|
||||
{
|
||||
myStreamReader.Close();
|
||||
myResponseStream.Close();
|
||||
if (response != null)
|
||||
{
|
||||
code = mrh.code;
|
||||
errorDetail = mrh.msg + mrh.errorDetail;
|
||||
// 成功
|
||||
if (mrh.code == "0")
|
||||
{
|
||||
try
|
||||
{
|
||||
string syncTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
testResultList = mrh.data;
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
MW_Log.LoggerHelper.Info("error_charData2", "", err);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(mrh.code == "603")
|
||||
{
|
||||
getCharDataToken();
|
||||
}
|
||||
|
||||
MW_Log.LoggerHelper.Info("error_charData3", errorDetail);
|
||||
}
|
||||
|
||||
response.Close();
|
||||
}
|
||||
if (request != null)
|
||||
{
|
||||
request.Abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
code = "500";
|
||||
errorDetail = err.Message;
|
||||
MW_Log.LoggerHelper.Info("error_charData4", "", err);
|
||||
}
|
||||
return testResultList;
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
new TaskFactory().StartNew(delegate ()
|
||||
{
|
||||
|
||||
string beginDateStr = dateTimePicker1_start.Text.ToString();
|
||||
string endDateStr = dateTimePicker1_end.Text.ToString();
|
||||
CharDataSearchPrams charDataSearchPrams = new CharDataSearchPrams();
|
||||
charDataSearchPrams.beginDate = beginDateStr;
|
||||
charDataSearchPrams.endDate = endDateStr;
|
||||
List<TestResult> testResultList = GetCharData_Details(charDataSearchPrams, out string code, out string errorDetail);
|
||||
string syncTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
try
|
||||
{
|
||||
if (testResultList != null)
|
||||
{
|
||||
for (int i = 0; i < testResultList.Count; i++)
|
||||
{
|
||||
string vin = testResultList[i].vin; //deviceId
|
||||
string testCode = testResultList[i].testCode;
|
||||
string testStatus = testResultList[i].testStatus;
|
||||
string testBeginTime = testResultList[i].testBeginTime;
|
||||
string testEndTime = testResultList[i].testEndTime;
|
||||
string faultInfo = testResultList[i].faultInfo;
|
||||
B_DB_Opera.BaseData_tagTable_CharData_Insert(vin, testCode, testStatus, testBeginTime, testEndTime, faultInfo, syncTime, out string errMsg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MyLogHelper_LogCommit("error_charData6", "不存在数据!");
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
|
||||
MyLogHelper_LogCommit("error_charData7", err.Message);
|
||||
MW_Log.LoggerHelper.Info("error_charData8", "", err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.richTextBox1_log.Text = "";
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
getCharDataToken();
|
||||
}
|
||||
|
||||
private void panel_Menu_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void MesWorkForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
850
DT_SCADA/JG.resx
Normal file
850
DT_SCADA/JG.resx
Normal file
@@ -0,0 +1,850 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="panel_Btn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 57</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="panel_Btn.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 4, 4, 4</value>
|
||||
</data>
|
||||
<data name="panel_Btn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>112, 68</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="panel_Btn.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name=">>panel_Btn.Name" xml:space="preserve">
|
||||
<value>panel_Btn</value>
|
||||
</data>
|
||||
<data name=">>panel_Btn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>panel_Btn.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>panel_Btn.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<metadata name="timer_Status.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label2.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Microsoft Sans Serif, 30pt</value>
|
||||
</data>
|
||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>120, 56</value>
|
||||
</data>
|
||||
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>664, 69</value>
|
||||
</data>
|
||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>数据监控/采集/同步程序</value>
|
||||
</data>
|
||||
<data name=">>label2.Name" xml:space="preserve">
|
||||
<value>label2</value>
|
||||
</data>
|
||||
<data name=">>label2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="label41.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label41.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>宋体, 12pt, style=Bold</value>
|
||||
</data>
|
||||
<data name="label41.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label41.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 536</value>
|
||||
</data>
|
||||
<data name="label41.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label41.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>135, 24</value>
|
||||
</data>
|
||||
<data name="label41.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="label41.Text" xml:space="preserve">
|
||||
<value>瞬时并发:</value>
|
||||
</data>
|
||||
<data name=">>label41.Name" xml:space="preserve">
|
||||
<value>label41</value>
|
||||
</data>
|
||||
<data name=">>label41.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label41.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label41.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="label_Count.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label_Count.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>宋体, 12pt, style=Bold</value>
|
||||
</data>
|
||||
<data name="label_Count.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label_Count.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>142, 536</value>
|
||||
</data>
|
||||
<data name="label_Count.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label_Count.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>36, 24</value>
|
||||
</data>
|
||||
<data name="label_Count.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name="label_Count.Text" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name=">>label_Count.Name" xml:space="preserve">
|
||||
<value>label_Count</value>
|
||||
</data>
|
||||
<data name=">>label_Count.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label_Count.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label_Count.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<metadata name="timer_ShowCount.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>134, 14</value>
|
||||
</metadata>
|
||||
<data name="pb_OnLine_SQL.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_SQL.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>843, 217</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_SQL.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 4, 4, 4</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_SQL.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>57, 52</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_SQL.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_SQL.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>20</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_SQL.Name" xml:space="preserve">
|
||||
<value>pb_OnLine_SQL</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_SQL.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_SQL.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_SQL.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="label11.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label11.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label11.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>842, 275</value>
|
||||
</data>
|
||||
<data name="label11.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>62, 18</value>
|
||||
</data>
|
||||
<data name="label11.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>19</value>
|
||||
</data>
|
||||
<data name="label11.Text" xml:space="preserve">
|
||||
<value>服务器</value>
|
||||
</data>
|
||||
<data name=">>label11.Name" xml:space="preserve">
|
||||
<value>label11</value>
|
||||
</data>
|
||||
<data name=">>label11.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label11.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label11.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<metadata name="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>351, 14</value>
|
||||
</metadata>
|
||||
<data name=">>label_ExitSys.Name" xml:space="preserve">
|
||||
<value>label_ExitSys</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.Parent" xml:space="preserve">
|
||||
<value>panel_Menu</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.Name" xml:space="preserve">
|
||||
<value>label_Monitor_PLC</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.Parent" xml:space="preserve">
|
||||
<value>panel_Menu</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="panel_Menu.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Top</value>
|
||||
</data>
|
||||
<data name="panel_Menu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="panel_Menu.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 4, 4, 4</value>
|
||||
</data>
|
||||
<data name="panel_Menu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>955, 52</value>
|
||||
</data>
|
||||
<data name="panel_Menu.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="panel_Menu.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>panel_Menu.Name" xml:space="preserve">
|
||||
<value>panel_Menu</value>
|
||||
</data>
|
||||
<data name=">>panel_Menu.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>panel_Menu.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>panel_Menu.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>宋体, 12pt, style=Bold</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>113, 14</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>112, 26</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label_ExitSys.Text" xml:space="preserve">
|
||||
<value>退出系统</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.Name" xml:space="preserve">
|
||||
<value>label_ExitSys</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.Parent" xml:space="preserve">
|
||||
<value>panel_Menu</value>
|
||||
</data>
|
||||
<data name=">>label_ExitSys.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>宋体, 12pt, style=Bold</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>4, 14</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>101, 26</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label_Monitor_PLC.Text" xml:space="preserve">
|
||||
<value>PLC监控</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.Name" xml:space="preserve">
|
||||
<value>label_Monitor_PLC</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.Parent" xml:space="preserve">
|
||||
<value>panel_Menu</value>
|
||||
</data>
|
||||
<data name=">>label_Monitor_PLC.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>847, 186</value>
|
||||
</data>
|
||||
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>53, 18</value>
|
||||
</data>
|
||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>MQTTL</value>
|
||||
</data>
|
||||
<data name=">>label3.Name" xml:space="preserve">
|
||||
<value>label3</value>
|
||||
</data>
|
||||
<data name=">>label3.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_MQTT.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_MQTT.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>843, 128</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_MQTT.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 4, 4, 4</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_MQTT.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>57, 52</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_MQTT.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_MQTT.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_MQTT.Name" xml:space="preserve">
|
||||
<value>pb_OnLine_MQTT</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_MQTT.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_MQTT.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_MQTT.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>851, 372</value>
|
||||
</data>
|
||||
<data name="label4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 0, 4, 0</value>
|
||||
</data>
|
||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>35, 18</value>
|
||||
</data>
|
||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="label4.Text" xml:space="preserve">
|
||||
<value>PLC</value>
|
||||
</data>
|
||||
<data name=">>label4.Name" xml:space="preserve">
|
||||
<value>label4</value>
|
||||
</data>
|
||||
<data name=">>label4.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label4.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_PLC_1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_PLC_1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>843, 314</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_PLC_1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>4, 4, 4, 4</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_PLC_1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>57, 52</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_PLC_1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="pb_OnLine_PLC_1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_PLC_1.Name" xml:space="preserve">
|
||||
<value>pb_OnLine_PLC_1</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_PLC_1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_PLC_1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>pb_OnLine_PLC_1.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="richTextBox1_log.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 128</value>
|
||||
</data>
|
||||
<data name="richTextBox1_log.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>828, 392</value>
|
||||
</data>
|
||||
<data name="richTextBox1_log.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>21</value>
|
||||
</data>
|
||||
<data name="richTextBox1_log.Text" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name=">>richTextBox1_log.Name" xml:space="preserve">
|
||||
<value>richTextBox1_log</value>
|
||||
</data>
|
||||
<data name=">>richTextBox1_log.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>richTextBox1_log.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>richTextBox1_log.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>838, 476</value>
|
||||
</data>
|
||||
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>117, 44</value>
|
||||
</data>
|
||||
<data name="button1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>22</value>
|
||||
</data>
|
||||
<data name="button1.Text" xml:space="preserve">
|
||||
<value>清空</value>
|
||||
</data>
|
||||
<data name=">>button1.Name" xml:space="preserve">
|
||||
<value>button1</value>
|
||||
</data>
|
||||
<data name=">>button1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>button1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>button1.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>480, 536</value>
|
||||
</data>
|
||||
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>164, 40</value>
|
||||
</data>
|
||||
<data name="button2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>23</value>
|
||||
</data>
|
||||
<data name="button2.Text" xml:space="preserve">
|
||||
<value>获取数据</value>
|
||||
</data>
|
||||
<data name=">>button2.Name" xml:space="preserve">
|
||||
<value>button2</value>
|
||||
</data>
|
||||
<data name=">>button2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>button2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>button2.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="button3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="button3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>779, 536</value>
|
||||
</data>
|
||||
<data name="button3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>164, 40</value>
|
||||
</data>
|
||||
<data name="button3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>23</value>
|
||||
</data>
|
||||
<data name="button3.Text" xml:space="preserve">
|
||||
<value>获取token</value>
|
||||
</data>
|
||||
<data name=">>button3.Name" xml:space="preserve">
|
||||
<value>button3</value>
|
||||
</data>
|
||||
<data name=">>button3.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>button3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>button3.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_start.CustomFormat" xml:space="preserve">
|
||||
<value>yyyy-MM-dd HH:mm:ss</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_start.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>212, 532</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_start.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>233, 28</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_start.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_start.Name" xml:space="preserve">
|
||||
<value>dateTimePicker1_start</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_start.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_start.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_start.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_end.CustomFormat" xml:space="preserve">
|
||||
<value>yyyy-MM-dd HH:mm:ss</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_end.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>212, 566</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_end.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>233, 28</value>
|
||||
</data>
|
||||
<data name="dateTimePicker1_end.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_end.Name" xml:space="preserve">
|
||||
<value>dateTimePicker1_end</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_end.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_end.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>dateTimePicker1_end.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>49</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>9, 18</value>
|
||||
</data>
|
||||
<data name="$this.AutoScroll" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>955, 605</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJSUABjU1AAY1NQAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNT
|
||||
UABjU1AAY1NQAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGRUUAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY1NQAGNTUABjU1ANY1NQOWNTUDxjU1A8Y1NQPGNT
|
||||
UDxjU1A8Y1NQPGNTUDxjU1A8Y1NQPGNTUDxjU1A8Y1NQPGNTUDxjU1A9Y1NQNWNTUAdjU1AAYlJQAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBQUABiUlAAY1NQAGNTUHJjU1DyY1NQ82NT
|
||||
UPNjU1DzY1NQ82NTUPNjU1DzY1NQ82NTUPNjU1DzY1NQ82NTUPNjU1DzY1NQ82NTUPRjU1DrY1NQU2NT
|
||||
UABkVFAAYlJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY1NQAGNTUABjU1AkY1NQ2WNT
|
||||
UP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NT
|
||||
UP9jU1DBY1NQEmNTUABjU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJSUABiUlAAX09QAGNT
|
||||
UIljU1D/Y1NQ/GNTUKBjU1BwY1NQcmNTUHJjU1ByY1NQcmNTUHJjU1ByY1NQcmNTUHJjU1ByY1NQcmNT
|
||||
UHFjU1CyY1NQ/2NTUPxjU1BpY1NQAGBQUABjU1AAAAAAAAAAAAAAAAAAAAAAAAAAAABiUlAAY1NQAGNT
|
||||
UABjU1AyY1NQ5GNTUP9jU1DLY1NQF2NTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNT
|
||||
UABjU1AAY1NQAGNTUCxjU1DhY1NQ/2NTUNBjU1AdY1NQAGNTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJS
|
||||
UABjU1AAY1NQBGNTUJ1jU1D/Y1NQ+WNTUF5jU1AAXk5QAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNT
|
||||
UABjU1AAY1NQAGNTUABjU1AAZFRQAGNTUIBjU1D/Y1NQ/2NTUHxkVFAAY1NQAGNTUAAAAAAAAAAAAAAA
|
||||
AABiUlAAY1NQAGNTUABjU1BEY1NQ72NTUP9jU1C4Y1NQDmNTUABiVU4AWLUAAFiyAABYsgAAWLEAAFix
|
||||
AABYsgAAAAAAAAAAAAAAAAAAAAAAAGNTUABjU1AAY1NQH2NTUNRjU1D/Y1NQ32NTUCtjU1AAY1NQAAAA
|
||||
AAAAAAAAAAAAAGJSUABjU1AAY1NQCmNTUK9jU1D/Y1NQ8mNTUEpjU1AAXYYlAFmyAABZsgAAW7IAAGaw
|
||||
AABZsgAAWbIAAFmyAABYswAAAAAAAAAAAAAAAAAAY1NQAGJSUABjU1AAY1NQbGNTUP1jU1D/Y1NQkGNT
|
||||
UAJjU1AAYlJQAAAAAABiUlAAY1NQAGNTUABjU1BWY1NQ92NTUP9jU1CiY1NQBmNNVQBZsgAAWbIAB1my
|
||||
AE1ZsgCRWbIAmVmyAF9ZsgAQWbIAAFmyAABYsgAAAAAAAAAAAAAAAAAAY1NQAGNTUABjU1AUY1NQw2NT
|
||||
UP9jU1DqY1NQOWNTUABjU1AAAAAAAGNTUABjU1AAY1NQFGNTUMJjU1D/Y1NQ6GNTUDdjU1AAWLYAAFmy
|
||||
AAdZsgCGWbIA91myAP9ZsgD+WbIA/lmyAKlZsgAWWbIAAFmyAAAAAAAAAAAAAAAAAABiUlAAZFRQAGNT
|
||||
UABjU1BYY1NQ+GNTUP9jU1CmY1NQB2NTUABjU1AAY1NQAGNTUABjU1BoY1NQ/GNTUP9jU1CNYVFQAWJS
|
||||
UABZsgAAWbIATVmyAPdZsgDNWbIAV1myAE9ZsgC+WbIA/1myAHpZsgAAWbIAAAAAAAAAAAAAAAAAAAAA
|
||||
AABiUlAAY1NQAGNTUAtjU1CyY1NQ/2NTUPNjU1BKY1NQAGNTUABjU1AAY1NQHmNTUNJjU1D/Y1NQ22NT
|
||||
UCZjU1AAVscAAFuxAABZsgCTWbIA+lmyAEtZsgAAWbIAAFmyADhZsgDxWbIAwFmyAApZsgAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGFRUABjU1AAY1NQAGNTUEVjU1DwY1NQ/2NTULhjU1AOY1NQAGRUUABjU1B9Y1NQ/2NT
|
||||
UP5jU1B2ZFRQAGJSUABYsgAA/wAAAFmyAJtZsgD2WbIAOVmyAABZsgAAWbIAHVmyAOFZsgDPWbIAEVmy
|
||||
AABZsgAAWbIAAFmyAABYsgAAAAAAAGJSUABjU1AAY1NQBWNTUJ9jU1D/Y1NQ+WNTUF5jU1AAY1NQMGNT
|
||||
UN5jU1D/Y1NQy2NTUBljU1AAYlJQAFixAABZsgAAWbIAZlmyAP9ZsgCmWbIAKVmyAAhZsgAcWbIA4Fmy
|
||||
AM9ZsgARWLIAClmyAA1asgAAWbIAAFmyAABZsgAAAAAAAGNTUABjU1AAY1NQNGNTUOZjU1D/Y1NQyGNT
|
||||
UBpjU1CoY1NQ/2NTUPljU1BeY1NQAF5OUABhUVAAWLEAAFmyAABZsgAUWbIAs1myAP9ZsgDrWbIAnlmy
|
||||
AClZsgDfWbIAzlmyAClZsgCtWbIAxlmyAH1ZsgAYWbIAAFmyAABYswAAYlJQAGJSUABgUFABY1NQimNT
|
||||
UP9jU1D8Y1NQhGNTUNZjU1D/Y1NQ7mNTUDdjU1AAY1NQAAAAAABYsQAAWbIAAFmyAABZsgAbWbIAhlmy
|
||||
AM1ZsgCfWbIAKVmyAN9ZsgDNWbIALFmyALlZsgDzWbIA/1myAK1ZsgASWbIAAFizAABiUlAAY1NQAGNT
|
||||
UABjU1BhY1NQ/GNTUP9jU1CyY1NQZWNTUPZjU1D/Y1NQmGNTUARjU1AAY1NQAAAAAABZsQAAWbIAAFmy
|
||||
AAD/mgAAWbIAEFmyAAlZsgAcWbIA4FmyAM9ZsgARWbIAD1myADtZsgDDWbIA/1myAGFZsgAAWLMAAGJS
|
||||
UABjU1AAY1NQEmNTUMBjU1D/Y1NQ6mNTUERjU1ANY1NQsWNTUP9jU1DuY1NQQGNTUABjU1AAY1NQAAAA
|
||||
AABXtAAAWbIAAFmyAABZsgAAWbIAAFmyAB1ZsgDgWbIAz1myABFZsgAAWbIAAFmyAFlZsgD/WbIAmv8y
|
||||
AABYsgAAYVFQAGNTUABjU1BpY1NQ/GNTUP9jU1CTYlJQA2NTUABjU1BFY1NQ8GNTUP9jU1CvY1NQCmNT
|
||||
UABiUlAAAAAAAAAAAAAAAAAAAAAAAAAAAABZsgAAWbIAFVmyANRZsgDlWbIAJ1myAABZsgAAWbIAaFmy
|
||||
AP9ZsgCVXLIAAFe9AABjU1AAY1NQHmNTUNFjU1D/Y1NQ4WNTUCtjU1AAY1NQAGNTUAVjU1CfY1NQ/2NT
|
||||
UPZjU1BVY1NQAGRUUABiUlAAAAAAAAAAAAAAAAAAAAAAAFmyAABYsgACWbIAkFmyAP9ZsgCvWbIASVmy
|
||||
AGBZsgDbWbIA+VmyAFFZsgAAY1RPAGRUUABjU1B9Y1NQ/2NTUP9jU1B/ZlZQAGJSUABjU1AAY1NQAGNT
|
||||
UDVjU1DnY1NQ/2NTUMJjU1ATY1NQAGNTUAAAAAAAAAAAAAAAAAAAAAAAWbIAAFmyAABZsgAgWbIAuVmy
|
||||
AP9ZsgD9WbIA/1myAPlZsgCMWbIACVi1AABjU1AAY1NQKmNTUN9jU1D/Y1NQ02NTUB9jU1AAYlJQAGFR
|
||||
UABjU1AAYVFQAWNTUItjU1D/Y1NQ/WNTUGtjU1AAYlJQAGNTUAAAAAAAAAAAAAAAAABYsAAAWbIAAFmy
|
||||
AABZsgAXWbIAZ1myAJtZsgCUWbIAUVmyAAlZsgAAZEhZAGNTUAJjU1CRY1NQ/2NTUP1jU1BrY1NQAGJS
|
||||
UABlVVAAAAAAAGNTUABjU1AAY1NQJmNTUNtjU1D/Y1NQ1GNTUCBjU1AAY1NQAAAAAAAAAAAAAAAAAAAA
|
||||
AABYsgAAWbIAAFmyAABZsgAAAO8AAFyxAABZsgAAWbIAAF2JIgBjU1AAY1NQOmNTUOtjU1D/Y1NQw2NT
|
||||
UBRjU1AAY1NQAAAAAAAAAAAAX09QAGJSUABkVFAAY1NQd2NTUP9jU1D/Y1NQgWVVUABjU1AAZFRQAAAA
|
||||
AAAAAAAAAAAAAAAAAABYsgAAWLIAAFiyAABYsgAAWLIAAFivAABhZkAAY1NQAGNTUAdjU1CmY1NQ/2NT
|
||||
UPdjU1BYY1NQAGRUUABgUFAAAAAAAAAAAAAAAAAAYlJQAGNTUABjU1AZY1NQzGNTUP9jU1DjY1NQLmNT
|
||||
UABjU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFRQAGNTUABjU1AAY1NQS2NT
|
||||
UPNjU1D/Y1NQsWNTUAtjU1AAYlJQAAAAAAAAAAAAAAAAAAAAAABjU1AAXk5QAGNTUABjU1BiY1NQ+mNT
|
||||
UP9jU1CZYlJQA2NTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNTUABjU1AAY1NQAGNT
|
||||
UA5jU1C5Y1NQ/2NTUO9jU1BFY1NQAGNTUABhUVAAAAAAAAAAAAAAAAAAAAAAAAAAAABiUlAAY1NQAGNT
|
||||
UBBjU1C8Y1NQ/2NTUO1jU1BNY1NQGGNTUBpjU1AaY1NQGmNTUBpjU1AaY1NQGmNTUBpjU1AaY1NQGmNT
|
||||
UBpjU1AXY1NQaGNTUPljU1D/Y1NQn2JSUAVjU1AAYlJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFR
|
||||
UABjU1AAY1NQAGNTUE5jU1D0Y1NQ/2NTUOpjU1DZY1NQ2mNTUNpjU1DaY1NQ2mNTUNpjU1DaY1NQ2mNT
|
||||
UNpjU1DaY1NQ2mNTUNljU1DvY1NQ/2NTUOZjU1AzY1NQAGNTUABfT1AAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAGNTUABjU1AAY1NQCGNTUKljU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NT
|
||||
UP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQ/2NTUP9jU1D/Y1NQimBQUAFiUlAAYVFQAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAYFBQAGNTUABjU1AAY1NQNGNTUJ5jU1CiY1NQoWNTUKFjU1ChY1NQoWNT
|
||||
UKFjU1ChY1NQoWNTUKFjU1ChY1NQoWNTUKFjU1ChY1NQomNTUJVjU1AhY1NQAGNTUAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYlJQAGFRUABjU1AAY1NQAWNTUAJjU1ACY1NQAmNT
|
||||
UAJjU1ACY1NQAmNTUAJjU1ACY1NQAmNTUAJjU1ACY1NQAmNTUAJjU1ACY1NQAWNTUABkVFAAYFBQAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA+AAAH/gAAB/wAAAP8AAAD+AAAAfAAAAHwAAAA4AAeAOAADgBAAAcAQAA
|
||||
HAAAAB4AAAAeAAAAAQAAAACAAAAAAAIAAAABAAAAAIAAAAD4AAAAeAAAAHgAAAA4AACAPAABgB4AAcAf
|
||||
8APAAAAD4AAAB+AAAAfwAAAP8AAAH/gAAB8=
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>802, 497</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterScreen</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>采集系统( 2025.01.06.1516 )</value>
|
||||
</data>
|
||||
<data name=">>timer_Status.Name" xml:space="preserve">
|
||||
<value>timer_Status</value>
|
||||
</data>
|
||||
<data name=">>timer_Status.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>timer_ShowCount.Name" xml:space="preserve">
|
||||
<value>timer_ShowCount</value>
|
||||
</data>
|
||||
<data name=">>timer_ShowCount.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog1.Name" xml:space="preserve">
|
||||
<value>folderBrowserDialog1</value>
|
||||
</data>
|
||||
<data name=">>folderBrowserDialog1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>MesWorkForm</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>MesWork.PlcLinkForm, MesWork.DeviceDriver, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
DT_SCADA/LOGO.ico
Normal file
BIN
DT_SCADA/LOGO.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
222
DT_SCADA/LogRecord.Designer.cs
generated
Normal file
222
DT_SCADA/LogRecord.Designer.cs
generated
Normal file
@@ -0,0 +1,222 @@
|
||||
|
||||
namespace LogRecord
|
||||
{
|
||||
partial class LogRecord
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows 窗体设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.dgv_Log = new System.Windows.Forms.DataGridView();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.btn_Refresh = new System.Windows.Forms.Button();
|
||||
this.序号 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.工位号 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.类型 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.时间 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.内容 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgv_Log)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// dgv_Log
|
||||
//
|
||||
this.dgv_Log.AllowUserToAddRows = false;
|
||||
this.dgv_Log.AllowUserToDeleteRows = false;
|
||||
this.dgv_Log.AllowUserToResizeRows = false;
|
||||
this.dgv_Log.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.dgv_Log.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dgv_Log.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgv_Log.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgv_Log.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.序号,
|
||||
this.工位号,
|
||||
this.类型,
|
||||
this.时间,
|
||||
this.内容});
|
||||
this.dgv_Log.Location = new System.Drawing.Point(12, 51);
|
||||
this.dgv_Log.MultiSelect = false;
|
||||
this.dgv_Log.Name = "dgv_Log";
|
||||
this.dgv_Log.ReadOnly = true;
|
||||
this.dgv_Log.RowHeadersVisible = false;
|
||||
this.dgv_Log.RowTemplate.Height = 26;
|
||||
this.dgv_Log.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dgv_Log.Size = new System.Drawing.Size(1277, 745);
|
||||
this.dgv_Log.TabIndex = 72;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(358, 12);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 73;
|
||||
this.button1.Text = "报警";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Visible = false;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(439, 12);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 73;
|
||||
this.button2.Text = "登录";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Visible = false;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Location = new System.Drawing.Point(520, 12);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(75, 23);
|
||||
this.button3.TabIndex = 73;
|
||||
this.button3.Text = "提示";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Visible = false;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// btn_Refresh
|
||||
//
|
||||
this.btn_Refresh.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btn_Refresh.Location = new System.Drawing.Point(12, 10);
|
||||
this.btn_Refresh.Name = "btn_Refresh";
|
||||
this.btn_Refresh.Size = new System.Drawing.Size(320, 35);
|
||||
this.btn_Refresh.TabIndex = 74;
|
||||
this.btn_Refresh.Text = "刷新";
|
||||
this.btn_Refresh.UseVisualStyleBackColor = true;
|
||||
this.btn_Refresh.Click += new System.EventHandler(this.btn_Refresh_Click);
|
||||
//
|
||||
// 序号
|
||||
//
|
||||
this.序号.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
|
||||
this.序号.DataPropertyName = "序号";
|
||||
dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.序号.DefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.序号.HeaderText = "序号";
|
||||
this.序号.Name = "序号";
|
||||
this.序号.ReadOnly = true;
|
||||
this.序号.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
this.序号.Width = 60;
|
||||
//
|
||||
// 工位号
|
||||
//
|
||||
this.工位号.DataPropertyName = "工位号";
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.工位号.DefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.工位号.HeaderText = "工位号";
|
||||
this.工位号.Name = "工位号";
|
||||
this.工位号.ReadOnly = true;
|
||||
this.工位号.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
this.工位号.Visible = false;
|
||||
this.工位号.Width = 250;
|
||||
//
|
||||
// 类型
|
||||
//
|
||||
this.类型.DataPropertyName = "类型";
|
||||
dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.类型.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.类型.HeaderText = "类型";
|
||||
this.类型.Name = "类型";
|
||||
this.类型.ReadOnly = true;
|
||||
this.类型.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
this.类型.Width = 90;
|
||||
//
|
||||
// 时间
|
||||
//
|
||||
this.时间.DataPropertyName = "时间";
|
||||
dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold);
|
||||
dataGridViewCellStyle5.Format = "G";
|
||||
this.时间.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.时间.HeaderText = "时间";
|
||||
this.时间.Name = "时间";
|
||||
this.时间.ReadOnly = true;
|
||||
this.时间.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
this.时间.Width = 190;
|
||||
//
|
||||
// 内容
|
||||
//
|
||||
this.内容.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.内容.DataPropertyName = "内容";
|
||||
dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.内容.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.内容.HeaderText = "内容";
|
||||
this.内容.Name = "内容";
|
||||
this.内容.ReadOnly = true;
|
||||
this.内容.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
|
||||
//
|
||||
// LogRecord
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1298, 808);
|
||||
this.Controls.Add(this.btn_Refresh);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.dgv_Log);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Name = "LogRecord";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "日志";
|
||||
this.Load += new System.EventHandler(this.LogRecord_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgv_Log)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.DataGridView dgv_Log;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.Button btn_Refresh;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 序号;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 工位号;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 类型;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 时间;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 内容;
|
||||
}
|
||||
}
|
||||
|
||||
143
DT_SCADA/LogRecord.cs
Normal file
143
DT_SCADA/LogRecord.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using MesWork;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static System.Configuration.ConfigurationManager;
|
||||
|
||||
namespace LogRecord
|
||||
{
|
||||
public partial class LogRecord : Form
|
||||
{
|
||||
public LogRecord()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
}
|
||||
public LogRecord(int _Width,int _Height)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Width = _Width;
|
||||
this.Height = _Height;
|
||||
}
|
||||
|
||||
private void LogRecord_Load(object sender, EventArgs e)
|
||||
{
|
||||
Refresh_Log();
|
||||
}
|
||||
|
||||
private void Refresh_Log()
|
||||
{
|
||||
var dt = Select_Log();
|
||||
dgv_Log.DataSource = dt;
|
||||
|
||||
for (int i = 0; i < dt.Rows.Count; i++)
|
||||
{
|
||||
var 类型 = (Type_Log)Enum.Parse(typeof(Type_Log),dt.Rows[i]["类型"].ToString());
|
||||
switch (类型)
|
||||
{
|
||||
case Type_Log.Alarm:
|
||||
RowsColor(i, Color.Red, dgv_Log);
|
||||
break;
|
||||
case Type_Log.Login:
|
||||
RowsColor(i, Color.Green, dgv_Log);
|
||||
break;
|
||||
case Type_Log.Tip:
|
||||
RowsColor(i, Color.Yellow, dgv_Log);
|
||||
break;
|
||||
default:
|
||||
RowsColor(i, Color.Gray, dgv_Log);
|
||||
break;
|
||||
}
|
||||
}
|
||||
dgv_Log.ClearSelection();
|
||||
//dgv_Log.CurrentCell = null;
|
||||
//dgv_Log.Rows[0].Selected = false;
|
||||
}
|
||||
private void RowsColor(int row, Color color, DataGridView dgv)
|
||||
{
|
||||
var dt = (System.Data.DataTable)dgv.DataSource;
|
||||
for (int i = 0; i < dt.Columns.Count; i++)
|
||||
{
|
||||
dgv.Rows[row].Cells[i].Style.BackColor = color;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Insert_Log(Type_Log LogType, string Log_Content)
|
||||
{
|
||||
/*
|
||||
SELECT [IDG],[Log_Station],[Log_Type],[Log_Time],[Log_Content] FROM [记录_日志_运行日志]
|
||||
*/
|
||||
bool success = false;
|
||||
var sql =
|
||||
$" INSERT INTO [记录_日志_运行日志]([Log_Station],[Log_Type],[Log_Time],[Log_Content])" +
|
||||
$" VALUES('{MesWorkForm.StationName}','{LogType.ToString()}',getdate(),'{Log_Content}')";
|
||||
success = DataLinkMesWork.SQLCommon.ExecuteSql(sql, MesWorkForm.ConnectionString, out string err2);
|
||||
|
||||
return success;
|
||||
|
||||
}
|
||||
public static DataTable Select_Log()
|
||||
{
|
||||
/*
|
||||
SELECT [IDG],[Log_Station],[Log_Type],[Log_Time],[Log_Content] FROM [记录_日志_运行日志]
|
||||
*/
|
||||
var sql =
|
||||
$" (SELECT " +
|
||||
$" row_number() over(order by [Log_Time]) AS 序号" +
|
||||
$" ,[Log_Station] AS 工位号" +
|
||||
$" ,[Log_Type] AS 类型" +
|
||||
$" ,[Log_Time] AS 时间" +
|
||||
$" ,[Log_Content] AS 内容" +
|
||||
|
||||
$" FROM [记录_日志_运行日志]" +
|
||||
$" WHERE [Log_Station] = '{MesWorkForm.StationName}')" +
|
||||
$" ORDER BY 序号 DESC";
|
||||
DataLinkMesWork.SQLCommon.ExecuteDataTable(sql, MesWorkForm.ConnectionString,out DataTable dt, out string err2);
|
||||
return dt;
|
||||
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
Insert_Log(Type_Log.Alarm, "dfghjkjfdfghjk法国红酒看官方一股好久哦i反对牛v军方肯定没得查看你的孙女i的女哦i的妇女哦看v哦对妇女的发");
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
Insert_Log(Type_Log.Login, "废物");
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
Insert_Log(Type_Log.Tip, "滚");
|
||||
}
|
||||
|
||||
public enum Type_Log
|
||||
{
|
||||
/// <summary>
|
||||
/// 报警
|
||||
/// </summary>
|
||||
Alarm = 1,
|
||||
/// <summary>
|
||||
/// 登录
|
||||
/// </summary>
|
||||
Login = 2,
|
||||
/// <summary>
|
||||
/// 提示
|
||||
/// </summary>
|
||||
Tip = 3
|
||||
}
|
||||
|
||||
private void btn_Refresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
Refresh_Log();
|
||||
}
|
||||
}
|
||||
}
|
||||
135
DT_SCADA/LogRecord.resx
Normal file
135
DT_SCADA/LogRecord.resx
Normal file
@@ -0,0 +1,135 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="序号.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="工位号.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="类型.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="时间.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="内容.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
85
DT_SCADA/MW.OnStart.cs
Normal file
85
DT_SCADA/MW.OnStart.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using Newtonsoft.Json;
|
||||
using OpcBasic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using SystemFramework;
|
||||
|
||||
namespace MesWork
|
||||
{
|
||||
public partial class Temp { }
|
||||
public partial class MesWorkForm
|
||||
{
|
||||
protected override void OnShown(EventArgs e)
|
||||
{
|
||||
var text = System.IO.File.ReadAllText(@"config.json");
|
||||
scadaConfig = JsonConvert.DeserializeObject<ScadaConfig>(text);
|
||||
|
||||
ThreadPool.SetMaxThreads(2000, 800);
|
||||
Never_Know.Hello_You_All_Never_Know = Hello_You_All_Never_Know;
|
||||
new ApplicationLog();
|
||||
|
||||
ConnectService();
|
||||
|
||||
LoadOPCData(BasicDataTableFile, IsDemoMesServer, IsWriteMonitorLog, true, true, out string err);
|
||||
if (err.Length > 0)
|
||||
{
|
||||
MessageBox.Show($"LoadOPCData错误:{err}");
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
|
||||
|
||||
CommunicationCheckOnLine();
|
||||
|
||||
LoadDevice(scadaConfig);
|
||||
|
||||
Thread.Sleep(200);
|
||||
StartServer();
|
||||
//Thread.Sleep(200);
|
||||
//First_TagMonitor();
|
||||
|
||||
//Thread.Sleep(1000);
|
||||
//Loop_Fast_Task();
|
||||
// Loop_Slow_Task();
|
||||
// 开启webApi
|
||||
initServer = new InitServer(MesWorkForm.WebSvrUrlPort);
|
||||
|
||||
|
||||
var task1 = new Thread(new ThreadStart(Loop));
|
||||
task1.IsBackground = true;
|
||||
task1.Start();
|
||||
|
||||
//var task2 = new Thread(new ThreadStart(getCharDataToken));
|
||||
//task2.IsBackground = true;
|
||||
//task2.Start();
|
||||
|
||||
//var task3 = new Thread(new ThreadStart(getCharData));
|
||||
//task3.IsBackground = true;
|
||||
//task3.Start();
|
||||
|
||||
//var task4 = new Thread(new ThreadStart(StationNameStatus_Update));
|
||||
//task4.IsBackground = true;
|
||||
//task4.Start();
|
||||
|
||||
//var task5 = new Thread(new ThreadStart(StationNameDeviceData_Insert));
|
||||
//task5.IsBackground = true;
|
||||
//task5.Start();
|
||||
|
||||
//var task6 = new Thread(new ThreadStart(StationNameDeviceData_Update));
|
||||
//task6.IsBackground = true;
|
||||
//task6.Start();
|
||||
|
||||
//var task7 = new Thread(new ThreadStart(SelectData_WritePLC_Task));
|
||||
//task7.IsBackground = true;
|
||||
//task7.Start();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
36
DT_SCADA/Properties/AssemblyInfo.cs
Normal file
36
DT_SCADA/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("DT_SCADA")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("DT_SCADA")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2024")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("d4e30851-a8e7-4275-a7c1-24f034d4cac2")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
83
DT_SCADA/Properties/Resources.Designer.cs
generated
Normal file
83
DT_SCADA/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace SCADA_JG.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SCADA_JG.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap 断开状态 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("断开状态", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap 连接状态 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("连接状态", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user