版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PLCWORLDWINCC C语言基础培训教程要使对象动态化,在WinCC中有多种不同的选项町用。其中包括变最连接.动态对话框和直 接连接。通过它们叮以实现复杂的动态。然而,随着要求的增加它们会有限制。对于用户来 说,组态C动作、项目函数或动作可以有更广的范围。它们在WinCC脚本语言C中创建。 对于许多应用来说,不必貝备非常全面的C语言知识。它足以为现有函数提供参数。然而, 为了使用WinCC脚本语言C的全部功能,需要儿备仃关这种编辑语占的基本知识。本课程可 以为用户提供这些知识。本课程用来为不熟悉C语言的人员提供有关编辑语言C的常规应用的基本知识。具备C语言 编知经验的编程员町以学习C语言
2、应用于WinCC时的特性。2.1 C脚本的开发环境对于C脚本的创建,WinCC提供两个不同的编辑器。一个是图形编辑器中的动作编辑器,用 于在对象处创建C动作;另一个是全局脚本编辑器,用于创建项目函数和全局动作。脚本语 言的语法与采用ANSI的标准C语言相一致。在WinCC中编辑语言C的另一个应用领域是关于动态向导的创建。为此,可以使用一个单独 的编辑器。2.1.1图形编辑器的动作编辑器在图形编辑器中,町以通过C动作使对彖屈性动作化。同样,也可以使用C动作來响应对象 事件。1. 动作编辑器对于c动作的组态,町以使用动作编辑器。此编辑器町以在对象属性对话框中通过以卜方法 打开,即点击鼠标右键期望的
3、属性或事件,然后从显示的弹岀式菜单中选择C动作。己经存 在的C动作在属性或爭件处用绿色箭头标记。在动作编辑器中,町以编写C动作。对于属性的C动作,必须定义触发器。对于事件的C 动作,由于爭件本身就是触发器所以不必再定义。完成的C动作必须进行编译,如果编译程 序没有检测到错误,则可以通过单击确定退出动作编辑器2. 动作的结构通常,一个C动作相当与C中的一个函数。C动作由两种不同类型:为属性创建动作和为事 件创建的动作。通常,厲性的C动作用于根据不同的环境*件控制此属性的值(例如变量的 值)。对于这种类型的C动作,必须定义触发器來控制其执行。爭件的C动作來响应此爭件。3. 属性的C动作#inclu
4、deapdefap hlong_main(char*IpszPictureName, char* lpszObjectName. char*lpszPropertyName)*1*. long IReturnValue:/2/ IReturnValue GetTagSDword(*S32icourse-test_l*);/*3*/ return IReturnValue;上述实例代码代表-个典型的属性的c动作。各部分的含义描述如F:标题(灰色):灰色阴影显示的前三行构成c的动作标题。该标题自动生成并ft不能更改。 除返回类型(在实例代码中为long)之外,所的的函数标题完全相同。将三个参数传送
5、给C 动作。它们是曲面爼称(Lpsz PictureName ),对象名(lpszObjectName)和属性爼 (IpszProper tyName.变量声明(1):在可以编辑的第一段代码中声明使用的变量。在本实例代码中,指的是- 个long型的变量。数值计算(2):在本段中,执行属性值的计算。在实例代码中,只读入一个WinCC变量的 数值。数值返回(3):将计算得出的属性值赋给属性。这通过return命令來完成4事件的C动作include apdefaph水void OnClicik(char* IpszPictureName. char* IpszObjectName. char* Ip
6、szPropertyName)/*1/long lValue;/*2/lValue * GetTagSDWord(*s32i_course_tset_lM );Setleft (IpszPictureName, lpszobjectName, lvalue);上述实例代码代表一个典型的爭件的C动作。各部分含义描述如下: 标题(灰色):灰色阴影显示的前三行构成C动作的标题。该标题自动生成并且不能更改。 对于不同类型的事件,其参数标题也不同。将参数lpszPictureName(画面名 称).lpszObjectName(对象务)和IpszPropertyName (性名)传递给C动作。参数 Ip
7、szPropertyXame只包含与响应属性变化的事件相关的信息。可以传递附加的爭件指定的 参数。变量声明(1):在可以编辑的第一代码段中声明使用的变量。在本实例代码中,指的是一 个long型的变量。爭件处理(2):在本段中,执行响应书件的动作。在本实例代码中,读入一个WinCC变最 的数值。该数值作为位置X分配给自己的对象。那件的C动作的返回值为void类型,也就 是说不需要返回值5. C动作的创建创建C动作的步骤如下:(1).打开图形编辑器,打开期塑的WinCC画面,打开所期望对象的对象属性对话框(2)通过鼠标R期塑的属性或爭件,然后从弹出式菜单中选择C动作来打开动作编辑器(3)将显示动作
8、编辑器,其中将显示函数的基本框架。此外,C动作的标题已经自动生成, 该标题不能更改。在C动作的标题的第一行内,包括文件apdefap.h.。通过该文件,向C动作预告所有项目 的函数.标准两数以及内部两数。C动作标题的第二部分为旳数标题。该函数标题提供有关C 动作的返回值和町以在C动作中使用的传送参数的信息。C动作标题的第三部分开始是花括 弧。此花括弧不能删除。在该开始人括弧和结束人括弧之间,编写C动作的实际代码。(4)其他自动生成的代码部分包括两个注释块,若要使交叉索引编辑器叮以访问C动作的 内部信息,则需要这些块,要允许C动作中语句重新那列也需要这两个块。如果这些选项都 不用。则可以删除这些
9、注解。第一个块用于定义C动作中使用的WinCC变量。在程序代码中必须使用定义变量名称而不是 实际的变量名称第二个注释块用于定义C中所使用的WinCC画面。在程序代码中也必须使用定义的画而名称 而不是实际画面名称。(5)编写执行期垫计算的函数主题、动作等。有多种编辑辅助工具可供使用,其中-种辅 助丁具是变量选择对话框,此对话框如下所示的按钮可以打开。在显示的选择变量对话框中, 选择WinCC变最然后单击确定来确认。于是在C动作中在当前光标位置处插入所选WinCC 的变量名称。(6)另一种辅助工具是动作编辑器左窗II中的函数选择。利用函数选择,可以在C动作中 的当前光标位置处自动插入所有町用的项目
10、函数、标准函数和内部函数。为此,通过鼠标D PLCWORLD来选择其数据类型的列表。该函数町以在数值列中进行参数化。除简单的文本输入以外,选 择变量.图形对象和画面选项都可以用。为了在C动作中的当前光标位置插入函数,可通过单击确认来确定对话框。(7) 现在必须翻译己完成的函数。在通过如下所示的工貝按钮来完成。翻译过程的结果显 示在动作编辑器的左下角。它包括找到错误的个数和警告的个数。错误总会使C动作无法进 行。而警告是一种提示,指出在执行C动作期间町能出现的错误。良好的编辑风格町防止在 创建C动作时出现除0 Ereor (S), 0 Warning (s)的输出结果之外的情况。如果在编译过程屮
11、出现错谋,则它们将在输出窗口中显示通过鼠标D输出剣I中的错误消 息,可以直接跳转到相应的代码行。(8) 对于己经为对象属性创建的C动作,必须定义触发器。对于事件本身就是触发器所以 不用在定义。触发器的定义通过如卜所示的按钮来执行。町以选择使用时间变星触发器。(9) 通过单击动作编辑器的确定按钮,町将已编写的C动作放置在期望的属性或爭件处。 通过C动作动态化的属性或事件将用绿箭头标记。WinCC标签定义和画面定义片include “apdefap. h”long-main(char*lpszPictureName. char* lpsz ObjectName. Char* IpszPropert
12、yName)/WINCC. TAGXAME-SECTTON-START/syntax, define TagNameInAction DMTag5ameSdefine S32I-C0URSE-0TEST-1 MS32i-course-test-l”/next TagID :1/町CC TAGNAME-SECTION-END/WINCC:PICNAME-SECCTON-START/syntax: #define PicNameInAction PictureName片define CCO-STARTPICTURE-00 cc-0-startpicture-00. Pdl/next PicID:1
13、 /WIXCC:PICNAME-SECTTON-EXDSetTagSDWord(S32I-COURSE-TEST-l, 100);OperPicture(CC-O-STARTPICTURE-OO);Return 0;如果创建新的C的动作,则自动生成的代码将包括两个注释块。若要使用交叉索引编辑器町 以仿问C动作的内部信息,则需要这些注释块。要允许C动作屮语句重新排列也需要这两个 块。变量定义:第一个注释块用于定义C动作中使用的WinCC变呈。该注释块以/MINCC: TAGfE-SECTION-START 作为开始,以/MINCC: TAGN.ME-SECTION-END 作为结束。在两行命令
14、之间,定义C动作中的所有WinCC的变量名称。通过预处理程序命令define后跟定义的轻 称(在本实例代码中为S32I-C0URSE-TEST-1),其后在接WinCC变晴的名称(在本实例中 为(S32i-course-tsse-1)来定义。画而定义:第二个注释块用来定义C动作中所硬用的WinCC画面。该注释块以行 /MINCC:PICNAME-SECTION-START 作为开始,以行/MINCC:PICXAME-SECTION-END 作为结束。 在两行Z间,定义C动作中使用的所WinCC画面名称。它遵循的规律与上面所描述的定义 变量名称时所遵循的规则相同。应用:在实际程序代码中,必须使用
15、定义的值,而不是实际的变量和画面名称。在编译C 动作之前,预处理程序将用实际名称替换所有定义的名称.1.2全局脚本编辑器全局脚本编辑器用于创建项冃函数、标准函数和动作。1. 项目函数如果在C动作中经常需要相同的功能,则该功能可以在项目函数中公式化。在WinCC项目 的所有C动作都町以按照调用所冇其他函数一样的方式來调用项目函数。卜而列出了使用项 目函数对于在C动作中创建完整的程序代码的优点:编轲器的中心位叠:项目函数的改变会影响所冇正在使用该函数的C动作。如果没冇使用项 目函数,则必须手动修改所有相关的C动作。这不但町以简化组态,而且町以简化维护和故 障检测工作。可畫用性:一旦一个项目函数编写
16、完并进行了广泛的测试,则它随时都可以再次使用,无须 附加的组态或新的测试。画而容量减少:如果并不是在对象的C动作中直接放置完整的程序代码,则画面的容量将减 少。这可以使画面打开的速度更快并且在运行系统中的效果更佳。11令保护:项目函数町以通过指定11令进行保护,以防更改。这样町以保护组态数据以及用 户的技术窍门。项目函数只能在项目内使用。它们存储在WinCC Projec t FolderLIBRARY 文件夹内并在相同的文件夹中的ap-pbib. h文件内定义。许多函数只能在项目内使用。与项 冃函数相反,标准函数町以用于所有的WinCC项冃。町以更改现有的标准两数。也可以创建 新的标准函数。
17、标准函数与项目西数的区别仅在于它们的可用性:标准肉数町以跨项目使用,然而项目函数 只能在项目内使用。标准两数存储在WinCCInstallationFolderLIBRARY文件夹内,并在同 一文件夹中的ap-glob. h文件内定义。2. 内部函数除项目函数和标准函数之外,还有内部函数。其中,它们是标准的C函数。用户不能对其进 行更改,也不能创建新的内部函数。动作:动作(与先前描述的函数相反)不能由C动作或其他函数调用。必须为动作指定触发 器来控制其执行。它在运行系统中执行时与当前所选择的画面无关。可以组态全局动作,既 跨项目动作。在这种情况卜它们存储字WinCCProjectFolderP
18、AS文件夹屮。也可以组态全 局动作(指定计篦机的动作),它们将存储在WinCCProjiectFo 1 derComputerNamePAS文 件夹中。如果在计算机的启动列表中选中了全局脚本运行系统,则一旦项目启动,属于该计 算机的所有全局动作和所有局部动作将被激活。3. 建立项目函数创建项目函数所须的步骤与创建标准函数的步骤完全相同,因此卜面的说明也适用丁标准函 数的创建建立项目函数步骤:(1)打开全局脚本编辑器。(2)通过鼠标的右键项目函数条目,然后从弹出式菜单中选择新建函数,将创建新项目 函数的基本框架。(3)项目函数可以完全由用户进行配昼,没冇不能编译的代码段。编写函数标题,函数必 须
19、有一个名称,以便C动作或其他旳数调用时所有。此外,必须指定返回值和函数所须的传 递参数。如果当前的函数中要使用其他项冃函数或标准用数,则必须结合apdefap. h文件,这通过预 处理程序命令相nclude “apdefap.h”来完成,该命令必须插在函数标题之前。#include44apdefap hint MPro ject-Funet ion (intiFir st Param, BOOLbSecondParm) return 0;(4) 编写函数主题。町以使用与编写C动作相同的辅助工貝,特别是变屋选择和函数选择。(5) 已完成的函数现在必须进行编译。这通过如卜所示的工其栏按钮来完成。编
20、译过程的结果显示在输出窗II中,将列出产生的错误和警告,并且显示其数帚:。通过鼠标 D输出窗口中的错误消息,可以直接跳转到相应的代码行。CompilingLine 3: error(0086) : func tion 4 MyPro jec tFunct ion * does not return a valError(s) , o Warning(s)(6) 通过如卞所示的工具栏按钮,町以将描述添加大批项目函数中。町以与描述-起定义 一个口令,以保护项目函数免遭未*人员访问。(7) 完成的项目函数必须用合适的X称进行保存。4. 建立全局动作创建全局动作所须的步骤与创建局部动作所须的步骤完全相
21、同。因此,卜而的步骤也适用于 创建局部动作。建立全局动作步骤:(1) 打开全局脚本编辑器(2) 通过鼠标的右键项目函数条目,然后从弹出式菜单中选择新建动作,将创建动作的基 本框架。(3) 动作的标题将会自动生成并且不能更该。此外,插入用于定义WinCC变量和WinCC画 面的两个注释块。这两个注释块的含义已经在先前的C动作一节中进行说明。#include uapdefap hint gscAction(void)/WIXCC:TAGAME-SETIOM-START/syntax. #define TagNamelnActionDMTagName/next TagID :1/WINCC:TAGN
22、AME-SECTION-END/WINCC:PICNANffi-SECTION-START/oyntax:#define PicNamelnAction八 PictureName */next PicID:l/WINCC:PICNAME-SECTION-ENDreturn o;(4) 编写动作主体。可以使用与编写C动作相同的辅助工具。特别是变量选择和函数选择。 动作具有int类型的返回值。缺省的情况下,返回值为0。(5) 通过如下所示的工具按钮,可以如同函数描述-样将描述添加到动作中。也可以定义 I I令来保护项目函数免遭未材人员的访问。与两数相比,它还需要设胃一个触发器来控制动 作的执行。对
23、于动作触发器的选择,用户所具有的选择的范鬧要比对象的C动作触发器的选 择范围大。其中,可以编写一次执行过程(6) 完成的动作必须进行保存。5. 测试输出执行程序来测试输出。这样便于在开发期间进行故陰检测和错误诊断。测试输出町以通过 printfO函数來启动。通过该函数,不但町输出简中文本。而且nJ输出、勺前变量值。为了使 输出文本可见,必须组态全局脚本诊断窗口。Printf ()函数:Printf ()函数允许执行测试输出功能。该函数的实例应用如下所示:Printf( I am %d years oldrn, iAge):PrintfO函数至少一个参数。该参数是一个字符串。要传递的附加类型和数
24、最取决于该字符 串。字符由prinft ()函数用作在该位宣插入变量值的标识符。跟在字符%Z后的字符确定 给变量的数据类型。上表中所使用的字符组介%d表明输出为十进制数,其他町能的组介及 其描述如下:%d 输出十进制数(int或char) , %ld 长整型变量作为十进制输出,%c 输出字符 (char) , %x 以16进制格式输出数值。(用小写字母a, b, c f) ,%X以16进制格式输 出数值。(用人写字母A F) ,%o 以八进制格式输出数值,%u 输出十进制数(专 用于unsigned类型),%f 以浮点数计数制输出浮点型数值例如3. 43234, %e 以指 数计数制输出浮点型
25、数值,例如23e+432,%E 同$e但使用人写E,例如23E+432, %s 输出字符串(char*) ,%le 输出双精度 型数值,% 输出字符,In 换行输出(回车),、r进一行输出,、t 制表位 输出,、输出、字符6. 全局脚本诊断窗II由printf ()两数指定的文本输出显示在全局脚本诊断窗II中。组态这种诊断窗II的步骤 如下:(1) .打开图形编辑器打开期望的WinCC画面。(2) 组态智能对彖应用窗【。将应用窗口置于画面内之后,将打开窗口对话框。从列表中选择全局脚本条目。通过单击确 定退出对话框。打开模板对话框,从列表中选择GSC诊断条目。同样通过单击确定退出对 话框。(3)
26、 为了便于利用全局脚本诊断窗II,建议将对象属性对话框其他条目卜的所有属性设置 为是。(4) 如果项目在运行,则由printf ()函数指定的文本输出将显示在诊断窗II中。如果用工 具栏上相应的按钮中止更新,则可以保存或打印输出窗口内容。2. 2变量在WinCC项冃Project-C-Course中,有关变最的主题实例口J以通过单击如卜所示的浏览栏 来访问。实例在kzz-00. PDL画面中组态。变量:变量是由程序处理的数据对彖。变量只有在定义以后才能使用。在第一条指令町以执 行前,必须先定义程序中的所有变量。变量可以比做一个容器。通过变量名,我们给容器一个唯一的名称。容器中内容的类型通过 其
27、数据类型来指定,容器的初始内容通过初始值来指定。在人多数情况卜,该内容将在程序 执行过程中进行处理。此处所描述的变量不应误认为是WinCC变量。它们只能在程序代码中 使用。以下程序代码说明了定义变量的一个实例。Int itag:.在该实例中,用名字Itag来定义一个int数据类型的变最。代码行以分号结束。变最名的 前面是描述数据类型的前缀。这并非必须遵循,但它却使得在程序创建期间能够立即识别变 量的数据类型。在定义变量时,也可以将其初始化。Int itag = 0: 常最:除变最之外,程序中也使用常最。它只是数值的直接使用。为了说明这种数值的含义, 可以使用define命令为它定义符号常屋。以
28、卜程序代码说明了定义符号常量的一个实例。片define MAX-VALUE 7483617在给实例中,用数值7483647來定义符号常量MAX-VALUE。注意代码行不得用分号结束。用 大写字母表示符号常量是一般的编程规律,以便易于与变量区分。数据类型:C所识别的基本数据类型如卜:Char 一个字节,町以接受一个字符,Int整型数值,Float单精度型浮点数,Double双精 度型浮点数,Char数据类型的变量需要一个字节的存储空间。其内容町以解释为一个字符 或一个数字。Int数据类型Z前可以加关健字signed或unsigned。关键字signed代表右符号数,关键字 unsigned代表无
29、符号数。Int数据类型之前也可以加关键字long或short.这些关键字也可 以不带int而单独使用,其含义仍然相同。Short (或short int)数据类型的变量需要2个 字节的存储空间,1。鸥(或long int)数据类型的变最与int数据的变最一样需要4个字节 的存储空河,然而double数据类型的变量需要8个字节的存储空间。各数据类型的数值范闌:每种数据类型都町以显示某一数值范闱的数值。区别在于不同的数 据类型所须的存储空间不同,以及是有符号还是无符号数据类型。Int - 2147483618 至 2147483647Unsigned int 0 至 429967295Short
30、-32768 至 32767Unsigtned short 0-65535Long - 2147483618 至 2117483617Unsigned long 0 至 4294967295Char - 128至127 (所有的ASC |字符)Unsigned char 0 至 225 (所有的 ASC | 字符)float - 1038z 至 0 38double 10*308 至 0308 2. 2.1幣数数据类型用C的缺省数据类型来显示整数。在爭件一鼠标一鼠标动作的对象按钮1组态了本实例。1.按钮1的C动作include apdefap hvoid OnClick(char# IpszP
31、ictureName char3 IpszObjecchar#lpszProper char eNumber;/signad 0 bit valuelong INameber:/ signad 32 bit valueshort sNamber:/ signad 16 bit valueint iNumber;/ signad 32 bit valueunsigned char ucNumber; /unsigned 8 bit valueunsigned long ulNumber; /unsigned 32 bit valueunsigned short usNamber: /unsign
32、ed 16 bit valueunsigned int uiNumber;/unsigned 32 bit valuecNumber = -128;sNumder = -32768;lNumber = -2147483618;iNumber = 2117483467;/output in dignstics sindowprinft( wrnExaple l:rn);printf( char:tt%drnshort:tt%drnHlong:tt%drninth:tt%drnM , cNumber, sNumber, lXumber, iNumber); ucXumber 二 255;usXum
33、der = 65535;ulNuber = 4294967295;uiNuber = 4294967295;/output in diagnostics vindowprintf( unsigned char:t%urunsigned short:t%urnuunsigned long:t%urnunsigned int:t%urn,ucNumber, usNumber, ulNumber, uiNumber);前三行为C动作的标题。该标题不能更改。在第二部分中.定义变最。为char long short 和int数据类型及其无符号的对应量各定义一个变量。变量名称前面加上描述数据类型的前 缀。
34、这并非必须遵循,但它却使得在程序创建期间能够立即识别变量的数据类型。作为注释, 每一行包括变量所需的存储空间(以字符串开始的注释部分用绿色标记)。在第三部分中, 将数值赋给变量。这通过使用赋值运算符二来完成。本实例中所使用的数值恰好是各种数据 类型所能显示的数值范国中的极限值。这些数值通过函数printf ()在诊断窗II中输出。此 输出在下部分显示。2 诊断窗II中的输出本节中描述的实例在诊断窗11中内牛成卜列输出:Example1:-128-32768-21471833618214748364725565535Char:Short:Long:Int:Unsigned char:Unsign
35、ed short:Unsigned long:4291967295Unsigned int: 4291967295 2. 2.2整数WinCC变量 在人多数情况卜,要通过C动作或其他函数来使对象动态化和解决类似的卅情时,必须使用 叭nCC变量。为此,河许多用于读取和写入WinCC变量值的函数町以使用。这些函数可以与 每种WinCC缺省变量类型一起使用。在本实例中,将数值写入各种WinCC变量.WinCC变量 的内容显示在输出域内。在爭件一鼠标一鼠标动作处为对象按钮3组态了本实例按钮3的C动作:include apdefap hvoid OnClick(char# IpszPictureName
36、 char3 IpszObjectXame, char#1pszProper *CHAR eNumber; /signed 8 bit valueSHOURT sNumber; /signed 16 bit valueLONG INumber: /signed 32 bit valueBOOL bNumbeer; /TRUE or FALSEBYTE byNumber;/unsigned 8 bit valueWORD wNumber; /unsigned 16 bit valueDWORDdwNumber: /unsigned 32 bit valueCNumber = -128;SNumb
37、er = -32768;INumber = -2147483618;/set wince tageSet agSByte( uS08icoursetag-1v , eNumber);SetTagSWordC uS16i-coursetaglv , sNumber);SetIagSDWord( u S32i-course-taglM , INumber);bNumber = TRUE;byNumber = 255;wNumber = 65535;dwXumber 二 4294967295;/set wince tageSetTageBit ( *BINi_course_tage_l (SHORT
38、)bNumber);SetTageByte ( * V08i-course-tagel byNumber);SetTageWord ( 44 V16i_course_tage-l wNumber)SetTageDWord ( * V32i-course_tage-l bwNumber)在第-部分中,定义变量。根据变量町用的数据类型选择变量的数据类型。在第二部分中, 将数值赋给变最.木实例中所用的数值又恰好是各种数据类型所能显示的数值范国的极限 值。利用相应的函数将变量赋值给各种WinCC变量。函数名字包括文本SetTag和函数所应用的 WinCC变最的数据类型标志。与用于写入WinCC变呈的S
39、etTag换数相对应,也用于读取WinCC 变量的GetTag函数。如果将BOOL数据类型(int的别名)的变最传递给SetTagBitO函数,则编译程序将发出警 告。发生这种情况是因为SetTagBit 0函数希里用SHORT作为所传递变量的数据类型。肉此, 本实例代码中将变bNumber的内容传递给SetTagBit ()函数之前,先将其转换为SHORT类 型。此过程又称为Typecast (类型转换)。类型转换:变量的内容在传递给函数或赋给其他变量之前,可以转换为不同的数据类型。然 而,变量木身的数据类型保持不变。以下程序代码说明了如何将float数据类型的变量转换 为int数据类型。I
40、Number = (int)fNumber:WinCC变量的数据类型:卜衷包括与C中町用数据类型相应的WinCC变量的各种数拯类型。 它们就是传递给SetTag函数并由GetTag函数返回的数据类型。WinCC变量的数据类型C的数据类型有符号的8位数char有符号的16位数Short int有符号的32位数Long int二进制变量Short int无符号的8位数BYTE无符号的16位数WORD无符号的32位数DWORD2.2.3浮点数数据类型 用C中町用的缺省数据类型来显示浮点数。在时间f鼠标f鼠标动作处为対象按钮4组态 了本实例。按钮4的动作:片include apdefap. hvoid
41、 OnClick(char* IpszPictureName, char* char3 IpszObjectName, char*lpszProper*fioat fNumber;/32 bitdouble dNumber /64 bitfNumber = 1.0000001;dNumber = 1.0000001;/output in diagnostics windowprintf( rnExample:4:rn);prir.tf( float :t%2 17ftsizeof (float) :t%drnMudouble:t%2. 17tsizeof(double):t%drnM ,Fnu
42、mber, siaeof(float), dNumber, sizeof(double);在第一部分中,定义变量。用float和double数据类型各定义一个变量。在第二部分中,将数值赋给变量。在本实例中,将相同的数值賦给两个变量。Float型变量的稱度人约为小数点后第七位。Double变量町以显示的精度为浮点数的两倍, 这可以参考诊断窗口中输出的实质(使用printfOS数)o除变量之外,还输出其所须的 存储空间。变量所须的存储空间通过sizeofO命令来确定。所须的存储空间以字节为单位 表示。4. 2.4浮点数WinCC变量除整数以外,WinCC变量也可以包含浮点数。因此,与C的数据类型f
43、loat和double相对 应,WinCC变量右两种数据类型可用。为了以读或写的方式访问这些WinCC变量,提供了相 应的SetTag和GetTag函数。在本实例中,将数值写入各种肌nCC变量。WinCC变量的内容 显示在输出域内。在事件鼠标鼠标动作处为对象按钮5组态了本实例。按钮5的C动作:片include apdefap. hvoid OnClick(char# IpszPictureName char3 IpszObjectName, char#lpszProper *fioat fNumber;/32 bitdouble dNumber /64 bitfNumber = 1.00000
44、01;dNumber = 1.0000001;/set wince tagsSetTagFloat ( *F32icoursetag-l fNumber);SetTagDouble ( *F64i-course-tag-l * dNumber);在第一部分中,定义变量。为float利double数据类型各定义一个变量。在第二部分中, 将数值赋给变量。在本实例中,将相同的数值赋给两个变量。利用相应的函数将变屋赋值给各种WinCC变量。与此处所用的用于写入WinCC变量的SetTag 函数相对应,用于读取WinCC变量的GetTag函数也可用。2.2.5静态变量和外部变量在爭件鼠标一鼠标动作处为对
45、象按钮6组态了本实例。1. 静态变量C变量在定义后才能在函数中生效。在函数终止后,它又变成无效。如果再次调用该函数, 则将会再生成C变量。然而,如果在变量前加关键字static,则在两次函数调用之间保留 该变最。因此,它将保留其值。然而对于C动作,只有选择了阳nCClffli面,静态变最才会有 效。如果撤消选定画面,则静态变量变成无效。再次打开画面后,在C动作期间将会再次生 成静态变量。2. 外部函数C变最只能在定义它的西数内访问。然而,如果在任何函数以外定义变最。则该变呈将成为 全局(外部)变量。于是,在任何函数中都可以利用关键字extern来申明变量并且可以访 问它。项目函数 Create
46、ExternalTags 0 int ext-iNumber = 0 void CreateExternalTags 0/nothing to do函数CreateExternalTags0只用丁定义和初始化个int类型的外部变量。在项目启动时 调用一次该函数(在起始画面kzz-00. PDL的爭件其他一打开画面处)。从此刻起,变 量ext-iNumber被定义并且可以在任何C动作和其它函数中使用。按钮6的C动作:include uapdefap hvoid OnClick(char# IpszPictureName char3 IpszObjectam己,char#1pszProper */
47、declare external tagexter int ext-iNumber;/define static tagstatic int statt-iNumber = 0:/output in diagnostics windowprintf( rnExample 6:rnMumouseclicks since project was started:%drnMUmouseclicks since project was opend:%drn,f +ext-iNumber, +statiNumber);在第一部分中声明外部变ext-iNumber,以便能在C动作中使用它。在第二部分中,定
48、义 并初始化静态变量stat-iNumbero它们将在选择WINCC画面后首次执行C动作时执行。炖 于以后再此执行C动作,该变量的值将会保留。如果撤消选定后在再选择画面,则将会再生 成变量。变量的数值通过自增运算符+增加1,并通过printfO函数在诊断窗II中输出。因此,变量 ext-iNumber将显示从项目成动后单击按钮的次数,而变量statiNumber将显示从画而打 开后单击的次数。2.3 C中的运算符和数学函数运算符:在程序中,运算符控制变量和常量进行的运算。变量和常量与运算符连接,这样会 导致产生新的变屋值。运算符可以分成多种类别。包括数学运算符。按位运算符和赋值运算 符。数学运
49、算符:运算符描述r (单目)正号(实际不可使用)-(单目)负号卜(双目)加(双目)减*乘除5模(返回除法运算的余数)自增自减按位运算符:这些运算符使得町以对变量中的各个位进行设置、查询或重新设定。运算符描述按位与按位或A按位异或%按位取反将位向左移将位相右移逻辑运算符 所仔的逻辑运算符祁遵循相冋的原则:0表示假,所勺其他数祁表示貞这些运算符不足牛. 成0 (假)就是生成1 (真)PLCWORLD运算符描述/大于 人于或等于-等于!=不等于=小于或等于、小于E&逻辑与逻辑或1逻辑非2. 3.1基本的数学运算在本实例中使用了基本的数学运算符。在事件f 鼠标一鼠标动作处为对象按钮1组态了本 实例。按
50、钮1的动作include uapdefap hvoid OnClick(char# IpszPictureName char3 IpszObjectame, chardlpszPropei float fValuel = 123.6;float fValuel = 23.4;float fResAdd;float fResSub;float fResMul;float fResDiv;fResAdd = fValuel+fValue2;/ addf Res Add = fVraluel-fValue2;/subtractfResAdd = fValuel*fValue2;/ multiplyfResAdd = fVraluel/ fValue2; / / divide /output in diagnostics window printf( rnExample lrnM )printf( “lf+%lf=%lfrnw, fValuel, fValue2, fResADD);printf( If-%lf=%lfrnn, fValuel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生鲜冷链运输操作技术指引
- 亚健康调理咨询沟通技巧手册
- 活跃会员节日促销活动方案
- 春季露地黄瓜定植操作指引
- 客户生日专属关怀方案
- 颈椎病中医推拿复位操作规范
- 整脊复位调理操作规程
- 职工行为安全规范管理手册
- 农机作业安全驾驶操作指引
- 护理法律法规医疗纠纷处理题库及答案
- 石油钻井井电方案
- 得每通产品培训2015品牌版
- 青海省循化县谢坑铜金矿(二、四釆区)矿山地质环境保护与土地复垦方案
- Cpk 计算标准模板
- FANUC O加工中心编程说明书
- 滕王阁序注音全文打印版
- GB/T 6451-2015油浸式电力变压器技术参数和要求
- GB/T 29316-2012电动汽车充换电设施电能质量技术要求
- 2023高中学业水平合格性考试历史重点知识点归纳总结(复习必背)
- Unit4 写作课 A Funny Story教案-高中英语北师大版(2019)选择性必修第二册
- 果树学实验-主要果实类型与构造认识解答课件
评论
0/150
提交评论