S7-200-OPC-C++读写PC-Access服务器.docx_第1页
S7-200-OPC-C++读写PC-Access服务器.docx_第2页
S7-200-OPC-C++读写PC-Access服务器.docx_第3页
S7-200-OPC-C++读写PC-Access服务器.docx_第4页
S7-200-OPC-C++读写PC-Access服务器.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

S7-200 OPC C+读写PC Access服务器 操作系统:Windows 7旗舰版开发工具:VS2010开发语言:MFC描述:对S7-200的VD100-VD220的31个双字寄存器进行写;头文件:OPCComm.h#pragma once#include StdAfx.hconst LPWSTR g_szItemID31 = L2, VD100, real, L2, VD104, real, L2, VD108, real, L2, VD112, real, L2, VD116, real,L2, VD120, real, L2, VD124, real, L2, VD128, real, L2, VD132, real, L2, VD136, real,L2, VD140, real, L2, VD144, real, L2, VD148, real, L2, VD152, real, L2, VD156, real,L2, VD160, real, L2, VD164, real, L2, VD168, real, L2, VD172, real, L2, VD176, real,/VD164L2, VD180, real, L2, VD184, real, L2, VD188, real, L2, VD192, real, L2, VD196, real,L2, VD200, real, L2, VD204, real, L2, VD208, real, L2, VD212, real, L2, VD216, real,L2, VD220, real;class COPCCommpublic:COPCComm(void);COPCComm(void);public:DWORDm_dwAdvise;OPCITEMDEFm_Items31;VARIANT m_ItemValues31; LPWSTR m_ItemID31;OPCITEMATTRIBUTES *m_pItAttr;IUnknown* m_pUnknown;IOPCServer* m_IOPCServer;IOPCItemMgt* m_IOPCItemMgt;IOPCSyncIO* m_pOPCSync;IOPCGroupStateMgt* m_IOPCGroupStateMgt;IOPCAsyncIO2* m_IOPCAsyncIO2;OPCITEMRESULT* m_ItemResult;HRESULT* m_pErrors;OPCHANDLE m_GrpSrvHandle;MULTI_QI m_arrMultiQI6;DWORD m_TransactionID;OPCITEMDEF* m_pItems;OPCITEMSTATE* bdg;public:bool ConnectSrv(void);bool Disconnect(void);bool AddGroup(void);bool AddItem(DWORD NumItems);bool Write(DWORD NumItems);bool RemoveGroup(void);bool RemovItem(DWORD NumItems);float Read(DWORD NumItems);源文件:OPCComm.cpp#include StdAfx.h#include OPCComm.hCOPCComm:COPCComm(void)int i;m_pItAttr = new OPCITEMATTRIBUTES31;for(i = 0; i RemoveGroup(m_GrpSrvHandle,true);m_IOPCItemMgt-Release();m_IOPCServer-Release();return false;bool COPCComm:AddGroup()/ TODO: Add your control notification handler code hereLONG TimBias;FLOAT PercDeadband;DWORD dwLCID;DWORD RevUpRate; /outHRESULT r1;TimBias = 0;PercDeadband = 0.0;dwLCID = 0x409;r1 = m_IOPCServer-AddGroup(Lgru1, TRUE, 500, 1, &TimBias, &PercDeadband, dwLCID, &m_GrpSrvHandle, &RevUpRate, IID_IOPCItemMgt, (LPUNKNOWN*)&m_IOPCItemMgt);if(!FAILED(r1) /AfxMessageBox(_T(Successfully added group to server!); return false;elseAfxMessageBox(_T(Cant add group to server!); m_IOPCItemMgt = NULL;return true;return false;bool COPCComm:AddItem(DWORD NumItems)/ TODO: Add your control notification handler code hereOPCITEMDEF* pItems;OPCITEMRESULT* pItResult;HRESULT* pErrors; HRESULT r1;DWORD i;/DWORD NumItems;/NumItems = 31;pItems = new OPCITEMDEFNumItems;for(i = 0; i AddItems(NumItems, pItems, &pItResult, &pErrors); if(FAILED(r1) &(r1 != S_FALSE) AfxMessageBox(_T(AddItems- failed!);if(m_IOPCServer != NULL)m_IOPCServer-Release();delete pItems;return true; /exit(1);for (i = 0; i QueryInterface(IID_IOPCAsyncIO2, (void*)&m_IOPCAsyncIO2); if (r1 Release(); m_IOPCItemMgt = NULL; m_GrpSrvHandle = NULL; m_IOPCServer-Release(); m_IOPCServer = NULL; CoUninitialize(); return; */delete pItems;return false;bool COPCComm:Write(DWORD NumItems)/ TODO: Add your control notification handler code here/*m_ItemID0 = g_szItemID0;m_ItemValues0.vt = VT_R4; m_ItemValues0.fltVal = 258.5;/要写入的一Item值 m_ItemID1 = g_szItemID1; m_ItemValues1.vt = VT_R4; m_ItemValues1.fltVal = 345.2;/要写入的另一Item值*/IOPCAsyncIO* pAsyncIO;OPCHANDLE* phServer;HRESULT r1, r2;HRESULT* pErrors;BOOL found = FALSE;DWORD i;/NumItems = 31;phServer = new OPCHANDLENumItems;for(i = 0; i QueryInterface(IID_IOPCAsyncIO, (void *)&pAsyncIO);if(FAILED(r1)AfxMessageBox(_T(IOPCAsyncIO - Not supported !);CoTaskMemFree(pErrors);delete phServer;return true;else/using IOPCAsyncIO:Write(.), look at OPC spezifikationr2 = pAsyncIO-Write(0, NumItems, phServer, m_ItemValues, &m_TransactionID, &pErrors);if(FAILED(r2) & (r2 = E_FAIL)AfxMessageBox(_T(Error - Write);delete phServer;return true; /exit(1);pAsyncIO-Release();/CoTaskMemFree(pItemValue);CoTaskMemFree(pErrors);delete phServer;return false;float COPCComm:Read(DWORD NumItems)/ TODO: Add your control notification handler code hereIOPCSyncIO* pSyncIO;OPCHANDLE* phServer;HRESULT r1, r2;HRESULT* pErrors;BOOL found = FALSE;DWORD i;CString temp;/NumItems = 31;phServer = new OPCHANDLENumItems;for(i = 0; i QueryInterface(IID_IOPCSyncIO, (void *)&pSyncIO);if(FAILED(r1)AfxMessageBox(_T(IOPCAsyncIO - Not supported !);delete phServer;return true;else/using IOPCAsyncIO:Read(.), look at OPC spezifikationr2 = pSyncIO-Read(OPC_DS_DEVICE, NumItems, phServer, &bdg, &pErrors);if(FAILED(r2) & (r2 = E_FAIL)AfxMessageBox(_T(Error - Read);VariantClear (&bdg0.vDataValue);CoTaskMemFree(pErrors);delete phServer;return -999.0;/赋不可能值 /exit(1);temp.Format(_T(%.2f), bdg0.vDataValue.fltVal);retData = bdg1.vDataValue.fltVal;VariantClear (&bdg0.vDataValue);pSyncIO-Release();CoTaskMemFree(pErrors);delete phServer;return (float)_ttof(temp);bool COPCComm:RemoveGroup()/ TODO: Add your control notification handler code hereHRESULT r1;r1 = m_IOPCServer-RemoveGroup(m_GrpSrvHandle, TRUE);if(SUCCEEDED(r1)/AfxMessageBox(_T(Successfully removed group !);m_GrpSrvHandle = NULL;m_IOPCItemMgt-Release();m_IOPCItemMgt = NULL;elseAfxMessageBox(_T(Cant remove group ! );return true;return false;bool COPCComm:RemovItem(DWORD NumItems)/ TODO: Add your control notification handler code hereHRESULT r1;HRESULT* pErrors;OPCHANDLE* phServer;DWORD i;phServer = new OPCHANDLENumItems;for(i = 0; i RemoveItems(NumItems, phServer, &pErrors);if(FAILED(r1) & (r1 != S_FALSE) AfxMessageBox(_T(RemoveItems - failed!);delete phServer;return true;/exit(1);delete phServer;return false;主程序调用:if(m_OPC.ConnectSrv()AfxMessageBox(_T(本地服务器没连上!);return;if(m_OPC.AddGroup()AfxMessageBox(_T(添加组失败!);return;if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论