大虾分享:
使用ADO读取WinCC组态数据库获取结构变量信息,以下代码在WinCC V6.0里测试通过
在画面添加一个按钮,两个微软ComboBox(Combo1、Combo2)
在按钮的鼠标事件里写如下VB代码
Dim cn,rs,rs1,sCon,DSN
DSN=Replace(HMIRuntime.Tags("@DatasourceNameRT").Read,"R","")
sCon="Provider=sqloledb;Integrated Security=SSPI;"
sCon=sCon & "Data Source=127.0.0.1WinCC;"
sCon=sCon & "Initial Catalog=" & DSN
Set cn=CreateObject("ADODB.Connection")
Set rs=CreateObject("ADODB.RecordSet")
Set rs1=CreateObject("ADODB.RecordSet")
cn.ConnectionString=sCon
cn.CursorLocation=3
cn.Open
rs.Open "Select * From MCPTVARIABLETYPE where VARIABLETYPECLASS = 'STRUCTURE'", cn,1,3,-1
rs.MoveFirst
ScreenItems("Combo1").Clear
Do While Not rs.EOF
ScreenItems("Combo1").AddItem rs.Fields(1).Value
rs.MoveNext
Loop
ScreenItems("Combo1").ListIndex = 0
rs1.Open "Select * From MCPTVARIABLEDESC As a INNER JOIN MCPTVARIABLETYPE As b ON b.VARIABLETYPENAME ='" & _
ScreenItems("Combo1").Text & "' And a.VARIABLETYPEID = b.VARIABLETYPEID", cn, 1, 3, -1
rs1.MoveFirst
ScreenItems("Combo2").Clear
Do While Not rs1.EOF
ScreenItems("Combo2").AddItem rs1.Fields(5).Value
rs1.MoveNext
Loop
ScreenItems("Combo2").ListIndex = 0
rs.Close
rs1.Close
cn.Close
Set rs=Nothing
Set rs1=Nothing
Set cn=Nothing
在Combo1的Click事件里写如下VB代码
Dim cn,rs1,sCon,DSN
DSN=Replace(HMIRuntime.Tags("@DatasourceNameRT").Read,"R","")
sCon="Provider=sqloledb;Integrated Security=SSPI;"
sCon=sCon & "Data Source=127.0.0.1WinCC;"
sCon=sCon & "Initial Catalog=" & DSN
Set cn=CreateObject("ADODB.Connection")
Set rs1=CreateObject("ADODB.RecordSet")
cn.ConnectionString=sCon
cn.CursorLocation=3
cn.Open
rs1.Open "Select * From MCPTVARIABLEDESC As a INNER JOIN MCPTVARIABLETYPE As b ON b.VARIABLETYPENAME ='" & _
ScreenItems("Combo1").Text & "' And a.VARIABLETYPEID = b.VARIABLETYPEID", cn, 1, 3, -1
rs1.MoveFirst
ScreenItems("Combo2").Clear
Do While Not rs1.EOF
ScreenItems("Combo2").AddItem rs1.Fields(5).Value
rs1.MoveNext
Loop
ScreenItems("Combo2").ListIndex = 0
rs1.Close
cn.Close
Set rs1=Nothing
Set cn=Nothing
游侠:
虽然功能不太理解,但还是精华了。
大虾:
这段代码功能就是,点击按钮在Combo1里列出项目里定义的结构变量类型,在Combo1里选择结构变量类型,在Combo2里列出该结构变量类型下定义的变量名称。
这个是高塍同志在峰会提出的,他在项目里使用了结构变量,并在脚本里访问结构变量,不同的项目使用不同数量的结构变量,这样在脚本里就需要大量的人工输入结构变量名称。
游侠:
运行时,浏览结构变量名称干啥?
大虾:
应该就是不用在脚本里输入结构变量名称,做到多项目代码共用,详情还是要高塍同志来解释。
斑竹:
奇侠同志感谢你,上次峰会我有个不是很小的项目脱不开身,峰会我让我上司兼朋友去参加的,机会难得承蒙西门子盛情不忍心弗其好意范冒名顶替的戒条了。我会让他给你回帖的,他管的项目多所以对项目的结构化模块化,标准化,应用层面傻瓜化*舍得花功夫,弄得我反而不适应甚至有些排斥,可能处的位置不一样吧!特意给你献花一朵,并给大家献花一朵。不是modubus通讯实数不一致这个贴我还不知道这个插曲,再次向你致敬!