技术论坛

回复:请教:版主能不能给介绍下wincc中最常用的一些c函数和用法

作者 主题
侠圣

经验值: 3423
发帖数: 1473
精华帖: 6
回复:请教:版主能不能给介绍下wincc中最常用的一些c函数和用法


只看楼主 2007-03-26 08:58:32
该系统包含标准函数。 可以按需要修改这些函数。 此外,还可以自己创建标准函数。
该系统包括一个标准函数集。
一、Alarm - 简短描述
Alarm组包含控制Wince报警控件的函数。标准函数可用于工具栏中的每一个按钮。这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。
1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。
使用标准函数操作WinCC报警控件的实例
{//确认选择的报警记录消息
AcknowledgeMessage(GetTagWord("U08i_MsgNr"));
}
指定待确认的消息号。在本例中是从变量读取的。

2.BOOL AXC_OnBtnArcLong(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

3.BOOL AXC_OnBtnArcShort(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

4.BOOL AXC_OnBtnComment(char* lpszPictureName, char* pszMsgWin)函数
外部消息窗口操作,该函数显示先前所选消息的注释。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

5.BOOL AXC_OnBtnEmergAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数打开确认对话框(紧急确认/复位)。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

6.BOOL AXC_OnBtnHornAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数确认蜂鸣器信号。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

7.BOOL AXC_OnBtnInfo(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数显示信息文本。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

7.BOOL AXC_OnBtnLock(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数打开"设置锁定"对话框。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

8.BOOL AXC_OnBtnLockUnlock(char* lpszPictureName, char* pszMsgWin),函数,该函数锁住在消息窗口中选择的消息。之后,不再归档该消息。该函数释放在锁定列表中选择的消息。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

9.BOOL AXC_OnBtnLockWin(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作.该函数调用锁定列表。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

10.BOOL AXC_OnBtnLoop(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数触发所选消息的"报警回路"函数。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

11.BOOL AXC_OnBtnMsgFirst(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表的开始处。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

12.BOOL AXC_OnBtnMsgLast(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表的结束处。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的最后一条消息
AXC_OnBtnMsgLast("gs_alarm_00","Control1");
}
AXC_OnBtnMsgLast函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。
13.BOOL AXC_OnBtnMsgNext(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表中的下一条消息。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

14.BOOL AXC_OnBtnMsgPrev(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数移动到消息列表中的前一条消息。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

15.BOOL AXC_OnBtnMsgWin(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数调用过程消息窗口。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

16.BOOL AXC_OnBtnPrint(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,打印机打印出符合在报警控件中定义的选择标准的全部消息。
WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

17.BOOL AXC_OnBtnScroll(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数激活水平和垂直滚动功能。
使用标准函数操作WinCC报警控件的实例
{// 激活/取消激活滚动功能
AXC_OnBtnScroll("gs_alarm_00","Control1");
}
AXC_OnBtnScroll函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

18.BOOL AXC_OnBtnSelect(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数打开"设置选择"对话框。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

19.BOOL AXC_OnBtnSinglAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,该函数确认当前所选的消息。
使用标准函数操作WinCC报警控件的实例
{// 确认激活的消息
AXC_OnBtnSinglAckn("gs_alarm_00","Control1");
}
AXC_OnBtnSinglAckn函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

20.BOOL AXC_OnBtnVisibleAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,确认消息窗口中可见的全部消息(组确认)。
使用标准函数操作WinCC报警控件的实例
{// 跳转到WinCC报警控件中的第一条消息
AXC_OnBtnMsgFirst("gs_alarm_00","Control1");
}
AXC_OnBtnMsgFirst函数参数:
"gs_alarm_00"是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。

21.BOOL AXC_SetFilter(char* lpszPictureName, char* lpszObjectName, LPMSG_FILTER_STRUCT lpMsgFilter, LPCMN_ERROR, lpError)函数,外部消息窗口操作,该函数为WinCC报警控件设置过滤器,以便根据指定的过滤标准筛选出可用的消息。
使用标准函数操作WinCC报警控件的实例
{BOOL ret;
MSG_FILTER_STRUCT Filter;
CMN_ERROR Error;
//重新设置过滤器结构 memset
( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) );
//设置过滤器名称 strcpy
( Filter.szFilterName, "Control1");
// 挑选选择元素 Filter
.dwFilter = MSG_FILTER_NR_FROM MSG_FILTER_NR_TO;
// 消息号来自 Filter
.dwMsgNr[0] = 2;
// 消息号来自 Filter
.dwMsgNr[1] = 2;
ret = AXC_SetFilter("gs_alarm_00","Control1",&Filter,&Error);
}
1. 命名该过滤器。
2. 选择过滤器的类型。
3. 指定过滤器标准。
4. 设置过滤器。
常规使用注释
过滤器类型和过滤器标准必须适合使用;在过滤器结构中描述所有其它的过滤器类型。
使用标准函数操作WinCC报警控件的实例
{BOOL ret;
MSG_FILTER_STRUCT Filter;
CMN_ERROR Error;
//删除整个过滤器结构 memset
( &Filter, 0, sizeof( MSG_FILTER_STRUCT ) );
//设置空的过滤器结构 AXC
_SetFilter("gs_alarm_00","Control 1",&Filter,&Error);
}
1. 删除该过滤器结构。
2. 用空值填充过滤器结构。
结构定义MSG_FILTER_STRUCT
typedef struct {
CHAR szFilterName[MSG_MAX_TEXTLEN+1];
WORD dwFilter;
SYSTEMTIME st[2];
DWORD dwMsgNr[2];
DWORD dwMsgClass;
DWORD dwMsgType[MSG_MAX_CLASS];
DWORD dwMsgState;
WORD wAGNr[2];
WORD wAGSubNr[2];
DWORD dwArchivMode;
char szTB[MSG_MAX_TB][
MSG_MAX_TB_CONTENT+1]
DWORD dwTB;
Double dPValue[MSG_MAX_PVALUE][2];
DWORD dwPValue[2];
DWORD dwMsgCounter[2];
DWORD dwQuickSelect;
}
MSG_FILTER_STRUCT;
描述
在该结构中定义过滤标准。
组成部分
dwFilter
通过下列常数从"m_global.h"文件定义过滤条件:
MSG_FILTER_DATE_FROM 从日期
MSG_FILTER_DATE_TO 到日期
MSG_FILTER_TIME_FROM 从时间
MSG_FILTER_TIME_TO 到时间
MSG_FILTER_NR_FROM 从消息号
MSG_FILTER_NR_TO 到消息号
MSG_FILTER_CLASS 消息等级
MSG_FILTER_STATE 消息状态
MSG_FILTER_AG_FROM 从AG号
MSG_FILTER_AG_TO 到AG号
MSG_FILTER_AGSUB_FROM 从AG子号
MSG_FILTER_AGSUB_TO 到AG子号
MSG_FILTER_TEXT 消息文本
MSG_FILTER_PVALUE 过程值
MSG_FILTER_COUNTER_FROM 从内部消息计数器
MSG_FILTER_COUNTER_TO 到内部消息计数器
MSG_FILTER_PROCESSMSG 过程消息
MSG_FILTER_SYSMSG 系统消息
MSG_FILTER_BEDMSG 事件消息
MSG_FILTER_DATE 日期从...到...
MSG_FILTER_TIME 日期从...到...
MSG_FILTER_NR 消息号从...到...

st

日期/时间从...到...
在这种情况下,st[0]是开始时间(从),st[1]是结束时间(到)
为过滤标准填充这些域:MSG_FILTER_DATE,MSG_FILTER_DATE_FROM,MSG_FILTER_DATE_TO, MSG_FILTER_TIME,MSG_FILTER_TIME_FROM和MSG_FILTER_TIME_TO
如果传送SYSTEMTIME参数要求当前时间,使用GetLocalTime函数而非GetSystemTime。通常这两个函数之间的时间差别很大。
dwMsgNr
消息号从...到...
在这种情况下,dwMsgNr[0]是开始号(从),dwMsgNr[1]是结束号(到)
为过滤标准填充这些域:MSG_FILTER_NR,MSG_FILTER_NR_FROM和MSG_FILTER_NR_TO
dwMsgClass
位代码消息等级
为过滤标准填充这个域:MSG_FILTER_CLASS
dwMsgType
每个消息等级的位代码消息类型
为过滤标准填充这个域:MSG_FILTER_CLASS
dwMsgState
位代码消息状态
为过滤标准填充这个域:MSG_FILTER_STATE
wAGNr
AG号从...到...
为过滤标准填充这些域:MSG_FILTER_AG_FROM和MSG_FILTER_AG_TO
wAGSubNr
AGSubNr从...到
为过滤标准填充这些域:MSG_FILTER_AGSUB_FROM和MSG_FILTER_AGSUB_TO
dwArchivMode
归档/协议识别
必须用0填充。
szTB
文本块文本
为过滤标准填充这个域:MSG_FILTER_TEXT
dwTB
文本块激活(从...到...,位代码)
为过滤标准填充这个域:MSG_FILTER_TEXT
dPValue
过程值从...到...
为过滤标准填充这个域:MSG_FILTER_PVALUE
dwPValue
过程值激活(从...到... 位代码)
为过滤标准填充这个域:MSG_FILTER_PVALUE
dwMsgCounter
内部消息计数器从...到...
为过滤标准填充这些域:MSG_FILTER_COUNTER_FROM,MSG_FILTER_COUNTER_TO
dwQuickSelect
快速选择小时,天,月
为以后扩展而保留该参数,并且必须用0预定义。
为过滤标准填充这个域:MSG_FILTER_QUICKSELECT
LOWORD类型:
MSG_FILTER_QUICK_MONTH 快速选择后n个月
MSG_FILTER_QUICK_DAYS 快速选择后n天
MSG_FILTER_QUICK_HOUR 快速选择后n个小时
HIWORD号:1...n
快速选择函数的结束时间与本地计算机的当前系统时间有关。开始时间是n * (往回计算月,日,小时)。
结构定义CMNERROR
struct CMNERRORSTRUCT {
DWORD dwError1,
DWORD dwError2,
DWORD dwError3,
DWORD dwError4,
DWORD dwError5;
TCHAR szErrorText[MAX_ERROR_LEN];
}
CMNERROR
描述
扩展的错误结构包含错误代码和与发生的错误相关的错误文本。每个应用程序可以使用该错误结构评价或发出错误消息。
组成部分
dwError1 .. dwError5
可按API函数的要求使用这些条目。
API描述包含出错时条目的各自数值。否则,错误代码在dwError1中。
szErrorText
错误代码的文本描述缓冲区
从资源建立该内容,因此依赖于语言。
BOOL GMsgFunction(char* pszMsgData)函数
该函数提供消息数据。
表示单个消息的全局函数。为每个消息调用全局函数,为每个消息设置"触发动作"参数。
最好在项目函数中解释消息数据,从GMsgFunction调用项目函数。
参数
pszMsgData
指向在其中存储消息数据的缓冲区的指针。
返回值
TRUE
已执行函数,无错。
FALSE
出错。
注意
请注意,WinCC安装会重写已修改的标准函数,所以被改变的函数丢失。

(2)Graphics - 简短描述
Graphics组包含用于编程图形系统的函数。
1.char* GetLinkedVariable(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)函数,提供与指定的对象属性链接的变量的名称。
读出直接连接的变量名的实例。
{char* pszVarName = NULL;
char szVarName[_MAX_PATH+1];
//获得变量名 pszVarName
= GetLinkedVariable("gs_stand_graph_00","Static Text 6","Visible");
//复制字符串
if (pszVarName != NULL)
{ strncpy(szVarName,pszVarName,_MAX_PATH);
}
//自定义代码
//在那里用户可以使用返回值做某事
...}
GetLinkedVariable函数参数:
"gs_stand_graph_00"是在其中组态该对象的画面的名称。
"Static Text 6"是该对象的名称。
"Visible"是链接到变量的属性。
1). 将函数GetLinkedVariable的返回值缓冲存储在pszVarName中。
2). 如果返回有效数值,将该返回值存储在szVarName中。最多存储_MAX_PATH个字符。
3). 执行处理返回值的自定义代码。

2.char* GetLocalPicture(char* lpszPictureName)函数,返回指向画面名的指针。 在这种情况下,画面名就是该文件名,不带扩展名".PDL"。
读出本地画面的实例。
{char* pszPicName = NULL;
char szPicName[_MAX_PATH+1];
//获得本地画面 pszPicName
= GetLocalPicture(lpszPictureName);
//复制字符串
if (pszPicName != NULL)
{ strncpy(szPicName,pszPicName,_MAX_PATH);
}//自定义代码
//在那里用户可以使用返回值做某事
...
}
1). 将函数GetLocalPicture的返回值缓冲存储在pszPicName中。
2). 如果返回有效数值,将该返回值存储在szPicName中。最多存储_MAX_PATH个字符。
3). 执行处理返回值的自定义代码。

3.char* GetParentPicture(char* lpszPictureName)函数,返回指向画面名称的指针。 在这种情况下,画面名就是该文件名,不带扩展名".PDL"。
读出画面名称路径的实例
{char* pszPicName = NULL;
char szPicName[_MAX_PATH+1];
//获得母画面 pszPicName
= GetParentPicture(lpszPictureName);
//复制字符串
if (pszPicName != NULL)
{strncpy(szPicName,pszPicName,_MAX_PATH);
}//自定义代码
//在那里用户可以使用返回值做某事
...}
1). 将该函数GetParentPicture的返回值缓冲存储在pszPicName中。
2). 如果返回有效数值,将该返回值存储在szPicName中。。。。。. 最多存储_MAX_PATH个字符。
3). 执行处理返回值的自定义代码。

4.char* GetParentPictureWindow(char* lpszPictureName)函数,返回指向画面窗口的名称的指针。
实例:
基本画面"Picture_1"有画面窗口"Picture Window_1",在其中调用画面"Picture_2"。
画面"Picture_2"有画面窗口"Picture Window_2",在其中调用画面"Picture_3"。
该函数调用
GetParentPictureWindow(lpszPictureName)
指向画面窗口名称的指针:
"Picture_2",是否从画面"Picture_3"调用该函数。
"Picture Window_1",是否从画面"Picture_2"调用该函数。
"Picture_1",是否从画面"Picture_1"调用该函数。

5. void OpenPicture(Picture Name)函数,用设置的画面名打开画面。

6. char* Registry2(char* mode, char* String0, char* String1)函数,该函数管理字符串对(String0,String1)的列表。

(3)Report - 简短描述
Report组包含用来启动打印作业的打印预览或打印输出本身的函数。
1. void ReportJob(LPSTR lpJobName, LPSTR lpMethodName)函数,根据参数lpMethodName的数值,决定启动打印作业或打印预览。
RPTJobPreview和RPTJobPrint, 打印作业被启动和打印作业的预览被启动

2. BOOL RPTJobPreview(LPSTR lpJobName)函数,打印作业的预览被启动。
启动作业预览的实例
{//启动指定打印作业的打印预览
RPTJobPreview("Documentation Text Library");
}
RPTJobPreview函数参数:
@Text library (compact)是打印作业的名称。

3. BOOL RPTJobPrint(LPSTR lpJobName)函数,打印作业被启动。
启动打印作业的实例
{//打印输出指定的打印作业
RPTJobPrint("@Text library (compact)");
}
RPTJobPrint函数参数:
@Text library (compact)是打印作业的名称。
4. void RptShowError(LPCSTR pszFailedFunction, CMN_ERRORA* pCmnErrorA)函数,该函数提供对失败的打印作业的错误描述。该函数调用是标准函数RptJobPrint和RptJobPreview的组成部分,因此不要求单个调用命令。
结构定义CMNERROR
struct CMNERRORSTRUCT {
DWORD dwError1,
DWORD dwError2,
DWORD dwError3,
DWORD dwError4,
DWORD dwError5;
TCHAR szErrorText[MAX_ERROR_LEN];
}
CMNERROR描述
扩展的错误结构包含错误代码和与发生的错误相关的错误文本。每个应用程序可以使用该错误结构评价或发出错误消息。
组成部分
dwError1 .. dwError5
可按API函数的要求使用这些条目。
API描述包含出错时条目的各自数值。否则,错误代码在dwError1中。
szErrorText
错误代码的文本描述缓冲区
从资源建立该内容,因此依赖于语言。

(4)TagLog - 简短描述
TagLog函数包含控制WinCC表格控件和WinCC趋势控件的函数。
Template子组包含调用某些控制值的函数。
Toolbar Buttons子组包含用于工具栏中每个按钮的标准函数。 这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。
1. int TlgGetColumnPosition(char* lpszTemplate)函数,以表格窗口中的列指针的当前位置作为列索引。
使用标准函数操作WinCC表格控件的实例
{char text[5];
long int columns
//获得列数
columns = GetNumberOfColumns("TableControl_01");
//转换长整型为字符 sprintf
(text,"%d",columns);
//在Text Field 5 SetText上设置文本
(lpszPictureName,"Static Text 5",text);
}
TlgGetNumberOfColumns函数参数:
"Table Control_01"是WinCC表格控件的名称。
1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。
2). 将返回值缓冲存储在String text中。
3). 在静态文本域中发出返回值。

2. int TlgGetNumberOfColumns(char* lpszTemplate)函数,在表格窗口中给出列的数量。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。
使用标准函数操作WinCC表格控件的实例
{char text[5];
long int columns
//获得列数
columns = GetNumberOfColumns("TableControl_01");
//转换长整型为字符 sprintf
(text,"%d",columns);
//在Text Field 5 SetText上设置文本
(lpszPictureName,"Static Text 5",text);
}
TlgGetNumberOfColumns函数参数:
"Table Control_01"是WinCC表格控件的名称。
1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。
2). 将返回值缓冲存储在String text中。
3). 在静态文本域中发出返回值。

