技术论坛

 《Python 通过WebService 接口查询WinCC OA服务器的数据》

返回主题列表
作者 主题
checkitout
官方工程师
西门子官方工程师西门子官方工程师

经验值:1628
发帖数:180
精华帖:17
楼主    2018-05-07 16:20:09
主题:《Python 通过WebService 接口查询WinCC OA服务器的数据》 精华帖 

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 = ""

      },

…….

}

 

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。