西门子SCL编程实例——斜坡发生器(基于定时器)
工业项目中有时候需要使用斜坡发生器。斜坡发生器能控制输出值经过一个平滑的上升或下降的变化过程然后再达到目标值,从而避免输出值由当前值直接跃变到目标值。某些工业过程的控制工艺不允许被控值的直接跃变。比如:工艺要求电机电流有一个平滑的增加过程,而不是直接跃变到一个比较大的目标电流;或者希望某管路的压力有一个平滑的增加过程,而不是直接加压到目标压力。这些情况下,都需要使用斜坡发生器。
西门子PLC实现斜坡发生器的一种方案是使用循环中断组织块,通过周期性的执行使被控制值平滑变化。该方案的优点是控制精度高,缺点是要配合组织块、数据块等,不利于程序的模块化设计。
另一个方案是使用定时器来实现斜坡发生器,它的优点是可以把斜坡功能集成到一个函数块中,可反复调用,有利于程序的模块化设计。缺点是其执行受PLC扫描周期的影响,因此精度并不高。这里的精度可以简单理解为斜坡时间。比如,本来希望受控值的变化过程时长为5秒,使用该方案的最终用时会大于5秒。因此,该方案适用于对精度要求不高的场合。
今天这篇文章,我想给大家介绍第二种方案的斜坡发生器,即我写的一个基于定时器的斜坡发生器函数块-FB5008_RampGenerator。
函数块FB5008_RampGenerator可设置初始值、目标值及斜坡时间。斜坡时间的单位为秒,其内部使用延时接通定时器指令,时基为100ms。斜坡时间乘以10即为定时器的启动次数。通过计算初始值与目标值的差值,除以计时器的启动次数,即可算出每次定时器计时达到时应当增加的数值单位。
函数块FB5008_RampGenerator的输入/输出参数如下:
静态变量及临时变量参数如下:
代码如下:
接下来在OB1中调用该函数块即可,例如:
这个函数块我已经测试过了,感兴趣可以自行测试一下。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》已经出版了,这本书共15章,附有84个视频,从硬件到软件,真正做到了从入门到精通。感兴趣的小伙伴可以点击下面的链接查看详细介绍:
#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } 西门子SCL语言编程 ¥79 购买该书在京东、淘宝、天猫等各大网店具有销售,你可以自行搜索购买。如果你已经购买了该书,可以私信我,进入SCL读书群。
斜坡功能Ramp在PLC中的实现
一、使用场合
在某些工艺条件下,要求设定值在一定时间范围内或者以一定斜率逐渐增加或下降后达到目标值,而不是突然跃变。
常见应用:变频器调速、PLC模拟量输出控制、PID输出控制、结合脉冲输出指令实现电机控制等。
二、西门子200的Ramp程序
以下是从西门子200的PLC里移植到200 Smart的斜坡程序:
L4.7可忽略
其中,LD0:设定值;LD4:每秒变化值;LD8:实时输出值;SWM22:最后一次扫描循环的扫描时间。
该程序执行过程易受PLC扫描周期的影响,精度并不高。优点则是整个功能集成在了一个子程序中,调用方便。
三、博途中Ramp的使用
添加官方LGF通用函数库,找到对应的功能块拖入程序的OB组织块中即可。
有兴趣的可以打开函数块看看,以下是程序主体部分。
处理过程与200的大致相同
四、改进与想法
1、添加使能
2、可对升降设定不同的斜率
3、可实现以下两种模式的切换
◆ 定时间:设定值在设定时间内到达目标值;(限定最大速率)
◆ 定斜率:设定值以设定斜率到达目标值;
4、对于精度要求高的场所,考虑采用定时中断、固定循环周期等方式;
5、某些工艺中实现输出值接近目标值一定范围后的 “ 曲线 ”功能。(类似S曲线)
五、示例
PS:改一个中文变量的
相关问答
西门子plc斜坡指令?
西门子PLC中的斜坡指令用于实现电机或执行机构的平滑起动和停止功能。斜坡指令通过逐渐增加或减小输出信号的值来控制设备的移动速度或工作负载。这种指令常...
如何用PLC实现给变频器加减速斜坡进行编程?
变频器通过频率差确定需加速还是减速,并按照设定的调节速度调整电动机转矩,从而实现按需要的加减速斜坡调整转速。但最终,变频器还是依赖调节输出电压和输出电...
步进电机驱动器要如何选型呢?
步进驱动器的选型,本质是由步进电机来决定的,而电机又取决于负载的具体使用场景。一般需要确定最大扭力,最高速度和定位精度,根据这些来确定电机和驱动器的电...
如何让变频器运行起来?
变频器要正常运行起来,先需要满足几个基本的条件,一个是变频器和电机的规格要匹配,比如变频器功率一般要大于等于电机功率,也就是选型要合理;其次是负载没有...
西门子PLCCPU型号的接口315-2DP和315-2PN/DP-ZOL问答
dp总线网络中有一个dp通信口坏了,plc无法与其进行通讯,就会报通讯故障,sf、bf指示灯就会亮红灯。有用(0)回复dscqwyolgavq一,终端电阻被打开了,二,DP总线上...
GD空压机故障分析?
电压太低启动按钮或连接导线接触不良电动机故障进气阀卡死,带负荷启动Y-△机体故障电脑板故障切换开关打在远程主变压器故障压力或温度传感器故障(斜...
施耐德变频器怎样进入参数设置?
一个多段速的变频器器控制,要求PLC编制程序工况。其实这个控制是比较典型的变频器应用。楼主应该自己去完成这个参数设置。用一个加速/减速斜坡时间就可以。...
施耐德变频器怎么调试参数?
一个多段速的变频器器控制,要求PLC编制程序工况。其实这个控制是比较典型的变频器应用。楼主应该自己去完成这个参数设置。用一个加速/减速斜坡时间就可以。除...
东成空压机无级调速是什么意思?
无级调速就是速度的变化沿一条平滑的线执行,相当于你走的是一个斜坡,有极调速是指速度的变化有阶跃,相当于你走的是楼梯。无极对装置冲击小,有极调速冲击大...
卷边机有哪些特点
[回答]设备的自动化程度高,斜式自动送料更快捷方便,光电感应PLC程序控制,全自动攻丝,操作方便简单,一人可看管多台机子。加工钢筋套筒专用,正常工作效率6-...