已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西门子S7 SCL编程与应用 第一章SCL语言概述 2 1 1SCL语言 3 概述SCL 结构化控制语言 是一种用于S7 300 400和C7等自动化系统的高级文本编程语言 借助SCL 可以简化控制技术领域复杂的计算 算法 数据管理和数据组织等编程工作 IFNew valueOld valueTHENindex indexmodmax values 1 measurement values index INT TO REAL measurement ENDIF SCL编程语言 1 1SCL语言 4 编程标准SCL符合语言标准DINEN 61131Part3 国际标准IEC1131 3 DINEN 61131Part3 国际标准IEC1131 3 对可编程控制器的编程语言实现了标准化 SCL的基础是该标准中的ST 结构化文本 部分 SCL类似于Pascal 具备高级标称语言的所有优势 SCL除了有清晰的控制结构和丰富的数据概念 还拥有例如过程和函数等重要内容 因此采用了SCL 可以编制结构清洗 易读性好的程序 1 1SCL语言 5 应用领域复杂的数学函数功能 例如 调节器数据管理配方管理具有大量分支和循环结构的程序特点易于掌握可短时间开发易读性更好的程序可间接地描述复杂的算法支持S7中的块和数据类型等概念与S7语言 LAD FBD STL 实现系统集成 1 2软件安装 6 概述S7 SCL选件包需单独进行安装 将选件包存放在英文目录下 双节setup exe 即可开始执行安装程序 1 2软件安装 7 软件验证当S7 SCL选件包安装后 可以在STEP7Manager中插入SCL源文件 源文件插入 1 3S7 SCL与SIMATICManager 8 软件架构S7 SCL的程序以源文件的格式出现在Source文件夹中 通过编译器将程序块编译 生成执行块并保存在Block文件夹内 源文件存放位置 执行程序存放位置 共用符号表 1 3S7 SCL与SIMATICManager 9 设置在使用SCL之前 需要检查并调整某些个性化设置 在SCL编程界面中 通过点击Option Customize进行软件设置 1 3S7 SCL与SIMATICManager 10 设置 生成块设置 编译设置 编辑设置 必选 1 4程序结构 11 概述一个SCL程序可以由一个或多个SCL源文件构成 采用SCL编辑器可以编辑这些源文件 采用一个还是多个源文件取决于具体目标 若需要多个独立的块 则应选用每个块一个源文件的方式 如果需要创建一个完整的程序或者某个程序的一个组成部分 则可以在一个源文件中包含多个块 1 4程序结构 12 结构图 OB1 FC2 FB9与背景DB 1 4程序结构 13 调用顺序在SCL程序编写时 必须要注意源程序的块调用顺序 例如 在OB1先调用FC2 再调用FB9 则必须先编译FB9 再编译FC2 最后编译OB1 这意味着 在源文件中 FB9必须在FC2之前 FC2必须在OB1之前 OB1 FC2 背景DB FB9 程序调用顺序 OB1 FC2 FB9 OB1 FC2 FB9与背景DB 同一个源文件中的程序编写次序 注意先后 编译次序 FB9 FC2 OB1 1 4程序结构 14 SCL控制文件一个SCL程序可以由多个SCL源文件组成 SCL控制文件根据调用编译时各个源文件的编译顺序依次编译各文件 OB1FC3FC5 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文件操作 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 BOLCKFB10 属性 声明部分 指令部分 END FUNCTION BLOCK 2 1源文件结构 25 源文件编译顺序为了使SCL源文件可以顺利地编译成功 涉及编译顺序 需注意 被调用块必须始终先于调用他们的块完成声明 用户自定义数据类型 UDT 必须先于使用该数据类型的所有块之前完成声明 全局数据块必须先于访问该全局数据块的所有块之前完成声明如果源文件创建了OB1块 则该块通常位于顺序的末尾 背景数据块由编译器自动创建 2 1源文件结构 26 块的开始和结束块的各种源文本 根据具体的块类型 由表示块的开始和结束的标准描述符和块描述符引入 块名称可以采用绝对方式 例如FB10 也可以采用符号方式 例如motor 进行声明 使用符号声明时 符号表中必须有一个相应的条目 块的开始和结束定义 2 1源文件结构 27 块模块块模块包含块的开始和结束部分 在SCL编辑器中 通过菜单项insert BOLCKTemplate OB FB FC DB和UDT 对源文件中的块进行插入 块模块插入 2 1源文件结构 28 块属性块属性包含标题 版本 块保护属性 作者等块信息 FUNCTION BOLCKFB10 属性 声明部分 指令部分 END FUNCTION BLOCK 标题 Controller 版本 2 1 KNOW HOW PROTECT作者 Training名字 Motor 2 1源文件结构 29 声明部分声明部分用于定义局部和全局变量 块参数 常量和跳转标志 声明部分可分成各个声明块 每个声明块有自己的关键字作为标志 块的声明格式 2 1源文件结构 30 声明部分 FUNCTION BOLCKFB10 属性 声明部分 指令部分 END FUNCTION BLOCK CONSTFIX VALUE 5 P Part 0 8 END CONSTVARValue1 Value2 INT END VARVAR INPUTIN1 IN2 BOOL END VARVAR OUTPUTQ01 BOOL Display INT END VAR 2 1源文件结构 31 声明数据声明数据可以通过insert BlockTemplate Constant Parameter进行插入模板 声明数据插入 2 1源文件结构 32 指令部分程序段 OB FB FC 被调用后 块的指令部分包含的指令将被执行 这些指令的作用是处理数据和地址 对于数据块 指令还可以将某些值保存在数据块中 各种指令可以归纳为赋值 控制指令 子程序处理三类 赋值 用来将某个表达式或某个值赋给某个变量 控制指令 用来在程序中实现分支或重复执行指令 子程序处理 用来调用函数和功能 2 1源文件结构 33 指令部分 FUNCTION BOLCKFB10 属性 声明部分 指令部分 END FUNCTION BLOCK BEGIN 位运算 算法实例Q0 0 I0 0ANDI0 1 MW20 MW22 MW24 赋值实例Measured Value 0 控制指令IFI1 1THENN 0 SUM 0 0 ELSEIFSTART TRUETHENN N 1 SUM SUM IN ELSEOK FALSE END IF 子程序调用实例FB10 DB2 Pa 10 Pa2 MW2 Result DB2 MVAL8 2 1源文件结构 34 指令部分注意事项采用指令进行编程时 需要注意 指令部分以关键词BEGIN为开始 以块结束关键词为结束 每一个指令都以一个分号为结束 指令部分中使用的全部标识符都必须在声明部分定义或在符号表中定义 2 1源文件结构 35 指令插入可以通过insert Controlstructure IF CASE FOR WHILE REPEAT对控制结构模块进行插入 控制结构插入 2 2组织块 OB 的结构 36 概述组织块只能由操作系统调用 循环调用或在出现特定事件时调用 通常在组织中调用含有实际程序代码的FC和FB 为了能够正常地运行 每一个组织块基本上都要求有20字节的局部数据 需要指出的是 也可以声明其他更多的局部数据 2 2组织块 OB 的结构 37 组织块结构 FUNCTONFC62 BOOLVAR INPUTIN1 Bool IN2 Bool END VARBEGIN FC62 IN1ANDIN2 END FUNCTIONFUNCTONFC61 VOIDBEGIN Q0 0 I0 0ANDI0 1 END FUNCTIONORGANIZATION BLOCKOB1VAR TEMPinfo ARRAY 0 19 OFBYTE END VARBEGINFC61 Q4 0 FC62 IN1 I4 0 IN2 I4 1 Q4 1 M10 4END ORGANIZATION BLOCK OB1可替换成符号表中的符号 必须声明20个字节的局部数据 也可以声明其他临时性的局部变量 调用FC61 无输入输出和返回值 调用FC62 有输入输出和返回值 一般赋值指令操作 2 3函数 FC SFC 的结构 38 概述FC是一个程序段 该程序段中可以使用所有的S7和SCL指令 用户可以访问CPU存储区 如输入输出 数据块 时间 计数器等 这种方式可以以绝对方式或符号方式进行 为了保证FC的通用性 FC不应直接访问输入输出 数据块 时间 计数器等 需要实现类似功能时 可以向FC提供相应参数 形式参数调用 即通过参数告诉这些参数功能的声明部分 FUNCTIONFC62 BOOLVAR INPUTIN1 Bool IN2 Bool END VARBEGIN FC62 IN1ANDIN2 END FUNCTION 2 3函数 FC SFC 的结构 39 返回值FC分有返回值与无返回值两种方式 有返回值 函数功能完成后 会将结果传递给调用者 调用者必须接受该结果并保存在某个变量 函数返回的数据类型在函数中定义 如 FUNCTIONFC62 BOOLQ4 0 FC62 IN1 I4 0 IN2 I4 1 无返回值 函数不需要其他返回值 对于这类函数需要进行相关声明 如 FUNCTIONFC61 VOID 2 3函数 FC 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 在程序块中可以访问更改OK标志 块调用结束后 OK标志被保存在输出参数ENO中 2 3函数 FC SFC 的结构 42 OK标志使用 FC83运行无误时才运行FC62 IF X2 X1 0ORSTEIGUNG 0THENOK FALSE ELSEOK TRUE ENDIF 连环调用OK标志应用 2 3函数 FC SFC 的结构 43 EN和ENO每一个FC和FB都有隐式定义的输入参数EN和输出参数ENO 他们都是布尔类型参数 调用时 不需要向这两个参数提供值 调用某个块时 仅当EN为TRUE时 该块才能执行 Q4 0 FC62 EN M100 0 IN1 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 SFB 的结构 45 概述每次调用FB时 都必须有可以访问的背景数据块 FB可以将其静态变量保存在该背景数据块中 如果不同任务需要多次调用某个FB时 则每次调用该FB时 都必须有不同的背景数据块 这些背景数据块有SCL编译器自动创建 2 4功能块 FB SFB 的结构 46 FB调用FB调用分绝对调用和符号调用两种方式 输出参数的赋值需要单独进行 2 4功能块 FB SFB 的结构 47 块调用在SCL编译器中 选择菜单Insert BlockCall 完成其他功能 功能块的调用 块调用 2 4功能块 FB SFB 的结构 48 多重背景数据块 FUNCTON BLOCKFB22VAR OUTPUTOUTPUT VALUE DINT END VARBEGIN END FUNCTION BLOCKFUNCTON BLOCKFB11VARTest Status DINT Regulator 1 Regulator 2 FB22 END VARBEGIN Regulator 1 Test Regulator 1 OUTPUT Regulator 2 Status Regulator 2 OUTPUT END FUNCTION BLOCKORGANIZATION BLOCKOB1VAR TEMPinfo ARRAY 0 19 OFBYTE END VARBEGINFB11 DB33 END ORGANIZATION BLOCK FB11 OB1 FB22 FB22 Regulator 1 Regulator 2 DB33 Test Status Output Value Output Value DB33结构 Regulator 1 Regulator 2 2 5数据块的结构 49 声明在数据块声明部分中 可以声明静态变量 但在数据块中关键词为STRUCT END STRUCT 在赋值部分中 可以采用各个具体的DB值 根据应用调整声明部分的数据 DATA BLOCKDB6STRUCTPower REAL Speed INT motor STRUCTEin0 BYTE Codierer WORD Zahlen ARRAY 1 4 OFINT Aus4 BYTE 16 2e Zeichen STRING 8 siemens Anz WORD 16 123a END STRUCT END STRUCTBEGINmotor zahlen 2 6666 END DATA BLOCK 声明视图 初始值 2 5数据块的结构 50 声明在数据块声明部分中 可以声明静态变量 但在数据块中关键词为STRUCT END STRUCT 在赋值部分中 可以采用各个具体的DB值 根据应用调整声明部分的数据 DATA BLOCKDB6STRUCTPower REAL Speed INT motor STRUCTEin0 BYTE Codierer WORD Zahlen ARRAY 1 4 OFINT Aus4 BYTE 16 2e Zeichen STRING 8 siemens Anz WORD 16 123a END STRUCT END STRUCTBEGINmotor zahlen 2 6666 END DATA BLOCK 数据视图 实际值 2 5数据块的结构 51 数据块访问在SCL中对数据块寻址时 必须使用完整的数据地址 LAD STL FBD和SCL中的完整地址存在差异 DATA BLOCKDB6STRUCTPower REAL Speed INT END STRUCT END STRUCTBEGIN END DATA BLOCK FUNCTONFC68 VAR OUTPUToutput1 DINT IN2 Bool END VARBEGIN Output1 DB6 Power END FUNCTION 编译错误 数据类型不匹配 2 5数据块的结构 52 数据块类型 FC1 OB1 DB1 FC1 DB2 FUNCTONFC1 BOOLVAR INPUTbit pattern WORD DB no BLOCK DB END VARBEGIN DB no DW0 bit pattern DB no DW2 NOTbit pattern END FUNCTIONORGANIZATION BLOCKOB1VAR TEMPinfo ARRAY 0 19 OFBYTE END VARBEGINFC1 bit pattern MW0 DB no DB1 FC1 bit pattern MW2 DB no DB2 END ORGANIZATION BLOCK 多次调用DB示意图 2 6用户自定义数据类型的结构 53 UDT如果需要在一个以上的块中使用具有相同结构的变量时 此时应该定义用户自定义数据类型 UDT 用户自定义数据类型可以简化OB FC FB和DB的变量申明 TYPEUDT1STRUCTPower REAL Speed INT motor STRUCTEin0 BYTE Codierer WORD Zahlen ARRAY 1 4 OFINT Aus4 BYTE 16 2e Zeichen STRING 8 siemens Anz WORD 16 123a END STRUCT END STRUCTEND TYPE UDT视图 2 6用户自定义数据类型的结构 54 UDT如果需要在一个以上的块中使用具有相同结构的变量时 此时应该定义用户自定义数据类型 UDT 用户自定义数据类型可以简化OB FC FB和DB的变量申明 DATA BLOCKDB7STRUCTPower REAL Speed INT Data UDT1 END STRUCTBEGINData motor Zahlen 3 6666 END DATA BLOCK UDT视图 第三章语言描述 55 3 1基础知识 56 字母和数字字母和数字主要用于名称声明 描述符 或数值指定 以下字符在语法规则中具有确定的含义 3 1基础知识 57 关键字关键字是SCL中的保留字 只能用于预先确定的用途 关键字不区分大小写字母 关键字和描述符之间 必须插入分隔符 注释行注释 这是一个行注释Value1 1234 块注释 这是一个块注释 该注释占用的行数超过一行 3 1基础知识 58 操作数间接寻址可以使用直接方式或间接方式寻址CPU的内存区域 简介寻址方式可以用于PI PQ 输入和输出 位存储区和数据块 计数器和定时器除外 方括号中的一或两个INT变量用于指明操作数的地址 IB index I Byte index Bit index 3 2数据运算 59 表达式 运算符和操作数 3 2数据运算 60 运算数据类型对于SCL编程语言而言 赋值和块参数传递操作 要求表达式的值拥有特定的数据类型 必要时 必须进行转换 INT DINT REAL 表达式的类型由相关操作数的数据类型和运算符确定 两个具备不同数据类型的操作数进行结合时 或将赋值时 必须针对具体情况仔细考虑数据类型的相容性 实例 INPUT1 INT INPUT2 DINT result INPUT1 INPUT2 运算时先将INPUT1转换成DINT 计算结果必定术语DINT类型 3 2数据运算 61 隐式转换编译器在很多情况下都会自动执行隐式转换 源数据类型比目的数据类型长度少就是此类情况 这种转换不丢失任何信息 BYTE TO WORDDINT TO REALINT TO REALINT TO DINTWORD TO DWORD等 实例 SPEED REAL INT TO REAL MW10 Result SQRT INT TO REAL WORD TO INT IW2 转换非必要单可以提高程序易读性 如果IW2在符号表中声明为WORD 则此类转换为必需的 3 2数据运算 62 显式转换以下情况需要进行显示情况 更改数据类型 WORD INT 目标数据类型比源数据类型低级 DINT INT 所需要的指令 INT TO WORDREAL TO INTDINT TO DWORDREAL TO DWORD等 3 2数据运算 63 比较运算比较运算符大致可以分成两类 I类要求相关操作数之间具备顺序关系 II类则不要求操作数之间的顺序关系 3 2数据运算 64 逻辑运算与位操作借助NOT AND XOR OR这些晕算符号 可以完成逻辑运算和位操作 运算结果可以是 BOOL型 条件是所涉及的操作数均是BOOL型 BYTE WORD DWORD型 所涉及操作数中的最高级数据 赋值给某个字时 位数据将出现在该字节的最右面 实例 BOOL 1 NOT INT 1INT 2 BYTE 1 2 00000001BYTE 2 BYTE 3ANDFALSE BYTE 2 2 00000000BOOL 1 BYTE 1ANDTRUE 编译出错 3 2数据运算 65 标准值函数 3 3定时计数功能 66 定时器与STL LAD和FBD相同 可以使用SCL中的定时器功能和CPU的硬件定时器 有5种不同类型的定时器可供选择 定时器类型 定时器功能引脚 3 3定时计数功能 67 定时器 MW4 S ODT T NO T1 S I0 0 TV t 6s R I0 1 BI MW2 Q Q0 6 MW4数据类型在符号表中必须为S5TIME BCD返回值 时间类型为T 不是S5T 3 3定时计数功能 68 计数器与STL LAD和FBD相同 可以使用SCL中的计数器功能和CPU的硬件计数器 有3种不同类型的计数器可供选择 计数器功能引脚 计数器类型 3 3定时计数功能 69 计数器 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 MW4数据类型在符号表中必须为WORD BCD类返回值 计数器初值为BCD码16 不是C 3 4控制指令 70 概述借助控制指令 可以改变正常的指令执行顺序 控制指令大致分为三类 分别是条件指令 循环指令和跳转指令 采用条件指令 IF和CASE指令 可以选择不同的程序执行路径 循环指令 FOR WHILE和REAPEAT指令 用于重复地执行指令 跳转指令 CONTINUE EXIT和GOTO指令 可以中断执行顺序并跳转至某个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年北京市朝阳区初三英语上册期中考试试卷及答案
- 2025-2026学年安徽省蚌埠市四年级英语上册期中考试试卷及答案
- 2025年苏课新版五年级语文上册月考考试试题及答案
- 心理学记忆方法
- 呼吸衰竭护理评估
- 计算机毕业设计答辩
- 手术相关流程宣教
- 酒店员工晋升培训
- 国内展示设计案例分析
- 营养与膳食指导
- 麻精药品考试题及答案
- 2025年秋人教版七年级数学上册 第二章 综合测试卷
- 感觉运动整合理论-洞察及研究
- 备孕知识课件
- 小班健康活动:风婆婆与小树叶
- 国企资产管理办法细则
- 人教版(2024)八年级上册生物期末复习全册知识点考点背诵提纲
- 慢性根尖周炎病例分析
- 培训机构续费心得分享
- 医疗机构动火管理制度
- 中毒与窒息伤害事故预防培训课件
评论
0/150
提交评论