SIMATIC PC 스테이션에서 WinCC RunTime 용 VB 스크립트를 개발하여 프로젝트의 내역 데이터를 한 달에 한 번 내보내고 있습니다. ADO 연결을 설정하고 결과를 CSV로 인쇄하는 레코드 세트로 쿼리합니다. 몇 가지 문제가 있습니다 :WinCC 런타임에서 아카이브 데이터베이스를 쿼리 할 때 Tagnames 반환
- 레코드 세트는 ValueID를 반환합니다. 해당 레코드에 대응하는 태그 이름을 찾아서 csv에 쓸 수 있기를 원합니다.
- 쿼리 당 태그가 20 개로 제한되어 있지만 태그를 30 개 내보내고 싶습니다.
- 각 태그에 대한 쿼리의 for 루프를 실행하면 아무 것도 생성되지 않습니다.
내 코드는 현재 다음과 같습니다
내가 최종 결과로 필요한 것은Dim fso
Dim f
Dim ts
Dim path
Dim TimeStamp
Dim Pro
Dim DSN
Dim DS
Dim ConnString
Dim MachineNameRT
Dim DSNRT
Dim Conn
Dim RecSet
Dim Command
Dim CommandText
TimeStamp = localDateFormat(Now)
path = "C:\Logs\Test1_" & TimeStamp & ".csv"
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(path) Then
fso.CreateTextFile(path)
Else
MsgBox "File already exist:" & vbCrLf & path
Exit Sub
End If
Set f = fso.GetFile(path)
Set ts = f.OpenAsTextStream(2,-2)
Set MachineNameRT = HMIRuntime.Tags("@LocalMachineName")
Set DSNRT = HMIRuntime.Tags("@DatasourceNameRT")
Pro="Provider=WinCCOLEDBProvider.1;"
DSN="Catalog=" & DSNRT.Read & ";"
DS= "Data Source=" & MachineNameRT.Read & "\WinCC"
ConnString = Pro + DSN + DS
Set Conn = CreateObject("ADODB.Connection")
Conn.ConnectionString = ConnString
Conn.CursorLocation = 3
Conn.open
Set Command = CreateObject("ADODB.Command")
Command.CommandType = 1
Set Command.ActiveConnection = Conn
ts.WriteLine ("Tag-Name;ValueID;Date/Time;Process-Value")
CommandText="Tag:R,'Data_Log\TempTran','0000-01-00 00:00:00.000','0000-00-00 00:00:00.000'"
Command.CommandText=CommandText
Set RecSet = Command.Execute
RecSet.MoveFirst
Do While Not RecSet.EOF
ts.WriteLine ("TempTran;" & RecSet.Fields("ValueID").Value & ";" & RecSet.Fields("TimeStamp").Value & ";" & RecSet.Fields("RealValue").Value)
RecSet.MoveNext
Loop
ts.Close
RecSet.Close
Set RecSet=Nothing
Set Command = Nothing
Conn.Close
Set Conn = Nothing
Set fso = Nothing
Set f = Nothing
Set ts = Nothing
인이
Tag-Name;ValueID;Date/Time;Process-Value;
TempTran;1;dd/mm/yyyy hh:mm:ss;xxx.xxx;
TempTran;1;dd/mm/yyyy hh:mm:ss;xxx.xxx;
PresTran;2;dd/mm/yyyy hh:mm:ss;xxx.xxx;
.
.
.
.
LimitSwt;30;dd/mm/yyyy hh:mm:ss;xxx.xxx;
LimitSwt;30;dd/mm/yyyy hh:mm:ss;xxx.xxx;
LimitSwt;30;dd/mm/yyyy hh:mm:ss;xxx.xxx;
이 문헌 [포스트]와 내보내기 아카이브 데이터 (https://stackoverflow.com/documentation/ado/commit) 문서가 [영원히 사라지기 전에] 지금 백업하십시오 (https://meta.stackoverflow.com/questions/356294/removing-documentation-reputation-archive-and-links?cb=1)! –