当前位置:文档之家› WinCC C语言基础

WinCC C语言基础

Wincc C语言基础3.属性的C动作#include apdefap hlong-main(char* lpszPictureName.char* lpszObjectName.char*lpszPropertyName){/*1*/ long 1ReturnValue;/*2*/ 1ReturnValue * GetTagSDword(*S32icourse-test-1*);/*3*/ return 1ReturnValue;}上述实例代码代表一个典型的属性的C动作。

各部分的含义描述如下:标题(灰色):灰色阴影显示的前三行构成C的动作标题。

该标题自动生成并且不能更改。

除返回类型(在实例代码中为long)之外,所有的函数标题完全相同。

将三个参数传送给C动作。

它们是画面名称(Lpsz PictureName),对象名(lpszObjectName)和属性名(lpszPropertyName).变量声明(1):在可以编辑的第一段代码中声明使用的变量。

在本实例代码中,指的是一个long型的变量。

数值计算(2):在本段中,执行属性值的计算。

在实例代码中,只读入一个WinCC 变量的数值。

数值返回(3):将计算得出的属性值赋给属性。

这通过return命令来完成4.事件的C动作#include apdefap.h*void OnClicik(char* lpszPictureName.char* lpszObjectName.char* lpszPropertyName){/*1*/ long 1Value;/*2*/ 1Value * GetTagSDWord(*s32i-course-tset-1”);SetIeft (lpszPictureName,lpszobjectName,1value);}上述实例代码代表一个典型的事件的C动作。

各部分含义描述如下:标题(灰色):灰色阴影显示的前三行构成C动作的标题。

该标题自动生成并且不能更改。

对于不同类型的事件,其参数标题也不同。

将参数lpszPictureName(画面名称).lpszObjectName(对象名)和lpszPropertyName(属性名)传递给C动作。

参数lpszPropertyName只包含与响应属性变化事件相关信息。

可以传递附加的事件指定的参数。

变量声明(1):在可以编辑的第一代码段中声明使用的变量。

在本实例代码中,指的是一个long型的变量。

事件处理(2):在本段中,执行响应事件的动作。

在本实例代码中,读入一个WinCC变量的数值。

该数值作为位置X分配给自己的对象。

事件的C动作的返回值为void类型,也就是说不需要返回值5.C动作的创建创建C动作的步骤如下:(1).打开图形编辑器,打开期望的WinCC画面,打开所期望对象的对象属性对话框(2)通过鼠标R期望的属性或事件,然后从弹出式菜单中选择C动作来打开动作编辑器(3)将显示动作编辑器,其中将显示函数的基本框架。

此外,C动作的标题已经自动生成,该标题不能更改。

在C动作的标题的第一行内,包括文件apdefap.h.。

通过该文件,向C动作预告所有项目的函数.标准函数以及内部函数。

C动作标题的第二部分为函数标题。

该函数标题提供有关C动作的返回值和可以在C动作中使用的传送参数的信息。

C动作标题的第三部分开始是花括弧。

此花括弧不能删除。

在该开始大括弧和结束大括弧之间,编写C动作的实际代码。

(4)其他自动生成的代码部分包括两个注释块,若要使交叉索引编辑器可以访问C动作的内部信息,则需要这些块,要允许C动作中语句重新排列也需要这两个块。

如果这些选项都不用。

则可以删除这些注解。

第一个块用于定义C动作中使用的WinCC变量。

在程序代码中必须使用定义变量名称而不是实际的变量名称第二个注释块用于定义C中所使用的WinCC画面。

在程序代码中也必须使用定义的画面名称而不是实际画面名称。

(5)编写执行期望计算的函数主题、动作等。

有多种编辑辅助工具可供使用,其中一种辅助工具是变量选择对话框,此对话框如下所示的按钮可以打开。

在显示的选择变量对话框中,选择WinCC变量然后单击确定来确认。

于是在C动作中在当前光标位置处插入所选WinCC的变量名称。

(6)另一种辅助工具是动作编辑器左窗口中的函数选择。

利用函数选择,可以在C动作中的当前光标位置处自动插入所有可用的项目函数、标准函数和内部函数。

为此,通过鼠标D来选择其数据类型的列表。

该函数可以在数值列中进行参数化。

除简单的文本输入以外,选择变量.图形对象和画面选项都可以用。

为了在C动作中的当前光标位置插入函数,可通过单击确认来确定对话框。

(7)现在必须翻译已完成的函数。

在通过如下所示的工具按钮来完成。

翻译过程的结果显示在动作编辑器的左下角。

它包括找到错误的个数和警告的个数。

错误总会使C动作无法进行。

而警告是一种提示,指出在执行C动作期间可能出现的错误。

良好的编辑风格可防止在创建C动作时出现除0 Ereor(S),0 Warning(s)的输出结果之外的情况。

如果在编译过程中出现错误,则它们将在输出窗口中显示。

通过鼠标D输出窗口中的错误消息,可以直接跳转到相应的代码行。

(8)对于已经为对象属性创建的C动作,必须定义触发器。

对于事件本身就是触发器所以不用在定义。

