Почему WinCC не соединяется с БД?
Эдик; 13.10.04



Re: Почему WinCC не соединяется с БД?
Маслов Дмитрий; 13.10.04

Вот примерчик скрипта WinCC для соединения с RT-базой данных через ODBC. Подставляете нужный Вам DSN и будет работать с Вашей базой.


#pragma code ("odbc32.dll")
#include "sql.h"
#pragma code ()

int ConnectDB()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;

RETCODE retcode;
SQLCHAR SQLState[50],SQLMsg[100];
SDWORD FAR* SQLErrorCode;

SQLCHAR DataSourceName[MAX_DM_DSN_NAME+2];
char PrPath[MAX_PATH+1];
CMN_ERROR cmnError;
DM_PROJECT_INFO ProjectInfo;

//------get project information
memset(&cmnError, 0, sizeof(CMN_ERROR));
memset(&ProjectInfo, 0, sizeof(DM_PROJECT_INFO));

if (!DMGetRuntimeProject(PrPath,MAX_PATH, &cmnError)) printf("!!!Error - DMGetRuntimeProject(...)\r\n");
if (!DMGetProjectInformation(PrPath, &ProjectInfo, &cmnError))
{
printf("!!!Error - DMGetProjectInformation(...)\r\n");
return 0;
}
else
{
strcpy((char*)DataSourceName,ProjectInfo.szDSNName);
strcat((char*)DataSourceName,"R");
}

retcode = SQLAllocEnv(&henv); /* Environment handle */
if (retcode == SQL_SUCCESS)
{
retcode = SQLAllocConnect(henv, &hdbc); /* Connection handle */
if (retcode == SQL_SUCCESS)
{
retcode = SQLConnect(hdbc, DataSourceName, SQL_NTS,(SQLCHAR*) "dba", SQL_NTS,(SQLCHAR*) "sql", SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocStmt(hdbc, &hstmt); /* Statement handle */
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) return 4;
else
{
printf("!!! ERROR !!! SQLAllocStmt\r\n");
return 3;
}
}
else
{
printf("!!! ERROR !!! SQLConnect \r\n");
return 2;
}
}
else
{
printf("!!! ERROR !!! SQLAllocConnect \r\n");
return 1;
}
}
else
{
printf("!!! ERROR !!! SQLAllocEnv \r\n");
return 0;
}
}
См. http://www.wincc.ru

Re: Почему WinCC не соединяется с БД?
Владимир; 13.10.04

Дмитрий, подскажите пожалуйста, не могу никак разобрать, WIN CC 5.1, необходимо передавать на другую машину оперативные данные (около 150 байт) информации о состоянии системы управления. В проекте есть внешние теги, в которых хранятся эти данные. Где, в какой таблице базы данных RT я могу отыскать значения этих тегов ? Или их вообще в принципе нет ? Как я могу передать эти данные на другую машину ?

Re: Почему WinCC не соединяется с БД?
Маслов Дмитрий; 14.10.04

1. В RT-базе данных хранятся только архивные значения тегов. Текущие значения, естественно, там не хранятся.


2. Передавать на другую машину - расплывчатая формулировка. В каком виде Вам нужны эти данные: в файле, в БД, получение какой-либо самописной программой, просто отображание и т.д.?
Варантов множество, но надо сначала понять, что Вам нужно.
См. http://www.wincc.ru