3. int TlgGetNumberOfRows(char* lpszTemplate)函数,在表格窗口中给出行的数量。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。
使用标准函数操作WinCC表格控件的实例
{char text[5];
long int rows;
//获得行数
rows = TlgGetNumberOfRows("TableControl_01");
//转换长整型为字符 sprintf
(text,"%d",rows);
//在Text Field 5 SetText上设置文本
(lpszPictureName,"Static Text 5",text);
}
TlgGetNumberOfRows函数参数:
Table Control_01是WinCC表格控件的名称。
1). 将函数TlgGetNumberOfRows的返回值缓冲存储在rows中。
2). 将返回值缓冲存储在String text中。
3). 在静态文本域中发出返回值。

4. int TlgGetNumberOfTrends(char* lpszTemplate)函数,在趋势窗口中给出趋势的数量。用参数lpszTemplate传递相应WinCC在线趋势控件窗口的名称。
使用标准函数操作WinCC表格控件的实例
{char text[5];
long int columns
//获得列数
columns = GetNumberOfColumns("TableControl_01");
//转换长整型为字符 sprintf
(text,"%d",columns);
//在Text Field 5 SetText上设置文本
(lpszPictureName,"Static Text 5",text);
}
TlgGetNumberOfColumns函数参数:
"Table Control_01"是WinCC表格控件的名称。
1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。
2). 将返回值缓冲存储在String text中。
3). 在静态文本域中发出返回值。

