你当前的位置:首页 > 编程技巧 >

运用VC#编程通过OPC方式实现PC机与西门子PLC通讯--同步篇

返回文章列表 作者:老耿 时间:01-27 来源:大测控  字体:【

运用VC#编程通过OPC方式实现PC机与西门子PLC通讯--同步

1、 OPC服务介绍

  西门子提供的最新软件:Simatic Net PC-Software CD 2005为各种组态软件的开发提供了一个统一的平台,它建立的PC站既为一些组态软件,如:WinCC、Protol等提供了与PLC的通讯平台,也提供了一套编程接口,可使用高级语言编程通过Simatic Net访问PLC数据。本文讨论的主要就是这个编程接口,最新版的Simatic NET支持五种编程方式:

<1>、ActiveX控件

  提供了一系列数据访问控件,以便于向VB6这种语言使用控件的方式与PLC通讯。

<2>、OPC自动化

为VB6、Dephi等语言运用OLE 自动化的方式进行编程。

<3>、OPC用户接口

  这是专门为VC++提供的一种高效编程方式,其灵活程度与执行效率比前面的两种方式均要高得多。

<4>、针对微软的.NET平台的OPC用户接口

  这也是一种非常灵活的编程接口,不过它针对的是.NET平台,其提供了大量的.NET类库,以便于像VC#、VB.NET等高级语言编程。本文将详细的介绍该接口。

<5>、OPL XML接口

  顾名思义,主要是针对XML编程的。

  对于<2>、<3>、<4>编程方式,他们各自又可以分为同步访问方式和异步访问方式。按西门子的文档解释:同步通讯指的是当一个客户在访问服务器时,其他客户的访问必须等待,直到服务器处理完该客户的请求,才能继续进行下一个服务,异步访问与之正好相反,本文主要讲的是同步编程篇,异步篇以后再提供。

2、 配置OPC服务器

  要进行编程,必须先配置服务器。本文以Prfibus DP网络为例,介绍PC站的配置。其内容主要来自西门子文档。

需要的软件:

Step7 V5.3
Simatic Net PC-Software CD 2005 

需要的硬件:

  至少为CP5611或以上级别,笔记本可以为CP5511,带DP口的S7-300 PLC(若使用Simatic NET的仿真功能可以不需要这些硬件,后面会介绍到)

  <1>、组态一个S7站,配置Profibus DP网络,其DP地址设为3,并下载到PLC,然后把网线由MPI口转到DP口。S7站的配置这里就不介绍了。

  <2>、在 Step7 V5.3中建立一个新工程,插入一个PC站,并把该PC站的名字改成与你的计算机名字相同。打开该PC站的硬件组态界面。插入OPC服务器和连接卡CP5611(或者CP5511),他们在PC槽中处的位置可以任意,
  注:在插入CP5611时,应该选择与组态S7站一样的Profibus网络,并将网络地址设为2,一定不要与PLC的地址冲突。

  然后点击下面工具条标为红色的按钮:
  选中”OPC Server”,然后插入一个新的连接,
  在弹出的对话框中选择连接类型为S7 Connection,
  在OK后,然后在新对话框的红色标志位置输入3,表示PLC的地址,
  并选择Address Details…,设置CPU的槽号为2,
  OK后,然后编译并保存。

  <3>、然后建立OPC服务器,有两种方式,本文介绍较简单的一种。

  打开,Simatic Net中的Station Configurator,一般安装后,他会自动启动,并点击Import Station…按钮,找到你刚才在Step 7中建立PC站时创建的

  XDBs文件夹下的XDB文件,然后导入成功。

  <4>、可以使用Simatic Net中的OPC Scout,并选择Simatic NET服务,然后在它下面创建组,然后在组下创建变量,这样可以监控PLC数据,VC#编程不需要使用该程序,但熟悉使用OPC Scout有利于了解Simatic Net中的编程结构。

  说明:打开Simatic Net中的Configuration Console,选中S7进行如下的配置后,可以不需要PLC、CP5611等并可以模拟,
  上面的所有步骤,均可在Configuration Console下,PC Station的根树下,选择相应的帮助文档得到。
3、 OPC编程

<1>、西门子的变量结构如下:

----------------------服务器------------------------------
/ OPC.SimaticNet OPCServer.Wincc .... (一系列类型的服务器)
/ Group1 Group2 Group3 ...(把更新时间一致的变量统一为一个组)
/ Item1 Item2 ... (变量:I、Q、M、DB等,指向网络中某个PC站OPC Server服务的某个连接)
----------------------------------------------------------------------------------------------------------------- 
  第一层是不同种类的服务器,如:OPC.SimaticNET类型,OPC.SimaticNET.DP类型,OPCServer.WinCC等一系列类型,这里选择OPC.SimaticNET类型。

