SIEMENS, DF&PD

Предыдущее посещение: Чт июн 09, 2016 22:38 Текущее время: Чт июн 09, 2016 22:38

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




 [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: формирование отчетов в WinCC
СообщениеДобавлено: Ср фев 02, 2005 8:52 
Вопрос из моего пробела знаний.
Есть архив в TagLogging с периодом архивации всех тэгов 500ms и размером 2 недели, необходимо в проекте предусмотреть формирование отчета по запросу с возможностью задания даты и времени начала и конца отчетности с 30 минутной выборкой.
Подскажите, как это можно организовать... возможно есть какие-то готовые примеры.
Заранее примного благодарен!


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 02, 2005 14:56 
Не в сети
Начинающий писатель

Зарегистрирован: Ср янв 05, 2005 12:49
Сообщения: 58
Откуда: СМС-Автоматизация, Самара
Ваш вопрос довольно расплывчатый. Судя по всему, Вас чем-то не устраивает встроенная в WinCC подсистема формирования отчетов. Тем не менее, из текста сообщения не ясно, какие именно ограничения не позволяют Вам реализовать описанную функциональность стандартными средствами. Если у Вас очень экзотические отчеты, экспортируйте данные в Excel, там с ними можно сделать все, что угодно.


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

Зарегистрирован: Ср фев 02, 2005 8:55
Сообщения: 328
Откуда: г. Симбирск, АО "УКБП"
Дело в том, что я просто не знаю WinCC так хорошо, чтобы это сделать. В чем смог, в том сам и разобрался. Я же сказал - ПРОБЕЛ В ЗНАНИЯХ. А просьба такова: направить в нужном направлении и показать где капать. Как сделать возможность выбора дат, как сделать получасовые выборки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт фев 04, 2005 11:32 
Не в сети
Начинающий писатель

Зарегистрирован: Ср янв 05, 2005 12:49
Сообщения: 58
Откуда: СМС-Автоматизация, Самара
В дизайнере отчетов создаете новый страничный макет. Открываете его. На странице размещаете Tag Table (папка Tag Logging Runtime на закладке Runtime Documentation). Подключаете нужные архивны. В свойстве Time Range выбираете Date within the specified time range и границы привязываете к каким-либо тегам, изменяя которые в режиме исполнения получите нужный диапазон времени.

А перед всем этим желательно нажать F1 и почитать help.


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

Зарегистрирован: Ср фев 02, 2005 8:55
Сообщения: 328
Откуда: г. Симбирск, АО "УКБП"
В общем-то все понятно... почти! А как задать получасовые выборки из архива в 500ms, а то у меня в отчете все значения так и идут с 500ms вместо 30мин?


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

Зарегистрирован: Вт янв 18, 2005 8:16
Сообщения: 101
Откуда: СМС-Автоматизация, г. Москва, г. Самара
Для получения данных за каждые полчаса Вам понадобится создать отдельный архив, в который данные будут записываться раз в полчаса. Для этого Вам понадобится в TagLogging создать новый таймер (базовый таймер - 1 минута, множитель - 30, начальное время - 0 часов 0 минут). Каждому тегу в архиве Вы должны назначить этот таймер на архивацию, а на опрос - к примеру, 1 секунду, а также задать функцию обработки (например, среднее). В этом случае у Вас будут накапливаться ежесекундные данные за полчаса, усредняться, и в конце каждого получаса, записываться в архив. А этот архив может использоваться для формирования отчета.


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

Зарегистрирован: Ср фев 02, 2005 8:55
Сообщения: 328
Откуда: г. Симбирск, АО "УКБП"
Опа! Я это подозревал, но не верил в это!!! Как это так?!?! Ведется архив с 500ms интервалом, а сделать 30мин. выборки из него нельзя?!?! Что за ерунда такая?!
Вообще предполагается установку дискретности выборок отдать конечному пользователю, нормальный процесс таков, что в нем мало что меняется и нужно формировать отчеты только для передачи смены (30min. выборки), но если начинает изменяться, то меняется очень стремительно (500ms выборки для "разбора полетов"), есть еще куча факторов и соотв. отчетов, где должны быть уже другие дискретности выборок... и получается, что я для каждой отдельной дискретности должен вести отдельный архив с одними и теми же Тэгами?! что за бред...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 14, 2005 15:26 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 02, 2005 8:55
Сообщения: 328
Откуда: г. Симбирск, АО "УКБП"
В общем-то со многим уже разобрался (разбирался в WinCC 6.0), но остался один вопрос:
Все это сделать надо на WinCC 5.1, а в 5.1 в отличии от 6.0 диапазон времени формирования отчета (From-To) нельзя задать от тэга, только жестко забивается :( Как быть? может есть какие функции?


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

Зарегистрирован: Пт янв 14, 2005 9:29
Сообщения: 152
Откуда: Новокузнецк
1. Создайте форму отчёта (Layout), в ней Dynamic Metafile -> Tag Logging RT -> Trend.
2. Добавьте необходимые архивные теги для созданного тренда.
3. Создайте Print Job с указанием вашей формы отчёта.
Вот пример модификации PrintJob'а с указанием заданного диапазлна времени:


//Создайте функцию для чтения начального значения диапазона времени из тегов и возвращения его в формате SYSTEMTIME
SYSTEMTIME TimeFrom()
{
static SYSTEMTIME st;

st.wYear = GetTagWord("U16i_ex_rep_f1");
st.wMonth = GetTagWord("U16i_ex_rep_f2");
st.wDay = GetTagWord("U16i_ex_rep_f3");
st.wHour = GetTagWord("U16i_ex_rep_f4");
st.wMinute = GetTagWord("U16i_ex_rep_f5");
st.wSecond = GetTagWord("U16i_ex_rep_f6");
return st;
}

//Создайте функцию для чтения конечного значения диапазона времени из тегов и возвращения его в формате SYSTEMTIME
SYSTEMTIME TimeTo()
{
static SYSTEMTIME st;

st.wYear = GetTagWord("U16i_ex_rep_t1");
st.wMonth = GetTagWord("U16i_ex_rep_t2");
st.wDay = GetTagWord("U16i_ex_rep_t3");
st.wHour = GetTagWord("U16i_ex_rep_t4");
st.wMinute = GetTagWord("U16i_ex_rep_t5");
st.wSecond = GetTagWord("U16i_ex_rep_t6");
return st;
}


//Создайте функцию для изменения вашего Print Job'а со значениями границ диапазона времени и именем PrintJob'а в качестве параметров

BOOL ModifyPrintJob(SYSTEMTIME st1,SYSTEMTIME st2,char jobname[200])
{
BOOL fRet;
PCMN_ERROR pError;
HPROPERTIES hProp;
LPVOID ptr1,ptr2;
DWORD typ;
DWORD dwVal;
char propname1[200],propname2[200];
char buffer[200];
TCHAR g_szProj[MAX_PATH+1];

typ = VT_DATE;
strcpy( propname1, "ABSOLUTESELECTIONFROM");
strcpy( propname2, "ABSOLUTESELECTIONTO");
ptr1 = (LPVOID)&st1;
ptr2 = (LPVOID)&st2;

//-----get project path
if( !DMGetRuntimeProject( g_szProj, MAX_PATH, pError))
{
printf("Error DMGetRuntimeProject(...)\r\n");
return FALSE;
}

//-----create property handle
hProp = RPJCreatePropertyHandle ( g_szProj, pError );
if( !hProp)
{
printf("Error RPJCreatePropertyHandle(...)\r\n");
return FALSE;
}

//-----get job properties
if ( !RPJGetJobProps ( hProp, jobname, pError ))
{
printf("Error RPJGetProps(...)\r\n");
RPJDeletePropertyHandle ( hProp, pError);
return FALSE;
}

//-----set property
if ( !RPJSetProperty ( hProp, propname1, ptr1, (VARTYPE) typ, 200, pError ))
{
printf("Error RPJSetProperty(...)\r\n");
RPJDeletePropertyHandle ( hProp, pError);
return FALSE;
}

//-----save job properties
if ( !RPJSetJobProps ( hProp, jobname, pError))
{
printf("Error RPJSetProps(...)\r\n");
RPJDeletePropertyHandle ( hProp, pError);
return FALSE;
}

//-----get job properties
if ( !RPJGetJobProps ( hProp, jobname, pError ))
{
printf("Error RPJGetProps(...)\r\n");
RPJDeletePropertyHandle ( hProp, pError);
return FALSE;
}

//-----set property
if ( !RPJSetProperty ( hProp, propname2, ptr2, (VARTYPE) typ, 200, pError ))
{
printf("Error RPJSetProperty(...)\r\n");
RPJDeletePropertyHandle ( hProp, pError);
return FALSE;
}

//-----save job properties
if ( !RPJSetJobProps ( hProp, jobname, pError))
{
printf("Error RPJSetProps(...)\r\n");
RPJDeletePropertyHandle ( hProp, pError);
return FALSE;
}


//-----delete property handle
fRet = RPJDeletePropertyHandle ( hProp, pError);

//-----print out written time settings
printf("\r\nJob : %s ;\r\n\r\n",jobname);

printf("Prop: %s ;\r\n",propname1);
printf("%d.%d.%d %d:%d:%d\r\n",(WORD)st1.wDay, (WORD)st1.wMonth, (WORD)st1.wYear,
(WORD)st1.wHour, (WORD)st1.wMinute, (WORD)st1.wSecond );
printf("Prop: %s ;\r\n",propname2);
printf("%d.%d.%d %d:%d:%d\r\n",(WORD)st2.wDay, (WORD)st2.wMonth, (WORD)st2.wYear,
(WORD)st2.wHour, (WORD)st2.wMinute, (WORD)st2.wSecond );

return TRUE;

}


Если функция ModifyPrintJob успешно отработает, можете вызывать функцию RPTJobPrint() для печати модифицированного по Вашему диапазону времени Print Job'а


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

Зарегистрирован: Вт янв 04, 2005 9:08
Сообщения: 188
Откуда: Украина, АО Укртатнафта
Посмотроите в WinCC ODK раздел
Working with COM Server Objects

Introduction

To integrate user-specific data in WinCC report, there is the option to integrate a COM server into the report system. This COM server provides a COM object in the object selection which is selected in the page layout editor and added to a page layout. The COM object then returns the user-specific data to output in the report. The COM object can be of the type text, table or picture.

Может поможем решить задачу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 21, 2005 16:22 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 02, 2005 8:55
Сообщения: 328
Откуда: г. Симбирск, АО "УКБП"
Всем АГРОМНОЕ спасибо! задача решена!
Но более извращенного способа и редактора я еще не видел... :(( До этой задачи я был лучшего мнения о WinCC. Очень жаль... продукт хороший, но слишком уж сырой!


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 5


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

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