Всем доброго времени! как в глобальном скрипте WINCC запросить данные с архива taglogging? В данный момент столкнулся с проблемой аутентификации БД, скрипт работает локально на том же пк где лежит БД, попробовал в скрипт добавить логин, не помогает, куда копать? ниже код скрипта и скрин ошибки.
через MS management БД открывается без проблем.... Sub procedure_Get_totalizer_1_12
On Error Resume Next ' Включаем обработку ошибок
Dim sPro, sDsn, sSer, sCon, sSql, sWriteSql
Dim conn, oCom, oRs
Dim resultValue
Dim logMsg, errMsg
logMsg = "Начало выполнения скрипта" & vbCrLf
' Настройка подключения к базе WinCC с именем сервера и учетными данными
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=CC_DSU3303-_25_03_31_09_19_49R;"
sSer = "Data Source=SERVER\WinCC;" ' SERVER как имя сервера
sCon = sPro & sDsn & sSer
logMsg = logMsg & "Строка подключения: " & sCon & vbCrLf
Set conn = CreateObject("ADODB.Connection")
If Err.Number <> 0 Then
errMsg = "Ошибка создания объекта Connection: " & Err.Description & " (" & Err.Number & ")"
MsgBox errMsg, vbCritical, "Ошибка"
Exit Sub
End If
conn.ConnectionString = sCon
conn.CursorLocation = 3 ' adUseClient
' Открытие соединения с проверкой
conn.Open
If Err.Number <> 0 Then
errMsg = "Ошибка открытия соединения: " & Err.Description & " (" & Err.Number & ")"
MsgBox errMsg, vbCritical, "Ошибка"
Set conn = Nothing
Exit Sub
End If
logMsg = logMsg & "Соединение открыто успешно" & vbCrLf
' Запрос для чтения данных
sSql = "TAG:R,'Аналоговые\Totalizer_1','0000-00-00 00:00:10.000','0000-00-00 00:00:00.000'"
logMsg = logMsg & "SQL запрос: " & sSql & vbCrLf
Set oCom = CreateObject("ADODB.Command")
If Err.Number <> 0 Then
errMsg = "Ошибка создания объекта Command: " & Err.Description & " (" & Err.Number & ")"
MsgBox errMsg, vbCritical, "Ошибка"
conn.Close
Set conn = Nothing
Exit Sub
End If
oCom.CommandType = 1 ' adCmdText
Set oCom.ActiveConnection = conn
oCom.CommandText = sSql
' Выполнение запроса и получение результата
Set oRs = oCom.Execute
If Err.Number <> 0 Then
errMsg = "Ошибка выполнения запроса: " & Err.Description & " (" & Err.Number & ")"
MsgBox errMsg, vbCritical, "Ошибка"
Set oCom = Nothing
conn.Close
Set conn = Nothing
Exit Sub
End If
logMsg = logMsg & "Запрос выполнен успешно" & vbCrLf
' Проверка наличия данных в результате
If oRs.EOF Then
logMsg = logMsg & "ВНИМАНИЕ: Результат запроса пуст" & vbCrLf
MsgBox logMsg, vbExclamation, "Информация"
oRs.Close
Set oRs = Nothing
Set oCom = Nothing
conn.Close
Set conn = Nothing
Exit Sub
End If
resultValue = oRs.Fields(0).Value
logMsg = logMsg & "Получено значение: " & resultValue & vbCrLf
oRs.Close
' Запись результата в другой тег
If Not IsEmpty(resultValue) Then
logMsg = logMsg & "Попытка записи в тег Totalizer_1_12" & vbCrLf
On Error Resume Next
Dim objTag
Set objTag = HMIRuntime.Tags("Totalizer_1_12")
If Err.Number <> 0 Then
errMsg = "Ошибка получения тега Totalizer_1_12: " & Err.Description & " (" & Err.Number & ")"
MsgBox errMsg, vbCritical, "Ошибка"
Set oRs = Nothing
Set oCom = Nothing
conn.Close
Set conn = Nothing
Exit Sub
End If
Err.Clear
objTag.Write CDbl(resultValue)
If Err.Number <> 0 Then
errMsg = "Ошибка записи в тег: " & Err.Description & " (" & Err.Number & ")"
MsgBox errMsg, vbCritical, "Ошибка"
Else
logMsg = logMsg & "Значение " & resultValue & " успешно записано в тег Totalizer_1_12" & vbCrLf
End If
Set objTag = Nothing
Else
logMsg = logMsg & "ВНИМАНИЕ: Пустое значение, запись в тег не выполнена" & vbCrLf
End If
' Очистка объектов
Set oRs = Nothing
Set oCom = Nothing
conn.Close
Set conn = Nothing
logMsg = logMsg & "Скрипт завершен" & vbCrLf
MsgBox logMsg, vbInformation, "Информация о выполнении"
End Sub
Вернуться к началу
Комментарии: 5
Sergej
Всем доброго времени! как в глобальном скрипте WINCC запросить данные с архива taglogging? В данный момент столкнулся с проблемой аутентификации БД, скрипт работает локально на том же пк где лежит БД, попробовал в скрипт добавить логин, не помогает, куда копать? ниже код скрипта и скрин ошибки. через MS management БД открывается без проблем.... Sub procedure_Get_totalizer_1_12 On Error Resume Next ' Включаем обработку ошибок Dim sPro, sDsn, sSer, sCon, sSql, sWriteSql Dim conn, oCom, oRs Dim resultValue Dim logMsg, errMsg logMsg = "Начало выполнения скрипта" & vbCrLf ' Настройка подключения к базе WinCC с именем сервера и учетными данными sPro = "Provider=WinCCOLEDBProvider.1;" sDsn = "Catalog=CC_DSU3303-_25_03_31_09_19_49R;" sSer = "Data Source=SERVER\WinCC;" ' SERVER как имя сервера sCon = sPro & sDsn & sSer logMsg = logMsg & "Строка подключения: " & sCon & vbCrLf Set conn = CreateObject("ADODB.Connection") If Err.Number <> 0 Then errMsg = "Ошибка создания объекта Connection: " & Err.Description & " (" & Err.Number & ")" MsgBox errMsg, vbCritical, "Ошибка" Exit Sub End If conn.ConnectionString = sCon conn.CursorLocation = 3 ' adUseClient ' Открытие соединения с проверкой conn.Open If Err.Number <> 0 Then errMsg = "Ошибка открытия соединения: " & Err.Description & " (" & Err.Number & ")" MsgBox errMsg, vbCritical, "Ошибка" Set conn = Nothing Exit Sub End If logMsg = logMsg & "Соединение открыто успешно" & vbCrLf ' Запрос для чтения данных sSql = "TAG:R,'Аналоговые\Totalizer_1','0000-00-00 00:00:10.000','0000-00-00 00:00:00.000'" logMsg = logMsg & "SQL запрос: " & sSql & vbCrLf Set oCom = CreateObject("ADODB.Command") If Err.Number <> 0 Then errMsg = "Ошибка создания объекта Command: " & Err.Description & " (" & Err.Number & ")" MsgBox errMsg, vbCritical, "Ошибка" conn.Close Set conn = Nothing Exit Sub End If oCom.CommandType = 1 ' adCmdText Set oCom.ActiveConnection = conn oCom.CommandText = sSql ' Выполнение запроса и получение результата Set oRs = oCom.Execute If Err.Number <> 0 Then errMsg = "Ошибка выполнения запроса: " & Err.Description & " (" & Err.Number & ")" MsgBox errMsg, vbCritical, "Ошибка" Set oCom = Nothing conn.Close Set conn = Nothing Exit Sub End If logMsg = logMsg & "Запрос выполнен успешно" & vbCrLf ' Проверка наличия данных в результате If oRs.EOF Then logMsg = logMsg & "ВНИМАНИЕ: Результат запроса пуст" & vbCrLf MsgBox logMsg, vbExclamation, "Информация" oRs.Close Set oRs = Nothing Set oCom = Nothing conn.Close Set conn = Nothing Exit Sub End If resultValue = oRs.Fields(0).Value logMsg = logMsg & "Получено значение: " & resultValue & vbCrLf oRs.Close ' Запись результата в другой тег If Not IsEmpty(resultValue) Then logMsg = logMsg & "Попытка записи в тег Totalizer_1_12" & vbCrLf On Error Resume Next Dim objTag Set objTag = HMIRuntime.Tags("Totalizer_1_12") If Err.Number <> 0 Then errMsg = "Ошибка получения тега Totalizer_1_12: " & Err.Description & " (" & Err.Number & ")" MsgBox errMsg, vbCritical, "Ошибка" Set oRs = Nothing Set oCom = Nothing conn.Close Set conn = Nothing Exit Sub End If Err.Clear objTag.Write CDbl(resultValue) If Err.Number <> 0 Then errMsg = "Ошибка записи в тег: " & Err.Description & " (" & Err.Number & ")" MsgBox errMsg, vbCritical, "Ошибка" Else logMsg = logMsg & "Значение " & resultValue & " успешно записано в тег Totalizer_1_12" & vbCrLf End If Set objTag = Nothing Else logMsg = logMsg & "ВНИМАНИЕ: Пустое значение, запись в тег не выполнена" & vbCrLf End If ' Очистка объектов Set oRs = Nothing Set oCom = Nothing conn.Close Set conn = Nothing logMsg = logMsg & "Скрипт завершен" & vbCrLf MsgBox logMsg, vbInformation, "Информация о выполнении" End Sub Вернуться к началу
Anonim
Скорее всего так же, как и в лоджик 500, при отключении онлайн, сохранить файл.
Arman
Открыть проект. Подключиться к ПЛК. Нажать сохранить.
Wimeer
При этом сохранятся все текущие значения переменных? Не самый очевидный способ конечно. Спасибо, попробую.
Arman
Да