PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 70|回复: 0

[西门子] 粉料配比定量称重系统设计——S7-1200+滤波算法

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
>
随着现代科技的快速发展新的技术在自动化领域快速应用,快速高精度动态静态称重系统有了阶跃式的发展。在工农业中经常需要把一些粉料按照一定的重量进行配比目前面临最大问题就是定量下料速度和称重精度的问题。

有需要交流的可以加微信

   备注加“交流群”

 程序、HMI、电路图在文章最底部
 接项目外包、运动控制、过程控制
  欢迎广大需要合作厂家、个人来合作
本设计在控制和监视方面采用的是西门子1214C-DC/DC/DC PLC作为该系统的主控制器,选用西门子KT-900触摸屏作为上位机监视。首先,介绍了本系统的具体工作原理和详细的工作流程,然后硬件进行选型,通过EPALN电气绘图软件绘制了电气接线图,通过TIA-V19软件对PLC进行了编程和上位机编写,最后,通过触摸屏对本系统当前运行状态进行控制和实时监视并对重要的数据进行保存。在数字滤波方面采用多种数字滤波拟合为一个滤波的方式,减少了称重传感器由外部信号干扰和外界因素干扰引起的误差问题提高了称重的精度。在下料方面通过变频器来控制螺旋输送电机来实现快喂料和慢喂料两种工作方式提高了下料的速度。
本设计通过自动化控制技术和数字滤波技术解决了称重传感器返回值信号干扰的问题和下料速度慢的问题,在提高粉料配比称重精度的同时提高了下料的速度。

一、系统总体结构和控制方案

二、控制系统的工艺流程

本系统的主要工艺流程是,首先是秤校准和系统初始化然后设置喂料总重量和对应的粉料配比比例、设置称重的次数。在自动模式下,各个储料斗按照设定好的总重量和比例下料,计量斗的实时重量返回给PLCPLC控制各个螺旋输送机的转速。各个输送机按照设定好的比例进行依次喂料。依次喂料完成后打开计量斗放料口,并对配比称重数据进行保存,进行下一轮的配比定量称重。手动模式下,通过触摸屏选择对应的喂料电机通过按钮或者触摸屏点动喂料,可以选择粗喂料或者细喂料两种喂料方式,配比完成打开计量仓。

三、称重的主要滤波方法

(一)、滑动滤波方法及性能

滑动滤波Moving Average Filter是目前在自动化邻域应用特别广泛的数字信号滤波方式,主要用于外部干扰和噪声对真实值的影响。滑动滤波的工作原理就是把采集的信号存到一个数组里对其求算数平均或者加权平均,随着新采集的数到来把数组里的数不断的向前移动,没移到一次求取一次平均值。滑动滤波具体计算公式如下所示

