- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Скрипты VBS и Report Designer
-
- здесь недавно
- Сообщения: 10
- Зарегистрирован: 07 сен 2019, 10:13
- Имя: Александр
- Благодарил (а): 3 раза
Скрипты VBS и Report Designer
Здравствуйте! Сразу хочу сказать, мой уровень знаний WinCC находится где-то около плинтуса, поэтому сильно не бейте.
У меня вопрос такого плана, имеется загрузочная/разгрузочная станция, на нее заезжает грузовик сначала не заправленный газом, а потом заправленный. В отчете должны быть значения до заправки и после, + разница между заправленным и пустым. Я в WinCC сделал 3 кнопки, по которым предполагается в Report designer отправлять вес, и 3 окна ввода/вывода.
Так вот, вопрос вот в чем, как отправлять значение из IO Field в RD( Report designer)? И как с помощью VBS вычитать из 2 значения, когда машина заполнена, 1 значение когда машина пуста? Перепробовал много разного, не получается( Нужно же как-то будет сохранить значение, до заправки, но честно, не представляю как это реализовать. До этого не имел дела с VBS.
P.S. Можно ли проверить работает ли скрипт в режиме редактирования? Т.е. я ввел входные значения в I/O field и ожидаю в 3 окне ответ.
Заранее спасибо за ответ!
У меня вопрос такого плана, имеется загрузочная/разгрузочная станция, на нее заезжает грузовик сначала не заправленный газом, а потом заправленный. В отчете должны быть значения до заправки и после, + разница между заправленным и пустым. Я в WinCC сделал 3 кнопки, по которым предполагается в Report designer отправлять вес, и 3 окна ввода/вывода.
Так вот, вопрос вот в чем, как отправлять значение из IO Field в RD( Report designer)? И как с помощью VBS вычитать из 2 значения, когда машина заполнена, 1 значение когда машина пуста? Перепробовал много разного, не получается( Нужно же как-то будет сохранить значение, до заправки, но честно, не представляю как это реализовать. До этого не имел дела с VBS.
P.S. Можно ли проверить работает ли скрипт в режиме редактирования? Т.е. я ввел входные значения в I/O field и ожидаю в 3 окне ответ.
Заранее спасибо за ответ!
-
- не первый раз у нас
- Сообщения: 343
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
Скрипты VBS и Report Designer
Не легче ли сделать это в контроллере? Загрузить и передать значение по фронту сигнала и запомнить в разных DB, чем писать VBS
-
- осмотрелся
- Сообщения: 194
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 34 раза
Скрипты VBS и Report Designer
Запоминание веса грузовика лучше делать на уровне контроллера конечно, тег до загрузки вытягивать в WinCC.
Можно конечно и через внутренние теги, просто присваивать значение текущего веса до заправки тегу до заправки типа
HMIRuntime.SmartTags("WeightBefore") = HMIRuntime.SmartTags("WeightCurrent")
После заправки
HMIRuntime.SmartTags("WeightGas") = HMIRuntime.SmartTags("WeightCurrent") - HMIRuntime.SmartTags("WeightBefore")
А отчеты по-моему лучше формировать в экселе, он привычнее, удобнее, да и по скорости формирования чуточку быстрее родного ReportDesigner.
Скрипт для экселя я выкладывал в теме "Запуск стороннего приложения из 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
-
- здесь недавно
- Сообщения: 10
- Зарегистрирован: 07 сен 2019, 10:13
- Имя: Александр
- Благодарил (а): 3 раза
Скрипты VBS и Report Designer
Здравствуйте, спасибо за ответ!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 во второй. Если есть возможность, объясните!
-
- не первый раз у нас
- Сообщения: 343
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
Скрипты VBS и Report Designer
Может кому нужно скрипт копирование в 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")
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")
-
- осмотрелся
- Сообщения: 192
- Зарегистрирован: 16 дек 2011, 15:13
- Имя: Алексей
- Страна: Россия
- Благодарил (а): 65 раз
- Поблагодарили: 46 раз
Скрипты VBS и Report Designer
В качестве замечания. Если тег, который в скрипте "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
-
- не первый раз у нас
- Сообщения: 343
- Зарегистрирован: 12 дек 2018, 14:47
- Имя: Влад
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
Скрипты VBS и Report Designer
Я написал скрипт который уже работает, можно что то оптимизировать или сделать по другому, я в VBS не силен. Главное поставленная задача была выполнена.
-
- осмотрелся
- Сообщения: 194
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 34 раза
Скрипты VBS и Report Designer
Ну для начала, насколько я знаю, RD работает с тегами, то есть там уже не получится считать разницу, поэтому надо создать теги, на уровне контроллера / внутренние теги с нужным форматом. Затем задать значения этим тегам, ФИО(String), номер авто(String), фамилия(String) через I/O Field. Разницу веса - по кнопке на который будет висеть скрипт подобный вашему или моему (легче работать со смарттегами, не надо будет вводить переменные, читать, писать, все это заменяет "=") ну и вычисляемую разницу привязывать не к OutputValue I/O Field, а к созданному тегу.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 во второй. Если есть возможность, объясните!
Как с тегами закончите можно переходить к созданию отчета. Надо зайти в 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
-
- здесь недавно
- Сообщения: 10
- Зарегистрирован: 07 сен 2019, 10:13
- Имя: Александр
- Благодарил (а): 3 раза
Скрипты VBS и Report Designer
makesstr, Спасибо огромное! По поводу разницы в весе, там реализовать проблематично, потому что заезжать может не одна машина, а, например, сразу 5 и их нужно сразу взвесить, а потом для каждого иметь эти значения, в общем эту идею отбросили, но все равно еще раз спасибо! А вот еще вопрос, как с помощью кнопки можно записывать значение в RD? Т.е. машины взвесилась, я нажал кнопку и значение записалось в RD?
-
- здесь недавно
- Сообщения: 10
- Зарегистрирован: 07 сен 2019, 10:13
- Имя: Александр
- Благодарил (а): 3 раза
Скрипты VBS и Report Designer
Точнее кнопка, которая бы из wincc RT печатала бы нужный отчет. Нашел для C, но проблема в том, что C у меня не работает. Выдает ошибку( Поэтому если есть возможность поделитесь кодом на VBS