设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL编程实例——斜坡发生器(连续版) ...
返回列表
发新帖
[西门子]
西门子SCL编程实例——斜坡发生器(连续版)
[复制链接]
92257
|
0
|
2024-4-28 20:38:07
|
显示全部楼层
|
阅读模式
之前我曾写过一个斜坡发生器函数(参考文章:西门子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版本。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
founderchip
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』