• QQ空间
  • 回复
  • 收藏

PLC高级编程-SCL结构化控制语言

东方头条 2019-10-06 18:56:55 科技

写在前面

传说程序员之间存在语言鄙视链,学汇编语言的站在最顶端,鄙视一切,学C/C++的鄙视JAVA和C#,然后JAVA和C#互相鄙视,其实搞PLC的也有类似鄙视链,搞ST或者SCL的鄙视FBD和LAD,对于搞西门子PLC的工程师来说,或许SCL就是高级编程,今天我们就来讲讲SCL吧~

有很多朋友想学习SCL语言,其实不要把SCL或ST语言想的有多高大上。

首先看下什么是SCL语言:SCL语言是一种结构化文本,类似于计算机高级语言的编程方式,他的语言规范解决计算机的PASCAL语言。

S7-SCL(Structured Control Language 结构化控制语言) 具有以下特点:

· 1、是一种类似于PASCAL的高级编程语言

· 2、符合国际标准IEC 61131-3

· 3、PLCopen基础级认证

· 4、适用于 S7-300 (推荐CPU314以上), S7-400,S7-1200,S7-1500, C7 and WinAC

· S7-SCL 为 PLC 做了优化处理,它不仅仅具有 PLC 典型的元素(例如 输入/输出,定时器,计数器,符号表),而且具有高级语言的特性, 例如:循环, 选择,分支,数组 ,高级函数。

S7-SCL 其非常适合于如下任务:

· * 复杂运算功能

· * 复杂数学函数

· * 数据管理

· * 过程优化

讲这些概念的东西是很空洞的,只要了解下即可,那么关键问题来了,怎么学习呢?

我仅仅说下我自己的观点,刚开始学就是要学习SCL的指令怎么使用,刚开始的时候我们可以以一些梯形图实现的功能来用SCL来实现,逐步熟悉SCL基本指令的使用。

本文就一些梯形图中用的最多的起保停电路来熟悉SCL的条件执行和赋值指令的使用:

我们常见的起保停梯形图,如下图所示:

上图就是典型的梯形图,当enable信号为1,同时stop为0,则start为1。

那么用SCL怎么表示呢:

这个运算表达式是什么?

(enable 或 start)与stop的非 的运算结果为TRUE时,则start为true。

再换个方法理解:就是(enable 或 start)与stop的非的运算结果赋值给start。

在SCL中赋值指令是“:=”,(注意要使用英文),所以上面的表达式写成SCL指令:

仿真如下:

那么用IF THEN语句怎么编写程序呢?

If then语句是条件执行指令,也就是说如果满足该条件,则将执行 THEN 后编写的指令。如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行。

在本例的起保停程序是不是可以理解成当enable为TRUE,将start给置位为true,当stop为true则复位start为false。

因为在SCL中没有置位和复位,所以一般用if then条件执行语句来实现置位和复位。

那么本例的程序用IF THEN 写成如下程序:

仿真如下:

就是这么简单。

对于很多小伙伴会觉得掌握了SCL也许就算工控水平不错了,但是其实在小编看来,如今的自动化工程师,不掌握一门真正的诸如C++,java,C#等高级语言,不把网络知识学扎实,那在工业物联网这一波浪潮真正袭来的时候,措手不及的还是我们自己~