1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Ответить

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

Здравствуйте уважаемые форумчане! Помогите решить следующую проблему есть папка "DataBase" в которую раз в сутки поступают файлы "csv" со следующим названием:
- MAG8000_296305H319_2020-02-08 0403
- MAG8000_296305H319_2020-02-26 0701
Задача состоит в том чтоб считывать актуальные данные с этих файлов т.е. с последней датой сохранения. Образец скрипта для считывания данных есть но это не решает проблему. Вопрос: возможно ли написать скрипт который будет открывать файл по отрывку в названий например "MAG8000_296305H319" и по последней дате сохранения? Если это возможно буду рад подсказке. Пытаюсь реализовать все это на WinCC RT Pro 15.1. Внизу предоставил образцы скриптов для реализаций.

Образец скрипта для считывания данных(не работает скорее всего я неправильно написал)

[code]Sub OnClick(ByVal Item)


Dim tagName, tagValue, tagFilename
Dim strFilename, strLine, arrItems
Dim fso, objFile, objTag

Set tagFilename = HMIRuntime.Tags("Filename")
Set fso = CreateObject("Scripting.FileSystemObject")
strFilename = tagFilename.Read

If fso.FileExists(strFilename) Then

'for Control
HMIRuntime.Trace("VB-Script: read file: " & strFilename & vbCrLf)

Set objFile = fso.OpenTextFile(strFilename,1)= "C:\file\MAG8000_296305H319_2020-02-08 0403.csv"
Do
strLine = objFile.ReadLine
arrItems = Split(strLine, ";", -1, 1)
tagName = CStr(arrItems(0))
tagValue = CDbl(arrItems(1))

'for Control
HMIRuntime.Trace(tagName & " Value: " & tagValue & vbCrLf )

Set objTag = HMIRuntime.Tags("tag_1")
objTag.Value = tagValue
objTag.Write
Loop Until objFile.AtEndOfStream
Else
HMIRuntime.Trace("File: " & strFilename &" not found!" & vbCrLf)
End If

objFile.Close


End Sub[/code]

образец скрипта для считывания CSV файлов по названию и дате обновления

[code]Folder = "DataBase"
BeginN = "MAG8000_296305H319"
'————————————————————————————
Set oCol = CreateObject("System.Collections.SortedList")
For Each F In CreateObject("Scripting.FileSystemObject").GetFolder(Folder).Files
If StrComp(Right(F, 4), ".csv", 1) = 0 And InStr(F.Name, BeginN) = 1 Then oCol.Add F.DateCreated, F
Next
CreateObject("Shell.Application").ShellExecute oCol.GetByIndex(oCol.Count - 1)
Set oCol = Nothing[/code]

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Надо чтобы все именно автоматически происходило или это для оператора без выхода в проводник?
Если второе то можно вывести список файлов к объекту типа List Box, если первое - посложнее, но думаю возможно.
Можно создать список файлов, взять с них дату последнего изменения (или дату создания), отсортировать по дате и выбрать последний измененный/созданный и таким образом определить последний файл.
Если у вас имена файлов все будут однотипные типа "MAG8000_296305H319_2020-02-08 0403" то дату можно определить взяв дату от 18 до 28 символа
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

Да, название файла всегда с датой записи данных проблема через какой скрипт это реализовать

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Rabinio писал(а): 11 июн 2020, 06:21 Да, название файла всегда с датой записи данных проблема через какой скрипт это реализовать
Вы не ответили на мой вопрос
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

Получается и то и другое чтоб у оператора была возможность на экране видеть последние записанные в CSV файле показания и при желаний открыть сам файл. У меня есть образец проекта который реализован на WinCC RT Adv. но скрипты этого проекта адаптировать под WinCC RT Pro мне пока что не удалось. Для большей информативности скрин экрана WinCC RT Adv. закреплю под постом. Спасибо.
Безымянный.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение SMax »

В VBS вот так: (в переменной Str путь к последнему измененному файлу)

Код: Выделить всё

FolderPath = "C:\Test\"
Str = vbNullString

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(FolderPath)
Set Files = Folder.Files

For Each File In Files
    If File.DateLastModified > PrevFile Then PrevFile = File.DateLastModified: Str = File.Path
Next

MsgBox Str

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Я бы сделал так. Два лист бокса, один для массива имен файлов, другой для массива даты изменения файлов.
При нажатии на кнопку "Сканировать папку" заполняются оба лист бокса и формируется их высота.
Затем в левом листбоксе оператора выбирает нужный ему файл, а понять какой ему нужен он может по имени файла или по дате изменения, и нажимает выбрать файл. Выбрать файл уже возвращает полный путь к файлу. На эту кнопку можно привязать уже тот скрипт который вам нужен.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

