бесполезности для 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