5. int TlgGetRowPosition(char* lpszTemplate)函数,在表格窗口中给出行指针的当前位置。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。
使用标准函数操作WinCC表格控件的实例
{char text[5];
long int columns
//获得列数
columns = GetNumberOfColumns("TableControl_01");
//转换长整型为字符 sprintf
(text,"%d",columns);
//在Text Field 5 SetText上设置文本
(lpszPictureName,"Static Text 5",text);
}
TlgGetNumberOfColumns函数参数:
"Table Control_01"是WinCC表格控件的名称。
1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。
2). 将返回值缓冲存储在String text中。
3). 在静态文本域中发出返回值。

6. char* TlgGetRulerArchivNameTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的归挡名称。用参数lpszTemplate传递相应WinCC在线趋势控件窗口的名称。
使用标准函数操作WinCC趋势控件的实例
{char* pszVarName = NULL;
char szVarName[20];
//获得标尺变量名 pszVarName
= TlgGetRulerVariableNameTrend("TrendControl_01",0);
if (pszVarName != NULL)
{// 复制字符串 strncpy
(szVarName,pszVarName,19);
}
//输出变量名 SetText
(lpszPictureName,"Static Text 6",szVarName);
}
TlgGetRulerVariableNameTrend函数参数:
"Trend Control_01"是WinCC趋势控件的名称。
"0"是该趋势的编号。
1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。
2). 如果返回有效数值,将返回值复制到szVarName中。
3). 在静态文本域中发出返回值。

7. SYSTEMTIME TlgGetRulerTimeTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的时间。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。
使用标准函数操作WinCC趋势控件的实例
{SYSTEMTIME systime;
WORD wHour;
WORD wMin;
WORD wSec;
char szTime[10];
//获得当前系统时间 systime
= TlgGetRulerTimeTrend("TrendControl_01",0);
//获得小时 wHour
= systime.wHour;
//获得分钟 wMin
= systime.wMinute;
//获得秒 wSec
= systime.wSecond;
//
sprintf(szTime,"%d:%d:%d",wHour,wMin,wSec);
//输出变量名 SetText
(lpszPictureName,"Static Text 7",szTime);
}
1). 读出当前系统时间。
2). 从SYSTEMTIME结构读出小时、分和秒。
3). 创建包含该时间的字符串。
4). 读出当前时间。

8. double TlgGetRulerValueTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中这个标尺位置上给出带编号nTrend的趋势的数值。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。
使用标准函数操作WinCC表格控件的实例
{char text[5];
long int columns
//获得列数
columns = GetNumberOfColumns("TableControl_01");
//转换长整型为字符 sprintf
(text,"%d",columns);
//在Text Field 5 SetText上设置文本
(lpszPictureName,"Static Text 5",text);
}
TlgGetNumberOfColumns函数参数:
"Table Control_01"是WinCC表格控件的名称。
1). 将函数TlgGetNumberOfColumns的返回值缓冲存储在columns中。
2). 将返回值缓冲存储在String text中。
3). 在静态文本域中发出返回值。

9. char* TlgGetRulerVariableNameTrend(char* lpszTemplate, int nTrend)函数,在趋势窗口中给出编号为nTrend的趋势的变量名。用参数lpszTemplate传递相应WinCC在线趋势控件窗口。
使用标准函数操作WinCC趋势控件的实例
{char* pszVarName = NULL;
char szVarName[20];
//获得标尺变量名 pszVarName
= TlgGetRulerVariableNameTrend("TrendControl_01",0);
if (pszVarName != NULL)
{// 复制字符串 strncpy
(szVarName,pszVarName,19);
}
//输出变量名 SetText
(lpszPictureName,"Static Text 6",szVarName);
}
TlgGetRulerVariableNameTrend函数参数:
"Trend Control_01"是WinCC趋势控件的名称。
"0"是该趋势的编号。
1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。
2). 如果返回有效数值,将返回值复制到szVarName中。
3). 在静态文本域中发出返回值。

10. char* TlgGetTextAtPos(char* lpszTemplate, int nColumn, int nLine)函数,为过程变量归档和用户归档提供表格窗口的单元格内容作为文本。单元由nColumn和nLine指定。用参数lpszTemplate传递相应WinCC在线表格控件窗口的名称。
使用标准函数操作WinCC趋势控件的实例
{char* pszVarName = NULL;
char szVarName[20];
//获得标尺变量名 pszVarName
= TlgGetRulerVariableNameTrend("TrendControl_01",0);
if (pszVarName != NULL)
{// 复制字符串 strncpy
(szVarName,pszVarName,19);
}
//输出变量名 SetText
(lpszPictureName,"Static Text 6",szVarName);
}
TlgGetRulerVariableNameTrend函数参数:
"Trend Control_01"是WinCC趋势控件的名称。
"0"是该趋势的编号。
1). 将函数TlgGetRulerVariableNameTrend的返回值缓冲存储在pszVarName中。
2). 如果返回有效数值,将返回值复制到szVarName中。
3). 在静态文本域中发出返回值。

