首页 > 行业资讯 > 西门子SCL编程实例——斜坡发生器(连续版)

西门子SCL编程实例——斜坡发生器(连续版)

时间:2023-09-01 来源: 浏览:

西门子SCL编程实例——斜坡发生器(连续版)

原创 北岛李工 方正智芯
方正智芯

founderchip

原创工业智能控制领域(PLC、单片机、嵌入式、机器人、通信)的技术及经验分享。

收录于合集 #北岛李工->西门子SCL编程教程 54个

之前我曾写过一个斜坡发生器函数(参考文章: 西门子SCL编程实例——斜坡发生器(基于定时器) ),它能控制输出值经过一个平滑的上升或下降的变化过程而达到目标值。这个函数只实现一次变化,不能连续变化。前段时间有小伙伴询问如何让斜坡发生器实现连续的变化输出?比如电机转速从0 r/min平滑变化到100 r/min,然后再到 500 r/min等等。今天这篇文章,我给出我的解决方案。

在原来函数的基础上,我编写了更新版的斜坡发生器,命名为:FB5028_RampGeneratorEx。

为了实现斜坡的连续变化,我定义了一个可变数组(见下文的输入/输出变量),你可以在这个数组中随意添加斜坡节点信息。这些信息包括:启动信号(何时开始输出)、目标值和斜坡时间,我将其定义为用户自定义数据类型:typeRampData,如下图所示:

在博途开发环境下新建函数块:FB5028_RampGeneratorEx,其输入、输出及输入/输出变量的定义如下图所示:

其中:

输入变量
名称 数据类型 描述
enable 布尔值 使能(TRUE=使能,FALSE=复位)
initValue 实数 初始值
输出变量
名称 数据类型 描述
value 实数 输出值
stepActive 布尔型 步激活
cycleCounter 双整数 步循环计数
singleStepDone 布尔型 单步完成
complete 布尔型 全部完成
输入/输出变量
名称 数据类型  描述
arrayRampData typeRampData 斜坡函数信息数组

静态变量及临时变量定义如下图所示:

注意:

变量 IEC_Timer_TCON_Instance 是定时器指令TON在多重背景数据块下自动生成的静态变量。

FB5028_RampGeneratorEx的代码如下图所示(注释部分详细介绍了代码功能):

为了测试代码,我定义了全局数据块DB_test,它包含了斜坡信息数据及相关变量,如下图所示:

在OB1中编写代码测试如下图所示:

启动二次斜坡发生测试示例如下图:

该函数块的代码我已经测试通过,如果你有任何问题,欢迎留言。在我的博客网站上可以下载本文PDF版本。

我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以点击下面的链接或者左下角的【阅读原文】:

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