西门子S7-SCL编程与应用.pptx

上传人(卖家):淡淡的紫竹语嫣 文档编号:1107837 上传时间:2021-02-22 格式:PPTX 页数:92 大小:1.80MB
下载 相关 举报
西门子S7-SCL编程与应用.pptx_第1页
第1页 / 共92页
西门子S7-SCL编程与应用.pptx_第2页
第2页 / 共92页
西门子S7-SCL编程与应用.pptx_第3页
第3页 / 共92页
西门子S7-SCL编程与应用.pptx_第4页
第4页 / 共92页
西门子S7-SCL编程与应用.pptx_第5页
第5页 / 共92页
点击查看更多>>
资源描述

1、西门子西门子S7S7- -SCLSCL编程与应用编程与应用 第一章第一章 SCLSCL语言概述语言概述 -2- 文件操作文件操作 程序结构程序结构 S7-SCL与与SIMATIC Manager 软件安装软件安装 SCL语言语言 1.1 SCL1.1 SCL语言语言 -3- 概述 SCLSCL(结构化控制语言)是一种用于(结构化控制语言)是一种用于S7S7- -300/400300/400和和 C7C7等自动化等自动化 系统的高级文本编程语言。系统的高级文本编程语言。 借助借助SCLSCL,可以简化控制技术领域复杂的计算、算法、数据管理,可以简化控制技术领域复杂的计算、算法、数据管理 和数据组

2、织等编程工作。和数据组织等编程工作。 IF New_valueOld_value THEN index:=(index mod max_values)+1; measurement_valuesindex:=INT_TO_REAL(measurement); END IF; SCL编程语言编程语言 1.1 SCL1.1 SCL语言语言 -4- 编程标准 SCLSCL符合语言标准符合语言标准DIN ENDIN EN- -61131 Part361131 Part3(国际标准(国际标准IEC 1131IEC 1131- -3 3)。)。 DIN ENDIN EN- -61131 Part36113

3、1 Part3(国际标准(国际标准IEC 1131IEC 1131- -3 3)对可编程控制器)对可编程控制器 的编程语言实现了标准化。的编程语言实现了标准化。SCLSCL的基础是该标准中的的基础是该标准中的STST结构化文本结构化文本 部分。部分。 SCLSCL类似于类似于PascalPascal,具备高级标称语言的所有优势。,具备高级标称语言的所有优势。SCLSCL除了有除了有 清晰的控制结构和丰富的数据概念,还拥有例如过程和函数等重要清晰的控制结构和丰富的数据概念,还拥有例如过程和函数等重要 内容。因此采用了内容。因此采用了SCLSCL,可以编制结构清洗,易读性好的程序。,可以编制结构清

4、洗,易读性好的程序。 1.1 SCL1.1 SCL语言语言 -5- 应用领域 复杂的数学函数功能,例如:调节器复杂的数学函数功能,例如:调节器 数据管理数据管理 配方管理配方管理 具有大量分支和循环结构的程序具有大量分支和循环结构的程序 特点 易于掌握易于掌握 可短时间开发易读性更好的程序可短时间开发易读性更好的程序 可间接地描述复杂的算法可间接地描述复杂的算法 支持支持S7S7中的块和数据类型等概念中的块和数据类型等概念 与与S7S7语言(语言(LADLAD、FBDFBD、STLSTL)实现系统集成)实现系统集成 1.2 1.2 软件安装软件安装 -6- 概述 S7S7- -SCLSCL选件

5、包需单独进行安装。将选件包存放在英文目录下,选件包需单独进行安装。将选件包存放在英文目录下, 双节双节setup.exesetup.exe,即可开始执行安装程序。,即可开始执行安装程序。 1.2 1.2 软件安装软件安装 -7- 软件验证 当当S7S7- -SCLSCL选件包安装后,可以在选件包安装后,可以在STEP 7 ManagerSTEP 7 Manager中插入中插入 SCLSCL源源 文件。文件。 源文件插入源文件插入 1.3 S71.3 S7- -SCLSCL与与SIMATIC ManagerSIMATIC Manager -8- 软件架构 S7S7- -SCLSCL的程序以源文件

6、的格式出现在的程序以源文件的格式出现在SourceSource文件夹中,通过编文件夹中,通过编 译器将程序块编译,生成执行块并保存在译器将程序块编译,生成执行块并保存在BlockBlock文件夹内。文件夹内。 源文件存源文件存 放位置放位置 执行程序执行程序 存放位置存放位置 共用符号表共用符号表 1.3 S71.3 S7- -SCLSCL与与SIMATIC ManagerSIMATIC Manager -9- 设置 在使用在使用SCLSCL之前,需要检查并调整某些个性化设置。在之前,需要检查并调整某些个性化设置。在SCLSCL编程编程 界面中,通过点击界面中,通过点击OptionOption

