找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3767|回复: 12

西门子SCL编程——通过模拟量控制气缸升起和下降

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:27
  • 打卡月天数:6
  • 打卡总奖励:7736
  • 最近打卡:2025-12-20 00:35:11

3317

主题

285

回帖

2万

积分

管理员

积分
23881
发表于 2020-6-14 20:29:59 | 显示全部楼层 |阅读模式

对于PLC的输入输出,分数字量和模拟量两种。数字量很好理解,就是在时间和数量上都离散的物理量,比如启/停按钮,行程开关电磁阀通/断,这些都是数字量。数字量对应PLC存储就是1位,即1比特(binary digit,缩写bit),作为信息的最小单位,只有两种状态:0(低电平)和1(高电平),也表示为FALSE和TRUE。模拟量是在时间或数值上都连续的物理量,常见的如温度、氧含量、压力等。


模拟量使用起来不太方便,不是有多难,而是在程序上需要做必要的处理,本文通过实例,讲一讲如何通过模拟量控制气缸升起和下降。


通过模拟量输出控制运动对象动作,要先确定运动对象的信号类型和量程等参数。信号类型常见的有电流4~20mA和电压0~5V/10V等;量程是设备自身的参量,比如气缸控制阀流量开度为0~100%,K型热电偶测温范围0~1300℃等。


本文选用的气缸控制阀控制特性如图1所示,可以看出信号类型4~20mA,4~12mA对应的1通2,流量开度q对应100~0(%);12~20mA对应的1通4,流量开度q对应0~100(%);



图1 气缸控制阀控制特性

处理模拟量信号需要两个指令,NORM_X:标准化和SCALE_X:缩放指令。




NORM_X:标准化

使用“标准化”指令(参照图2所示),通过将输入 VALUE 中变量的值映射到线性标尺对其进行标准化。可以使用参数 MIN 和 MAX 定义(应用于该标尺的)值范围的限值。输出OUT( RET_VAL) 中的结果经过计算并存储为浮点数,这取决于要标准化的值在该值范围中的位置。


如果要标准化的值等于输入 MIN 中的值,则输出 OUT 将返回值“0.0”。如果要标准化的值等于输入 MAX 的值,则输出 OUT 需返回值“1.0”。


其中MIN 、 MAX和VALUE既可以是整数,也可以是浮点数。OUT( RET_VAL) 为浮点数。



图2 NORM_X


SCALE_X:缩放指令

使用“缩放”指令(参照图3所示),通过将输入 VALUE 的值映射到指定的值范围内以缩放该值。当执行“缩放”指令时,输入 VALUE 的浮点值会缩放到由参数 MIN 和 MAX 定义的值范围。缩放结果为整数,存储在 RET_VAL 输出中。

其中MIN 、 MAX和OUT( RET_VAL) 既可以是整数,也可以是浮点数。VALUE为浮点数。



图3 SCALE_X




接下来在FB中定义各变量,如图4所示。变量有升起和降落的指令rise_command、fall_command,数据类型均为Bool型;升起和降落的开度百分比rise_rate、fall_rate,此处数据类型均定义为Int型;以及标准化和缩放的变量,NORM_rise_rate(Real型)、NORM_fall_rate_1(Real型)、NORM_fall_rate_2(Real型)、SCALE_rise_rate(Int型)、SCALE_fall_rate(Int型)。



图4 定义变量


输出量AQ1(Int型)需要在PLC变量中定义,同时模拟量输出的地址要与实际的接线端子地址一致。


用SCL语言编程,如图5所示。



图5 SCL程序


  • 第1行程序是将“rise_rate”标准化为0.0~1.0范围内的值;
  • 第2行程序是将“NORM_rise_rate”缩放到PLC能够执行的整数范围,这里需要了解PLC自身模拟量模块电流测量模拟值的范围,需要查找该模拟量模块的手册,本文使用的模拟量模块4~20mA电流测量范围为0~27648,中间值12mA对应的值为13824(该值需自己计算)。
  • 第3行程序是将“fall_rate”标准化为0.0~1.0范围内的值;
  • 第4行程序是一次转换,由于控制阀4~12m对应的是100~0,不太符合常规的表达逻辑。
  • 第5行程序是将“NORM_fall_rate_2”缩放为PLC能够执行的整数方位,解释同第2行。
  • 第6~8行程序是进行指令的判断,如果升起指令“rise_command”为真,则将缩放过的值“SCALE_rise_rate”赋值给输出变量AQ1,实现气缸升起;
  • 第9~10行程序是进行指令的判断,如果下降指令为真,则将缩放过的值“SCALE_fall_rate”赋值给输出变量AQ1,实现气缸下降;
  • 注意:这里为了简化程序,程序里没有进行“rise_rate”和“fall_rate”进行相互复位操作

工控课堂 www.gkket.com

0

主题

154

回帖

526

积分

中级会员

积分
526
发表于 2020-6-14 20:29:59 | 显示全部楼层
激动人心,无法言表!
工控课堂 www.gkket.com

0

主题

92

回帖

335

积分

注册会员

积分
335
发表于 2020-10-12 09:05:32 | 显示全部楼层
真是难得给力的帖子啊。
工控课堂 www.gkket.com

0

主题

93

回帖

153

积分

新手上路

积分
153
发表于 2025-11-13 11:41:35 | 显示全部楼层
这波分析到位,逻辑满分!
工控课堂 www.gkket.com

0

主题

89

回帖

140

积分

新手上路

积分
140
发表于 2025-11-18 18:33:39 | 显示全部楼层
打卡路过,支持优质原创内容~
工控课堂 www.gkket.com

0

主题

101

回帖

153

积分

新手上路

积分
153
发表于 2025-11-19 03:57:28 | 显示全部楼层
楼主太会说了,字字句句都在理
工控课堂 www.gkket.com

0

主题

104

回帖

159

积分

新手上路

积分
159
发表于 2025-11-19 04:02:49 | 显示全部楼层
路过混个脸熟,顺便为优质内容打 call~
工控课堂 www.gkket.com

0

主题

81

回帖

124

积分

新手上路

积分
124
发表于 2025-11-19 04:10:19 | 显示全部楼层
这逻辑绝了,分析得太到位了吧
工控课堂 www.gkket.com

0

主题

69

回帖

102

积分

新手上路

积分
102
发表于 2025-11-19 04:11:30 | 显示全部楼层
救命!这波发言太秀了,直接原地封神~
疯狂认同!楼主说出了我不敢说的话
工控课堂 www.gkket.com

0

主题

516

回帖

1647

积分

高级会员

积分
1647
发表于 2025-11-19 04:12:49 | 显示全部楼层
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 13:31 , Processed in 0.097493 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表