бесполезности для wincc
Alexis; 8.12.03



См. страШныйСайт :)

Re: бесполезности для wincc
Евгений Трунов; 9.12.03

При запуске выдает сообщение:


"Не удается открыть пакет установки. Свяжитесь с поставщиком приложения и убедитесь, что это правильный пакет Windows Installer".
Re: бесполезности для wincc
Akorostel; 9.12.03

у меня тоже самое

Re: бесполезности для wincc
Alexis; 9.12.03

Вроде теперь качается и ставится :)

Re: бесполезности для wincc
Шимолин Сергей; 10.12.03

Прикольно!

На VC++ делал?
Re: бесполезности для wincc
Alexis; 10.12.03

Да, MS Visual C++ 2002

Re: бесполезности для wincc
shurik; 13.12.03

а нет ли мыслей по формированию журнала действий оператора в читабельном виде, а не смотреть на шифры параметров

Re: бесполезности для wincc
Alexis; 15.12.03

2 shurik:

А точнее можно? А то я что-то сути не уловил... :)
Re: бесполезности для wincc
shurik; 15.12.03

смысл в том что при выполнении какого-то действия оператором (например изменения уставки регулятора SP для CTRL_PID) в журнал сообщений выводится Device1\CFC\CTRL_PID.SP новое =1 старое =0.А как вставить в текст вместо шифра что это типа РЕГУЛЯТОР ПОДАЧИ СРЕДЫ.Простите,может быть вопрос не по теме,но если Вы что то можете посоветовать буду благодарен.

Re: бесполезности для wincc
Alexis; 15.12.03

Как это делаю я.

Ручками в ALG создаю сообщение:
NR=1015001 (номер на Ваше усмотрение)
CLASS=18 TYPE=247 (т.е. системное без подтверждения)
TEXT1=@1%s@
TEXT2=@2%s@
TEXT3=@3%s@
TEXT4=@1%g@
TEXT5=@2%g@

Функция генерации сообщения (этакий упрощеный псевдокод:):
BOOL WINAPI ChangeParam
(double dblNewValue, double dblOldValue, /*новое и старое значения*/
LPCTSTR lpszTagName, LPCTSTR lpszSyffix, /*имя тэга - структурного и поля структуры*/
LPCTSTR lpszDesc, LPCTSTR lpszUser, LPCTSTR lpszComment) /*описание, юзер и комментарий*/
{
BOOL bRet=FALSE;
DM_VARKEY dmvk;
ZeroMemory(&dmvk,sizeof(dmvk));
lstrcpy(dmvk.szName,lpszTagName);
lstrcat(dmvk.szName,_T("."));
lstrcat(dmvk.szName,lpszSyffix);
dmvk.dwKeyType=DM_VARKEY_NAME;
CMN_ERROR wccError;
ZeroMemory(&wccError,sizeof(wccError));
DWORD dwState=0;
VARIANT vtValue;
::VariantInit(&vtValue);
vtValue.vt=VT_R8;
vtValue.dblVal=ablNewValue;
if ( bRet=DMSetValue(&dmvk,1,&vtValue,&dwState,&wccError) )
{
MSG_RTCREATE_STRUCT msgCreate;
MSG_COMMENT_STRUCT msgComment;
ZeroMemory(&msgCreate,sizeof(msgCreate));
ZeroMemory(&msgComment,sizeof(msgComment));
::GetLocalTime(&msgCreate.stMsgTime);
msgCreate.dwMsgNr=1015001;
lstrcpyn(msgCreate.mtTextValue[0].szText,lpszTagName,MSG_MAX_TEXTVALUE);
lstrcpyn(msgCreate.mtTextValue[1].szText,lpszSyffix,MSG_MAX_TEXTVALUE);
lstrcpyn(msgCreate.mtTextValue[2].szText,lpszDesc,MSG_MAX_TEXTVALUE);
msgCreate.dPValue[0]=dblNewValue;
msgCreate.dPValue[1]=dblOldValue;
msgCreate.wTextValueUsed=0x07;
msgCreate.wPValueUsed=0x03;
msgCreate.dwMsgState=MSG_STATE_COME;
DWORD dwServiceID=0;
if ( MSRTStartMsgService(&dwServiceID,NULL,NULL,0,NULL,&wccError) )
{
if ( MSRTCreateMsg(dwServiceID,&msgCreate,&wccError) )
{
msgComment.dwMsgNr=msgCreate.dwMsgNr;
memcpy(&msgComment.stTime,&msgCreate.stMsgTime,sizeof(SYSTEMTIME));
lstrcpyn(msgComment.szUser,lpszUser,MSG_MAX_USERNAME);
lstrcpyn(msgComment.szApplicationName,"ALX",MSG_MAX_APPLNAME);
dwState=MAX_COMPUTERNAME_LENGTH;
::GetComputerName(msgComment.szComputerName,&dwState);
lstrcpyn(msgComment.szText,lpszComment,MSG_MAX_TB_CONTENT);
MSRTSetComment(dwServiceID,&msgComment,&wccError);
}
MSRTStopMsgService(dwServiceID,&wccError);
}
}
::VariantClear(&vtValue);
return bRet;
}
Описание ставим сами
Юзера берем из @CurrentUser
Комментарий берем из lpszTagName.#comment

Настраиваю журнал сообщений о действиях оператора MsgFilterSQL->MSGNR=1015001

Все взаимодействие пользователей ведется через мои ActiveX, где на каждое изменение пареметра генерится подобное сообщение, на различные команды другое...
Re: бесполезности для wincc
shurik; 16.12.03

Ну,честно говоря не ожидал,СПАСИБО

Единственно чего я не совсем понял-механизм формирования Process_Value и соответствующие @?%s@.Может где почитать можно,а то пишут что например формат @1%s@ соответствует Process_Value_1 а откуда он берется ???
Re: бесполезности для wincc
Alexis; 16.12.03

Вызови встроенную справку в wincc и в поиске задай @ и смотри справку по @...@ - Message Texts of a Single Message


Process Value - это вроде как сопутствующие параметры для alarm_8p, ну и для собственных нужд :)

В RT-шной базе хранятся PV1-PV10 как double (в основной таблице) и как char[] (в дополнительной таблице). Если ты записываешь как double, то читай как @1%g@ - @10%g@, если как char, то читай как @1%s@ - @10%s@.
Re: бесполезности для wincc
shurik; 16.12.03

Ну,честно говоря не ожидал,СПАСИБО

Единственно чего я не совсем понял-механизм формирования Process_Value и соответствующие @?%s@.Может где почитать можно,а то пишут что например формат @1%s@ соответствует Process_Value_1 а откуда он берется ???
Re: бесполезности для wincc
shurik; 16.12.03

насчет OCX с часиками - смотрится хорошо, но мне кажется, было бы удобно добавить свойство Visible для изображений иконки пользователя и переключателя часов и переключатель часов сдвинуть вправо.Кстати работаю на WinCC 6 и после внедрения часиков на кадр иногда pdlrt стал рушится при деактивации проекта,могу прислать отчет DrWatsona,но может это и не связано с OCX

Re: бесполезности для wincc
Alexis; 16.12.03

Под шестеркой не проверял, но под пятеркой у меня нормально работает.

Посмотри, может pdlrt чего-нибудь успел сохранить в siemens\wincc\diagnose\ - точно не помню (давно не рушилось :), но помоему pdlrt свою диагностику пишет в файл pdltrash.log