7、- -CustomizeCustomize进行软件设置。进行软件设置。 1.3 S71.3 S7- -SCLSCL与与SIMATIC ManagerSIMATIC Manager -10- 设置 生成块设置生成块设置 编译设置编译设置 编辑设置编辑设置 必选必选 1.4 1.4 程序结构程序结构 -11- 概述 一个一个SCLSCL程序可以由程序可以由一个或多个一个或多个SCLSCL源文件源文件构成。采用构成。采用SCLSCL编辑器编辑器 可以编辑这些源文件。采用一个还是多个源文件取决于具体目标。可以编辑这些源文件。采用一个还是多个源文件取决于具体目标。 若需要多个独立的块,则应选用每个块一个

8、源文件的方式。若需要多个独立的块,则应选用每个块一个源文件的方式。 如果需要创建一个完整的程序或者某个程序的一个组成部分,如果需要创建一个完整的程序或者某个程序的一个组成部分, 则可以在一个源文件中包含多个块。则可以在一个源文件中包含多个块。 OB1 FC2 背景背景 DB FB9 程序调用顺序:程序调用顺序:OB1FC2 FB9 1.4 1.4 程序结构程序结构 -12- 结构图 . FB9 . . FC2 . . OB1 . SCL源文件源文件 一个源文件构成一个源文件构成 一个完成程序一个完成程序 OB1、FC2、FB9与背景与背景DB OB1 源文件源文件 FC2 源文件源文件 FB9

9、 源文件源文件 多个源文件构成多个源文件构成 一个完成程序一个完成程序 1.4 1.4 程序结构程序结构 -13- 调用顺序 在在SCLSCL程序编写时,必须要注意源程序的块调用顺序。程序编写时,必须要注意源程序的块调用顺序。 例如:在例如:在OB1OB1先调用先调用FC2FC2,再调用,再调用FB9FB9,则必须先编译,则必须先编译FB9FB9,再编,再编 译译FC2FC2,最后编译,最后编译OB1OB1。这意味着,在源文件中,。这意味着,在源文件中,FB9FB9必须在必须在FC2FC2之前,之前, FC2FC2必须在必须在OB1OB1之前之前 OB1 FC2 背景背景 DB FB9 程序调

10、用顺序:程序调用顺序:OB1FC2 FB9 . FB9 . . FC2 . . OB1 . SCL源文件源文件 OB1、FC2、FB9与背景与背景DB 同一个源文件中同一个源文件中 的程序编写次序,的程序编写次序, 注意先后注意先后 编译次序:编译次序:FB9FC2 OB1 1.4 1.4 程序结构程序结构 -14- SCL控制文件 一个一个SCLSCL程序可以由多个程序可以由多个SCLSCL源文件组成。源文件组成。SCLSCL控制文件根据调用控制文件根据调用 编译时各个源文件的编译顺序依次编译各文件。编译时各个源文件的编译顺序依次编译各文件。 OB1 FC3 FC5 OB32 FC17 FB

11、22 DB2 DB3 FC77 1.4 1.4 程序结构程序结构 -15- SCL控制文件 SCL源文件源文件3 SCL源文件源文件2 SCL源文件源文件1 SCL控制文件控制文件 用于用于SCL编译器编译器 的控制文件的控制文件 如果在如果在SCL源文件源文件2中调用中调用SCL源文件源文件3内包含的块,则在内包含的块,则在 SCL控制文件中,控制文件中,SCL源文件源文件3必须在必须在SCL源文件源文件2的前面。的前面。 源文件源文件 1 源文件源文件 2 源文件源文件 2 多个源文件构成多个源文件构成 一个完成程序一个完成程序 1.4 1.4 程序结构程序结构 -16- 块库 在源文件中

12、将需要调用库中的块复制到在源文件中将需要调用库中的块复制到BlockBlock程序块中。程序块中。 程序库程序库 程序库文件程序库文件 1.5 1.5 文件操作文件操作 -17- 导入源文件 右击插入新对象右击插入新对象 -外部源文件用外部源文件用 于外部程序导入于外部程序导入 1.5 1.5 文件操作文件操作 -18- 导出源文件 右击源文件右击源文件-导导 出源文件用于源出源文件用于源 文件导出操作文件导出操作 1.5 1.5 文件操作文件操作 -19- 编译源文件 编译按键编译按键 1.5 1.5 文件操作文件操作 -20- 下载与帮助 编译结果出错编译结果出错 E:错误:错误W:警告:

