西门子SCL编程笔记(6)

您所在的位置:网站首页 西门子存储不允许 西门子SCL编程笔记(6)

西门子SCL编程笔记(6)

2024-07-11 13:21| 来源: 网络整理| 查看: 265

上一篇文章我们谈到了SCL的沿检测指令——R_TRIG和F_TRIG。如果每一个沿检测指令都要使用一个背景数据块(DB),那多次使用的情况下程序中岂不是会有很多的数据块,这篇文章,我们再来谈谈这个话题。 在这里插入图片描述

的确,如果在FC(功能)中使用沿检测指令,我们必须为其创建相应的数据块,这是因为FC没有属于自己的背景数据块,不能保存静态变量。

如果在程序中需要多次使用沿检测指令,建议使用FB(功能块)而非FC(功能)。由于FB有自己的背景数据块,这样,我们可以把沿检测指令需要保存的静态数据存放到FB的背景数据块中,并且可以采用多重背景数据块的方式,来减少程序中需要添加的数据块(DB)的数量。

举个例子:假如我们有三台电机需要进行启停控制。 启动按钮的PLC地址分别是: I0.0(标签名:E_Start_Motor1); I0.1(标签名:E_Start_Motor2); I0.2(标签名:E_Start_Motor3); 添加FB到主程序中,命名为:FB_SCL_Test。

向FB中添加上升沿触发指令:R_TRIG,在出现添加背景数据块对话框中选择“多重背景数据”,并命名为:R_TRIG_Motor1,如下图: 在这里插入图片描述 此时可以看到,FB_SCL_Test的静态变量存储区中增加了R_TRIG_Motor1一项,如下图: 在这里插入图片描述

同样的方式添加Motor2和Motor3的上升沿触发指令,背景数据块名称分别为:R_TRIG_Motor2和R_TRIG_Motor3,如下图: 在这里插入图片描述

接下来我们编程来显示三台电机启动按钮的上升沿检测,这里我们采用两种代码方式: 第一种方式我们采用上篇文章介绍的方法,使用中间变量M0.0(标签名称:Interflag_Motor0),代码如下: 在这里插入图片描述

第二种方式采用简单的方法,不使用中间变量,代码如下: 在这里插入图片描述

第一种方式的上升沿检测,可以通过判断中间变量M0.0的值是否为1来启动电机,代码如下: 在这里插入图片描述

第二种方式的上升沿检测,则需要判断背景数据块中的静态变量来启动电机,代码如下: 在这里插入图片描述

可以看出,第一种代码的可读性很好,但显得有点啰嗦;第二种代码很简洁,但可读性稍微差点,选择哪种方式,完全取决个人的爱好。 下降沿的多重背景设置于此类似,不在赘述。 代码写到这里并没有完成,虽然我们在FB_SCL_Test中设置存储静态变量,但到目前为止FB_SCL_Test还是没有背景数据块。 所以,接下来我们要创建一个背景数据块。 可以动手创建。不过简单的办法是在主程序块Main,或者别的FC,FB块中调用FB_SCL_Test,系统会自动提示创建背景数据块FB_SCL_Test_DB,单击确认即可。 打开数据块FB_SCL_Test_DB,可以看到其静态存储区中有我们设置的R_TRIG_Motor2、R_TRIG_Motor2和R_TRIG_Motor3,这样程序就可以正常运行了,如下图: 在这里插入图片描述

好了,关于沿检测指令,又做了一次笔记,两种方法,按照自己的习惯使用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3