Python 作为功能强大的语言在很多领域都已经有所应用,在做数据分析或机器学习方面应用也比较多。

而WinCC OA通过Reporting Manager提供了一种WebService

接口,给第三方提供数据。

第三方软件或程序,如:Python,可以方便的通过这个WebService 接口读取到WinCC

OA的实时和历史数据,从而进一步充分利用SCADA的数据。

下面给大家一个Python通过WebService接口查询WinCC OA实时数据的简单的例子参考,可以酌情修改适应自己的应用:

# -*- coding: utf-8 -*-

#需要检查Python是否已安装了suds库

from suds.client import Client

# Reporting manager 需要在WinCC OA中启动

#Reporting manager 的使用和配置的具体内容请参考

#WinCC OA在线帮助

my_url="http://localhost:8080/?wsdl"

#webService 读取

#url:为webservice的地址

#data:为需要查询的数据

def wsQuery(url,data):

client =

Client(url)#创建一个webservice接口对象

#具体可以根据wsdl文件中描述的函数列表,灵活使用具体的服务调用

res=client.service.dpQuery(data)

#print

res

#res[2][2][0] #[2][2][0] is dp name

#res[2][2][2] #[2][2][1] is

value

if(len(res)> 2):

for i in

range(0, len(res[2])):

#打印查询结果

print str(res[2][i][0]) + '=' +

str(res[2][i][1])

else:

#如果没有查到数据

print

"no data returned"

if __name__

=='__main__':

#'Ex*': 返回所有以Ex打头的变量

#关于通配符的使用以及

SELECT 查询语法可以参考WinCC OA的在线帮助。

wsQuery(my_url,"SELECT '_online.._value' FROM 'Ex*.'")

注:

其中WinCC OA 返回给 Python的数据, 打印出来格式如下:

(returnQueryValueList){

errorCode = 0

errorText = None

table[] =

(QueryValue){

column1 = "System1:ExampleDP_Arg1."

column2 = 4.0

column3 = ""

column4 = ""

column5 = ""

column6 = ""

column7 = ""

},

(QueryValue){

column1 = "System1:ExampleDP_Arg2."

column2 = 50.0

column3 = ""

column4 = ""

column5 = ""

column6 = ""

column7 = ""

},

…….

}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