13、警告 按按F1进入帮助进入帮助 下载按键下载按键 第二第二章章 创建和调用块创建和调用块 -21- 数据块的结构数据块的结构 功能块(功能块(FB/SFB)的结构)的结构 函数(函数(FC/SFC)的结构)的结构 组织块(组织块(OB)的结构)的结构 源文件结构源文件结构 第二第二章章 创建和调用块创建和调用块 -22- 数据块结构与用户自定义数据类型结构数据块结构与用户自定义数据类型结构 功能块(功能块(FB/SFB)的结构)的结构 函数(函数(FC/SFC)的结构)的结构 组织块(组织块(OB)的结构)的结构 用户自定义数据类型结构用户自定义数据类型结构 2.1 2.1 源文件结构源文件结

14、构 -23- 概述 一个一个SCLSCL源文件可以包含任意个块:如源文件可以包含任意个块:如OBOB块、块、FBFB块、块、FCFC块、块、DBDB块块 和和UDTUDT块。块。 SCLSCL源文件中的每一个独立的块,都有一个用于构建该块的标准源文件中的每一个独立的块,都有一个用于构建该块的标准 描述符(表示块开始和块结束)。标准描述符取决于块类型,块本描述符(表示块开始和块结束)。标准描述符取决于块类型,块本 身则由一个声明部分和一个指令部分组成。身则由一个声明部分和一个指令部分组成。 2.1 2.1 源文件结构源文件结构 -24- 文件结构 DB5 FB10 FC62 FC61 OB1 F

15、UNCTION_BOLCK FB10 属属 性性 声明部分声明部分 指令部分指令部分 END_FUNCTION_BLOCK 2.1 2.1 源文件结构源文件结构 -25- 源文件编译顺序 为了使为了使SCLSCL源文件可以顺利地编译成功,涉及编译顺序,需注意:源文件可以顺利地编译成功,涉及编译顺序,需注意: 被调用块必须始终先于调用他们的块完成声明;被调用块必须始终先于调用他们的块完成声明; 用户自定义数据类型(用户自定义数据类型(UDTUDT)必须先于使用该数据类型的所有)必须先于使用该数据类型的所有 块之前完成声明;块之前完成声明; 全局数据块必须先于访问该全局数据块的所有块之前完成声明全

16、局数据块必须先于访问该全局数据块的所有块之前完成声明 如果源文件创建了如果源文件创建了OB1OB1块,则该块通常位于顺序的末尾;块,则该块通常位于顺序的末尾; 背景数据块由编译器自动创建。背景数据块由编译器自动创建。 2.1 2.1 源文件结构源文件结构 -26- 块的开始和结束 块的各种源文本,根据具体的块类型,由表示块的开始和结束块的各种源文本,根据具体的块类型,由表示块的开始和结束 的标准描述符和块描述符引入。的标准描述符和块描述符引入。 块名称可以采用块名称可以采用绝对方式绝对方式(例如(例如FB10FB10),也可以采用),也可以采用符号方式符号方式 (例如(例如motormotor

17、)进行声明。使用符号声明时,符号表中必须有一个相)进行声明。使用符号声明时,符号表中必须有一个相 应的条目。应的条目。 UDTUDT DBDB FBFB TYPE udt_name : END_TYPE DATA_BLOCK db_name : END_DATA_BLOCK FUNCTION_BLOCK fb_name : END_FUNCTION_BLOCK FCFC OBOB FUNCTION fc_name:function_type : END_FUNCTION ORGAINZATION_BOLCK ob_name : END_ORGAINZATION_BOLCK 块的开始和结束定义块

18、的开始和结束定义 2.1 2.1 源文件结构源文件结构 -27- 块模块 块模块包含块的开始和结束部分。在块模块包含块的开始和结束部分。在SCLSCL编辑器中,通过菜单项编辑器中,通过菜单项 insert-BOLCK Template-OB、FB、FC、DB和和UDT,对源文件中的,对源文件中的 块进行插入。块进行插入。 块模块插入块模块插入 2.1 2.1 源文件结构源文件结构 -28- 块属性 块属性包含标题、版本、块保护属性、作者等块信息。块属性包含标题、版本、块保护属性、作者等块信息。 FUNCTION_BOLCK FB10 属属 性性 声明部分声明部分 指令部分指令部分 END_FU

