news 2026/6/16 17:30:46

西门子smart200 平均值,最新有图片证明中值,最大值,最小值,排序,数据连续移位。 2个...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
西门子smart200 平均值,最新有图片证明中值,最大值,最小值,排序,数据连续移位。 2个...

西门子smart200 平均值,最新有图片证明中值,最大值,最小值,排序,数据连续移位。 2个版本,一个整数版本,一个浮点数版本,自己定义数据区间范围,采用指针算法,自己可以组合,作为一些数据处理。

最近在鼓捣西门子Smart200的数据处理,发现指针玩法能整出不少实用功能。今天咱们直接上硬货,整两套数据处理模板——整数版和浮点版,搞定均值、中值、极值这些常规操作,顺便带数据移位功能。老规矩,先看效果再拆解代码。

先整个整数版的练手。假设我们要处理20个随机温度值(范围1-100℃),先定义数据存储区:

VAR iBuffer: ARRAY[0..19] OF INT; // 原始数据缓存 pData: POINTER := ADR(iBuffer); // 指针初始化 iTempArray: ARRAY[0..19] OF INT; // 临时处理数组 END_VAR

数据移位用指针跳地址实现最省事,每次新数据进来就把旧数据顶出去:

// 数据左移一位(FIFO) FOR #i := 1 TO 19 DO pData^ := (pData + 1)^; pData := pData + 1; END_FOR // 最后一位存入新数据 pData^ := NewTemperature;

排序这块用冒泡虽然土但稳定,注意指针要复位:

// 降序排序(指针版冒泡) #pStart := ADR(iTempArray); FOR #j := 0 TO 18 DO #pCurrent := #pStart; FOR #k := 0 TO 18 - #j DO IF #pCurrent^ < (#pCurrent + 1)^ THEN #temp := #pCurrent^; #pCurrent^ := (#pCurrent + 1)^; (#pCurrent + 1)^ := #temp; END_IF #pCurrent := #pCurrent + 1; END_FOR END_FOR

中位数取第9、10位的平均值更准确,避免偶数组误差:

// 中值计算 #pMid := ADR(iTempArray) + 9; IF #pMid^ != 0 THEN iMedian := (#pMid^ + (#pMid + 1)^) / 2; END_IF

浮点版的处理更要注意精度问题。比如处理压力值(0.0-50.0MPa),数据缓存得用REAL类型:

VAR fBuffer: ARRAY[0..14] OF REAL; // 15个压力样本 pFloat: POINTER := ADR(fBuffer); END_VAR

浮点数的极值判断不能直接用等于,这里用差值绝对值判断:

// 浮点最大值检测 IF (NewValue - fMax) > 0.001 THEN fMax := NewValue; END_IF

排序时比较环节要加精度容差,防止误判:

IF (#pCurrent^ - (#pCurrent + 1)^) < -0.001 THEN // 执行交换操作 END_IF

均值计算建议用累加指针,避免多次访问数组:

#pSum := ADR(fBuffer); FOR #n := 0 TO 14 DO fTotal := fTotal + #pSum^; #pSum := #pSum + 1; END_FOR fAverage := fTotal / 15.0;

实际调试时通过变量表抓到的数据流,可以看到移位效果:当新值50.6插入时,最旧的32.1被挤出队列,这种处理方式特别适合滚动显示最近N次数据。中位值计算经过排序后取中间值的操作,在波动数据中能有效过滤突发干扰。

指针玩法的优势在资源紧张时尤其明显——同样的排序算法,用指针直接操作内存比用数组索引节省约15%的扫描周期时间。但要注意指针越界问题,建议在移动指针时加上范围校验:

IF #pCurrent < ADR(fBuffer) + SIZEOF(fBuffer) THEN // 安全操作 END_IF

这两套模板可以直接移植到需要数据处理的场景,比如质量监控、趋势分析等。下次遇到需要实时显示数据特征又得控制内存的情况,不妨试试这套指针组合拳。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 16:30:55

玩转汽车电子】手把手拆解MPC5634底层驱动黑盒子

NXP MPC5634芯片底层驱动simulink封装库折腾过嵌入式开发的兄弟都知道&#xff0c;汽车电子这行的寄存器配置简直比相亲还麻烦。去年给某主机厂做ECU项目时&#xff0c;笔者被NXP MPC5634的寄存器手册折磨得差点秃头——直到发现了Simulink封装库这个外挂。先看个真实案例&…

作者头像 李华
网站建设 2026/6/14 3:40:18

鼎捷和钉钉系统集成破局2026:iPaaS成制造业破解“系统割裂”关键

在数字经济浪潮席卷全球的今天&#xff0c;制造业与零售电商领域正面临严峻的系统割裂挑战。据2025年行业调研显示&#xff0c;超过41%的供应链管理者表示&#xff0c;数据质量差与系统集成困难已成为阻碍AI技术深度应用的主要障碍。在此背景下&#xff0c;一句“鼎捷和钉钉系统…

作者头像 李华
网站建设 2026/5/28 22:23:38

Nginx 请求转发配置指南

Nginx 请求转发配置指南 1. 简介 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。本文档将介绍如何使用 Nginx 配置请求转发&#xff0c;并解释一些常用的配置参数。 2. Nginx 安装 在配置之前&#xff0c;确保你的系统已经安…

作者头像 李华
网站建设 2026/6/14 13:46:39

Vue3-07 setup 与 Options API 的关系

总结 data, methods 可以和 setup同时存在&#xff0c;但是不建议这么写 setup能否读取data中的数据setup是最早的生命周期 data 可以读取 setup中的变量&#xff0c;反之不行 setup 与 Options API 的关系 vue2 可以 和 vue3 语法共存。Vue2 的配置&#xff08;data、methos……

作者头像 李华