Приветствую.
Может мой вопрос простой и тупой но чтото в мануалах не нашел.
Задача простая при изменении значения в поле ввода, надо выдать сообщение в журнал. Я понимаю что надо просто повесить C-скрипт. Но как в нем вызавать сообщение номером 3 из Alarm Logging?
Простой вопрос по Alarm Logging
-
- Posts: 47
- Joined: Thu Oct 13, 2005 12:45 pm
- Location: Kazahstan
-
- Posts: 193
- Joined: Fri Feb 24, 2012 8:28 am
Re: Простой вопрос по Alarm Logging
Оно описано в документации по ODK6. (У меня работает на WinCC 7.0, 6.2)
Примерно так:
А в Alarm Logging в полях "User text block -2" например, у меня записано @2%s@, в третьем @3%s@, а в первом - "Изменение задания оператором @1%s@".
Примерно так:
Code: Select all
#pragma code("kernel32.dll")
BOOL GetLocalTime(SYSTEMTIME* sysTime);
#pragma code()
#include "m_global.h"
#include "msrtapi.h"
...
...
...
CMN_ERROR Error;
SYSTEMTIME sysTime;
MSG_RTCREATE_STRUCT msg;
DWORD dwConnID = 0;
BOOL ret = FALSE;
GetLocalTime(&sysTime);
msg.dwMsgNr = 1774; //номер сообщения в аларм логине (у Вас 3)
msg.stMsgTime = sysTime;
msg.dwMsgState = MSG_STATE_COME;
msg.dwFlags = MSG_FLAG_TEXTVALUES;
msg.wTextValueUsed = 0x07; // номера 0,1,2
strncpy(msg.mtTextValue[0].szText, "Текст 1", MSG_MAX_TEXTVALUE);//У меня это сообщение
strncpy(msg.mtTextValue[1].szText, "Текст 2", MSG_MAX_TEXTVALUE);
strncpy(msg.mtTextValue[2].szText, "Текст 3", MSG_MAX_TEXTVALUE);
if (MSRTStartMsgService(&dwConnID, NULL, NULL, 0, NULL, &Error))
{
ret = MSRTCreateMsg(dwConnID, &msg, &Error);
ret = MSRTStopMsgService(dwConnID, &Error);
}