11. BOOL TlgTableWindowPressEditRecordButton(char* lpszWindowName)函数,锁住或释放表格窗口的编辑(切换功能)。如果允许编辑,将停止更新表格窗口。即使因为使用另一个函数而使编辑被禁止,表格窗口更新将仍保持停止状态。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

12. BOOL TlgTableWindowPressFirstButton(char* lpszWindowName)函数,显示表格窗口中显示区域的第一个数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

13. BOOL TlgTableWindowPressHelpButton(char* lpszWindowName)函数,显示表格窗口的在线帮助
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

14. BOOL TlgTableWindowPressInsertRecordButton(char* lpszWindowName)函数,插入数据记录。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

15. BOOL TlgTableWindowPressLastButton(char* lpszWindowName)函数,显示表格窗口中显示区域的最后一个数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

16. BOOL TlgTableWindowPressNextButton(char* lpszWindowName)函数,显示表格窗口中当前显示区域后面的数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

17. BOOL TlgTableWindowPressNextItemButton(char* lpszWindowName)函数,表格窗口的列将向左移动一列,最左边的列移到右边。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

18. BOOL lgTableWindowPressOpenArchiveVariableSelectionDlgButton(char* lpszWindowName)函数,打开用来链接表格列与归档和变量的对话框。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

19. BOOL TlgTableWindowPressOpenDlgButton(char* lpszWindowName)函数,打开用来在线组态表格窗口的对话框。
使用标准函数操作WinCC趋势控件的实例
{//打开属性对话框
TlgTrendWindowPressOpenDlgButton("TrendControl_01");
}
TlgTrendWindowPressOpenDlgButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

20. BOOL TlgTableWindowPressOpenItemSelectDlgButton(char* lpszWindowName)函数,打开用来选择表格窗口的可见列和第一列的对话框。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

21. BOOL TlgTableWindowPressPrevButton(char* lpszWindowName)函数,显示表格窗口中当前显示区域前面的数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

22. BOOL TlgTableWindowPressPrevItemButton(char* lpszWindowName)函数,表格窗口的列将向右移动一列,最右边的列移到左边。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

23. BOOL TlgTableWindowPressRemoveRecordButton(char* lpszWindowName)函数,删除数据记录。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

24. BOOL TlgTableWindowPressStartStopButton(char* lpszWindowName)函数,打开或关闭表格窗口的更新(切换功能)。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

25. BOOL TlgTrendWindowPressFirstButton(char* lpszWindowName)函数,显示趋势窗口中显示区域的首要数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

26. BOOL TlgTrendWindowPressHelpButton(char* lpszWindowName)函数,显示趋势窗口的在线帮助。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

27. BOOL TlgTrendWindowPressLastButton(char* lpszWindowName)函数,显示趋势窗口中显示区域的最后一个数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

28. BOOL TlgTrendWindowPressLinealButton(char* lpszWindowName)函数,显示或隐藏趋势窗口标尺(切换功能)。使用"光标向左"和"光标向右"键可以移动标尺。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

29. BOOL TlgTrendWindowPressNextButton(char* lpszWindowName)函数,显示趋势窗口中当前显示区域后面的数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

30. BOOL TlgTrendWindowPressNextItemButton(char* lpszWindowName)函数,将趋势窗口中所有趋势向前移动一个层面。前面的那个趋势将被移到后面。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

