Коллеги, может кто подсказать как сохранить онлайн значения переменных в RXLogix 5000? Помогите плиз сименсоиду.

Комментарии: 5

  1. 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 Вернуться к началу

  2. Anonim

    Скорее всего так же, как и в лоджик 500, при отключении онлайн, сохранить файл.

  3. Arman

    Открыть проект. Подключиться к ПЛК. Нажать сохранить.

    • Wimeer

      При этом сохранятся все текущие значения переменных? Не самый очевидный способ конечно. Спасибо, попробую.

      • Arman

        Да

Не нашли ответ?

Вам также может быть интересно