第二层是Group,一个服务器下可以有多个组,可以把组理解为扫描周期相同的一系列变量的集合。在开发组态界面时,可以把一个界面中的所有变量统一到一个组中。

第三层是Item,项是指向网络中某个PC站OPC Server服务的某个连接的一系列变量,如:I、Q、M、DB等

<2>、项的命名

  项即Item,在S7连接中针对的直接是PLC中的变量,因此它的命名很重要:

  格式: :[]
其中的protocolID表示连接类型,在上面的组态PC站时可以选择,这里应该与它一致,类型有9种,最常用的为S7,即S7连接,其他类型请参看文档。

  Connectionname:顾名思义,即在上面的组态PC站时产生的连接名,如果使用仿真功能,连接名为DEMO Variablename:变量名有一系列规则,这里举例说明,读者也可以使用OPC Scout创建变量,学习程序是如何生成变量名的。

S7:[DEMO]MB1 :表示连接类型为S7,连接名为DEMO(这里为仿真),变量为MB1
S7:[DEMO]QB0,3: 表示为从QB0开始的三个连续变量。
S7:[DEMO]DB10,X4.6 :表示DB10的DBX4.6。

<3>、添加引用

  在VC#开发环境中添加对OpcRcw.Da库的引用引用,该库属于.NET库,不属于COM库,西门子虽然编写了类库,以提供对.NET平台的支持,但这些类库仍然难于编程,

  里面包含了大量的在托管和非托管区传输数据,因此我们需要在它的基础上再开发一个类库,以简化以后的编程,首先在类的开头使用命名空间:
using System.Runtime.InteropServices;
using OpcRcw.Da;
using System.Collections;

<4>、编程

1、 在类的开头部分生名变量

private string serverType="";
private IOPCServer pIOPCServer; // OPC server接口
private Object pobjGroup1; // Pointer to group object 
private int nSvrGroupID; // server group handle for the added group 
private System.Collections.Hashtable groupsID=new Hashtable(11); //用于记录组名和组ID号
private System.Collections.Hashtable hitemsID=new Hashtable(17); //用于记录项名和项ID号
private Guid iidRequiredInterface;
private int hClientGroup = 0; //客户组号
private int hClientItem=0; //Item号

文章相关
现有0条评论 | 更多评论..

我要发表看法



  如果您还不是本站会员
欢迎加入
  • ※ 评论注意事项:
  • 不是会员或未登陆发表评论,评论人名字显示为匿名。
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规。
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任。
  • 本站管理人员有权保留或删除评论中的任意内容。
  • 参与本评论即表明您已经阅读并接受上述条款。
站内搜索
本栏热门
计算机及通讯技术已成为工业环境中大部分解决方案的核心部分,其在系统中的比重正在迅速增加。在工业控制中,交流电机的拖动越来越多的采用变频器完成,不仅作为一个单独的执行机构,而是随着不断的智能化,同远程计算机之间可以通过各种通讯方式结合成一个有机的整体。
自来水是保障城市经济发展和人民生活的重要基础设施,是保障城市繁荣发展、人民生活以及发展国民经济不可缺少的先决条件。从另一个方面来说,我国是一个高度缺水的发展中国家,随着改革开放的不断深入和发展以及人口数量的不断增长,无论从自来水产量和质量上,社会都对城市供水提供了更高的要求。而实现水厂与供水调度系统的自动化,是保证自来水安全
针对控制系统中上位机与S7-200系列PLC通信的实际问题,总结了几种监控计算机与S7-200系列PLC的通信方法,这几种方法在不同的控制系统中能较好解决监控计算机与S7-200系列PLC通信问题。西门子工控产品在工控领域应用市场中有较高的占有率,S7-200系列PLC是西门子SIMATIC PLC
西门子S7-200PLC是德国西门子公司生产的小型PLC。S7-200以其高可靠性、指令丰富、内置功能丰富、强劲的通讯能力、较高的性价比等特点,在工业控制领域中被广泛应用。S7-200PLC的突出特点之一是自由口通讯功能。如何实现S7-200PLC与个人计算机的互联通信,是S7-200PLC应用
桥式起重机是厂矿、仓库等部门常用的起重设备,在工业生产过程中起重举足轻重的作用。传统的桥式起重机主要是有交流凸轮控制器进行控制,采用绕线式电动机转子串电阻调速,交流控制器由于频繁的动作和高压的影响,经常会出现触点烧损的现象,电阻箱受工作环境的影响容易腐蚀

设为首页| 加入收藏| 联系我们
Copyright 2004-2007 Www.plc365.coM All Rights Reserved
免费提供PLC可编程控制器编程资料,应用案例,软件下载
请使用1024*768分辨率浏览本站以达到最佳视觉效果