19、NCTION_BLOCK 标题=Controller 版本:2.1 KNOW_HOW_PROTECT 作者:Training 名字:Motor 2.1 2.1 源文件结构源文件结构 -29- 声明部分 声明部分用于定义局部和全局变量、块参数、常量和跳转标志。声明部分用于定义局部和全局变量、块参数、常量和跳转标志。 声明部分可分成各个声明块,每个声明块有自己的关键字作为标志。声明部分可分成各个声明块,每个声明块有自己的关键字作为标志。 常量常量 跳转标志跳转标志 临时变量临时变量 静态变量静态变量 CONST 声明表 END_CONST LABEL 声明表 END_LABEL VAR_TEMP

20、声明表 END_VAR VAR 声明表 END_VAR 输入参数输入参数 输出参数输出参数 输入输入/ /输出参数输出参数 结构体结构体 VAR_INPUT 声明表 END_VAR VAR_OUTPUT 声明表 END_VAR VAR_IN_OUT 声明表 END_VAR STRUCT 生明表 END_STRUCT 块的声明格式块的声明格式 2.1 2.1 源文件结构源文件结构 -30- 声明部分 FUNCTION_BOLCK FB10 属属 性性 声明部分声明部分 指令部分指令部分 END_FUNCTION_BLOCK CONST FIX_VALUE:=5; P_Part:=0.8; END

21、_CONST VAR Value1,Value2:INT; END_VAR VAR_INPUT IN1,IN2:BOOL; END_VAR VAR_OUTPUT Q01:BOOL; Display:INT; END_VAR 2.1 2.1 源文件结构源文件结构 -31- 声明数据 声明数据可以通过声明数据可以通过insert-Block Template-Constant、Parameter 进行插入模板。进行插入模板。 声明数据插入声明数据插入 2.1 2.1 源文件结构源文件结构 -32- 指令部分 程序段(程序段(OBOB、FBFB、FCFC)被调用后,块的指令部分包含的指令将)被调用后

22、,块的指令部分包含的指令将 被执行。这些指令的作用是处理数据和地址。对于数据块,指令还被执行。这些指令的作用是处理数据和地址。对于数据块,指令还 可以将某些值保存在数据块中。可以将某些值保存在数据块中。 各种指令可以归纳为各种指令可以归纳为赋值、控制指令、子程序处理赋值、控制指令、子程序处理三类:三类: 赋值:用来将某个表达式或某个值赋给某个变量;赋值:用来将某个表达式或某个值赋给某个变量; 控制指令:用来在程序中实现分支或重复执行指令;控制指令:用来在程序中实现分支或重复执行指令; 子程序处理:用来调用函数和功能。子程序处理:用来调用函数和功能。 2.1 2.1 源文件结构源文件结构 -33

23、- 指令部分 FUNCTION_BOLCK FB10 属属 性性 声明部分声明部分 指令部分指令部分 END_FUNCTION_BLOCK BEGIN /位运算、算法实例 Q0.0:=I0.0 AND I0.1; MW20:=MW22+MW24; /赋值实例 Measured_Value:=0; /控制指令 IF I1.1 THEN N:=0; SUM:=0.0; ELSEIF START=TRUE THEN N:=N+1; SUM:=SUM+IN; ELSE OK:=FALSE; END_IF; /子程序调用实例 FB10.DB2(Pa:=10,Pa2:=MW2) Result:=DB2.M

24、VAL8; 2.1 2.1 源文件结构源文件结构 -34- 指令部分注意事项 采用指令进行编程时,需要注意:采用指令进行编程时,需要注意: 指令部分以关键词指令部分以关键词BEGINBEGIN为开始,以块结束关键词为结束;为开始,以块结束关键词为结束; 每一个指令都以一个分号为结束;每一个指令都以一个分号为结束; 指令部分中使用的全部标识符都必须在声明部分定义或在符号指令部分中使用的全部标识符都必须在声明部分定义或在符号 表中定义。表中定义。 2.1 2.1 源文件结构源文件结构 -35- 指令插入 可以通过可以通过insert-Control structure-IF,CASE,FOR,WH

25、ILE, REPEAT对控制结构模块进行插入。对控制结构模块进行插入。 控制结构插入控制结构插入 2.2 2.2 组织块(组织块(OBOB)的结构)的结构 -36- 概述 组织块只能由操作系统调用,循环调用或在出现特定事件时调组织块只能由操作系统调用,循环调用或在出现特定事件时调 用。通常在组织中调用含有实际程序代码的用。通常在组织中调用含有实际程序代码的FCFC和和FBFB。 为了能够正常地运行,每一个组织块基本上都要求有为了能够正常地运行,每一个组织块基本上都要求有2020字节的字节的 局部数据。需要指出的是,也可以声明其他更多的局部数据局部数据。需要指出的是,也可以声明其他更多的局部数据

