c#与kepsever服务器通讯异步读写变量时出现错误
最近在做一个与S7-1200PLC通讯的项目,用C#与PLC通过kepsever通讯,按照网上说的引用Interop.OPCAutomation.dll文件。
从KEPSERVER读数据是没有问题,但是下发数据时会出现“对COM组件的调用返回了错误 HRESULT E_FAIL"
一直没有解决,望大家帮帮忙
代码如下:(主要是写入的代码)
public void Write_PLC()
{
Array AsyncValue_Wt;
Array SerHandles;
object[] tmpWtData = new object[8];//写入的数据必须是object型的,否则会报错
int[] tmpSerHdles = new int[8];
//将输入数据赋给数组,然后再转成Array型送给AsyncValue_Wt
tmpWtData[1] = (object)Pub_Var.Valve_Set;
tmpWtData[2] = (object)Pub_Var.Pinlv_Set;
tmpWtData[3] = (object)Pub_Var.shuju[1];
tmpWtData[4] = (object)Pub_Var.shuju[2];
tmpWtData[5] = (object)Pub_Var.shuju[3];
tmpWtData[6] = (object)Pub_Var.shuju[4];
tmpWtData[7] = (object)Pub_Var.shuju[5];
//tmpWtData[4] = (object)Pub_Var.Percent_LD[1];
AsyncValue_Wt = (Array)tmpWtData;
//将输入数据送给的Item对应服务器句柄赋给数组,然后再转成Array型送给SerHandles
tmpSerHdles[1] = Convert.ToInt32(lserverhandles.GetValue(30));//确定设定通道???
tmpSerHdles[2] = Convert.ToInt32(lserverhandles.GetValue(28));
tmpSerHdles[3] = Convert.ToInt32(lserverhandles.GetValue(2));
tmpSerHdles[4] = Convert.ToInt32(lserverhandles.GetValue(1));
tmpSerHdles[5] = Convert.ToInt32(lserverhandles.GetValue(3));
tmpSerHdles[6] = Convert.ToInt32(lserverhandles.GetValue(4));
tmpSerHdles[7] = Convert.ToInt32(lserverhandles.GetValue(5));
SerHandles = (Array)tmpSerHdles;
objGroup.AsyncWrite(7, ref SerHandles, ref AsyncValue_Wt, out lErrors_Wt, lTransID_Wt, out lCancelID_Wt);
}