触发器的定义通过如下所示的按钮来执行。

可以选择使用时间变量触发器。

(9)通过单击动作编辑器的确定按钮,可将已编写的C动作放置在期望的属性或事件处。

通过C动作动态化的属性或事件将用绿箭头标记。

WinCC标签定义和画面定义#include“apdefap.h”long-main(char*lpszPictureName.char* lpsz ObjectName. Char* lpszPropertyName){/WINCC.TAGNAME-SECTTON-START//syntax.#define TagNameInAction “DMTagName”#define S32I-COURSE-0TEST-1 “S32i-course-test-1”//next TagID :1//WINCC TAGNAME-SECTION-END//WINCC:PICNAME-SECCTON-START//syntax: #define PicNameInAction “PictureName”#define CC-0-STARTPICTURE-00 “cc-0-startpicture-00.Pd1”//next PicID:1//WINCC:PICNAME-SECTTON-ENDSetTagSDWord(S32I-COURSE-TEST-1,100);OpenPicture(CC-0-STARTPICTURE-00);Return 0;}如果创建新的C的动作,则自动生成的代码将包括两个注释块。

若要使用交叉索引编辑器可以仿问C动作的内部信息,则需要这些注释块。

要允许C动作中语句重新排列也需要这两个块。

变量定义:第一个注释块用于定义C动作中使用的WinCC变量。

该注释块以/MINCC:TAGAME-SECTION-START作为开始,以/MINCC:TAGNAME-SECTION-END作为结束。

在两行命令之间,定义C动作中的所有WinCC的变量名称。

通过预处理程序命令#define后跟定义的名称(在本实例代码中为S32I-COURSE-TEST-1),其后在接WinCC变量的名称(在本实例中为(S32i-course-tsse-1)来定义。

画面定义:第二个注释块用来定义C动作中所使用的WinCC画面。

该注释块以行/MINCC:PICNAME-SECTION-START作为开始,以行/MINCC:PICNAME-SECTION-END作为结束。

在两行之间,定义C动作中使用的所有WinCC画面名称。

它遵循的规律与上面所描述的定义变量名称时所遵循的规则相同。

应用:在实际程序代码中,必须使用定义的值,而不是实际的变量和画面名称。

在编译C动作之前,预处理程序将用实际名称替换所有定义的名称2.1.2全局脚本编辑器全局脚本编辑器用于创建项目函数、标准函数和动作。

1.项目函数如果在C动作中经常需要相同的功能,则该功能可以在项目函数中公式化。

在WinCC 项目的所有C动作都可以按照调用所有其他函数一样的方式来调用项目函数。

下面列出了使用项目函数对于在C动作中创建完整的程序代码的优点:编辑器的中心位置:项目函数的改变会影响所有正在使用该函数的C动作。

如果没有使用项目函数,则必须手动修改所有相关的C动作。

这不但可以简化组态,而且可以简化维护和故障检测工作。

可重用性:一旦一个项目函数编写完并进行了广泛的测试,则它随时都可以再次使用,无须附加的组态或新的测试。

画面容量减少:如果并不是在对象的C动作中直接放置完整的程序代码,则画面的容量将减少。

这可以使画面打开的速度更快并且在运行系统中的效果更佳。

口令保护:项目函数可以通过指定口令进行保护,以防更改。

这样可以保护组态数据以及用户的技术窍门。

项目函数只能在项目内使用。

它们存储在WinCC Project Folder\LIBRARY文件夹内并在相同的文件夹中的ap-pbib.h文件内定义。

许多函数只能在项目内使用。

与项目函数相反,标准函数可以用于所有的WinCC 项目。

可以更改现有的标准函数。

也可以创建新的标准函数。

标准函数与项目函数的区别仅在于它们的可用性:标准函数可以跨项目使用,然而项目函数只能在项目内使用。

标准函数存储在WinCCInstallationFolder\LIBRARY文件夹内,并在同一文件夹中的ap-glob.h文件内定义。

2.内部函数除项目函数和标准函数之外,还有内部函数。

其中,它们是标准的C函数。

用户不能对其进行更改,也不能创建新的内部函数。

动作:动作(与先前描述的函数相反)不能由C动作或其他函数调用。

必须为动作指定触发器来控制其执行。

它在运行系统中执行时与当前所选择的画面无关。

可以组态全局动作,既跨项目动作。

在这种情况下它们存储字WinCCProjectFolder\PAS文件夹中。

也可以组态全局动作(指定计算机的动作),它们将存储在WinCCProjiectFolder\ComputerName\PAS文件夹中。

如果在计算机的启动列表中选中了全局脚本运行系统,则一旦项目启动,属于该计算机的所有全局动作和所有局部动作将被激活。

3.建立项目函数创建项目函数所须的步骤与创建标准函数的步骤完全相同,因此下面的说明也适用于标准函数的创建建立项目函数步骤:(1)打开全局脚本编辑器。

(2)通过鼠标的右键项目函数条目,然后从弹出式菜单中选择新建→函数,将创建新项目函数的基本框架。

相关主题