26、 。 OBOB编号编号 用途用途 OBOB编号编号 用途用途 OB1OB1 循环程序循环程序 OB83OB83 插入插入/ /删除中断删除中断 OB10OB10- -1717 时钟中断时钟中断 OB84OB84 CPUCPU硬件故障硬件故障 OB20OB20- -2323 延迟中断延迟中断 OB85OB85 程序顺序错误程序顺序错误 OB30OB30- -3838 循环中断循环中断 OB86OB86 DPDP故障故障 OB40OB40- -4747 硬件中断硬件中断 OB87OB87 通信错误通信错误 OB80OB80 时间错误时间错误 OB100OB100- -102102 启动组织块启动组

27、织块 OB81OB81 电源故障电源故障 OB121OB121 编程错误编程错误 OB82OB82 诊断中断诊断中断 OB122OB122 IOIO访问错误访问错误 2.2 2.2 组织块(组织块(OBOB)的结构)的结构 -37- 组织块结构 FUNCTON FC62:BOOL VAR_INPUT IN1:Bool; IN2:Bool; END_VAR BEGIN . FC62:=IN1 AND IN2; END_FUNCTION FUNCTON FC61:VOID BEGIN . Q0.0:=I0.0 AND I0.1; END_FUNCTION ORGANIZATION_BLOCK OB

28、1 VAR_TEMP info:ARRAY0.19 OF BYTE; END_VAR BEGIN FC61(); Q4.0:=FC62(IN1:=I4.0,IN2:=I4.1) Q4.1:=M10.4 END_ORGANIZATION_BLOCK OB1可替换成符可替换成符 号表中的符号号表中的符号 必须声明必须声明20个字节个字节 的局部数据,也可的局部数据,也可 以声明其他临时性以声明其他临时性 的局部变量的局部变量 调用调用FC61,无输,无输 入输出和返回值入输出和返回值 调用调用FC62,有输,有输 入输出和返回值入输出和返回值 一般赋值一般赋值 指令操作指令操作 2.3 2.3 函

29、数(函数(FC/SFCFC/SFC)的结构)的结构 -38- 概述 FCFC是一个程序段,该程序段中可以使用所有的是一个程序段,该程序段中可以使用所有的S7S7和和SCLSCL指令。用指令。用 户可以访问户可以访问CPUCPU存储区,如输入输出、数据块、时间、计数器等。这存储区,如输入输出、数据块、时间、计数器等。这 种方式可以以种方式可以以绝对方式或符号方式绝对方式或符号方式进行。进行。 为了保证为了保证FCFC的通用性,的通用性,FCFC不应直接访问输入输出、数据块、时不应直接访问输入输出、数据块、时 间、计数器等。需要实现类似功能时,可以间、计数器等。需要实现类似功能时,可以向向FCFC

30、提供相应参数(形提供相应参数(形 式参数调用)式参数调用),即通过参数告诉这些参数功能的声明部分。,即通过参数告诉这些参数功能的声明部分。 FUNCTION FC62:BOOL VAR_INPUT IN1:Bool; IN2:Bool; END_VAR BEGIN . FC62:=IN1 AND IN2; END_FUNCTION 2.3 2.3 函数(函数(FC/SFCFC/SFC)的结构)的结构 -39- 返回值 FCFC分有返回值与无返回值两种方式。分有返回值与无返回值两种方式。 有返回值:函数功能完成后,会将结果传递给调用者。调用者有返回值:函数功能完成后,会将结果传递给调用者。调用者

31、 必须接受该结果并保存在某个变量。函数返回的数据类型在函必须接受该结果并保存在某个变量。函数返回的数据类型在函 数中定义。数中定义。 如:如:FUNCTION FC62:BOOL Q4.0:=FC62(IN1:=I4.0,IN2:=I4.1) 无返回值:函数不需要其他返回值。对于这类函数需要进行相无返回值:函数不需要其他返回值。对于这类函数需要进行相 关声明。关声明。 如:如:FUNCTION FC61:VOID 2.3 2.3 函数(函数(FC/SFCFC/SFC)的结构)的结构 -40- 调用参数赋值 FCFC调用可以使用多个返回值,这些返回值需要在输出参数或输调用可以使用多个返回值,这些

