导读西门子结构化编程把不同控制任务分到不同区域,对控制功能相同且数量多的设备,用带多重背景的 FB 功能块重复调用,程序简洁清晰、易读性强、方便更改,为系统升级改造提供便利。
SCL 语言的应用,大幅减少程序代码占用空间,让西门子 PLC 能容纳更大程序,控制更大系统。下面通过实例详细说明 1:博途 V15 编程软件及仿真软件; 2:西门子 1215CPU 一台; 3:网线一条。 注意:若无 PLC 实物,可使用仿真软件进行测试。顺丰、京东、邮政等大型物流企业的中转场,其输送分拣系统主要由大量结构各异的皮带机和数台高效分拣机构成。
由于输送分拣的路线方向繁杂,皮带机通常被划分为不同线体。每条线体包含若干条皮带,用于对应不同路向,或最终汇聚到分拣机,以满足其巨大的处理量需求。
本实例运用 SCL 语言编写控制程序,主要用于控制一条线体中的 5 条皮带的启动和停止。
通过程序设定条件,依据实际需求,比如货物检测信号,决定皮带的运转状态,实现对这 5 条皮带的自动化控制
1、此例主要的目的是使大家掌握编程的方法,不是控制的逻辑,因此每条皮带的控制与起保停类似。具体的控制逻辑要根据实际的需求编写; 2、实际现场一条线体往往不止5条皮带,这里为了测试监控方便只用5条,但利用SCL语言编写控制再多数量的皮带,再多的线体,代码并不会增加,只是改下数量而已,后面会有描述; 3、这个例子可使大家借一斑而窥全豹,初步认知具有多重背景FB块的使用魅力。 1、创建新项目 实际生产中配方的数据已经定好,打开博途 V15 软件,新建名为 “SCL 循环调用电机” 的项目。接着,组态一台固件版本为 4.2 的 1215CPU,具体操作可参考图 1 图1 将默认的SBR0子程序重命名为配方处理,创建自定义数据类型可把我们从编写大量符号表变量的工作中解脱出来,变量越多,效果越明显。
在这个项目中我们创建一个名为“motordata”数据类型的变量,如下图2所示。
该数据类型包含4个布尔变量,分别是皮带电机的启动、停止、故障和运行变量。 图2 创建全局 DB 块,旨在为五台皮带电机 FB 块的形参赋予实参。
在 DB 块中,我们创建了一个符号名为 “motor” 的数组变量,包含 5 个元素,每个元素的类型均为自定义数据类型 “motordata”。
通过这种方式,无需逐个输入 5 台电机的变量,极大地节省了时间,提高了工作效率。图 3 展示了电机 1(Motor【0】)展开的变量详情。 图3 该程序编写难度较低,为便于测试和仿真,仅编写了简单的类似起保停的控制逻辑。
在实际应用中,需依据具体要求编写控制程序。接下来,新建一个名为 “Mrun” 的 FB1 功能块,此功能块采用 SCL 语言编写,具体程序内容可参考图 4。 图4 这部分是该例子的核心。在项目里新建一个 FB 块,将其命名为 DYMrun。
该程序的变量表以及代码详情,可参照图 5 查看,从中能清晰了解变量的定义和程序的具体逻辑。 图5
创建全局 DB 块,是为给五台皮带电机 FB 块的形参赋实参。在静态参数里,建立 “dymrun” 和 “i” 两个变量。
“dymrun” 是数组变量,以 FB1 为数组元素数据类型,对应 5 台电机;“i” 是整数类型的循环调用指针,指向不同皮带电机。
程序里,i 取值 0 到 4,若电机增加到 12 台,将 4 改成 11 就行。
代码主要是 FOR 循环语句,关键在于把全局 DB 块 DB1 的数组变量准确赋值到 FB1(Mrun)各形参管脚。
理解这段程序,需要掌握 UDT、SCL、数组、结构化编程等知识。 考虑到部分学员没有实体 PLC,接下来我们在主程序中调用 FB2,并通过仿真进行演示。
首先新建一个监控表,在其中输入 Motor0 和 Motor2 两个电机的变量,用于实时监测电机状态。
完成上述操作后,主程序运行及测试的结果可参考图 6,从中能直观地看到调用 FB2 后的实际效果以及电机变量的变化情况 。 图6 图7 图8 图9 从图 7 能看到,Motor0 启动信号为 true,运行信号也为 true,两个红框所示,这证明程序导通,Motor2 同理,看蓝色框。
图 8 中复位启动信号,Motor0 和 Motor2 因自锁继续运行。图 9 里,按下 Motor0 停止信号它就停了,Motor2 因故障停止。其他电机大家可自行测试。
SCL 语言像高级语言,代码简单、占空间小、数据处理能力强,未来很有前景,希望这个案例能帮大家学习 SCL。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |