前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[step7]精通SCL编程

[step7]精通SCL编程

作者头像
科控物联
发布2022-03-29 17:34:24
2.5K0
发布2022-03-29 17:34:24
举报
文章被收录于专栏:科控自动化

例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.如此循环。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档