32、返回值需要在输出参数或输 入输出参数中进行定义。调用者必须提供全部这些参数,参数调用入输出参数中进行定义。调用者必须提供全部这些参数,参数调用 顺序无关紧要。顺序无关紧要。 Distance:=FC63(x1:1,x2:=3,y1:=1,y2:=5,GRADIENT:=Inclination) 用来接收返用来接收返 回值的变量回值的变量 输入参数输入参数 输出参数输出参数 用来接收输出用来接收输出 参数的变量参数的变量 2.3 2.3 函数(函数(FC/SFCFC/SFC)的结构)的结构 -41- OK标志 OKOK标志用来表示某个块运行是否正确无误。标志用来表示某个块运行是否正确无误。它是一

33、个局部布尔它是一个局部布尔 类型变量,用户程序在使用类型变量,用户程序在使用OKOK标志时,可在编译前勾选编译器选项。标志时,可在编译前勾选编译器选项。 如果运行期间发生错误(例如乘法溢出等)。如果运行期间发生错误(例如乘法溢出等)。OKOK标志将被置位成标志将被置位成 FALSEFALSE。 在程序块中可以访问更改在程序块中可以访问更改OKOK标志。块调用结束后,标志。块调用结束后,OKOK标志被保标志被保 存在输出参数存在输出参数ENOENO中。中。 2.3 2.3 函数(函数(FC/SFCFC/SFC)的结构)的结构 -42- OK标志使用 FC83FC83运行无误时才运行运行无误时才运

34、行FC62FC62 IF(X2-X1)=0 OR STEIGUNG=9 逻辑表达式 (n5) AND (n20) 运算符 赋值运算 := 算术运算 *,/,MOD,DIV,-,* 比较运算 ,=,=, 逻辑运算 NOT,AND,OR,XOR 操作数 常数 30.0,99,siemens 扩展变量 IB5,DB10.DW5,Motor.Power,status ()中的变量 (3+const_int)*(VAR_INT)*3)/3.14 3.2 3.2 数据运算数据运算 -60- 运算数据类型 对于对于SCLSCL编程语言而言,赋值和块参数传递操作,要求表达式的编程语言而言,赋值和块参数传递操作

35、,要求表达式的 值拥有特定的数据类型。值拥有特定的数据类型。必要时,必须进行转换(必要时,必须进行转换(INTDINTREALINTDINTREAL)。)。 表达式的类型由相关操作数的数据类型和运算符确定。表达式的类型由相关操作数的数据类型和运算符确定。 两个具备不同数据类型的操作数进行结合时,或将赋值时,必两个具备不同数据类型的操作数进行结合时,或将赋值时,必 须针对具体情况仔细考虑数据类型的相容性。须针对具体情况仔细考虑数据类型的相容性。 实例: INPUT1:INT; INPUT2:DINT; result:=INPUT1+INPUT2; 运算时先将运算时先将INPUT1转换成转换成DI

36、NT,计算结果必定术语,计算结果必定术语DINT类型。类型。 3.2 3.2 数据运算数据运算 -61- 隐式转换 编译器在很多情况下都会自动执行隐式转换。源数据类型比目编译器在很多情况下都会自动执行隐式转换。源数据类型比目 的数据类型长度少就是此类情况。这种转换不丢失任何信息。的数据类型长度少就是此类情况。这种转换不丢失任何信息。 BYTE_TO_WORDBYTE_TO_WORD DINT_TO_REALDINT_TO_REAL INT_TO_REALINT_TO_REAL INT_TO_DINTINT_TO_DINT WORD_TO_DWORDWORD_TO_DWORD等等 实例: SPE

