已阅读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安徽黄山市徽州区消防救援大队政府专职消防员招聘14人备考题库附答案详解(考试直接用)
- 2026中国民生银行兰州分行全球校园招聘备考题库含答案详解(培优b卷)
- 2026中国邮政储蓄银行大连分行校园招聘备考题库附答案详解(典型题)
- 2026中国建设银行云南省分行校园招聘330人备考题库附答案详解(研优卷)
- 2025年丽水市工会社会工作者招录工作5人备考题库含答案详解(夺分金卷)
- 2025重庆高新区社区工作者招聘45人备考题库附答案详解(黄金题型)
- 2025年甘肃省陇南市康县太石乡专业化管理的村文书招聘备考题库含答案详解(培优b卷)
- 定额指标分配监督办法
- 个性化生物3D打印皮肤修复策略
- 2025湖南怀化市辰溪县招聘社区专职工作者24人备考题库及答案详解(真题汇编)
- 2025安徽池州市贵池区供销烟花爆竹有限公司招聘工作人员招考2人考试笔试备考题库及答案解析
- 2025年金属非金属矿山提升机操作证考试题及答案
- 2026年郴州职业技术学院单招职业技能考试题库带答案解析
- 工程管理专业施工项目的成本控制毕业论文外文文献翻译及原文
- 2025陕西商洛市事业单位引进高层次人才招聘322人历年真题库附答案解析(夺冠)
- 雨课堂学堂在线学堂云《爱情美学(西安思源学院)》单元测试考核答案
- 环卫年终述职报告
- 春江花月夜诵读课件
- 热管理材料导热凝胶
- 从贞观之治到开元盛世
- 3.2 与世界深度互动 课件 2024-2025学年统编版道德与法治九年级下册
评论
0/150
提交评论