西门子S7-1200/1500PLC模拟量FB函数块的调用
某工程项目要求用模拟量输入到PLC,再由PLC输出模拟量控制变频器的频率,变频器控制电机转速,正转、反转、停止由分别由3个按钮控制。
结构化编程程序如下:
一、建立全局数据块(DB)
▼ 外围输入输出关联DB
▼ 编写输入输出变量表
▼ 形式参数与实际参数关联
"数据块".前进按钮 := "输入1";
"数据块".后退按钮 := "输入2";
"数据块".停止 := "输入3";
"输出1" := "数据块".前进输出;
"输出2" := "数据块".后退输出;
▼ 模拟量转换FB
#比例因子:=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)
▼ 电机模拟控制过程
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");
//模拟量转换
▼ PLC执行程序
感谢阅读指正,关注了解更多!