- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Суммирование значений нескольких тегов в WinCC
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Суммирование значений нескольких тегов в WinCC
Человеки, ну подскажите, как сложить значения нескольких тегов в WinCC? Есть, например, 5 тегов со значениями, как их суммировать?
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
Не совсем понял в чем трудность. Математику можно делать в скриптах стандартными функциями.
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
как WinCC ткнуть носом на конкретные теги? я, честно сказать, не силен в программировании, поэтому не сильно представляю, как скриптами можно реализовать ))
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
создаете скрипт (Си либо VBS что больше нравиться). Там есть уже готовые функции получения значения тега (на Си GetTag[Тип переменной]), т.е. например SetTagDWord("Sum",(GetTagWord("A") + GetTagWord("В")));
Т.е. установить в тег Sum значение равное сумме значений в тегах A и B
Т.е. установить в тег Sum значение равное сумме значений в тегах A и B
Последний раз редактировалось Alexandr_N 17 ноя 2011, 13:30, всего редактировалось 2 раза.
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
Так и подозревал, но не знал как сделать )))) спасибо!!! сейчас буду пробовать..
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
не совсем получается:
создал внутренний тег (тот что типа Sum), код получился по типу, как вы писали, при компиляции вылетает пара ошибок:
1. несовпадение типа аргумента 2
2. левый операнд должен быть L-значением
о чем можно думать? ))
создал внутренний тег (тот что типа Sum), код получился по типу, как вы писали, при компиляции вылетает пара ошибок:
1. несовпадение типа аргумента 2
2. левый операнд должен быть L-значением
о чем можно думать? ))
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
Я не правильно записал функцию SetTag, поправил (тип переменных подбирайте по задаче)
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
теперь пишет:
"функция '_main' не возвращает значение"
"функция '_main' не возвращает значение"
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
Только что проверил у себя, все работает. Можно увидеть Ваш код.
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
пожалуйста:
Код: Выделить всё
#include "apdefap.h"
double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetTagDWord("Q_btpg",(GetTagWord("Q______01") + GetTagWord("Q______02") + GetTagWord("Q______03") + GetTagWord("Q______04") + GetTagWord("Q______05") + GetTagWord("Q______06") + GetTagWord("Q______07") + GetTagWord("Q_vkg_mgn_2")));
}
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
на каком событие висит скрипт, а то на вид не определю.
-
- авторитет
- Сообщения: 878
- Зарегистрирован: 21 авг 2009, 14:25
- Имя: Василий Иванович
- Благодарил (а): 1 раз
- Поблагодарили: 3 раза
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
)))))))) дык я ж говорю, не силен в программировании.........
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
Люди, ну подскажите, так ничего и не выходит от незнания... Как сложить два значения, а результат занести в другой внутренний тег. Имеются два аналоговых значения с типом "32-битовое число с плавающей точкой". Как их сложить, используя С-макрос?
Пишу такой код:
Ничего не считает и не заносит во временный тег "Q_btpg", пробовал все функции по справке, связанные с типом "32-битовое число с плавающей точкой". Ну помогите, пожалуйста, разобраться..
Пишу такой код:
Код: Выделить всё
#include "apdefap.h"
double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
SetTagDWord("Q_btpg",(GetTagWord("Q______01") + GetTagWord("Q______02")));
return 0;
}
-
- осмотрелся
- Сообщения: 128
- Зарегистрирован: 12 авг 2010, 01:49
- Имя: Сергей
- Благодарил (а): 2 раза
- Поблагодарили: 11 раз
Re: Суммирование значений нескольких тегов в WinCC
Уже написал один умный человек
а код должен быть что-то типа
SetTagDouble("Q_btpg",(GetTagDouble("Q______01") + GetTagDouble("Q______02")));
Судя по типу возвращаемого значения, используется неверное событие. Потому что на событии типа "нажатие клавиши" функция значение не возвращает. Т.е. перед функцией должно стоять void, а не double.на каком событие висит скрипт, а то на вид не определю.
а код должен быть что-то типа
SetTagDouble("Q_btpg",(GetTagDouble("Q______01") + GetTagDouble("Q______02")));
Правильно поставленная задача – уже наполовину решенная
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
Для начала установите кнопку на форму, к ней (нажатие левой кнопки) привяжите скрипт на Си. Там запишите свой код. Выглядеть будет примерно так
Если в таком виде будет работать, тогда можете использовать вызов скрипта по нужному вам событию.
Код: Выделить всё
#include "apdefap.h"
void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetTagDWord("Q_btpg",(GetTagWord("Q______01") + GetTagWord("Q______02")));
}
-
- осмотрелся
- Сообщения: 128
- Зарегистрирован: 12 авг 2010, 01:49
- Имя: Сергей
- Благодарил (а): 2 раза
- Поблагодарили: 11 раз
Re: Суммирование значений нескольких тегов в WinCC
Alexandr_N: не забываем, что тэги имеют тип "32-битовое число с плавающей точкой" ;)
Правильно поставленная задача – уже наполовину решенная
-
- здесь недавно
- Сообщения: 34
- Зарегистрирован: 04 авг 2010, 08:35
- Имя: инженер
- Страна: Россия
- город/регион: Свердловская обл
Re: Суммирование значений нескольких тегов в WinCC
Согласен, нужно учесть в функциях GetTag и SetTag.Sergeyvmm писал(а):Alexandr_N: не забываем, что тэги имеют тип "32-битовое число с плавающей точкой" ;)
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Суммирование значений нескольких тегов в WinCC
Разобрался ))) Наконец, заработало. Огромное всем спасибо!!!