BaoKai_202508-Wcs-Jingwang..../WCSIce/PLCDate/ReadDBPlcCheck1.cs
2025-08-24 12:51:29 +08:00

178 lines
5.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using OpcRcw.Da;
using WCS;
namespace Common
{
/// <summary>
/// 异步订阅plc
/// </summary>
public class ReadDBPlcCheck1: PlcRead, IOPCDataCallback
{
//异步事件,
public ReadDBPlcCheck1()
{
ConnectRemoteServer();
PLCGroupAdd(this);
GetItemAdd();
DataChange();
}
///// <summary>
///// 读取 item的值
///// </summary>
//public DataSet itemTable = new DataSet();
// MainForm frm = new MainForm();
private void GetItemAdd()
{
OPCITEMDEF[] ItemArray = new OPCITEMDEF[16];//定义读写的item共个变量
for (int i = 0; i < 5; i++)
{
ItemArray[i].szAccessPath = "";
ItemArray[i].bActive = 1;//是否激活
ItemArray[i].hClient = i + 1;//表示ID
ItemArray[i].dwBlobSize = 0;
ItemArray[i].pBlob = IntPtr.Zero;
}
ItemArray[0].szItemID = "S7:[S7 Connection]DB41,INT8"; //110输送机状态 设备状态 0/1 空闲 2 有货无指令 5 有指令
ItemArray[1].szItemID = "S7:[S7 Connection]DB41,INT28"; //111输送机状态 设备状态 0/1 空闲 2 有货无指令 5 有指令
ItemArray[2].szItemID = "S7:[S7 Connection]DB41,INT48"; //112
ItemArray[3].szItemID = "S7:[S7 Connection]DB41,INT68"; //113
ItemArray[4].szItemID = "S7:[S7 Connection]DB41,INT208"; //120
ItemArray[5].szItemID = "S7:[S7 Connection]DB41,INT228"; //121
ItemArray[6].szItemID = "S7:[S7 Connection]DB41,INT248"; //122
ItemArray[7].szItemID = "S7:[S7 Connection]DB41,INT268"; //123
ItemArray[8].szItemID = "S7:[S7 Connection]DB41,INT408"; //210
ItemArray[9].szItemID = "S7:[S7 Connection]DB42,INT428"; //211
ItemArray[10].szItemID = "S7:[S7 Connection]DB42,INT448"; //212
ItemArray[11].szItemID = "S7:[S7 Connection]DB42,INT468"; //213
ItemArray[12].szItemID = "S7:[S7 Connection]DB42,INT608"; //220
ItemArray[13].szItemID = "S7:[S7 Connection]DB42,INT628"; //221
ItemArray[14].szItemID = "S7:[S7 Connection]DB42,INT648"; //222
ItemArray[15].szItemID = "S7:[S7 Connection]DB42,INT668"; //223
PlcItemAdd(ItemArray);
}
#region IOPCDataCallback
public void OnCancelComplete(int dwTransid, int hGroup)
{
throw new NotImplementedException();
}
private string getFlatCode(string num)
{
string flatnum = string.Empty;
switch (num)
{
case "1":
flatnum = "110";
break;
case "2":
flatnum = "111";
break;
case "3":
flatnum = "112";
break;
case "4":
flatnum = "113";
break;
case "5":
flatnum = "120";
break;
case "6":
flatnum = "121";
break;
case "7":
flatnum = "122";
break;
case "8":
flatnum = "123";
break;
case "9":
flatnum = "210";
break;
case "10":
flatnum = "211";
break;
case "11":
flatnum = "212";
break;
case "12":
flatnum = "213";
break;
case "13":
flatnum = "220";
break;
case "14":
flatnum = "221";
break;
case "15":
flatnum = "222";
break;
case "16":
flatnum = "223";
break;
}
return flatnum;
}
object loc = new object();
public void OnDataChange(int dwTransid, int hGroup, int hrMasterquality, int hrMastererror, int dwCount, int[] phClientItems, object[] pvValues, short[] pwQualities, FILETIME[] pftTimeStamps, int[] pErrors)
{
try
{
lock ("a")
{
string flatstsStr = string.Empty;
for (int i = 0; i < pvValues.Length; i++)
{
string flatNum = phClientItems[i].ToString();
string flatcode = getFlatCode(flatNum);
string plcid = PLCCommon.PlcFactory.Instance().ReadPlcDbValue(flatcode + "任务号", ref errText);
flatstsStr += DataClass.Instance().updateDevsts(flatcode, pvValues[i].ToString(), plcid);
}
DataClass.Instance().excutSqlstr(flatstsStr, ref errText);
}
}
catch (System.Exception exp)
{
string Errtext = exp.ToString();
}
}
public void OnReadComplete(int dwTransid, int hGroup, int hrMasterquality, int hrMastererror, int dwCount, int[] phClientItems, object[] pvValues, short[] pwQualities, FILETIME[] pftTimeStamps, int[] pErrors)
{
throw new NotImplementedException();
}
public void OnWriteComplete(int dwTransid, int hGroup, int hrMastererr, int dwCount, int[] pClienthandles, int[] pErrors)
{
throw new NotImplementedException();
}
#endregion
}
}