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

select дополнительного параметра

Ответить

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

Добрый день камрады. Ситуация такова. На производстве стоит WinCC ver.6.2 Какой-то немец приехал, настроил, и уехал. Было это лет 15 назад. С тех пор к нему не кто не подходил. Все работает и ладно.
Сразу оговорюсь, я курю уже третий день и ничерта не могу понять как что работает в WinCC.
SELECT * FROM OPENQUERY(бла бла,'Tag:R,(1),''2024-01-16 08:00:00'',''2024-01-16 12:00:00''') работает. В общем то эти 15 лет большего и не нужно было никому. Однако появилась задача, к указанной таблице которая формируется селектом, нужно добавить еще один параметр, название выполняемой программы.
На производстве оператор пальцами выбирает файлик с программой (внутри тупо стопка параметров) и машина завелась. Как я понял, источником названия программы выступает название файла программы. В графическом интерфейсе при работе оборудования, название программы отображено, в Graphics Designer нашел дизайны с полями где отображается название программы, нашел какой тег подсасывается при выполнении. Он находится Tag Management/Internal tags/simatic s7 protocol suite/Profibus/там пошли много юнитов и в одном из них PrgName.
Если я правильно понимаю SQL указанным селектом пылесосит инфу из Tag Logginy. В данных архивах инфы по названию программы нет, только показатели. Опять же как я понял, в данном разделе логи появляются после выполнения программы. Очень важный момент, нужна инфа о названии программы уже в течении ее выполнения, а не записывать ее после выполнения - хотят мониторить в реальном времени.
Пните пожалуйста в какую-нибудь сторону, боюсь сам не разберусь.

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

Я погорячился с вопросом о селекте из SQL. Я так понимаю что из sql особо не разгуляешься. Подскажите, есть ли у кого-то пример скрипта на VBA (для эксель файла), по опросу тегов и получения их значения. Можно любой пример, мне главное понять как работать с объектами для тегов.

Отправлено спустя 21 минуту 57 секунд:
Очень многие источники дают ссылку на скачивание уже готового файла эксель с написанным скриптом. Сылка техподдержки сименса. Зарегистрироватся там "сейчас" сложно. Может ктото поделится данным файлом?

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

select дополнительного параметра

Сообщение makesstr »

Надо было всего-лишь зайти в гугл чтобы найти это
[+]
viewtopic.php?t=13305
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

Спасибо, но не совсем то, там записывают данные из sql в переменную wincc. У меня же ситуация обратная, мне надо вернуть значение тега. Читать хочу сторонней VBA чтоб не вносить изменений в winCCб вообще очень страшно лезть туда, не дай бог что-то пойдет не так и производство все встанет.
Я вообще не могу понять могу ли я опрашивать переменную, которая не участвует в Tag Loging. Если я правильно понял, все взаимодействие с WinCC происходит через провайдер, и есть ли у провайдера доступ ко всем существующим тэгам?

LexSL
осмотрелся
осмотрелся
Сообщения: 192
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 65 раз
Поблагодарили: 46 раз

select дополнительного параметра

Сообщение LexSL »

sergey020487 писал(а): 18 янв 2024, 05:24 SELECT * FROM OPENQUERY(бла бла,'Tag:R,(1),''2024-01-16 08:00:00'',''2024-01-16 12:00:00''') работает
Если коротко, то при открытии проекта в WinCC Explorer, происходит подсоединение двух баз данных в СУБД SQL Server. Название баз данных типа этого:
"СС_хххх_date_time" для первой базы данных. для второй название такое же плюс в конце символ "R" (райнтам база данных).
Это можно увидеть, запустив на компе SQL Server Management Studio (раздел Databases).
Вышеуказанный select запрашивает данные по времени для тега с ID=1. Идентификаторы тегов можно посмотреть в таблице dbo.Archive базы данных с символом "R" в конце. В этой таблице список тегов с именами (ValueName), занесенных в TagLogging.
То есть у Вас идет запрос данных по тегу из TagLogging.
Есть документ от Siemens (его сейчас не скачать просто так), как на C# запрашивать архивные данные WinCC.
Да, запрос идет через WinCCOleDbProvider (он устанавливается на машине вместе с установкой WinCC).
На другой машине необходим будет WinCC Connectivity Pack.

35840700_WinCC_CopackCsharp_en.pdf - описание проекта C# WinCCcopack.zip
35840700_Archivexport_en.pdf - описание экспорта taglogging в Excel (OLE-DB_Tag_and_Alarm_Export.zip).
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

