打印本文 关闭窗口 |
| 用VB编写OPC客户端访问WINCC |
| 作者:佚名 文章来源:不详 点击数 689 更新时间:2009/12/31 15:28:11 文章录入:ruoheng |
|
|
OPC是一个工业标准,它是由一些世界上著名的自动化系统和硬件、软件公司和Microsoft(微软)紧密 WinCC在安装时提供了OPC的客户端控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll),这个控件就是我们在VB中要用到的控件,我们也可以使用通用的OPC客户端控件: OPC Automation 2.0. 在WINCC的帮助中,有Siemens OPC DAAutomation 2.0使用的简略帮助,但说得不很详细,我在使用中碰到不少问题,现一并写出来,与大家共享。 一、OPC的连接 先在“引用”将近 Siemens OPC DAAutomation 2.0加入,然后开始定义全局变量。在本程序中,我使用了两个OPC组进行OPC访问,所以定义了全局变量。我们要首先定义OPC服务类型与计算机结点名。定义OPC组与OPC标签组。并定义OPC的标签数组与值数,注意,值数组一定要设为Variant。 'OPC处理:只对WINCC
配置好标签后就要进行OPC连接了。如下面子程序: 1、 ClientHandles1先配置名柄索引,这将在读取OPC标签的值时可要用到 2、 生成OPC对象 3、 进行OPC标签连接 至此:OPC连接就成功了,我们可以对OPC进行读与写的操作了。 '--------------------------------------------------------------------- ' Sub StartClient() ' 目的:连接至OPC_server,创建组和添加条目 '--------------------------------------------------------------------- 对OPC标签的读可以通过MyOPCGroupIn组与MyOPCGroupOut的DataChange事件来读取。该事件有多个参数:其中NumItems是指标签改变值的个数,ClientHandles是改变值的标签索引,ItemValues为改变值的数据,具体的意思是ClientHandles(1)的值是其对应的标签数组的索引,其所指的OPC标签的值在ItemValues(1)中。一般来说,刚连接上时,该事件会把全部所要求访问的OPC标签值全部读取过来(顺序不一,要通过ClientHandles索引),此后只有数据发生变化时才会触发该事件。也只会传输发生了变化的数据,没有变化的数据不会出现在本事件的ItemValues中。
对OPC的写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。 要进行数据传输,先要将值数据进行赋值,注意:值数据要由0开始,也就是说,值数组与标签数据不是一、一对应,值要比标签前一位,这一点,在WINCC说明中没有,但在我的实际的使用中一直要这样,不然数据就产生错位,看下面程序。 这是一个拔号完毕后返回的数据进行OPC传递的程序。包含解包过程,
三、OPC连接断开 断开的程序相当简单,释放资源即可。如下,
四、结语 OPC的使用是作为一个DCOM在使用,所以OPC客户端可以网络上任一计算机运行,但你必须配置DCOM的访问权限,如果你不想费神,把服务器与客户端都用相同的用户名与密码登录就成了。如果想配置DCOM,请参看DCOM的配置。
|