在一个项目中,现场许多设备通常具有类似的启停和控制方式。不同的仅仅是启、停的条件、控制参数等。因此,同类的设备,控制模型大致是一样的。我们通常会在一个FB中,编写一段代码来实现对同一类设备的控制。如图1所示,为一段简单的电机启、停控制程序。
图1 电机的启停控制模型
简单分析一下这段程序:
· #motor_on是电机的运行使能,通过SR触发器来决定其状态。#switch_on、#switch_off分别为启动和停止命令;#Failure为故障检测信号,当电机故障时,#Failure端反馈为'1'。
· 启停控制均很简单,当#switch_on端输入上升沿信号时,#motor_on=1,电机运行;当#switch_off端输入上升沿信号或电机故障时,#motor_on=0,电机停止;
· 程序段2为速度监控,比较实际速度与给定速度的偏差。
FB1块需要在OB1中调用,才能参与马达的控制。如果现场中有多个马达都适用FB1的控制模型时,需要为每个马达都调用一次FB1,同时每调用一次FB1都要为其分配一个背景数据块,每个数据块对应一个实际的马达的参数。如图2为控制两台马达的程序,每台马达都要分别一个背景数据块,如图3,DB1和DB2
图2 控制两台马达
图3 背景数据块
试想一下,一个