S7-1500——(一)西门子PLC编程从入门到精通3、基于TIA 博途结构化控制语言——SCL(一)
基于TIA 博途结构化控制语言——SCL
- 一,SCL 概述与编程基础
- 1,结构化控制语言 SCL概述
- 2,TIA 博途 SCL编程基础
- 3,TiA博述SCL编辑器设置
- 4,监视SCL块
- 二,SCL运算符、表达式与块调用
- 1,SCL运算符
- 2,SCL表达式
- 3,块调用
- 三,SCL程序控制语句
- 1,SCL程序控制指令概述
- 2,分支选择程序
- 3,循环程序
一,SCL 概述与编程基础
1,结构化控制语言 SCL概述
SCL 结构化控制语言概述
SCL结构化控制语言是一种以计算机编程语言pascal为基础的plc高级编程语言,在语法结构上,属于pascal语言的子集,SCL语言符合IEC 61131-3的标准,在这个标准中,对可编程控制器的编程语言进行了标准化的定义,SCL语言符合标准中定义的结构化文本语言ST,另外SCL也满足应用于运动控制领域的plc open标准标准的初级水平的要求
SCL与其他PLC编程语言一样,可访问plc的所有元素,包括输入信号,输出信号,定时器,计数器,位存储器等;
SCL利用简单的指令编写程序语句,实现复杂的控制以及计算功能;语句结构上包括程序分支,循环以及跳转等等;
SCL语言的另一个优势是,它是一种可以跨硬件平台使用的编程语言,全系列的S7控制器都支持SCL语言所编写的plc程序,因此,在涉及跨硬件平台的plc程序移植方面,SCL语言也具有独到的优势;根据SCL语言以上的特点,它特别适合数据处理,复杂运算以及过程优化;
数据处理
在数据处理过程中,SCL可以利用多种类型的指针对数据进行间接寻址, 因此与其他编程语言相比,SCL可以更加容易的实现诸如排序,查找等等在数据处理过程中经常使用的控制功能。
应用举例,当传送带生产线生产完一个零件后,将零件重量循环存储于数据块中定义的数组内,以供后续计算使用,分别使用三种编程语言进行编程,以实现零件重量循环存储的功能;经过简单对比,发现用SCL语言所编写的程序代码最为简洁,结构清晰,具有显著的优势;
复杂数学运算
在SCL中,可以直接利用各种算术运算符编写表达式,并实现复杂数学运算过程。相比其他编程语言,节省了大量的程序代码。
如图所示的控制任务,在直角坐标系中已知三角形直角边以及斜边端点的坐标,需要计算得出两边夹角的度数,需要在程序代码中实现多个数学公式的计算过程;
同样使用三种不同的编程语言进行编程,发现用SCL语言编写的程序代码最为简洁,适合复杂算式表达过程;
SCL语言概述——过程优化
SCL语言也可以应用于系统工程,以实现控制过程的优化,SCL符合结构化编程的要求,同时也可以和其他编程语言混合使用,充分发挥每种编程语言的技术优势。
例如,在具体应用中使用SCL语言编写不同自动化任务所需要的控制程序;最后,在主程序中对这些子程序进行调用;
这样的程序结构符合结构化编程的要求,同时可实现子程序的复用过程,节省程序代码工作量
2,TIA 博途 SCL编程基础
*方式一:添加 SCL 块
在已经创建的博途项目中,添加代码块时,可以选择SCL作为代码块儿的编程语言,代码块儿的类型包括组织块,函数块以及函数;
方式二:插入SCL网络段
也可在已添加的,并且已经选择其他编程语言的代码块中插入SCL代码段,并使用SCL语言进行编程,这样可以在代码块儿中更加灵活的使用编程语言(如下图)
方式三:外部源文件
博途项目还支持通过导入外部源文件的方式,将其他应用程序中所生成的SCL源文件,添加到博途项目中进一步通过对源文件的编译生成博途项目中的程序块;
通过这种方式, 可以由SCL源文件生成博途项目中的组织块,函数块,函数,数据块,plc数据类型;
将外部源文件添加到项目后,通过右键上下文菜单启动从源文件生成块命令选项,将在项目中生成S7程序块,存储在程序块文件夹中。
以上是在博途项目中使用SCL编程语言添加程序块的操作演示;
3,TiA博述SCL编辑器设置
SCL 编辑器
打开博途项目中的SCL块,将在工作区中显示SCL编辑器,SCL编辑器窗口主要分为接口区,代码区两个部分,也包括工具栏与收藏栏;
接口区缺省显示为表格区域,在接口区中可以定义代码块的局部变量,根据块类型的不同, 可以包括形态变量,临时变量,局部常量等对象;
其使用范围是定义了这些对象的当前程序块中;
形参作为当前程序块与外部调用过程之间的接口进行使用,用于传递变量值;
代码区显示为空白区域用于编写程序代码,在编程过程中,可以利用多种编辑功能对程序代码进行编辑,如拖放,插入代码模板,格式优化等等;
代码区也支持与其他WINDOWS应用程序进行直接复制,粘贴等交互功能,使代码编辑方式更加灵活;
变量处理
在SCL编辑器中,可以通过拖放操作为指令或者是函数的参数赋值变量,变量来源包括接口区中声明的局部变量,PLC变量表中声明的PLC变量,数据块中声明的数据块变量;