init: CATL电池线SCADA首次入库

This commit is contained in:
XingCheng3
2026-06-08 17:12:01 +08:00
commit fe8a3187f5
119 changed files with 42649 additions and 0 deletions

View 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);
}
}
}

View 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);
}
}
}

View 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;
// }
// }
//}

View 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;
}
}

View 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);
}
}
}
}

View 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();
}
}
}