




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建漳州市漳浦县金瑞集团招聘20人考前自测高频考点模拟试题完整参考答案详解
- 2025黑龙江哈尔滨铁道职业技术学院辅导员招聘5人考前自测高频考点模拟试题参考答案详解
- 沧州市中医院肾功能支持技术准入考核
- 2025北京首都医科大学附属北京中医医院招聘22人(第二批)考前自测高频考点模拟试题参考答案详解
- 2025年延边大学急需紧缺教师岗位招聘(3号)(47人)模拟试卷附答案详解(考试直接用)
- 沧州市中医院疑难病例分析处理考核
- 2025年威海技师学院公开招聘工作人员(29名)考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025国网中国电力科学研究院有限公司第二批高校毕业生录用人选的模拟试卷及完整答案详解
- 2025贵州铜仁市万山区事业单位引进高层次及急需紧缺人才12人模拟试卷及答案详解(典优)
- 2025江西南昌市劳动保障事务代理中心招聘劳务外包人员1人模拟试卷及答案详解(考点梳理)
- 宠物乐园方案
- 自备车补贴申请表
- 注塑成型技术培训之工艺理解课件
- 信息论与编码(第4版)完整全套课件
- 广西佑太药业有限责任公司医药中间体项目环评报告书
- 汽修厂安全风险分级管控清单
- 海绵城市公园改造施工组织设计
- 上体自编教材-体育运动概论-模拟
- 05625《心理治疗》案例分析
- GB/T 2679.7-2005纸板戳穿强度的测定
- GB/T 25840-2010规定电气设备部件(特别是接线端子)允许温升的导则
评论
0/150
提交评论