技术论坛

 回复:关于WINCC访问远程数据的采集和写入本地自建数据库

返回主题列表
作者 主题
iZhouSai
侠士

经验值:1429
发帖数:40
精华帖:8
楼主    2016-12-12 10:15:29
主题:关于WINCC访问远程数据的采集和写入本地自建数据库 精华帖 

第一步保证远程的数据库能在本地的SQL程序中打开。

可以参照此博客的步骤进行配置

http://www.cnblogs.com/yougmi/p/4616273.html

然后就是代码区了!





'////////////////////////////////////////////////////////////////////////////////////

'2016-12-9

'采集远程数据库上面的电度

'只要配置好远程的SQL访问设置(允许远程访问)

'////////////////////////////////////////////////////////////////////////////////////

'实现方案!

'建立连接筛选出需要用到的列

'读取数据

'送到本地数据库中

'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

'远程数据库变量


On Error Resume Next

'Remote

Dim rStrCn,rCn,rSql,rConn,rRS,rCom

'本地数据库变量

'local

Dim lStrCn,lCn,is_lSql,lConn,lRS,lCom

Dim n,i

Dim Ana(1,14)


Dim riqi

Dim DateTime



'从WINCC访问sql2005数据库步骤:

'1) 创建一个到数据库的 ADO 连接 

'2) 打开数据库连接

'3) 创建ADO记录集

'4) 从记录集提取你想要的数据,在表格显示出来

'5) 关闭记录集

'6) 关闭连接

'查询语句rSql

rSql = "SELECT  pON, ReaValue FROM Ana WHERE pON BETWEEN 135 AND 149 ORDER BY pON "

'创建一个ADO连接远程数据库并且读出需要数据

rStrCn = "Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Password=123456;Initial Catalog=EasyOnline;Data Source=192.168.0.109,1433WINCC"  

'创建ADO连接对象,对数据库操作

Set rConn = CreateObject("ADODB.Connection")

    rConn.ConnectionString = rStrCn

    rConn.CursorLocation = 3

    rConn.Open

    '打开数据库连接

'使用命令文本查询

'读取数据库的数据,那么其中的数据必须首先被载入一个记录集中。ADO连接创立后,就可以创建一个ADO记录集了。

Set rRS = CreateObject("ADODB.Recordset")

'创建一个ADO.Command对象。该查询用于取回数据,此数据将以一个 RecordSet 对象返回。这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作

Set rCom = CreateObject("ADODB.Command")

'返回一个 Command 对象的类型

rCom.CommandType = 1

'返回包含了定义连接或 Connection 对象的字符串

Set rCom.ActiveConnection = rConn

'设置或返回包含提供者(provider)命令的字符串

    rCom.CommandText = rSql

'执行 CommandText 属性定义的Sq1定义查询、SQL 语句或存储过程

Set rRs = rCom.Execute

    n = rRs.RecordCount

    

i = 0

rRs.MoveFirst

Do While Not rRs.EOF


'取第一条记录的值。ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象

Ana(0,i) = CStr(rRs.Fields(0).Value)

Ana(1,i) = CStr(rRs.Fields(1).Value)

i = i +1

  rRs.MoveNext

Loop


rRs.close'退出程序前,关闭与数据库,记录集的连接

rConn.close

rCom.close



'添加到本地数据库

riqi=Now

lStrCn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=Electric_energy_meter;Data Source=.wincc"

Set lCn=CreateObject("ADODB.connection")

lCn.connectionString = lStrCn 

lCn.Open

'执行INSERT INTO语句进行数据库的行添加

is_lSql = "insert into meter("& _

"Time,"& _

"jinxian1,"& _

"dianronggui1,"& _

"dianronggui2,"& _

"dianronggui3,"& _

"jiegouPL1,"& _

"jiegouPL2,"& _

"jiegouPL3,"& _

"tuzhuangdasha,"& _

"zhonghelou,"& _

"cangkuyuliu,"& _

"jiegouzhaoming,"& _

"beiyong,"& _

"biandianfangAL2,"& _

"weixiubanPL8"& _

") Values("& _

" '"& riqi &"',"& _

" '"& Ana(1,0) &"',"& _

" '"& Ana(1,1) &"',"& _

" '"& Ana(1,2) &"',"& _

" '"& Ana(1,3) &"',"& _

" '"& Ana(1,4) &"',"& _

" '"& Ana(1,5) &"',"& _

" '"& Ana(1,6) &"',"& _

" '"& Ana(1,7) &"',"& _

" '"& Ana(1,8) &"',"& _

" '"& Ana(1,9) &"',"& _

" '"& Ana(1,10) &"',"& _

" '"& Ana(1,11) &"',"& _

" '"& Ana(1,12) &"',"& _

" '"& Ana(1,13) &"'"& _

")"

lCn.Execute is_lSql

lCn.Close


我的梦想 世界和平;上帝:??? 改变小企业行业现状;工控大佬:???
RENHQ
版主

经验值:74837
发帖数:13657
精华帖:61
1楼    2016-12-12 10:30:33
精华帖  主题:回复:关于WINCC访问远程数据的采集和写入本地自建数据库

感谢分享

WinCC、Excel、VBA、脚本、连通性软件包

https://support.industry.siemens.com/cs/cn/zh/view/71676391

这个文档上也有介绍

Q群:https://jq.qq.com/?k=9BDuEgf6
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。