SIEMENS, DF&PD

Предыдущее посещение: Сб июл 02, 2016 4:13 Текущее время: Сб июл 02, 2016 4:13

Часовой пояс: UTC + 3 часа




 [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: как сохранить значения внутренних тегов?
СообщениеДобавлено: Пт фев 19, 2010 12:39 
Не в сети
Новый писатель

Зарегистрирован: Чт авг 09, 2007 6:13
Сообщения: 18
ВинСС 7.0. Как сделать, чтоб значения внутренних тегов сохранялись при выходе из рантайма? Чтоб при повторном запуске значения тегов были прежними? Как-то автоматически запоминать в стартовом значении тега, что ли...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 19, 2010 12:41 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Чт ноя 22, 2007 5:39
Сообщения: 1349
Откуда: Иркутск
В 7-ке в свойствах внутреннего тэга есть галочка соответствующая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 19, 2010 12:47 
Не в сети
Новый писатель

Зарегистрирован: Чт авг 09, 2007 6:13
Сообщения: 18
спасибо, задал вопрос, потом тут же нашел эту галочку, хотел снять тему, не знаю, как это сделать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 22, 2010 21:07 
Не в сети
Начинающий писатель

Зарегистрирован: Пн мар 20, 2006 10:07
Сообщения: 51
Откуда: Rudniy, Kazahstan
Тогда такой вопрос, восстановятся ли значения таких тегов, если перезагрузить винду?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 23, 2010 10:38 
Не в сети
Известный Писатель

Зарегистрирован: Пт окт 26, 2007 16:25
Сообщения: 124
Восстановятся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 23, 2010 10:41 
Не в сети
Известный Писатель

Зарегистрирован: Пн авг 08, 2005 9:54
Сообщения: 337
Откуда: Украина, ПАО "НКМЗ"
-= Pavel =- писал(а):
Тогда такой вопрос, восстановятся ли значения таких тегов, если перезагрузить винду?

а вот специально проверил у себя. НЕ СОХРАНЯЮТСЯ ПРИ ПЕРЕЗАГРУЗКЕ!
Каг и зачем такое сделали? ((

зы: WinCC 7.0 (!без сервиспаков!)

зыыы: попробовал еще раз - СОХРАНЯЮТСЯ! однозначно - хрень якась...


Последний раз редактировалось LexUS Вт фев 23, 2010 11:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 23, 2010 11:13 
Не в сети
Известный Писатель

Зарегистрирован: Пт окт 26, 2007 16:25
Сообщения: 124
У меня 7.0 SP1. И значения сохраняются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 23, 2010 11:17 
Не в сети
Известный Писатель

Зарегистрирован: Пн май 12, 2008 13:20
Сообщения: 245
Откуда: Донецк
Yuriy_Beginer писал(а):
У меня 7.0 SP1. И значения сохраняются.


Для 6.2 я так понял нет такой опции?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 23, 2010 11:19 
Не в сети
Известный Писатель

Зарегистрирован: Пт окт 26, 2007 16:25
Сообщения: 124
Эта опция появилась начиная с 7.0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 24, 2010 10:08 
Не в сети
Писатель со стажем

Зарегистрирован: Чт май 29, 2008 15:48
Сообщения: 985
Откуда: Минск
focus писал(а):
Yuriy_Beginer писал(а):
У меня 7.0 SP1. И значения сохраняются.


Для 6.2 я так понял нет такой опции?


До 7-ки делали сохранения перезаписью startvalue, естественно, это не галочка, а кусок кода поэтому использовали только для избранных тегов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 24, 2010 11:12 
Не в сети
Это точно не человек

Зарегистрирован: Вт май 03, 2005 17:11
Сообщения: 3547
Запишите их файл, и восстановите при старте - и конец мучениям с галками :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 03, 2010 13:40 
Не в сети
Известный Писатель

Зарегистрирован: Пн май 12, 2008 13:20
Сообщения: 245
Откуда: Донецк
gre_m писал(а):
Запишите их файл, и восстановите при старте - и конец мучениям с галками :-)


Может у вас имеется пример записи\чтения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 04, 2010 7:39 
Не в сети
Писатель со стажем

Зарегистрирован: Пн май 16, 2005 7:41
Сообщения: 500
Откуда: Самара
Функция переписывающая StartValue (код функции тестирован, выдран из рабочего проекта):

Код:
typedef char TAGNAME[127];
typedef TAGNAME * pTAGNAME;
////////////////////////////////////////////////////////////////////////////////////////////////////
// функция записывает значения тегов в таблицу (значения инициализации)
//и при следующем запуске WinCC автоматически устанавливает их
//  параметр Mask - это строка в формате "%d%f%s", описатель типов всех тегов по порядку(аналогично SetTagMultiWait),
//       где %d -  целые значения (включая BOOL), %f - float и double, %s - строка
// ВНИМАНИЕ: в параметрах записываемых тегов должен установлен флажок "Начальное значение"
//                          иначе параметр инициализироваться не будет
//////////////////////////////////////////////////////////////////////////////////////////////////
BOOL SaveTags(int NumTags, char *Mask, pTAGNAME TagName ) 
{
#pragma code ("DB.dll") 
      WINBASEAPI  BOOL  WINAPI  DBConnect (HANDLE*, char*, CMN_ERROR*);         // открытие бд
      WINBASEAPI  BOOL WINAPI  DBExecuteDirect_hdsn(HANDLE, char*, CMN_ERROR*);      // выполнение запроса SQL
      WINBASEAPI  BOOL WINAPI  DBDisConnect(HANDLE, DWORD, CMN_ERROR*);         // закрытие бд
#pragma code ()

#define DBSource "@DatasourceNameRT"
#define TableName "MCPTVARIABLEDESC"
#define ColumnValue "STARTVALUE"
#define ColumnTag "VARIABLENAME"

BOOL bRes;
int i,j;
//long int IntValue;double dblValue;
char StrSQL[3000]="", SourceDB[250]="", Value[255]="";
HANDLE  hDSN=NULL;                      // указатель на DSN
CMN_ERROR  ErrStruct;                   // структура для возврата ошибки

  strcpy(SourceDB, GetTagChar(DBSource) );             // считать имя базы данных из тега
SourceDB[strlen(SourceDB) -1 ] =0;                // обнулить последний символ ("R")
  bRes=DBConnect ( &hDSN, SourceDB, &ErrStruct);          // открытие БД
  if (bRes)                   // если БД открылась
   {
     for (i=0; i<NumTags; i++)             // цикл по всем переданным тегам
       {
             if (strncmp((char*)(Mask+(i*2) ), "%d", 2) ==0 )           // если фрагмент строки содержит описатель целого типа
            sprintf(Value, "%d", GetTagSDWord(TagName[i]) );// считать значение из целого тега и вписать в строку
   
          else if(strncmp((char*)(Mask+(i*2) ), "%f", 2) ==0 )           // если фрагмент строки содержит описатель типа с плавающей точкой
   sprintf(Value, "%f", GetTagDouble(TagName[i]) ); // считать значение из целого тега и вписать в строку

          else if(strncmp((char*)(Mask+(i*2) ), "%s", 2) ==0 )           // если фрагмент строки содержит описатель типа  строка
            strcpy(Value, GetTagChar(TagName[i]) );                         // считать строку из тега

           sprintf(StrSQL, "UPDATE "TableName" SET "ColumnValue"='%s' WHERE "ColumnTag"='%s' ", Value, TagName[i]); // формирование SQL-запроса

           bRes=DBExecuteDirect_hdsn( hDSN, StrSQL, &ErrStruct ) && bRes;       // выполнение SQL-запроса
       }
      if( hDSN != NULL )  bRes=(bRes&&DBDisConnect( hDSN, 0, &ErrStruct) );    // закрытие БД
    hDSN=NULL;
   }

return bRes;
}


пример вызова функции:
Код:
typedef char TAGNAME[127];
typedef TAGNAME * pTAGNAME;
#define k 10 // количество тегов
#define MaskTypes "%d%d%d%f%f%s%s%d%d%s"
TAGNAME SavedTags[k]={"Tag1", "Tag2", ..., "Tag10"};

SaveTags(k,MaskTypes,SavedTags);      // сохранить все теги


Последний раз редактировалось Vasiliy Чт мар 04, 2010 9:06, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 04, 2010 9:05 
Не в сети
Писатель со стажем

Зарегистрирован: Пн май 16, 2005 7:41
Сообщения: 500
Откуда: Самара
gre_m писал(а):
Запишите их файл, и восстановите при старте - и конец мучениям с галками :-)

Этот вариант проходили, как в файл, так и в UserArchive. Между запуском WinCC и восстановлением тегов (вычитыванием из файлов) проходит время иногда доходит до минут, что не всегда подходит (при запуске проекта возникает повышенная нагрузка на проц, и система малость подтормаживает).
Запись значений в StartValue избавляет от необходимости их вычитывать в коде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 04, 2010 12:43 
Не в сети
Известный Писатель

Зарегистрирован: Пн фев 09, 2009 14:38
Сообщения: 192
Vasiliy, спасибо, архиполезная вещь!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 05, 2011 12:53 
Не в сети
Известный Писатель

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Да, спасибо, действительно очень полезно и нужно!

Подскажите, таблица для сохранения, она CAS'ом бэкапиться же не будет?..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 06, 2011 8:41 
Не в сети
Известный Писатель

Зарегистрирован: Пт окт 30, 2009 10:27
Сообщения: 435
Откуда: Москва
Полезная тема! Хочу сразу добавить сюда же вопрос...
Имеется: 2 резервируемых сервера WinCC (PAS CC), некое количество тегов-уставок, хранящихся в юзер архиве. При запуске сервера уставки считываются из архива и записываются в теги... Как в этом случае отработает резервирование???
1) Остановленный сервер запустится, считает свой архив, запишет теги, а в конце синхронизирует архивы? Т.к. юзер архивы синхронизируются последними?
2) Если сами теги ещё и синхронизированы, то произойдёт замена значений рабочего сервера запущенным? Т.к. его теги будут только что записаны и значит более новые? А далее и перезапишется юзер архив на рабочем сервере, т.к. он переписывается по изменению тегов? И мы вернёмся к старым значениям?
Как этого избежать? Или это только мои предположения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 06, 2011 9:27 
Не в сети
Известный Писатель

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Меня тоже волнуют эти вещи))
А еще предложили использовать рецепты для хранения уставок. Имеет право на жизнь такая версия?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 13, 2011 7:42 
Не в сети
Известный Писатель

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Подскажите, автор кода, где вызывать функцию?..


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 19 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group