37、ED_REAL:=INT_TO_REAL(MW10); Result:=SQRT(INT_TO_REAL(WORD_TO_INT(IW2); 转换非必要单转换非必要单 可以提高程序可以提高程序 易读性易读性 如果如果IW2在符号表中声在符号表中声 明为明为WORD,则此类转,则此类转 换为必需的。换为必需的。 3.2 3.2 数据运算数据运算 -62- 显式转换 以下情况需要进行显示情况:以下情况需要进行显示情况: 更改数据类型(更改数据类型(WORDWORD- -INTINT) 目标数据类型比源数据类型低级(目标数据类型比源数据类型低级( DINTDINT- -INT INT ) 所需要的指

38、令:所需要的指令: INT_TO_WORDINT_TO_WORD REAL_TO_INTREAL_TO_INT DINT_TO_DWORDDINT_TO_DWORD REAL_TO_DWORDREAL_TO_DWORD等等 3.2 3.2 数据运算数据运算 -63- 比较运算 比较运算符大致可以分成两类:比较运算符大致可以分成两类: I I类要求相关操作数之间具备顺序关系;类要求相关操作数之间具备顺序关系; IIII类则不要求操作数之间的顺序关系。类则不要求操作数之间的顺序关系。 类型类型 运算符运算符 表达式表达式 实例实例 I类 要求操作 数具备顺 序关系 小于 AB 小于等于 = A A

39、B 大于等于 = A=B II类 不要求操 作数具备 顺序关系 等于 = A=B 不等于 AB 3.2 3.2 数据运算数据运算 -64- 逻辑运算与位操作 借助借助NOTNOT、ANDAND、XORXOR、OROR这些晕算符号,可以完成逻辑运算和位这些晕算符号,可以完成逻辑运算和位 操作。运算结果可以是:操作。运算结果可以是: BOOLBOOL型:条件是所涉及的操作数均是型:条件是所涉及的操作数均是BOOLBOOL型;型; BYTEBYTE、WORDWORD、DWORDDWORD型,所涉及操作数中的最高级数据;型,所涉及操作数中的最高级数据; 赋值给某个字时,位数据将出现在该字节的最右面。赋

40、值给某个字时,位数据将出现在该字节的最右面。 实例: BOOL_1:=NOT (INT_1INT_2); /BYTE_1=2#0000 0001 BYTE_2:=BYTE_3 AND FALSE; /BYTE_2=2#0000 0000 BOOL_1:=BYTE_1 AND TRUE /编译出错 3.2 3.2 数据运算数据运算 -65- 标准值函数 类型类型 函数名称函数名称 输入参数输入参数 函数值函数值 说明说明 常规函数 ABS ANY_NUM ANY_NUM 取绝对值 SQR ANY_NUM ANY_NUM 求平方 SQRT ANY_NUM ANY_NUM 求平方根 对数函数 EXP

41、 ANY_NUM ANY_NUM E为底的整数幂运算 EXPO ANY_NUM ANY_NUM 10为底的整数幂运算 LN ANY_NUM ANY_NUM 自然对数运算 LOG ANY_NUM ANY_NUM 10为底的对数运算 三角函数 ACOS ANY_NUM ANY_NUM 反余弦 ASIN ANY_NUM ANY_NUM 反正弦 ATAN ANY_NUM ANY_NUM 反正切 COS ANY_NUM ANY_NUM 余弦 SIN ANY_NUM ANY_NUM 正弦 TAN ANY_NUM ANY_NUM 正切 3.3 3.3 定时计数功能定时计数功能 -66- 定时器 与与STLS

42、TL、LADLAD和和FBDFBD相同,可以使用相同,可以使用SCLSCL中的定时器功能和中的定时器功能和CPUCPU的硬的硬 件定时器。有件定时器。有5 5种不同类型的定时器可供选择:种不同类型的定时器可供选择: 类型类型 功能功能 S_PULS 脉冲定时器 S_PEXT 扩展脉冲定时器 S_ODT 延时接通定时器 S_ODTS 延时保持接通定时器 S_OFFDT 延时断开定时器 参数参数 数据类型数据类型 说明说明 T_NO TIMER 定时器标识 号 S BOOL 启动输入 TV S5TIME 时间值初始 化(BCD格式) R BOOL 复位输入 Q BOOL 定时器状态 BI WORD

43、 剩余时间 (二进制) 定时器类型定时器类型 定时器功能引脚定时器功能引脚 3.3 3.3 定时计数功能定时计数功能 -67- 定时器 MW4:=S_ODT(T_NO:=T1,S:=I0.0,TV:=t#6s,R:=I0.1,BI:=MW2,Q:=Q0.6) MW4MW4数据类型数据类型 在符号表中必在符号表中必 须为须为S5TIMES5TIME, BCDBCD返回值返回值 时间类型为时间类型为T#T#, 不是不是S5T#S5T# 3.3 3.3 定时计数功能定时计数功能 -68- 计数器 与与STLSTL、LADLAD和和FBDFBD相同,可以使用相同,可以使用SCLSCL中的计数器功能和中

44、的计数器功能和CPUCPU的硬的硬 件计数器。有件计数器。有3 3种不同类型的计数器可供选择:种不同类型的计数器可供选择: 计数器计数器功能引脚功能引脚 类型类型 功能功能 S_CU 加计数器 S_CD 减计数器 S_CUD 加减计数器 参数参数 数据类型数据类型 说明说明 C_NO COUNTER 计数器编号 CU BOOL 加计数输入 CD BOOL 减计数输入 S BOOL 用于计数器初始化输入 PV WORD 计数器初始值 R BOOL 复位输入 Q BOOL 计数器输出状态 CV WORD 当前二进制计数值输出 计数器类型计数器类型 3.3 3.3 定时计数功能定时计数功能 -69-

45、 计数器 MW4:=S_CUD(C_NO:=T1,CU:=I0.0,CD:=I0.1,S:=I0.2,PV:=16#990, R:=I0.3,CV:=MW2,Q:=Q0.0) MW4MW4数据类型数据类型 在符号表中必在符号表中必 须为须为WORDWORD, BCDBCD类返回值类返回值 计数器初值为计数器初值为 BCDBCD码码16#.16#., 不是不是C#.C#. 3.4 3.4 控制指令控制指令 -70- 概述 借助控制指令,可以改变正常的指令执行顺序。借助控制指令,可以改变正常的指令执行顺序。控制指令大致控制指令大致 分为三类,分别是条件指令、循环指令和跳转指令。分为三类,分别是条件

46、指令、循环指令和跳转指令。 采用条件指令(采用条件指令(IFIF和和CASECASE指令)可以选择不同的程序执行路径;指令)可以选择不同的程序执行路径; 循环指令(循环指令(FORFOR、WHILEWHILE和和REAPEATREAPEAT指令)用于重复地执行指令;指令)用于重复地执行指令; 跳转指令(跳转指令(CONTINUECONTINUE、EXITEXIT和和GOTOGOTO指令)可以中断执行顺序并指令)可以中断执行顺序并 跳转至某个点继续执行。跳转至某个点继续执行。 3.4 3.4 控制指令控制指令 -71- IF指令 语语 法法 实实 例例 IF THEN ELSIF THEN ;/

47、可选 . . ELSIF THEN ; /可选 ELSE END_IF IF INPUT=FALSE THEN N:=0; SUM:=0.0; OK:=FALSE; ELSIF START=_OK THEN N:=N+1; SUM:=SUM+IN; ELSE OK:=FALSE; END_IF 3.4 3.4 控制指令控制指令 -72- CASE指令 语语 法法 实实 例例 CASE OF : ; : ; . . : ; ELSE ; ENDCASE CASE TW OF /TW为INT类型 1: DISPLAY:=OVEN_TEMP; 2: DISPLAY:=MOTOR_SPEED; 3:

48、DISPLAY:=GROSS_TARE; AW=16#0003; 4.10: DISPLAY:=0; TW_ERROR:=1; END_CASE; 3.4 3.4 控制指令控制指令 -73- FOR指令 语语 法法 实实 例例 FOR TO BY DO ; END_FOR FUNCTION_BLOCK FB20 VAR INDEX:INT; KEYWORD:ARRAY1.51 OF STRING8; END_VAR BEGIN FOR INDEX:=1 TO 51 BY 2 DO IF KEYWORDINDEX=KEYTHEN EXIT; END_IF END_FOR END_FUNCTION

49、_BLOCK 3.4 3.4 控制指令控制指令 -74- WHILE指令 语 语 法法 实实 例例 WHILE DO ; END_WHILE FUNCTION_BLOCK FB20 VAR INDEX:INT; KEYWORD:ARRAY1.51 OF STRING8; END_VAR BEGIN INDEX:=1; WHILE INDEX=51 AND KEYWORDINDEXKEY DO INDEX:=INDEX+2; END_WHILE; END_FUNCTION_BLOCK 3.4 3.4 控制指令控制指令 -75- REPEAT指令 语语 法法 实实 例例 REPEAT ; UNTI

50、L END_REPEAT FUNCTION_BLOCK FB20 VAR INDEX:INT; KEYWORD:ARRAY1.51 OF STRING8; END_VAR BEGIN INDEX:=-1; REPEAT INDEX:=INDEX+2; UNTIL INDEX51 OR KEYWORDINDEX=KEY END_FUNCTION_BLOCK 3.4 3.4 控制指令控制指令 -76- CONTINUE指令 语语 法法 实实 例例 CONTINUE INDEX:=0; WHILE INDEX=100 DO INDEX:=INDEX+1; IF FIELDINDEX=INDEX TH

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 电子与机械类
版权提示 | 免责声明

1,本文(西门子S7-SCL编程与应用.pptx)为本站会员(淡淡的紫竹语嫣)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|