有很多朋友想学习SCL语言,其实不要把SCL或ST语言想的有多高大上。
首先看下什么是SCL语言:SCL语言是一种结构化文本,类似于计算机高级语言的编程方式,他的语言规范解决计算机的PASCAL语言。
S7-SCL(StructuredControlLanguage结构化控制语言)具有以下特点:
·1、是一种类似于PASCAL的高级编程语言
·2、符合国际标准IEC-3
·3、PLCopen基础级认证
·4、适用于S7-(推荐CPU以上),S7-,S7-,S7-,C7andWinAC
·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指令:
仿真如下:
那么用IFTHEN语句怎么编写程序呢?
Ifthen语句是条件执行指令,也就是说如果满足该条件,则将执行THEN后编写的指令。如果不满足该条件,则程序将从END_IF后的下一条指令开始继续执行。
在本例的起保停程序是不是可以理解成当enable为TRUE,将start给置位为true,当stop为true则复位start为false。
因为在SCL中没有置位和复位,所以一般用ifthen条件执行语句来实现置位和复位。
那么本例的程序用IFTHEN写成如下程序:
仿真如下: