西门子S7SCL编程与应用.pptx
《西门子S7SCL编程与应用.pptx》由会员分享,可在线阅读,更多相关《西门子S7SCL编程与应用.pptx(92页珍藏版)》请在课桌文档上搜索。
1、西门子S7-SCL编程与应用,第一章 SCL语言概述,-2-,1.1 SCL语言,-3-,概述 SCL(结构化控制语言)是一种用于S7-300/400和 C7等自动化系统的高级文本编程语言。借助SCL,可以简化控制技术领域复杂的计算、算法、数据管理和数据组织等编程工作。IF New_valueOld_value THEN index:=(index mod max_values)+1;measurement_valuesindex:=INT_TO_REAL(measurement);END IF;,SCL编程语言,1.1 SCL语言,-4-,编程标准 SCL符合语言标准DIN EN-61131
2、 Part3(国际标准IEC 1131-3)。DIN EN-61131 Part3(国际标准IEC 1131-3)对可编程控制器的编程语言实现了标准化。SCL的基础是该标准中的ST“结构化文本”部分。SCL类似于Pascal,具备高级标称语言的所有优势。SCL除了有清晰的控制结构和丰富的数据概念,还拥有例如过程和函数等重要内容。因此采用了SCL,可以编制结构清洗,易读性好的程序。,1.1 SCL语言,-5-,应用领域复杂的数学函数功能,例如:调节器数据管理配方管理具有大量分支和循环结构的程序特点易于掌握可短时间开发易读性更好的程序可间接地描述复杂的算法支持S7中的块和数据类型等概念与S7语言(
3、LAD、FBD、STL)实现系统集成,1.2 软件安装,-6-,概述 S7-SCL选件包需单独进行安装。将选件包存放在英文目录下,双节setup.exe,即可开始执行安装程序。,1.2 软件安装,-7-,软件验证 当S7-SCL选件包安装后,可以在STEP 7 Manager中插入 SCL源文件。,源文件插入,1.3 S7-SCL与SIMATIC Manager,-8-,软件架构 S7-SCL的程序以源文件的格式出现在Source文件夹中,通过编译器将程序块编译,生成执行块并保存在Block文件夹内。,源文件存放位置,执行程序存放位置,共用符号表,1.3 S7-SCL与SIMATIC Mana
4、ger,-9-,设置 在使用SCL之前,需要检查并调整某些个性化设置。在SCL编程界面中,通过点击Option-Customize进行软件设置。,1.3 S7-SCL与SIMATIC Manager,-10-,设置,生成块设置,编译设置,编辑设置,必选,1.4 程序结构,-11-,概述 一个SCL程序可以由一个或多个SCL源文件构成。采用SCL编辑器可以编辑这些源文件。采用一个还是多个源文件取决于具体目标。若需要多个独立的块,则应选用每个块一个源文件的方式。如果需要创建一个完整的程序或者某个程序的一个组成部分,则可以在一个源文件中包含多个块。,1.4 程序结构,-12-,结构图,OB1、FC2
5、、FB9与背景DB,1.4 程序结构,-13-,调用顺序 在SCL程序编写时,必须要注意源程序的块调用顺序。例如:在OB1先调用FC2,再调用FB9,则必须先编译FB9,再编译FC2,最后编译OB1。这意味着,在源文件中,FB9必须在FC2之前,FC2必须在OB1之前,OB1,FC2,背景DB,FB9,程序调用顺序:OB1FC2 FB9,OB1、FC2、FB9与背景DB,同一个源文件中的程序编写次序,注意先后,编译次序:FB9FC2 OB1,1.4 程序结构,-14-,SCL控制文件 一个SCL程序可以由多个SCL源文件组成。SCL控制文件根据调用编译时各个源文件的编译顺序依次编译各文件。,O
6、B1FC3FC5,OB32FC17FB22,DB2DB3FC77,1.4 程序结构,-15-,SCL控制文件,用于SCL编译器的控制文件,如果在SCL源文件2中调用SCL源文件3内包含的块,则在SCL控制文件中,SCL源文件3必须在SCL源文件2的前面。,源文件1,源文件2,源文件2,多个源文件构成一个完成程序,1.4 程序结构,-16-,块库 在源文件中将需要调用库中的块复制到Block程序块中。,程序库,程序库文件,1.5 文件操作,-17-,导入源文件,右击插入新对象-外部源文件用于外部程序导入,1.5 文件操作,-18-,导出源文件,右击源文件-导出源文件用于源文件导出操作,1.5 文
7、件操作,-19-,编译源文件,编译按键,1.5 文件操作,-20-,下载与帮助,编译结果出错E:错误W:警告按F1进入帮助,下载按键,第二章 创建和调用块,-21-,第二章 创建和调用块,-22-,2.1 源文件结构,-23-,概述 一个SCL源文件可以包含任意个块:如OB块、FB块、FC块、DB块和UDT块。SCL源文件中的每一个独立的块,都有一个用于构建该块的标准描述符(表示块开始和块结束)。标准描述符取决于块类型,块本身则由一个声明部分和一个指令部分组成。,2.1 源文件结构,-24-,文件结构,DB5,FB10,FC62,FC61,OB1,FUNCTION_BOLCK FB10,属 性
8、,声明部分,指令部分,END_FUNCTION_BLOCK,2.1 源文件结构,-25-,源文件编译顺序 为了使SCL源文件可以顺利地编译成功,涉及编译顺序,需注意:被调用块必须始终先于调用他们的块完成声明;用户自定义数据类型(UDT)必须先于使用该数据类型的所有块之前完成声明;全局数据块必须先于访问该全局数据块的所有块之前完成声明如果源文件创建了OB1块,则该块通常位于顺序的末尾;背景数据块由编译器自动创建。,2.1 源文件结构,-26-,块的开始和结束 块的各种源文本,根据具体的块类型,由表示块的开始和结束的标准描述符和块描述符引入。块名称可以采用绝对方式(例如FB10),也可以采用符号方
9、式(例如motor)进行声明。使用符号声明时,符号表中必须有一个相应的条目。,块的开始和结束定义,2.1 源文件结构,-27-,块模块 块模块包含块的开始和结束部分。在SCL编辑器中,通过菜单项insert-BOLCK Template-OB、FB、FC、DB和UDT,对源文件中的块进行插入。,块模块插入,2.1 源文件结构,-28-,块属性 块属性包含标题、版本、块保护属性、作者等块信息。,FUNCTION_BOLCK FB10,属 性,声明部分,指令部分,END_FUNCTION_BLOCK,标题=Controller版本:2.1KNOW_HOW_PROTECT作者:Training名字:
10、Motor,2.1 源文件结构,-29-,声明部分 声明部分用于定义局部和全局变量、块参数、常量和跳转标志。声明部分可分成各个声明块,每个声明块有自己的关键字作为标志。,块的声明格式,2.1 源文件结构,-30-,声明部分,FUNCTION_BOLCK FB10,属 性,声明部分,指令部分,END_FUNCTION_BLOCK,CONST FIX_VALUE:=5;P_Part:=0.8;END_CONSTVAR Value1,Value2:INT;END_VARVAR_INPUT IN1,IN2:BOOL;END_VARVAR_OUTPUT Q01:BOOL;Display:INT;END_
11、VAR,2.1 源文件结构,-31-,声明数据 声明数据可以通过insert-Block Template-Constant、Parameter进行插入模板。,声明数据插入,2.1 源文件结构,-32-,指令部分 程序段(OB、FB、FC)被调用后,块的指令部分包含的指令将被执行。这些指令的作用是处理数据和地址。对于数据块,指令还可以将某些值保存在数据块中。各种指令可以归纳为赋值、控制指令、子程序处理三类:赋值:用来将某个表达式或某个值赋给某个变量;控制指令:用来在程序中实现分支或重复执行指令;子程序处理:用来调用函数和功能。,2.1 源文件结构,-33-,指令部分,FUNCTION_BOLC
12、K 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.MVAL8;,2.1 源文件结构,-34-,指令部分注意事项 采用指令进行编程时,需
13、要注意:指令部分以关键词BEGIN为开始,以块结束关键词为结束;每一个指令都以一个分号为结束;指令部分中使用的全部标识符都必须在声明部分定义或在符号表中定义。,2.1 源文件结构,-35-,指令插入 可以通过insert-Control structure-IF,CASE,FOR,WHILE,REPEAT对控制结构模块进行插入。,控制结构插入,2.2 组织块(OB)的结构,-36-,概述 组织块只能由操作系统调用,循环调用或在出现特定事件时调用。通常在组织中调用含有实际程序代码的FC和FB。为了能够正常地运行,每一个组织块基本上都要求有20字节的局部数据。需要指出的是,也可以声明其他更多的局部
14、数据。,2.2 组织块(OB)的结构,-37-,组织块结构,FUNCTON FC62:BOOLVAR_INPUT IN1:Bool;IN2:Bool;END_VARBEGIN.FC62:=IN1 AND IN2;END_FUNCTIONFUNCTON FC61:VOIDBEGIN.Q0.0:=I0.0 AND I0.1;END_FUNCTIONORGANIZATION_BLOCK OB1VAR_TEMP info:ARRAY0.19 OF BYTE;END_VARBEGIN FC61();Q4.0:=FC62(IN1:=I4.0,IN2:=I4.1)Q4.1:=M10.4END_ORGANIZ
15、ATION_BLOCK,OB1可替换成符号表中的符号,必须声明20个字节的局部数据,也可以声明其他临时性的局部变量,调用FC61,无输入输出和返回值,调用FC62,有输入输出和返回值,一般赋值指令操作,2.3 函数(FC/SFC)的结构,-38-,概述 FC是一个程序段,该程序段中可以使用所有的S7和SCL指令。用户可以访问CPU存储区,如输入输出、数据块、时间、计数器等。这种方式可以以绝对方式或符号方式进行。为了保证FC的通用性,FC不应直接访问输入输出、数据块、时间、计数器等。需要实现类似功能时,可以向FC提供相应参数(形式参数调用),即通过参数告诉这些参数功能的声明部分。,FUNCTIO
16、N FC62:BOOLVAR_INPUT IN1:Bool;IN2:Bool;END_VARBEGIN.FC62:=IN1 AND IN2;END_FUNCTION,2.3 函数(FC/SFC)的结构,-39-,返回值 FC分有返回值与无返回值两种方式。有返回值:函数功能完成后,会将结果传递给调用者。调用者必须接受该结果并保存在某个变量。函数返回的数据类型在函数中定义。如:FUNCTION FC62:BOOL Q4.0:=FC62(IN1:=I4.0,IN2:=I4.1)无返回值:函数不需要其他返回值。对于这类函数需要进行相关声明。如:FUNCTION FC61:VOID,2.3 函数(FC/
17、SFC)的结构,-40-,调用参数赋值 FC调用可以使用多个返回值,这些返回值需要在输出参数或输入输出参数中进行定义。调用者必须提供全部这些参数,参数调用顺序无关紧要。,Distance:=FC63(x1:1,x2:=3,y1:=1,y2:=5,GRADIENT:=Inclination),用来接收返回值的变量,输入参数,输出参数,用来接收输出参数的变量,2.3 函数(FC/SFC)的结构,-41-,OK标志 OK标志用来表示某个块运行是否正确无误。它是一个局部布尔类型变量,用户程序在使用OK标志时,可在编译前勾选编译器选项。如果运行期间发生错误(例如乘法溢出等)。OK标志将被置位成FALSE
18、。在程序块中可以访问更改OK标志。块调用结束后,OK标志被保存在输出参数ENO中。,2.3 函数(FC/SFC)的结构,-42-,OK标志使用,FC83运行无误时才运行FC62,IF(X2-X1)=0 OR STEIGUNG0 THEN OK:=FALSE;ELSE OK:=TRUE;END IF;,连环调用OK标志应用,2.3 函数(FC/SFC)的结构,-43-,EN和ENO 每一个FC和FB都有隐式定义的输入参数EN和输出参数ENO。他们都是布尔类型参数。调用时,不需要向这两个参数提供值。调用某个块时,仅当EN为TRUE时,该块才能执行。,Q4.0:=FC62(EN:=M100.0,IN
19、1:=I4.0,IN2=I4.2)Error:=ENO;,M100.0为1时,FC62才能运行。此外,也可以用ENO代替M100.0,即只有上一个被调用FC或FB正确无误地运行结束,才运行FC62。,通过该变量,可以知道FC62运行是否出现错误,2.3 函数(FC/SFC)的结构,-44-,EN和ENO使用,FC63,Distance:=FC63(x1:=MW10,.);/调用FC63Error_FC63:=ENO;/ENO来自FC63/如果FC63正确无语,则调用FC62。FC62(EN:=Error_FC63,STEIG:=inclination.),FC62,OB1,2.4 功能块(FB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西门子 S7SCL 编程 应用
链接地址:https://www.desk33.com/p-380064.html