178 lines
5.8 KiB
C#
178 lines
5.8 KiB
C#
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
|
||
}
|
||
|
||
|
||
}
|