31. BOOL TlgTrendWindowPressOneToOneButton(char* lpszWindowName)函数,该趋势窗口被重新设置为激活缩放功能前的状态。缩放被取消激活。使用鼠标才可以选中待缩放的区域(参考TlgTrendWindowPressZoomInButton)。
使用标准函数操作WinCC报警趋势的实例
{
//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

32. BOOL lgTrendWindowPressOpenArchiveVariableSelectionDlgButton(char* lpszWindowName)函数,打开链接趋势与归档和变量的对话框。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

33. BOOL TlgTrendWindowPressOpenDlgButton(char* lpszWindowName)函数,打开趋势窗口的在线组态对话框。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

34. BOOL TlgTrendWindowPressOpenItemSelectDlgButton(char* lpszWindowNumber)函数,打开用来选择可见趋势以及要在前景中显示的趋势的对话框。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

35. BOOL TlgTrendWindowPressOpenTimeSelectDlgButton(char* lpszWindowNumber)函数,打开定义显示时间段的对话框。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

36. BOOL TlgTrendWindowPressPrevButton(char* lpszWindowName)函数,在趋势窗口中显示当前显示区域前面的数据记录。显示的数据记录数量由所组态的时间范围决定。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

37. BOOL TlgTrendWindowPressPrevItemButton(char* lpszWindowName)
函数,将趋势窗口中所有趋势向后移动一个层面。后面的那个趋势将被移到前面。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

38. BOOL TlgTrendWindowPressStartStopButton(char* lpszWindowName)函数,打开或关闭趋势窗口的更新(切换功能)。
使用标准函数操作WinCC报警趋势的实例
{//开始/停止
TlgTrendWindowPressStartStopButton("TrendControl_01");
}
TlgTrendWindowPressStartStopButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

39. BOOL TlgTrendWindowPressZoomInButton(char* lpszWindowName)函数,将打开趋势窗口中的放大镜。 只能用鼠标选择比例缩放区域。
使用标准函数操作WinCC趋势控件的实例
{//放大
TlgTrendWindowPressZoomInButton("TrendControl_01");
}
TlgTrendWindowPressZoomInButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

40. BOOL TlgTrendWindowPressZoomOutButton(char* lpszWindowName)函数,恢复趋势窗口到缺省大小(1:1)。
使用标准函数操作WinCC报警趋势控件的实例
{// 缩小
TlgTrendWindowPressZoomOutButton("TrendControl_01");
}
TlgTrendWindowPressZoomOutButton函数参数:
"TrendControl_01"是WinCC趋势控件的对象名。

(5)WinCC简短描述
WinCC组包含影响整个WinCC系统的函数。
1. BOOL GetHWDiag(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数
运行时该函数可实现诊断的直接启动,由事件触发。必须在对象上组态、运用该事件。
如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。
为了使用该功能,必须满足下列条件:
• WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。
• 必须将WinCC项目存储为STEP7项目(STEP7 Projekt\wincproj\WinCC Projekt)的子目录。
• 已将S7变量映射到WinCC。

2. BOOL GetHWDiagLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties, DWORD dwLevel)函数
根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试。
之后,运行时诊断被直接启动并由事件触发,须在对象上组态该事件。
如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。
为了使用该功能,必须满足下列条件:
• 在WinCC中激活的用户必须有必要的用户配置文件级。
• WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。
• 必须将WinCC项目存储为STEP7项目(STEP7 Projekt\wincproj\WinCC Projekt)的子目录.
• 已将S7变量映射到WinCC。

3. BOOL GetKopFupAwl(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数
该函数执行WinCC Step7编辑器"KFA"的网络激活。
执行该函数,完成两项子任务:
• 建立从WinCC访问网络所需要的数据。
• 将该数据传送到Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。

4. BOOL GetKopFupAwlLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName,LPCTSTR lpProperties, DWORD dwLevel)函数
根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试,然后访问Step 7编辑器"KFA"。
作为三项子任务执行该函数:
• 建立从WinCC进行网络访问所需要的数据。
• 在WinCC中为激活的用户执行用户配置文件级测试。
• 将该数据传送到Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。

5. void OnDeactivateExecute()函数
终止WinCC时调用该函数。
由于它是标准函数,可以插入指令,然后执行它们。

6. void OnErrorExecute(CCAPErrorExecute ErrorExecute)函数
执行动作或函数而发生错误时由系统调用OnErrorExecute。
此函数能够确定出错的准确原因。
由系统调用该函数,并且不要求附加的调用命令。
由于包括作为标准函数的此函数,可以改变输出的类型。

7. void OnTime(CCAPTime time)函数
OnTime只能由系统调用。该函数给出所有动作的运行时间或确定哪个动作的运行时间超出了指定时间。 通过APDIAG可以激活和取消激活时间测量。
由于此函数是一个标准函数,所以可以通过修改函数代码来改变输出的类型。
结构定义CCAPTime
typedef struct {
DWORD dwCurrentThreadID; 当前线程的线程ID
DWORD dwCode; 代码
BOOL bCycle; 周期/非周期
char* szApplicationName;应用程序的名称
char* szFunctionName; 函数的名称
LPVOID lpParam; 指向动作堆栈的指针
DWORD dwParamSize; 动作堆栈的大小
double dblTime;
DWORD dwFlags; 标记
} CCAPTime;
组成部分
dwCode
dwCode结构元素提供OnTime调用信息:
dwCode = 113 用每个动作的时间调用
dwCode = 114 用一个动作的超时调用
dwFlags
dwFlags结构元素提供输出类型的信息:
dwFlags = TRUE 结果被输出到文件中。
dwFlags = FALSE 结果被输出到诊断窗口中

(6)Windows - 简短描述
Windows组包含Execute Program函数。
该函数可用来执行任何功能。

1. unsigned int Execute(char* Program_Name)函数,用指定的名称启动该程序。
从WinCC启动程序的实例
{//启动程序calc.exe
执行程序 ("C:\\Winnt\\system32\\calc.exe");
}
指定带路径的文件为参数。

二、内部函数
内部函数用来画图形对象和使归档动态化,并用于项目函数、标准函数和全局脚本动作中。
在整个项目中都识别内部函数。
既不能创建新的内部函数,也不能修改已存在的内部函数。
1. allocate保留和释放工作存储器空间的函数
void SysFree(void* lpFree)函数,通过SysMalloc函数释放保留的存储器区域。
参数lpFree,指向通过SysMalloc函数保留的存储器区域的指针。

2. void* SysMalloc(unsigned long int size)函数,为动作保留存储器空间。存储器区域被分配给该动作。已完成动作和已传送结果时,系统再次释放存储器。
SysFree函数可用来过早释放保留的存储器空间。
参数size,按字节计算的存储器区域的大小。

3. c_bib函数组c_bib包含来自C库的C函数

Graphics - 简短描述
使用Graphics组中的函数可以修改或调用WinCC对象的图形属性。
Axes - 简短描述
Axes组中的函数仅用于棒图对象。
该函数可用来修改或调用各种棒图对象属性。
1. BOOL GetAlignment(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指明文本在棒图的左面还是右面。
读出棒图对象的布尔型属性的实例
{
BOOL bscaling;
//获得标尺状态 bscaling
= GetScaling(lpszPictureName,"Bar1");
if (bscaling)
{
// 自定义代码
// 棒图对象有一个附加的标尺
...
}
else
{
// 自定义代码
// 棒图对象没有附加的刻度
...
}
}
GetScaling函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。
1). 读出棒图刻度是否可见以及bscaling中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

2. double GetAxisSection(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定两个邻近轴标签之间的数值差。

3. BOOL GetExponent(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定轴标签对应于小数或指数形式。
读出棒图对象的布尔型属性的实例
{BOOL bscaling;
//获得标尺状态 bscaling
= GetScaling(lpszPictureName,"Bar1");
if (bscaling)
{
// 自定义代码
// 棒图对象有一个附加的标尺
...
}
else
{
// 自定义代码
// 棒图对象没有附加的刻度
...
}
}
GetScaling函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。
1). 读出棒图刻度是否可见以及bscaling中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

4. long int GetLeftComma(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定轴标签中的整数数量。
参数lpszPictureName
画面名lpszObjectName
对象名
返回值,轴标签中的整数数量

5. BOOL GetLongStrokesBold(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定以粗体还是常规形式显示标尺上的主要刻度线。
读出棒图对象的布尔型属性的实例
{
BOOL bscaling;
//获得标尺状态 bscaling
= GetScaling(lpszPictureName,"Bar1");
if (bscaling)
{
// 自定义代码
// 棒图对象有一个附加的标尺
...
}
else
{
// 自定义代码
// 棒图对象没有附加的刻度
...
}
}
GetScaling函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。
1). 读出棒图刻度是否可见以及bscaling中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

6. long int GetLongStrokesSize(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定主要刻度线的长度。

7. long int GetLongStrokesTextEach(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定主要刻度线标签的间隔长度。

8. long int GetRightComma(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定坐标轴标签中的小数位数。

9. long int GetScaleTicks(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它将标尺单位定义为标尺分段的数量。一个标尺分段对应于两条主要刻度线之间的范围

10. BOOL GetScaling(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图时,它指定激活还是取消激活标尺。
读出棒图对象的布尔型属性的实例
{
BOOL bscaling;
//获得标尺状态 bscaling
= GetScaling(lpszPictureName,"Bar1");
if (bscaling)
{
// 自定义代码
// 棒图对象有一个附加的标尺
...
}
else
{
// 自定义代码
// 棒图对象没有附加的刻度
...
}
}
GetScaling函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。
1). 读出棒图刻度是否可见以及bscaling中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

11. long int GetScalingType(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图标尺的类型。

Color - 简短描述
使用Color组中的函数可以修改或调用对象的颜色属性。
1. long int GetBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定对象的背景色为数字值。
读出颜色值的实例
{
long int bk_color;
//
linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackColor函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。
1). 读出当前背景色和bk_color中的缓冲区。
2). 执行处理返回值的自定义代码。

2. long int GetBackColor2(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图的颜色为数字值。
读出颜色值的实例
{
long int bk_color;
//
linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackColor函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。

3. long int GetBackColor3(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定棒图的背景色为数字值。
读出颜色值的实例
{
long int bk_color;
//
linkinfo.szLinkName是变量名。 // linkinfo.dwCycle是更新周期 // linkinfo.LinkType是该连接的类型
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackColor函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。

Fill - 简短描述
Fill组中的函数控制对象的动态填充。
1. BOOL GetFilling(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景色动态填充。
读出"动态填充"属性的实例
{
BOOL bfilling;
//获得动态填充的实际状态 bfilling
= GetFilling(lpszPictureName," Rectangle 1");
if(bfilling)
{
// 自定义代码
// 动态填充是否被激活
...
}
else
{
// 自定义代码
// 动态填充是否被取消激活
...
}
}
GetFilling函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Rectangle1"是该对象的名称。
1). 读出动态填充是否激活以及bfilling中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

2.long int GetFillingIndex(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定当前填充量。
读出填充索引的实例
{
long int filling_index;
//获得该对象的实际填充索引 filling
_index = GetFillingIndex(lpszPictureName," Rectangle 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetFillingIndex函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Rectangle1"是该对象的名称。
1). 读出该对象的当前填充索引以及filling_index中的缓冲区。
2). 执行处理返回值的自定义代码。

Flash - 简短描述
使用Flash组中的函数可以修改或调用各种闪烁属性。
1. long int GetBackFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的闪烁背景色
读出闪烁颜色的实例
{
long int flashcol_on;
//获得背景闪烁颜色
flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackFlashColorOn函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Group 1"是该对象的名称。
1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。
2). 执行处理返回值的自定义代码。

2. long int GetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。
读出闪烁颜色的实例
{
long int flashcol_on;

//获得背景闪烁颜色
flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackFlashColorOn函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Group 1"是该对象的名称。
1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。
2). 执行处理返回值的自定义代码。

3. long int GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。
读出闪烁颜色的实例
{
long int flashcol_on;

//获得背景闪烁颜色
flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackFlashColorOn函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Group 1"是该对象的名称。

4. long int GetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。
读出闪烁颜色的实例
{
long int flashcol_on;
//获得背景闪烁颜色
flashcol_on = GetBackFlashColorOn(lpszPictureName,"Group 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetBackFlashColorOn函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Group 1"是该对象的名称。

5. BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。
读出"闪烁背景激活"属性的实例
{
BOOL bflash_col;
//了解闪烁是开还是关 bflash
_col = GetFlashBackColor(lpszPictureName,"Group 1");
if(bflash_col)
{
// 自定义代码
// 闪烁是否被激活
...
}
else
{
// 自定义代码
// 闪烁是否被取消激活
...
}
}
GetFlashBackColor函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Group 1"是该对象的名称。
1). 读出背景色闪烁是否被激活以及bflash_col中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

Focus - 简短描述
使用Focus组中的函数,可以设置焦点或轮询哪个对象有焦点。
1. char* Get_Focus()函数,指定当前或最后聚焦的对象的名称。
要求当前在哪一个对象上设置焦点的实例
{
char* pszValue = NULL;
char szValue[_MAX_PATH+1];
//获得具有焦点的对象 pszValue
= Get_Focus();
//复制字符串
if (pszValue != NULL)
{
strncpy(szValue,pszValue,_MAX_PATH);
}
//自定义代码
//在那里用户可以使用返回值做某事
...
}
1). 读出在其上设置焦点的对象以及pszValue中的缓冲区。
2). 如果返回有效数值,将该函数的返回值存储在本地字符串szValue中。最多存储_MAX_PATH个字符。
3). 执行处理返回值的自定义代码。

Font - 简短描述
使用Font组中的函数可以修改或调用影响文本的各种属性。
1. long int GetAlignmentLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义水平文本对齐(左对齐、居中、右对齐)。
读出字体大小的实例
{

long int fontsize;
//获得实际字体大小 fontsize
= GetFontSize(lpszPictureName,"Static Text 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}

GetFontSize函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。
1). 读出当前字体大小和fontsize中的缓冲区。
2). 执行处理返回值的自定义代码。

2. long int GetAlignmentTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义垂直文本对齐(上对齐、居中、下对齐)。
读出字体大小的实例
{
long int fontsize;
//获得实际字体大小 fontsize
= GetFontSize(lpszPictureName,"Static Text 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetFontSize函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。

3. BOOL GetFontBold(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义字体样式是否为"粗体字"。
读出静态文本域的布尔型属性的实例
{
BOOL bbold;
//了解文本是否是粗体字 bbold
= GetFontBold(lpszPictureName,"Static Text 1");
if(bbold)
{
// 自定义代码
// 字体是否是粗体字
...
}
else
{
// 自定义代码
// 字体是否不是粗体字
...
}
}
GetFontBold函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。

4. char* GetText(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,为对象,例如静态文本、复选框和单选框,指定"文本"属性的数值。
读出文本的实例
{
char* pszValue = NULL;
char szValue[13];
//获得实际设置的文本 pszValue
= GetText(lpszPictureName," Static Text 1");
if(pszValue != NULL)
{
//复制字符串

strncpy(szValue,pszValue,12);
}
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetText函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Static Text1"是该对象的名称。

5. long int GetLayer(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定该对象所在的画面层。
参数lpszPictureName
画面名lpszObjectName

Geometry - 简短描述
使用Geometry组中的函数可以修改或调用对象的大小、位置和其它几何属性。
1. long int GetActualPointLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线中当前位置的X轴数值。
读出对象位置的实例
{
long lPos;
//获得对象的X轴位置 lPos
= GetLeft(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetLeft函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。
1). 读出对象的当前X轴位置以及lPos中的缓冲区。
2). 执行处理返回值的自定义代码。

2. long int GetActualPointTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线中当前顶点的Y轴数值。
读出对象位置的实例
{
long lPos;

//获得对象的Y轴位置 lPos
= GetTop(lpszPictureName,"WinCCLogo");

//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetTop函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

3. long int GetBoxCount(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定复选框和单选框的数字域。
参数lpszPictureName
画面名lpszObjectName

4. long int GetDirection(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出棒图的方向。
参数lpszPictureName
画面名lpszObjectName

5. long int GetEndAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)
函数,指定部分圆和部分椭圆以及圆弧和椭圆弧的结束角度。

6. BOOL GetGrid(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否在图形编辑器的图形域中激活网格。

7. long int GetGridHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定在图形编辑器的图形域中网格的高度。

8. long int GetGridWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定在图形编辑器的图形域中网格的宽度。

9. long int GetHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形的高度。
读出对象位置的实例
{
long lHeight;

//获得对象的高度 lHeight
= GetHeight(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetHeight函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。
1). 读出对象的当前高度以及lHeight中的缓冲区。
2). 执行处理返回值的自定义代码。

10. long int GetLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义构成对象的矩形左上角的X轴位置。
读出对象位置的实例
{
long lPos;

//获得对象的X轴位置 lPos
= GetLeft(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetLeft函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

11. long int GetPointCount(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定多边形或折线的角的数量。

12. long int GetRadius(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName);
函数,定义圆、部分圆或圆弧的半径。
读出对象位置的实例
{
long lHeight;
//获得对象的高度 lHeight
= GetHeight(lpszPictureName,"WinCCLogo");

//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetHeight函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。
1). 读出对象的当前高度以及lHeight中的缓冲区。
2). 执行处理返回值的自定义代码。

13. long int GetRadiusHeight(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定椭圆、部分椭圆或椭圆弧的垂直半径。
读出对象位置的实例
{
long lHeight;
//获得对象的高度 lHeight
= GetHeight(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetHeight函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

14. long int GetRadiusWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定椭圆、部分椭圆或椭圆弧的水平半径。

15. long int GetReferenceRotationLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用线、多边形和折线时,它指定旋转位置(围绕其旋转对象的中心坐标轴)的X轴数值。
读出对象位置的实例
{
long lPos;
//获得对象的X轴位置 lPos
= GetLeft(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetLeft函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

16. long int GetReferenceRotationTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用线、多边形和折线时,它指定旋转位置(围绕其旋转对象的中心坐标轴)的Y轴数值。

17. long int GetRotationAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义围绕中心坐标轴旋转线、多边形和折线的角度。

18. long int GetStartAngle(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定部分圆和部分椭圆以及圆弧和椭圆弧的起始角度。
读出对象位置的实例
{
long lHeight;
//获得对象的高度 lHeight
= GetHeight(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetHeight函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

19. long int GetTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形左上角的Y轴位置。
读出对象位置的实例
{
long lPos;
//获得对象的Y轴位置 lPos
= GetTop(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetTop函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

20. long int GetWidth(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定构成对象的矩形的宽度。
读出对象位置的实例
{
long lWidth;
//获得对象的宽度 lWidth
= GetWidth(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetWidth函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

21. long int GetZeroPoint(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它显示零点。
读出对象位置的实例
{
long lHeight;
//获得对象的高度 lHeight
= GetHeight(lpszPictureName,"WinCCLogo");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetHeight函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"WinCCLogo"是该对象的名称。

i_o - 简短描述
使用i_o组中的函数可以修改或调用影响输入和输出值的各种属性。
1. char* GetAssignments(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于列表,分配文本给数值范围

2. BOOL GetAssumeOnExit(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定退出该域时是否应用输入的数值。

3. BOOL GetAssumeOnFull(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定完成输入时是否应用输入的数值。

4. long int GetBitNumber(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用列表类型"位"时,它指定输出值中相关的位。
读出布尔型属性的实例
{
BOOL bHiddenInput;

//获得隐藏输入的状态 bHiddenInput
= GetHiddenInput(lpszPictureName,"IO Field 1");
if(bHiddenInput)
{
// 自定义代码
// 隐藏输入是否被激活
...
}
else
{
// 自定义代码
// 隐藏输入是否被取消激活
...
}
}
GetHiddenInput函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"IO Field1"是该对象的名称。
1). 读出文本是否是粗体字以及bHiddenInput中的缓冲区。
2). 根据该函数的返回值执行自定义代码。

5. BOOL GetClearOnError(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定错误输入后是否激活删除内容。

6. long int GetDataFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定域内容的数据类型。
读出布尔型属性的实例
{
BOOL bHiddenInput;
//获得隐藏输入的状态 bHiddenInput
= GetHiddenInput(lpszPictureName,"IO Field 1");

if(bHiddenInput)
{
// 自定义代码
// 隐藏输入是否被激活
...
}
else
{
// 自定义代码
// 隐藏输入是否被取消激活
...
}
}
GetHiddenInput函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"IO Field1"是该对象的名称。

7. BOOL GetHiddenInput(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定是否激活隐藏输入。
读出布尔型属性的实例
{
BOOL bHiddenInput;
//获得隐藏输入的状态 bHiddenInput
= GetHiddenInput(lpszPictureName,"IO Field 1");
if(bHiddenInput)
{
// 自定义代码

// 隐藏输入是否被激活
...
}
else
{
// 自定义代码
// 隐藏输入是否被取消激活
...
}
}
GetHiddenInput函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"IO Field1"是该对象的名称。

8. double GetInputValueDouble(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它定义数据类型为"双精度型"的输入值。

9. long int GetListType(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)
函数,指定"文本列表"对象的列表类型。
读出布尔型属性的实例
{
BOOL bHiddenInput;
//获得隐藏输入的状态 bHiddenInput
= GetHiddenInput(lpszPictureName,"IO Field 1");
if(bHiddenInput)
{
// 自定义代码
// 隐藏输入是否被激活
...
}
else
{
// 自定义代码
// 隐藏输入是否被取消激活
...
}
}
GetHiddenInput函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"IO Field1"是该对象的名称。

10. long int GetNumberLines(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定"文本列表"对象的可见行数。
读出布尔型属性的实例
{
BOOL bHiddenInput;
//获得隐藏输入的状态 bHiddenInput
= GetHiddenInput(lpszPictureName,"IO Field 1");
if(bHiddenInput)
{
// 自定义代码
// 隐藏输入是否被激活
...
}
else
{
// 自定义代码
// 隐藏输入是否被取消激活
...
}
}
GetHiddenInput函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"IO Field1"是该对象的名称。

11. char* GetOutputFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定输出格式。

12. char* GetOutputValueChar(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它建立数据类型为"字符"的输出值。当I/O域的内容为数据类型"字符串"时,才使用该函数。

Limits - 简短描述
使用Limits组中的函数可以修改或调用影响限值的各种属性。
1. double GetAlarmHigh(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出报警上限。
读出数字值的实例
{
double dAlarmHigh;
//获得报警上限 dAlarmHigh
= GetAlarmHigh(lpszPictureName,"Bar 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetAlarmHigh函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。
1). 读出报警上限和dAlarmHigh中的缓冲区。
2). 执行处理返回值的自定义代码。

2. double GetAlarmLow(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指出报警下限。
读出数字值的实例
{
double dAlarmHigh;
//获得报警上限 dAlarmHigh
= GetAlarmHigh(lpszPictureName,"Bar 1");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetAlarmHigh函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。

3. BOOL GetCheckAlarmHigh(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定是否监控报警上限。
读出布尔型属性的实例
{
BOOL bmarker;
//获得该标记的状态 bmarker
= GetMarker(lpszPictureName,"Bar 1");
if(bmarker)
{
// 自定义代码
// 标记是否被激活
...
}
else
{
// 自定义代码
// 标记是否被取消激活
...
}
}
GetMarker函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。

4. BOOL GetCheckLimitHigh4(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用棒图对象时,它指定是否监控上限值Reserve 4。
读出布尔型属性的实例
{
BOOL bmarker;
//获得该标记的状态 bmarker
= GetMarker(lpszPictureName,"Bar 1");
if(bmarker)
{
// 自定义代码
// 标记是否被激活
...
}
else
{
// 自定义代码
// 标记是否被取消激活
...
}
}
GetMarker函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。

Link - 简短描述
使用Link组中的函数可以创建或调用变量链接属性。
1. BOOL GetLink(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName LPCTSTR lpszPropertyName, LPLINKINFO *pLink)函数,指定对象属性的当前变量链接。
读出变量链接的实例
{
LINKINFO linkinfo;
//获得已链接的变量
GetLink(lpszPictureName,"Bar 1","Process",&linkinfo);
// linkinfo.szLinkName是变量名
// linkinfo.dwCycle是更新周期
// linkinfo.LinkType是连接的类型
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetLink函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Bar1"是该对象的名称。
"Process"是链接到变量的属性。
"&linkinfo"是结构linkinfo的地址。
1). 用该变量链接上的信息填充传送的linkinfo结构。
2). 根据该函数的返回值执行自定义代码。

Miscs - 简短描述
使用Miscs组中的函数可以修改或调用对象的属性。
1. BOOL GetAdaptBorder(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)
函数,对于静态文本、I/O域、复选框和单选框,它指定域边框是否将动态适应文本的大小。
读出布尔型属性的实例
{
BOOL bVisible;
//获得可见性 bVisible
= GetVisible(lpszPictureName,"Graphic Object 1");
if(bVisible)
{
// 自定义代码
// 该对象是否可见
...
}
else
{
// 自定义代码
// 该对象是否不可见
...
}
}
GetVisible函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Graphic Object 1"是该对象的名称。

2. BOOL GetAdaptPicture(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于画面窗口,它指定画面是否将适应窗口的大小。
读出布尔型属性的实例
{
BOOL bVisible;
//获得可见性 bVisible
= GetVisible(lpszPictureName,"Graphic Object 1");
if(bVisible)
{
// 自定义代码
// 该对象是否可见
...
}
else
{
// 自定义代码
// 该对象是否不可见
...
}
}
GetVisible函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Graphic Object 1"是该对象的名称。

3. BOOL GetAdaptSize(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)
函数,对于画面窗口,它指定是否改变窗口。
读出布尔型属性的实例
{
BOOL bVisible;
//获得可见性 bVisible
= GetVisible(lpszPictureName,"Graphic Object 1");
if(bVisible)
{
// 自定义代码
// 该对象是否可见
...
}
else
{
// 自定义代码
// 该对象是否不可见
...
}
}
GetVisible函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Graphic Object 1"是该对象的名称。

4. BOOL GetAverage(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于棒图对象,指定是否激活平均值计算。
读出布尔型属性的实例
{
BOOL bVisible;
//获得可见性 bVisible
= GetVisible(lpszPictureName,"Graphic Object 1");
if(bVisible)
{
// 自定义代码
// 该对象是否可见
...
}
else
{
// 自定义代码
// 该对象是否不可见
...
}
}
GetVisible函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Graphic Object 1"是该对象的名称。

5. BOOL GetCaption(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定画面或应用程序窗口是否有标题。
读出布尔型属性的实例
{
BOOL bVisible;
//获得可见性 bVisible
= GetVisible(lpszPictureName,"Graphic Object 1");
if(bVisible)
{
// 自定义代码
// 该对象是否可见
...
}
else
{
// 自定义代码
// 该对象是否不可见
...
}
}
GetVisible函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Graphic Object 1"是该对象的名称。

6. BOOL GetLanguageSwitch(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用"文本列表"对象时,它指定用一种还是多种语言组态文本列表。
读出布尔型属性的实例
{
BOOL bVisible;
//获得可见性 bVisible
= GetVisible(lpszPictureName,"Graphic Object 1");
if(bVisible)
{
// 自定义代码
// 该对象是否可见
...
}
else
{
// 自定义代码
// 该对象是否不可见
...
}
}
GetVisible函数参数:
"lpszPictureName"是在其中组态该对象的画面的名称。
"Graphic Object 1"是该对象的名称。

SET启动
1. BOOL OpenHomePicture()函数,
打开定义的启动画面。

2. BOOL OpenNextPicture()函数
WinCC存储用户在运行时打开的画面的名称以及打开画面的顺序。
在"画面缓冲区大小"下面的计算机属性标签控件"图形运行系统"中的WinCC资源管理器内,可以定义用此方式所能存储的画面名的最大数目。
OpenNextPicture函数打开由OpenPrevPicture函数打开的最后一个画面。

3. BOOL OpenPrevPicture()函数,WinCC存储用户在运行时打开的画面的名称以及打开画面的顺序。
在"画面缓冲区大小"下面的计算机属性标签控件"图形运行系统"中的WinCC资源管理器内,可以定义用此方式所能存储的画面名的最大数目。
OpenPrevPicture函数打开当前画面的前一个画面。

4. BOOL OpenStoredPicture()函数,打开使用Store Picture函数存储的画面。

5. BOOL StorePicture()函数,存储当前画面;存储后,使用OpenStoredPicture函数可以打开该画面。

tag - 简短描述
使用来自Tag组的函数可以设置或调用变量。
1. BOOL GetTagBitStateWait(Tag Tag_Name, PDWORD lp_dwstate)函数,
建立数据类型"二进制变量"的过程变量的数值。直接从PLC读取该数值。 也返回变量的状态。
读出二进制类型变量的实例
{
DWORD dwstate;
BOOL bValue;
dwstate = 0xFFFFFFFF;
//获得该变量值
//dwstate是变量状态 bValue
= GetTagBitStateWait("gs_tag_bit",&dwstate);
//创建包含该变量值的字符串
if (bValue)
{
// 自定义代码
// 该变量的数值是否是true
...
}
else
{
// 自定义代码
// 该变量的数值是否是false
...
}
}
GetTagBitStateWait函数参数:
"gs_tag_bit"是该变量的名称。
"&dwstate"是应在其中存储变量状态的变量地址。
1). 读出该变量值以及bstate中的缓冲区。 该函数将变量状态存储在dwstate中。
2). 根据该函数的返回值执行自定义代码。

WinCC简短描述
使用来自WinCC组的函数可以在运行系统中定义各种设置。
使用System子组中的函数可以操作WinCC运行系统。
1. BOOL DeactivateRTProject()函数,取消激活该项目。
取消激活WinCC运行系统的实例
{
//取消激活运行系统
DeactivateRTProject ();
}
该函数取消激活WinCC运行系统。

2. BOOL ExitWinCC()函数,终止WinCC
退出WinCC的实例
{
//退出wincc
ExitWinCC ();
}
该函数终止WinCC。

3. DWORD GetLanguage()函数,建立当前运行系统语言。
读出当前运行系统语言的实例
{
DWORD rt_language;
//获得当前语言 rt
_language = GetLanguage ();
//自定义代码
//在那里用户可以使用返回值做某事
...
}
1). 读出当前运行系统语言并缓冲存储在rt_language中。
2). 执行处理返回值的自定义代码。

4. DWORD* InquireLanguage(DWORD* dwCount)函数,建立为运行系统而在文本库中组态的全部语言。使用dwCount定义建立的语言数量应该存储在哪里。
读出已组态的运行系统语言
{
DWORD count;
DWORD* language;
int i;
//计算已安装的语言
language = InquireLanguage(&count);
printf("##################### INQUIRE LANGUAGE ####################");
//打印输出语言的计数
printf ( "\r\nCount Languages=%d\r\n", count );
//打印输出安装了哪些语言
for (i=1;i<=count; i++)
{
printf ("\r\n%d.language=%x", i,*language++);
}
}
1). 建立为该运行系统组态的语言。这些语言ID缓冲存储在语言中。语言的数量缓冲存储在计数中。
2). 发出已建立的语言的数量。
3).显示所有已建立的语言ID。

5. BOOL SetLanguage(DWORD dwLocaleID)函数,改变运行系统中的语言设置。
定义运行系统语言的实例
{
//德语
SetLanguage(0x0407);
}
该运行系统语言被设置为德语。

6. void FillDiagnoseInTags(BOOL bfill)函数,激活或取消激活在变量中存储诊断信息。由于填充变量表示附加系统负载,只应为了诊断信息才激活它。

7. void GetServerTagPrefix(char** ppszServerPrefix, char** ppszTagPrefix, char** ppszWindowPrefix)函数,为了从分布式系统中的多客户机访问相关服务器中的变量,必须通过添加服务器前缀和变量前缀来扩展变量名。如果使用函数GetTagxx或SetTagxx访问变量,该动作控件提供必要的扩展名。如果WinCC API函数被用来获得访问,必须由用户扩展变量名。在这种情况下,GetServerTagPrefix函数提供必要的前缀。
分别为服务器前缀、变量前缀和窗口前缀返回一个"字符"类型的指针。
用户既不修改(不包括strcat)也不释放存储器。
读出服务器前缀的实例
{
char* pszServerPrefix;
char* pszTagPrefix;
char* pszWindowPrefix;
//获得服务器前缀和变量前缀 GetServerTagPrefix
(&pszServerPrefix, &pszTagPrefix, &pszWindowPrefix);
//自定义代码
//在那里用户可以使用返回值做某事
...
}
GetServerTagPrefix函数参数:
"pszServerPrefix"是在其中写入服务器前缀的变量。
"pszTagPrefix"是在其中写入变量前缀的变量。
"pszWindowPrefix"是在其中写入窗口前缀的变量。
1). 读出服务器前缀、变量前缀和窗口前缀。
2). 返回的服务器前缀缓冲存储在pszServerPrefix中。
3). 返回的变量前缀缓冲存储在pszTagPrefix中。
4). 返回的窗口前缀缓冲存储在pszWindowPrefix中。
5). 执行处理返回值的自定义代码。
读出服务器前缀的实例
{
char* pszServerPrefix;
char* pszTagPrefix;
char* pszWindowPrefix;
int nServerPrefixLen = 0;
int nTagPrefixLen = 0;
int nTagLen = 0;
char myTagName[MAX_DM_VAR_NAME+1];
//初始化返回值
memset(myTagName,0,MAX_DM_VAR_NAME + 1);
//获得服务器前缀、变量前缀和窗口前缀 GetServerTagPrefix
(&pszServerPrefix, &pszTagPrefix, &pszWindowPrefix);
//是否存在服务器前缀 if (pszServerPrefix)
{
//获得该字符串的长度
nServerPrefixLen = strlen(pszServerPrefix);
}
else
{
printf("No server prefix was returned.");
return;
}
//是否存在变量前缀
if (pszTagPrefix)
{
//获得该字符串的长度
nTagPrefixLen = strlen(pszTagPrefix);
}
//获得该变量的长度
nTagLen = strlen("TagName");
//检查长度
//ServerPrefix+TagPrefix+VarName + the double points < MAX_DM_VAR_NAME
if (nServerPrefixLen + nTagPrefixLen + nTagLen+2 < MAX_DM_VAR_NAME)
{
sprintf(myTagName,"%s::%s%s",pszServerPrefix,pszTagPrefix,"TagName");
//自定义代码
//在那里用户可以使用返回值做某事
...
}
else
{
printf("The resulting string is too long.");
return;
}
}
1). 初始化myTagName变量。
2). 读出服务器前缀、变量前缀和窗口前缀。
3). 如果未返回服务器前缀,发出文本,并且该函数被终止。
4). 如果返回服务器前缀,建立其长度并将其存储在nServerPrefixLen中。
5). 如果返回变量前缀,建立其长度并将其存储在nTagPrefixLen中。
6). 确定变量名的长度和nVarLen中的缓冲区。
7). 如果变量名的长度太长,发出文本,并且该函数被终止。
8). 如果变量名的长度不太长,组成多客户机环境要求的变量名。
9). 执行处理返回值的自定义代码。

8. void TraceText(DWORD dwTraceLevel, char* pszFormat, )函数,达到定义的诊断标准时,在<参数>中指定的数值被记录在APDiag内。

9. void TraceTime(DWORD dwTraceLevel, char* pszFormat, )函数,达到定义的诊断标准时,在<参数>中指定的数值被记录在APDiag内。
此外,为了允许性能测评,发布从AP开始诊断的时间(毫秒)。

年经就是一种态度
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=323781&b_id=5&s_id=0&num=0

  • 上一页
  • 1
  • 下一页
收起
回复:请教:版主能不能给介绍下wincc中最常用的一些c函数和用法
×
扫描打开手机版
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。