西门子SCL编程实例——斜坡发生器(连续版)
西门子SCL编程实例——斜坡发生器(连续版)
founderchip
原创工业智能控制领域(PLC、单片机、嵌入式、机器人、通信)的技术及经验分享。
之前我曾写过一个斜坡发生器函数(参考文章: 西门子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语言的编程,感兴趣的话可以点击下面的链接或者左下角的【阅读原文】:
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
