物料实时加入给料机,同时给料机也在出料,要计算物料就过给料机的流量,进了多少料,出了多少料。求大神指点。。。。抱拳
物料实时加入给料机,同时给料机也在出料,要计算物料就过给料机的流量,进了多少料,出了多少料。求大神指点。。。。抱拳
实时流量计算:通过称重传感器实时监测给料机内物料重量变化,结合时间间隔,用公式 流量 =(初始重量 - 当前重量)/ 时间 得出实时出料流量;进料流量可通过上游投料设备的设定参数(如转速、开度)或额外计量装置获取。
累计量统计:
进料累计量:对进料流量进行时间积分(如每秒进料流量累加)。
出料累计量:同理对出料流量积分,或通过给料机出料口的计量设备(如皮带秤)直接统计。
需注意传感器精度、物料特性(如堆积密度变化)对计算的影响,定期校准设备以确保数据准确。
楼上讲的很好,重点是你需要评估每一秒或5秒或10秒的质量或体积流量变化是可信的,
其实每秒还是每10秒“积算”一次都不重要,都可以实现“积分”的目的。
如果只是接近可信,例如上下波动较大,则可以加个惯性滤波,让它在你关心的这个积算单位里相对稳定就行,
对于远大于这个积算时间单位的任何时间,这个精度都是很高的,我曾经做过定量误差分析,这个累计的误差都远远小于你的称重的动态误差。因为积分有“平均"概念.
你用的是螺旋给料、旋转给料还是皮带给料?称重的积算还需要乘以转速或线速度。
// 在OB35组织块中编写(OB35默认循环中断时间为100ms)
FUNCTION_BLOCK "FlowTotalizer"
VAR
// 输入变量
FlowRate : REAL; // 瞬时流量值 (m³/h)
Reset : BOOL; // 累计值复位信号
// 输出变量
TotalFlow : REAL; // 累计流量值 (m³)
// 内部变量
LastScanTime : TIME; // 上次扫描时间
TimeInterval : REAL; // 时间间隔(小时)
END_VAR
// 主程序
METHOD Calculate : VOID
VAR_TEMP
CurrentTime : TIME;
DeltaTime : TIME;
END_VAR
BEGIN
// 获取当前时间
CurrentTime := TIME();
// 计算时间差(第一次运行时LastScanTime为0)
IF LastScanTime = T#0s THEN
DeltaTime := T#100ms; // 初始值设为100ms
ELSE
DeltaTime := CurrentTime - LastScanTime;
END_IF;
// 转换为小时单位 (100ms = 0.1s = 0.1/3600 h)
TimeInterval := REAL_TO_TIME(DeltaTime) / 3600000.0;
// 流量累计(梯形法积分)
TotalFlow := TotalFlow + FlowRate * TimeInterval;
// 复位处理
IF Reset THEN
TotalFlow := 0.0;
END_IF;
// 更新上次扫描时间
LastScanTime := CurrentTime;
END_METHOD
感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。
对于求助者要求:
1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;
2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。
3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。
4、2025年加油!