例1 控制一台电机的启动与停止
1 首先定义一个全局变量数据块 存贮你所需的变量
DATA_BLOCK GDI //定义一个数据结构
STRUCT
Motor1_input:BOOL;//定义一个名叫做Motor1_input用于输入的变量 变量类BOOL
Motor1_On:BOOL;//定义一个叫做Motor1_On用于输出变量 类型为BOOL
Motor1_ Stop:BOOL; //定义变量 Motor1_ Stop 类型BOOL 用于停止电机
END_STRUCT
BEGIN
END_DATA_BLOCK
2编写输入函数体
FUNCTION Input :VOID //定义一个函数称称为Input,函数类型为 VOID
GDI.Motor1_input=I0.0; //把I0.0的值赋给变量Motor1_input
GDI.Motor1_ Stop=I0.1;
END_FUNCTION / /函数体结束
GDI.Motor1_input是条用前面定义的数据块里面的变量。
3编写输出函数
FUNCTION Output:VOID//定义一个输出函数
Q0.0:=GDI.Motor1_On;//将电机启动状态输出到Q0.0
END_FUNCTION //函数体结束
GDI.Motor1_On //调用之前定义在数据块里的变量
3编写控制函数
FUNCTION Motor_conter: VOID //定义控制函数
IF GDI.Motor1_input=TRUE THEN
GDI.Motor1_On:=TRUE; // 当接收到启动命令时 电机启动
END_IF;
IF GDI.Motor1_Stop=TRUE THEN
GDI.Motor1_On:=FALSE; // 当接收到停止命令时 电机停止
END_IF;
END_FUNCTION
例2 循环启动 电机1 单机2 电机1启动运行20S 后 电机2启动 如此循环 启动 要求用SCL编写 FB功能块 并在OB1中调用它 ,OB 1也用SCL创建。
1 首先在 SETP7 中创建一个名叫 Motor_control的项目 并组态该项目。
2 在符号中建立你所需要的符号 并分派地址。
3 在源文件中 创建你所需要的程序。
1创建名为 Motor_control的项目并组态
2在符号中建立你所需要的符号 并分派地址。
3 创建名为 Motor_contorl的控制功能块
FUNCTION_BLOCK Motor_contorl //定义块的名称
VAR_INPUT
Motor1_start:BOOL;
Motor2_start:BOOL;
Motor_stop:BOOL;
END_VAR
VAR_OUTPUT
Motor1_On:BOOL;
Motor2_On:BOOL;
END_VAR
BEGIN
IF Motor1_start=true THEN
Motor1_On:=true; //启动电机1
END_IF;
TON.DB1(IN :=Motor1_On // IN: BOOL //启动定时间器 定时20S
,PT :=T#20S // IN: TIME
);
IF DB1.Q=TRUE THEN
Motor2_On:=true;
Motor1_On:=false; //定时时间到 启动电机2 并关闭电机1
END_IF;
TON.DB2(IN :=Motor2_On // IN: BOOL
,PT :=T#20S // IN: TIME
);
IF DB2.Q=TRUE THEN
Motor2_On:=FALSE;
Motor1_On:=TRUE;
END_IF;
IF Motor_stop=TRUE THEN
Motor2_On:=FALSE;
Motor1_On:=FALSE;
END_IF;
END_FUNCTION_BLOCK
4 创建 名为CYCLE 的组织块并调用 Motor_contorl
ORGANIZATION_BLOCK CYCLE
VAR_TEMP
Motor : ARRAY[0..19] OF BYTE;
END_VAR
//Motor_contorl的调用
Motor_contorl.Motor_contorl_DATA(Motor1_start :=Motor1_start // IN: BOOL
,Motor2_start :=Motor2_start // IN: BOOL
,Motor_stop :=Motor_stop // IN: BOOL
);
Motor1_On:=Motor_contorl_DATA.Motor1_On; // OUT: BOOL
Motor2_On:=Motor_contorl_DATA.Motor2_On; // OUT: BOOL
END_ORGANIZATION_BLOCK
TON.DB1(IN :=Motor1_On // IN: BOOL //启动定时间器 定时20S
,PT :=T#20S // IN: TIME
);
这是调用接通延时定时器,在 system function blocks 里的SFB4
并设定激活的条件,本例程为电机1启动后,激活定时器TON.DB1
时间到后启动电机2 ,关闭电机1 。电机2启动后激活定时器TON.DB1
定时时间到再次启动电气1 并关闭电机2.如此循环。