抖音粉丝群1
『7x24小时有问必答』

往期精彩文章:

西门子S7-1200/1500PLC模拟量FB函数块的调用

某工程项目要求用模拟量输入到PLC,再由PLC输出模拟量控制变频器的频率,变频器控制电机转速,正转、反转、停止由分别由3个按钮控制。

结构化编程程序如下:

一、建立全局数据块(DB)

▼  外围输入输出关联DB
1.png

二、编写变量表

▼  编写输入输出变量表
2.png

三、建立关联变量表的函数(FC)

▼  形式参数与实际参数关联
3.png

"数据块".前进按钮 := "输入1";
"数据块".后退按钮 := "输入2";
"数据块".停止 := "输入3";
"输出1" := "数据块".前进输出;
"输出2" := "数据块".后退输出;

四、建立模拟量转换函数块(FB1)

▼  模拟量转换FB
4.png

#比例因子:=NORM_X(MIN := 0, VALUE := #模拟量输入, MAX := 27648);
//通过线性标尺0-1.0对输入值进行标准化映射

#模拟量转换中间值 := SCALE_X(MIN := #输入最小值, VALUE := #比例因子, MAX := #输入最大值);
//按照输入比例因子对在设定范围内数据进行标定

#比例因子2 := NORM_X(MIN := #转换最小值, VALUE := #转换设定值, MAX := #转换最大值);
//通过线性标尺0-1.0对转换设定值进行标准化映射

#模拟量输出:=SCALE_X(MIN:=0, VALUE:=#比例因子2, MAX:=27648);
//按照输出比例因子对在设定范围内数据进行标定输出到模拟量通道

五、模拟量控制变频电机正反转过程控制函数块(FB2)

▼  电机模拟控制过程
5.png

IF "数据块".前进按钮 AND NOT "数据块".后退按钮 THEN
      "数据块".前进输出 := 1;
      "数据块".后退输出 := 0;
END_IF;
//前进

IF "数据块".后退按钮 AND NOT "数据块".前进按钮 THEN
      "数据块".前进输出 := 0;
      "数据块".后退输出 := 1;
END_IF;
//后退

IF "数据块".停止 THEN
      "数据块".前进输出 := 0;
      "数据块".后退输出 := 0;
END_IF;
//停止

#模拟电压比例:=NORM_X(MIN:=0.0, VALUE:=#频率模拟电压, MAX:=10.0);

#变频器频率:=SCALE_X_REAL(MIN:=0.0, VALUE:=#模拟电压比例, MAX:=50.0);
//电压/频率线性比例调节

#模拟量转换(模拟量输入:="AD转换通道4",
           输入最小值:=0.0,
           输入最大值:=10.0,
           转换设定值:=#变频器频率,
           转换最小值:=0.0,
           转换最大值:=50.0,
           模拟量转换中间值=>#频率模拟电压,
           模拟量输出=>"DA转换通道2");
//模拟量转换

六、MAIN程序调用

▼ PLC执行程序
6.png

好了,PLC只要执行MAIN中的程序就行了。

感谢阅读指正,关注了解更多!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码