LexSL, Спасибо за отклик. То что Вы написали становится более менее понятно. Провайдер обеспечивает связь скуля и "Tag Logging". И как следствие (если я правильно понимаю) если в логинге нет нужного тэга, то из скуля запросить его текущее значение невозможно. Поправьте меня если это не так.
В моем случае в логах нужного тэга нет, это тэг - название текущей программы. тэги возвращающие значение датчиков есть, а вот выполняющаяся в настоящее время программа нет. И создавать тэг не очень хочется (банально страшно лезть в проект, спеца под рукой нет).
Решил выкручивается так: на vbs (в стандартном разделе) написал скрипточек - бесконечный цикл с задержкой между итерациями, который постоянно будет опрашивать нужные тэги. Запускается будет с кнопки и всегда крутится (я надеюсь что он будет всегда крутится). Значения этих тэгов писать в лог.тхт, а там уже чем-нибудь распарим, в зависимости от задачи, чтото типо этого:
For j = 0 To UBound(programTags)
TagName = programTags(j)
Tag = HMIRuntime.Tags(programTags(j)).Read(1)
Call LogData (Tag, TagName)

Next
Найти нужные тэги оказалось той еще задачей, я брал дизайн, находил окошечко где написано название программы при выполнении, в свойствах брал название тега. Оборудования около 20 штук, а дизайнов сотни, и все они +- одинаковые. Я понимаю что немец приехал с готовыми заготовками и чуть их допилил, но я сейчас мучаюсь в попытках найти связи.
Завтра дают производственное окно, чтоб опробовать скрипт. Опрашивать тестово буду все тэги которые хоть немного похожи на то что я ищу. ну а если они вернут мне названия текущих программ, там уже будет все понятно.
У меня еще один вопрос вот тэги расположены в двух местах: internal и PROFIBUS. В чем разница этих двух хранилищ и тэгов находящихся внутри их?

stesl
эксперт
эксперт
Сообщения: 1011
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

select дополнительного параметра

Сообщение stesl »

sergey020487 писал(а): 31 янв 2024, 11:50 тэги расположены в двух местах: internal и PROFIBUS. В чем разница этих двух хранилищ и тэгов находящихся внутри их?
Связь на поверхности - внутренние и связанные с Profibus (протокол такой).
Вопрос только, где эти тэги? В WinCC? Там вроде нет конкретно - Profibus, internal точно есть.
Так что скорее тут фантазия автора.

PS internal - внутренние тэги, допустим для каких то расчетов или хранения, они не связаны с внешним миром никак, просто - внутренние, для WinCC

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

stesl, Может быть Вы подскажите:
Скрипт работает, значение нужных тэгов возвращается. У меня цикл вбс зацикленный, пишет логи в текстовый файл. Однако по непонятной мне причине, скрипт останавливается, логи писатся перестают. Причину понять не могу. Пока одна связь: при работающем скрипте, если шаришся в интерфейсе райнтайма, перестает работать. Может совпадение.

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

select дополнительного параметра

Сообщение makesstr »

sergey020487 писал(а): 01 фев 2024, 15:27 stesl, Может быть Вы подскажите:
Скрипт работает, значение нужных тэгов возвращается. У меня цикл вбс зацикленный, пишет логи в текстовый файл. Однако по непонятной мне причине, скрипт останавливается, логи писатся перестают. Причину понять не могу. Пока одна связь: при работающем скрипте, если шаришся в интерфейсе райнтайма, перестает работать. Может совпадение.
Может в конце скрипта не закрываете коннешн с SQL? У SQL достигается максимальное кол-во соединений и он перестает отвечать новым.
WinCC 7.4 SP1 Upd15, Step5.6

AlexandrGr
освоился
освоился
Сообщения: 217
Зарегистрирован: 26 май 2022, 12:10
Имя: Александр
Страна: Россия
город/регион: lipetsk
Благодарил (а): 3 раза
Поблагодарили: 17 раз

select дополнительного параметра

Сообщение AlexandrGr »

makesstr писал(а): 01 фев 2024, 18:17 не закрываете коннешн с SQL?
А разве ТС его открывает?

POV
корифей
корифей
Сообщения: 768
Зарегистрирован: 12 авг 2008, 11:05
Имя: Патрушев Олег Валерьевич
Страна: Россия
город/регион: г. Н.Новгород
Благодарил (а): 105 раз
Поблагодарили: 146 раз

select дополнительного параметра

Сообщение POV »

sergey020487 писал(а): 01 фев 2024, 15:27 У меня цикл вбс зацикленный, пишет логи в текстовый файл. Однако по непонятной мне причине, скрипт останавливается, логи писатся перестают.
Скорее более правильным был бы глобальный скрипт, привязанный к таймеру и заканчивающий работу, а не зацикленный. А то, скорее всего, вы банально завешиваете скриптовую систему.

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

makesstr, Не, скрипт просто создает тхт и пишет в него логи в виде значения тегов.

