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

Скрипты VBS и Report Designer

Ответить

Автор темы
alexsandrvs
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 07 сен 2019, 10:13
Имя: Александр
Благодарил (а): 3 раза

Скрипты VBS и Report Designer

Сообщение alexsandrvs »

Здравствуйте! Сразу хочу сказать, мой уровень знаний WinCC находится где-то около плинтуса, поэтому сильно не бейте.
У меня вопрос такого плана, имеется загрузочная/разгрузочная станция, на нее заезжает грузовик сначала не заправленный газом, а потом заправленный. В отчете должны быть значения до заправки и после, + разница между заправленным и пустым. Я в WinCC сделал 3 кнопки, по которым предполагается в Report designer отправлять вес, и 3 окна ввода/вывода.
Так вот, вопрос вот в чем, как отправлять значение из IO Field в RD( Report designer)? И как с помощью VBS вычитать из 2 значения, когда машина заполнена, 1 значение когда машина пуста? Перепробовал много разного, не получается( Нужно же как-то будет сохранить значение, до заправки, но честно, не представляю как это реализовать. До этого не имел дела с VBS.
P.S. Можно ли проверить работает ли скрипт в режиме редактирования? Т.е. я ввел входные значения в I/O field и ожидаю в 3 окне ответ.
Заранее спасибо за ответ!

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Скрипты VBS и Report Designer

Сообщение v0v »

Не легче ли сделать это в контроллере? Загрузить и передать значение по фронту сигнала и запомнить в разных DB, чем писать VBS

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

Скрипты VBS и Report Designer

Сообщение makesstr »

Запоминание веса грузовика лучше делать на уровне контроллера конечно, тег до загрузки вытягивать в WinCC.
Можно конечно и через внутренние теги, просто присваивать значение текущего веса до заправки тегу до заправки типа
HMIRuntime.SmartTags("WeightBefore") = HMIRuntime.SmartTags("WeightCurrent")
После заправки
HMIRuntime.SmartTags("WeightGas") = HMIRuntime.SmartTags("WeightCurrent") - HMIRuntime.SmartTags("WeightBefore")

А отчеты по-моему лучше формировать в экселе, он привычнее, удобнее, да и по скорости формирования чуточку быстрее родного ReportDesigner.
Скрипт для экселя я выкладывал в теме "Запуск стороннего приложения из WinCC".

В режиме редактирования можно проверить скрипт только на правильность синтаксиса, но не рабоспособность.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
alexsandrvs
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 07 сен 2019, 10:13
Имя: Александр
Благодарил (а): 3 раза

Скрипты VBS и Report Designer

Сообщение alexsandrvs »

makesstr писал(а): 09 дек 2019, 11:27 Запоминание веса грузовика лучше делать на уровне контроллера конечно, тег до загрузки вытягивать в WinCC.
Можно конечно и через внутренние теги, просто присваивать значение текущего веса до заправки тегу до заправки типа
HMIRuntime.SmartTags("WeightBefore") = HMIRuntime.SmartTags("WeightCurrent")
После заправки
HMIRuntime.SmartTags("WeightGas") = HMIRuntime.SmartTags("WeightCurrent") - HMIRuntime.SmartTags("WeightBefore")

А отчеты по-моему лучше формировать в экселе, он привычнее, удобнее, да и по скорости формирования чуточку быстрее родного ReportDesigner.
Скрипт для экселя я выкладывал в теме "Запуск стороннего приложения из WinCC".

В режиме редактирования можно проверить скрипт только на правильность синтаксиса, но не рабоспособность.
Здравствуйте, спасибо за ответ!
По синтаксису у меня походу дела проблемы, я думал должно работать так: Dim weigher1
Set weigher1 = HMIRuntime.Tags("weigher1")
Dim weigher2
Set weigher2 = HMIRuntime.Tags("weigher2")
OutputValue = ("weigher2") - ("weigher1")
Но что-то похожее как и у вас в принципе было, но я пробовал очень много вариантов, а сохранился только этот.
У меня на работе все быстро очень меняется, сказали, что пусть оператор вручную забивает разницу... Ну и хрен с ним. Но теперь другой вопрос, подскажите если сможете. Мне сказали, что на 1 окне должны быть все данные: ФИО оператора, Номер авто, фамилия водителя и все это вводится в этом окне и сохраняется в RD (я понял, что эксель лучше, но хозяин барин, сказали нужно в RD) окно вывода со значениями и как я понял 2 кнопки (и 2 отчета кстати), в 1 до заправки, 2 после. Так вот, как выводить всю эту информацию в RD? Просто я не могу понять как их связать и теги и вот этот ввод данных с помощью чего осуществить, какого элемента? И как блин с этим кнопками, скрипт на них надо писать что ли, чтобы при нажатии 1 значение в первый отчет сохранялось и печаталось, а 2 во второй. Если есть возможность, объясните!

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Скрипты VBS и Report Designer

Сообщение v0v »

Может кому нужно скрипт копирование в excel файл по ячейкам с определением времени.
Dim a, f, f2
Set f = CreateObject ("Scripting.filesystemobject")
Set a = CreateObject ("excel.application")
a.Visible = True
a.Workbooks.Open "d:\folder\2.xlsx"
a.Cells(1,1).Value = ("name1")
a.Cells(1,2).Value = ("name2")
a.Cells(2,2).Value = SmartTags("teg1")
a.Cells(2,3).Value = SmartTags("teg2")
a.ActiveWorkbook.Save
a.ActiveWorkbook.Close
a.Quit
Set f2 = f.GetFile("d:\folder\2.xlsx")
f2.Copy("d:\folder\temp\"&Day(Date)&("_") &Month(Date)&("_")&Year(Date)&("_")&Hour(Time)&(".")&Minute(Time)&(".")&Second(Time)&".xlsx")

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

Скрипты VBS и Report Designer

Сообщение LexSL »

v0v писал(а): 09 дек 2019, 13:38 Может кому нужно скрипт копирование в excel файл по ячейкам с определением времени....
В качестве замечания. Если тег, который в скрипте "teg1" или "teg2", находится не на активном экране или не участвует в HistoricalLogging (AlarmLogging), то конструкция, подобная этой

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

a.Cells(2,2).Value = HMIRuntime.Tags("tag1")
вернет "фигню" (или значение из кэша).
Необходимо делать так:

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

dim tag1
Set tag1 = HMIRuntime.Tags("tag1")
tag1.Read
a.Cells(2,2).Value = tag1.Value
т.е. сначала прочитать тег, а потом использовать его значение

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Скрипты VBS и Report Designer

Сообщение v0v »

Я написал скрипт который уже работает, можно что то оптимизировать или сделать по другому, я в VBS не силен. Главное поставленная задача была выполнена.

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

Скрипты VBS и Report Designer

Сообщение makesstr »

alexsandrvs писал(а): 09 дек 2019, 13:07
makesstr писал(а): 09 дек 2019, 11:27 Запоминание веса грузовика лучше делать на уровне контроллера конечно, тег до загрузки вытягивать в WinCC.
Можно конечно и через внутренние теги, просто присваивать значение текущего веса до заправки тегу до заправки типа
HMIRuntime.SmartTags("WeightBefore") = HMIRuntime.SmartTags("WeightCurrent")
После заправки
HMIRuntime.SmartTags("WeightGas") = HMIRuntime.SmartTags("WeightCurrent") - HMIRuntime.SmartTags("WeightBefore")

А отчеты по-моему лучше формировать в экселе, он привычнее, удобнее, да и по скорости формирования чуточку быстрее родного ReportDesigner.
Скрипт для экселя я выкладывал в теме "Запуск стороннего приложения из WinCC".

В режиме редактирования можно проверить скрипт только на правильность синтаксиса, но не рабоспособность.
Здравствуйте, спасибо за ответ!
По синтаксису у меня походу дела проблемы, я думал должно работать так: Dim weigher1
Set weigher1 = HMIRuntime.Tags("weigher1")
Dim weigher2
Set weigher2 = HMIRuntime.Tags("weigher2")
OutputValue = ("weigher2") - ("weigher1")
Но что-то похожее как и у вас в принципе было, но я пробовал очень много вариантов, а сохранился только этот.
У меня на работе все быстро очень меняется, сказали, что пусть оператор вручную забивает разницу... Ну и хрен с ним. Но теперь другой вопрос, подскажите если сможете. Мне сказали, что на 1 окне должны быть все данные: ФИО оператора, Номер авто, фамилия водителя и все это вводится в этом окне и сохраняется в RD (я понял, что эксель лучше, но хозяин барин, сказали нужно в RD) окно вывода со значениями и как я понял 2 кнопки (и 2 отчета кстати), в 1 до заправки, 2 после. Так вот, как выводить всю эту информацию в RD? Просто я не могу понять как их связать и теги и вот этот ввод данных с помощью чего осуществить, какого элемента? И как блин с этим кнопками, скрипт на них надо писать что ли, чтобы при нажатии 1 значение в первый отчет сохранялось и печаталось, а 2 во второй. Если есть возможность, объясните!
Ну для начала, насколько я знаю, RD работает с тегами, то есть там уже не получится считать разницу, поэтому надо создать теги, на уровне контроллера / внутренние теги с нужным форматом. Затем задать значения этим тегам, ФИО(String), номер авто(String), фамилия(String) через I/O Field. Разницу веса - по кнопке на который будет висеть скрипт подобный вашему или моему (легче работать со смарттегами, не надо будет вводить переменные, читать, писать, все это заменяет "=") ну и вычисляемую разницу привязывать не к OutputValue I/O Field, а к созданному тегу.
Как с тегами закончите можно переходить к созданию отчета. Надо зайти в Open Page Layout Editor в Report Designer, создать желаемое оформление с помощью фигур которые находятся в Static objects (справа). Добавить желаемый текст (Static Text) и теги (Dynamic Objects - Tag).
Получится что-то типа
ФИО оператора-(Static Object - Static Text) - HMIRuntime.SmartTags("FIOoper")(Dynamic Object - Tag)
Вес до заправки-(Static Object - Static Text) - HMIRuntime.SmartTags("FIOoper")(Dynamic Object - Tag)
итд
Затем как закончите с оформлением отчета надо создать Print jobs и в качестве Layout name выбрать созданный ранее Layout.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
alexsandrvs
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 07 сен 2019, 10:13
Имя: Александр
Благодарил (а): 3 раза

Скрипты VBS и Report Designer

Сообщение alexsandrvs »

makesstr, Спасибо огромное! По поводу разницы в весе, там реализовать проблематично, потому что заезжать может не одна машина, а, например, сразу 5 и их нужно сразу взвесить, а потом для каждого иметь эти значения, в общем эту идею отбросили, но все равно еще раз спасибо! А вот еще вопрос, как с помощью кнопки можно записывать значение в RD? Т.е. машины взвесилась, я нажал кнопку и значение записалось в RD?

Автор темы
alexsandrvs
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 07 сен 2019, 10:13
Имя: Александр
Благодарил (а): 3 раза

Скрипты VBS и Report Designer

Сообщение alexsandrvs »

Точнее кнопка, которая бы из wincc RT печатала бы нужный отчет. Нашел для C, но проблема в том, что C у меня не работает. Выдает ошибку( Поэтому если есть возможность поделитесь кодом на VBS

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

Скрипты VBS и Report Designer

Сообщение makesstr »

Такого нет, только C
WinCC 7.4 SP1 Upd15, Step5.6
Ответить

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