init: CATL电池线SCADA首次入库
This commit is contained in:
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();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user