c#与kepsever服务器通讯异步读写变量时出现错误

estella1984 2020-12-02 11:30:41
最近在做一个与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);
}


...全文
585 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

111,124

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