发布于 2005-04-30 11:44:12
0楼
1、使用语言VB截取WINCC中的变量
'-----------------------声明与WinCC有关的调用---------------------
Public Mcp As Object
Public McpName As String
Public bMcp As Boolean
'--------------------------------------------------------------------
Private Sub Timer1_Timer()
Dim Tagname1a As String
Dim Tagnamet As String
Dim Tagname1c As String
Dim Tagname2a As String
Dim Tagname2c As String
Dim alarmx
Dim value1, value2
Dim xx
Dim kk
Dim xxpath
If Mcp Is Nothing Then
Exit Sub
Unload Me
End If
If McpName = "" Then
GoTo ddddd
End If
'-----------------------------------------------------------
If Me.Data2.Recordset.EOF = False Then
Me.Data2.Recordset.MoveFirst
shuju1 = Me.Data2.Recordset.Fields("sjbl").Value
kongzhi1 = Me.Data2.Recordset.Fields("kzbl").Value
If Me.Data2.Recordset.RecordCount >= 2 Then
Me.Data2.Recordset.MoveNext
shuju2 = Me.Data2.Recordset.Fields("sjbl").Value
kongzhi2 = Me.Data2.Recordset.Fields("kzbl").Value
End If
End If
'----------------------------数据读取部分开始----------------------------
xx = Mcp.GetValue("printx1")
Tagname1a = shuju1
Tagname2a = shuju2
Tagname1c = kongzhi1
Tagname2c = kongzhi2
convalue1 = Mcp.GetValue(Tagname1c)
value1 = Mcp.GetValue(Tagname1a)
convalue2 = Mcp.GetValue(Tagname2c)
value2 = Mcp.GetValue(Tagname2a)
'----------------------------数据读取部分结束----------------------------
'----------------------------数据记录部分开始----------------------------
If convalue1 < con1 Then
If con1 = 1 And con1 <> "" Then
Me.Data1.Recordset.AddNew
Me.Data1.Recordset.Fields("MCGS_time").Value = Now()
Me.Data1.Recordset.Fields("d3").Value = value1
Me.Data1.UpdateRecord
' Me.Data1.Refresh
Me.Label3.Caption = "共有 " + Str(Data1.Recordset.RecordCount)
End If
End If
If xx > xxx Then
If xx > 0 And xxx <> "" Then
kk = Shell("C:\Program Files\V6.exe ", vbMaximizedFocus)
End If
End If
If convalue2 < con2 Then
If con2 = 1 And con1 <> "" Then
Me.Data1.Recordset.AddNew
Me.Data1.Recordset.Fields("MCGS_time").Value = Now()
Me.Data1.Recordset.Fields("d3").Value = value2
Me.Data1.UpdateRecord
Me.Data1.Refresh
End If
End If
value1 = Mcp.GetValue(Tagname1a)'Tagname1a为WINCC中的定义的变量名称
value2 = Mcp.GetValue(Tagname2a)
con1 = convalue1
con2 = convalue2
xxx = xx
Me.Label3.Caption = "共有 " + Str(Data1.Recordset.RecordCount)
'----------------------------数据记录部分结束----------------------------
Exit Sub
ddddd:
Unload Me
End Sub
'以上为主要代码部分
2、利用VB写报表调用或者查询的程序这在网上VB的论坛里到处都是
另外数据库使用WINCC6 中的SQLSEVER2000不过这属于侵权没人查液没事。如果数据少液可以使用ACCESS
3、建立ODBC的连接然后就是用
4、利用WINCC标准函数中的ProgramExecute(Program_Name); 调用你编写的外部程序就行了。
这个程序是我用程序将WINCC 中的部分数据归档到MCGS的数据库中然后编写了一个统一的报表界面同时供这两种组态软件中调用的。
希望这些能对诸位有一些帮助。
其实我也是菜鸟!!