Файлы CSV являются отчетами расходомеров, а расходомеров у нас 108 штук которые раз в сутки отправляют отчет. Получается что оператор по одной лишь маркировке не может определять в какой именно установлен этот расходомер. Сейчас пытаемся получить следующую картину (закреплю ниже).
У вас нет необходимых прав для просмотра вложений в этом сообщении.

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

В одном файле CSV отчет по всем расходомерам, или один CSV - один расходомер?
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

Получается каждый расходомер в случае если меняются данные о расходе раз в день отправляет один файл CSV если данные о расходе воды изменятся на 108 расходомерах то мы получим 108 сsv файлов с датой отправки в названий файла. Если на следующий день данные о расходе поменяются только на 56 расходомерах то мы получим 56 csv файлов. Сама папка выглядит следующим образом (закреплю ниже). Задача из всех файлов выбирать те которые поступили недавно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Раз файлов так много, можно дополнить скрипт условием и выводить только сегодняшние/вчерашние.
А как вы определяете какой файл к какому расходомеру относится?
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

makesstr писал(а): 11 июн 2020, 12:50

У нас есть список где каждый расходомер с индивидуальным номером например: "MAG8000_296305H319" закреплен к определенному колодцу наша, задача по индивидуальному номеру раскидать данные с этих расходомеров на визуализации, чтоб оператор в ручную не искал какой расходомер к какому колодцу относится.Но создание для этого подходящего скрипта все еще в процессе поиска. <- <- -> :ges_hmm:

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Не легче создать по папке для каждого расходомера, чтобы всё не было вывалено в одной куче, сделать нормальную систему? :ges_slap:
Тогда все предельно упросится.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

makesstr писал(а): 11 июн 2020, 13:19 Не легче создать по папке для каждого расходомера, чтобы всё не было вывалено в одной куче, сделать нормальную систему? :ges_slap:
Тогда все предельно упросится.
Да мы бы с радостью, но суть такова что для этих расходомеров есть свой OPC сервер MAG8000 который собственно принимает и обрабатывает эти данные и сохраняет в одной папке, НО этот OPC сервер наотрез отказывается делиться с данными с любой SCADA системой включая WinCC RT Pro после месяца неудачных попыток было принято решение с помощью скриптов перетягивать данные с CSV файлов.

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Не уверен что все эти костыли костылёвые стоят результата.
Тогда можно написать скрипт который будет перемещать файлы в нужную папку в зависимости от названия файла. А дальше уже будет проще разобраться.

Например взять 18 левых символов от имени файла и если они будут = "MAG8000_301805H319" то переместить в папку ВК-2 итд
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Rabinio
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 14 янв 2020, 18:53
Имя: Раби
Благодарил (а): 1 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение Rabinio »

makesstr писал(а): 11 июн 2020, 13:35 Не уверен что все эти костыли костылёвые стоят результата.
Тогда можно написать скрипт который будет перемещать файлы в нужную папку в зависимости от названия файла. А дальше уже будет проще разобраться.

Например взять 18 левых символов от имени файла и если они будут = "MAG8000_301805H319" то переместить в папку ВК-2 итд
Да ситуация мягко говоря очень неудобная, служба поддержки оставила нас наедине с проблемой приходится выкручиваться как то, но чем больше мы пытаемся найти решение проблемы тем она становится не решаемой.

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение SMax »

Так не подойдет?
В переменных Str1 и Str2 пути к последним измененным файлам по первым 18 символам (см. Flow1 и Flow2).

Код: Выделить всё

FolderPath = "C:\Test\"
Str = vbNullString

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(FolderPath)
Set Files = Folder.Files

Flow1 = "MAG8000_296305H319"
Flow2 = "MAG8000_296305H320"

For Each File In Files
	If (Flow1 = Left(File.Name,18)) and (File.DateLastModified > PrevFile1) Then PrevFile1 = File.DateLastModified: Str1 = File.Path
	If (Flow2 = Left(File.Name,18)) and (File.DateLastModified > PrevFile2) Then PrevFile2 = File.DateLastModified: Str2 = File.Path
Next

Str = Str1 & vbCrLf & Str2

MsgBox Str

makesstr
осмотрелся
осмотрелся
Сообщения: 194
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 34 раза

Как открыть CSV в WinCC RT Pro 15.1 через VB скрипт

Сообщение makesstr »

Скрипт для раскидывания по папкам

Dim fso, FilesList, File
Set fso = CreateObject("Scripting.FileSystemObject")
Set FilesList = fso.GetFolder("C:\Users\user\Documents\SpaceRangersHD\Save").Files

For Each File In FilesList
Select Case File
Case "MAG8000_301805H319"
fso.MoveFile File, fso.BuildPath (fso.GetParentFolderName(File),"ВК-2\")
Case "MAG8000_296305H319"
'перенести в другую папку
Case Else
'statementblock_n
End Select
Next
WinCC 7.4 SP1 Upd15, Step5.6
Ответить

Вернуться в «WinCC»