Отправлено спустя 26 минут 9 секунд:
POV, Вчера сидел до ночи, пытался понять хотя бы намек на причину остановки скрипта. Логики не какой. Но если ни че не трогать, то вроде работает, хотя долгосрочно не тестировал. Одно понял, что железно останавливает его, если во время выполнения заходиш в редактор ЭТОГО скрипта, просто заходишь, не че не меняешь не сохраняешь, просто открываешь редактор - скрипт останавливается, но это не единственная причина.
Согласен с Вами, зацикливание do while вручную выглядит тем еще кастылем. вчера начал капать как привязаться к встроенному таймеру. Немного разобрался. Создал новый Action и вставел в него элементарное:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim inputFile
Set inputFile = fso.OpenTextFile ("C:\test Wincc\demo2.log", 8, True)
Создал тригер и повешал на него циклический таймер. Работает. Каждые, условно две секунды выполняется. Но.
Я не профессионал в бэйсике. Мой скрипт имеет следующую структуру: Основной Sub - EndSub и сдесь же (в самом верху) еще множество Subов которые я вызываю в основном сабе. И вот проблема, проект Action не принимает такую структуру кода, ругается на синтаксис. Сейчас просто экшеном (с таймером) пытаюсь вызвать мой скрипт в стандартном разделе. Но чтото не получается пока. Call не работает.
Как я понимаю таймер можно повешать только на Action, ни в программ модул ни в стандарт модул таймер не вешается.
Соврал, Call работает. С тригером и встроенным таймером работает пока безотказно.

stesl
эксперт
эксперт
Сообщения: 1011
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

select дополнительного параметра

Сообщение stesl »

sergey020487 писал(а): 01 фев 2024, 15:27 одна связь: при работающем скрипте, если шаришся в интерфейсе райнтайма, перестает работать. Может совпадение
Может и совпадение, а может и то, про что коллеги говорят - система не справляется с выполнением скриптов. В интерфейсе же их тоже есть, верно?
А для дебага работы скриптов есть специальный инструмент - Debug )) Не помню в точности как он называется, суть, вешаешь окошко этого инструмента в интерфейс и смотришь чего скрипт там ругается. Можно в сам скрипт какие то ссобщухи сунуть, и они тоже будут выводиться. Типа "такой то блок строк отработал, проблем нет" ;)

Отправлено спустя 2 минуты 19 секунд:
sergey020487 писал(а): 02 фев 2024, 04:48 Основной Sub - EndSub и сдесь же (в самом верху) еще множество Subов которые я вызываю в основном сабе
Это все можно "урегулировать". Типа глобальный/локальный скрипт. По конкретике не подскажу. Года 2 назад я последний скрипт в WinCC писал )

AlexandrGr
освоился
освоился
Сообщения: 217
Зарегистрирован: 26 май 2022, 12:10
Имя: Александр
Страна: Россия
город/регион: lipetsk
Благодарил (а): 3 раза
Поблагодарили: 17 раз

select дополнительного параметра

Сообщение AlexandrGr »

А почему нужную переменную не писать в Tag Logging?

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

AlexandrGr, Решили не лесть в проект.

AlexandrGr
освоился
освоился
Сообщения: 217
Зарегистрирован: 26 май 2022, 12:10
Имя: Александр
Страна: Россия
город/регион: lipetsk
Благодарил (а): 3 раза
Поблагодарили: 17 раз

select дополнительного параметра

Сообщение AlexandrGr »

А скрипт вы где запускаете?
Т.е. запустить скрипт в проекте вы не боитесь, а добавить переменную в Tag Logging нельзя.

Автор темы
sergey020487
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 18 янв 2024, 04:53
Имя: Сергей

select дополнительного параметра

Сообщение sergey020487 »

AlexandrGr, Ну VBS хоть немного но знаю, за исключением встроенной (как я понимаю он в драйвер) функции рантайм, которая тупо опрашивает и возвращает значение тега. Больше в нем нечего нет, цикл, в нем рантайм, названия тегов в глобальных переменных. вызов этого скрипта происходит по таймеру из экшена. Все просто до безобразия.
А вот создавать тэги, както их согласовывать с контролером, потом их както инсертить с остальными в скуль, банально я этого не умею. И разбиратся не очень то хочется. Специалиста нет. Производство останавливать нельзя.

Eugen123
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 09 фев 2024, 08:43
Имя: Евгений
Страна: Россия
Благодарил (а): 4 раза

select дополнительного параметра

Сообщение Eugen123 »

stesl писал(а): 02 фев 2024, 11:07 А для дебага работы скриптов есть специальный инструмент - Debug )) Не помню в точности как он называется, суть, вешаешь окошко этого инструмента в интерфейс и смотришь чего скрипт там ругается. Можно в сам скрипт какие то ссобщухи сунуть, и они тоже будут выводиться. Типа "такой то блок строк отработал, проблем нет" ;)
окно Standart ->Application Window, далее вытащить контрол на pdl ->Global_Script ->GCS_Diagnostic. После запуска рантайма в нем отображаются ошибки выполнения скриптов.
Ответить

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