回复:OPC 客户端开发怎么读取NET 中的数据

weiyt

  • 帖子

    1668
  • 精华

    14
  • 被关注

    326

论坛等级:至圣

注册时间:2006-09-24

钻石 钻石 如何晋级?

发布于 2017-01-12 14:21:40

10楼

展开查看
以下是引用星云海洋在2016-06-28 11:37:05的发言 >

使用VC。现在不知道怎么去索引地址变量。不知道变量名。

void CSync_RWDlg::OnConn()
{
……
HRESULT r1;
r1 = CLSIDFromProgID(L"OPC.SimaticNET", &clsid);
r1 = CoCreateInstance (clsid, NULL, CLSCTX_LOCAL_SERVER ,
IID_IOPCServer, (void**)&m_pIOPCServer);
//"OPC.SimaticNet", "192.168.0.102"是OPCServer 名称及所在computer 地址

r1=m_pIOPCServer->AddGroup()//增加相应的组,定义组的特性,并输出组的句柄
m_Items[0].szAccessPath = L"";
m_Items[0].szItemID = L"S7:[@LOCALSERVER]DB1,INT0";
//地址,不同数据类型表示方法不同
m_Items[0].bActive = TRUE; //是否激活
m_Items[0].hClient = 1; //标示ID,不同的Item 不一样
m_Items[0].dwBlobSize = 0;
m_Items[0].pBlob = NULL;
m_Items[0].vtRequestedDataType = 2; //数据类型表示格式,2 表示int
……
r1 = m_pIOPCItemMgt->AddItems(3,m_Items,&m_pItemResult,
&m_pErrors);//将定义的OPCTtem 加入组内,注意数量
……
r1 = m_pIOPCItemMgt->QueryInterface(IID_IOPCSyncIO,
(void**)&m_pIOPCSyncIO);
//为OPCGroup 的组对象定义接口
……
}
同步读:
void CSync_RWDlg::OnRead()
{
……
r1 = m_pIOPCSyncIO->Read(OPC_DS_DEVICE, 3, phServer,
&pItemValue, &pErrors); //同步读
m_ReadVal1 = pItemValue[0].vDataValue.lVal; //得出值
qnr = pItemValue[0].wQuality; //
m_ReadQu1 = GetQualityText(qnr); //质量码
m_ReadTs1 = COleDateTime( pItemValue[0].ftTimeStamp ).Format();
//时间
UpdateData(FALSE); //更新数据到画面
……
}

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33289条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。