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