第一:S7-SCL简介
S7-SCL(Structured Control Language 结构化控制语言) 具有以下特点:
是一种类似于PASCAL的高级编程语言,符合国际标准IEC 61131-3PLCopen基础级认证适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinACS7-SCL 为 PLC 做了优化处理,它不仅仅具有 PLC 典型的元素(例如 输入/输出,定时器,计数器,符号表),而且具有高级语言的特性, 例如:循环、选择、分支、数组、高级函数
S7-SCL 其非常适合于如下任务:
复杂运算功能
复杂数学函数
数据管理
过程优化
第二:S7-SCL 与 STL
S7-SCL 可以编译成 STL, 虽然其代码量相对于 STL 编程有所增加,但我们更关心的是程序结构和程序的总体效率。类似于计算机行业的发展,汇编语言已经被舍弃,取而代之的是 C/C++等高级语言。S7-SCL 对工程设计人员要求较高,需要其具有一定的计算机高级语言的知识和编程技巧。
第三:S7-SCL 的安装与使用:
STEP7 标准版并不包括 S7-SCL 软件包及授权,需单独购买,STEP7 Professional 版包括了S7-SCL 的软件包及授权,安装即可。在 S7 程序中,S7-SCL 块可以与其它 STEP7 编程语言生成的块互相调用。S7-SCL 生成的块也可以作为库文件被其它语言引用。由于 S7-SCL 程序由 ASCII 文本构成,所以它非常容易被导入或导出。
第四:S7-SCL 软件兼容性
不同 S7-SCL 软件版本与 STEP7 及操作系统之间的兼容性:图中的 X 表示兼容,- 表示不兼容
仅仅 S7-SCL V5.1+SP1或以后版本支持
仅仅 S7-SCL V5.1+SP1或以后版本支持
仅仅 S7-SCL V5.1+SP1或以后版本支持
第五:S7-SCL 简单示例
在下面的例子中,编写一个完成软件滤波程序的 FB1, 程序每调用一次 FB1, 其采集一个新的过程变量,存储在 FIFO 堆栈中,共 10 个周期的采样值,超过 10 个周期的采样值将被舍弃。程序将此 10 个采样值中的最大最小值找出,并计算出除去最大值及最小值之后的平均值。
平均值(滤波输出)=(10 个采样值之和-最大值-最小值)/8 平均值(非滤波输出)=转换后的实时采样值
新建项目,插入 SCL Source

双击,SCLSource 打开 SCL 环境,并使用 FB 模板

更改 FB编号

使用参数模板

编辑 FB参数

使用调用功能块向导

调用 FC105

由于在 SCL中调用了 FC105, 还需在 SIMATIC Manager 将 FC105 添加到项目中

FC105 复制到当前项目中

FB1 参数定义

FC105调用

下面的程序中使用了判断条件,在此使用 IF 模板

使用 IF, FOR-NEXT等高级语言的方式,很容易就可编写出滤波程序

在菜单 Option-Customize中选择生成调试信息

在菜单的 File-Compile编译没有错误后,就可以生成 FB1 了,在 OB35 中可以调用 FB1,下载整个项目后监控 OB35:
输出参数 SCALED_VAL 为实时的采样值
输出参数 SCALED_FILTED 为滤波后的采样值
假设OB35的执行周期为T, 如果某时刻采样值发生变化,那么此数值将不同于以前的多个采样值,此数值可能被认定为最大值或最小值,而最大值或最小值将被忽略,这样就实现了滤波的效果。当采样值发生变化,并维持了大于等于2T的时间,此时的输入值的两次采样值会被滤掉一个采样值,而另一个采样值将参与平均值的运算。

可以在高级语言界面下监控 FB1