通过MATLAB仿真分别对称重传感器的静态在80kg和动态(0-80kg采集100次并对采集结果用滑动滤波的方式进行滤波。

(二)、卡尔曼滤波方法及性能

卡尔曼(Kalman)通常是指卡尔曼滤波,是一种估计的数字滤波算法。卡尔曼滤波是基于贝叶斯估计的递归滤波器,主要用于从包含噪声的测量数据中提取动态系统的最优状态估计。它的核心是利用系统的动态模型预测估计下一个状态,并且更新状态方程和观测方程,从而得到更加准确的状态估计卡尔曼滤波算法具体计算公式如下所示

通过MTALAB仿真,添加一个虚拟静态重量80kg0-80kg的动态重量,并对其添加固定的高斯白噪声通过滑动滤波得到滑动滤波的效果。具体如图2-42-5所示。

四、技术手段与系统结构

通过PLC内部的数据处理控制螺旋输机的给料速度,喂料的速度可分为快速、慢速两种喂料的速度并且通过触摸屏来显示累计称重次数和累计重量。通过PLC的输出信号来显示当前设备的运行状态,该设备可以实现自动控制运行动控制运行。卸料的方式可设置为自动卸料和手动卸料。最后通过触摸屏来显示实时重量和设备的运行状态并且对定量秤的称重次数和称重累计重量进行数据保存。

五、系统主程序设计

本设计的主程序主要包括上电初始化程序、变频器MODBUS-RTU轮询程序、粉料配比程序、传感器输入程序、数字滤波程序、秤清零、手动控制程序和自动控制程序具体流程如图所示。

六、触摸屏设计

西门子触摸屏有很多优点,主要的优点就是可以实时监控设备的各项参数和状态,可以完成数据采集生成曲线还可以通过报表的形式输出,通过触摸屏内部的虚拟按钮来代替实际的按钮来对设备进行调试,西门子的触摸屏的报警功能非常强大可以对设备各个参数设置报警值并通过弹窗的形式显示报警信息,HMI触摸屏软件已经是当下工业设备中不可缺少的一个部分。

登录页面

手动控制页面

自动控制页面

参数设置页面

报警显示页面

称重数据记录

七、程序

清零子程序
#R_TRIG_Instance(CLK:=#清零,
Q=>#a);
IF #a THEN
#称重传感器暂存 := "称重传感器输出值";
"称重传感器输出值" := "称重传感器输出值" - #称重传感器暂存;
WHILE "称重传感器输出值" < > 0 DO
"称重传感器输出值" := "称重传感器输出值" - #称重传感器暂存;
END_WHILE;
END_IF;
"称重传感器输出值" := "称重传感器输出值" - #称重传感器暂存;
(7)传感器输入子程序
#称重滤波前_1:= SCALE_X(MIN := 0.0,
VALUE:=NORM_X(MIN:=5530, VALUE :=#ai_Input_1  ,MAX := 27468),
             MAX := 200.0);
#数字滤波_Instance(in_put:= LREAL_TO_REAL(#称重滤波前_1),
km_q:=#"km_q",
km_r:=#km_r,
out_put:=#称重传感器滤波后_1);
配比子程序
#总比例:=#"1_号储料罐比例"+ #"2_号储料罐比例"+#"3_号储料罐比例";
//一号料输出重量
#"1_号储料罐下料重量" := #"1_号储料罐比例" * (#配比总重量 / #总比例);
//二号料输出重量
#"2_号储料罐下料重量" := #"2_号储料罐比例" * (#配比总重量 / #总比例);
//三号料输出重量
#"3_号储料罐下料重量" := #"3_号储料罐比例" * (#配比总重量 / #总比例);
数字滤波子程序
IF "FirstScan" THEN //首次循环进入
FOR #数组编号_1 := 1 TO 22 BY 1 DO
#数据暂存区_1[#数组编号_1] := #in_put;
END_FOR;
END_IF;
#最大值 := 0;
FOR #数组编号_1 := 1 TO 22 BY 1 DO
IF #最大值 <= #数据暂存区_1[#数组编号_1] THEN
#最大值 := #数据暂存区_1[#数组编号_1];
END_IF;
END_FOR;
#最小值 := #最大值;
FOR #数组编号_1 := 1 TO 22 BY 1 DO
IF #最小值 >= #数据暂存区_1[#数组编号_1] THEN
#最小值 := #数据暂存区_1[#数组编号_1];
END_IF;
END_FOR;
#数据求和 := 0;
FOR #数组编号_1 := 1 TO 22 BY 1 DO
#数据求和 := #数据暂存区_1[#数组编号_1] + #数据求和;
END_FOR;
#滑动平均值结果 := (#数据求和 - #最大值 - #最小值) / 20;
FOR #数组编号_2 := 2 TO 22 BY 1 DO
#数据暂存区_2[#数组编号_2] := #数据暂存区_1[#数组编号_2-1];
END_FOR;
#数据暂存区_2[1] := #in_put;
FOR #数组编号_1 := 1 TO 22 BY 1 DO
#数据暂存区_1[#数组编号_1] := #数据暂存区_2[#数组编号_1];
END_FOR;

八、电路图(部分图纸)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-9-20 00:47 , Processed in 0.046337 second(s), 27 queries .

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