news 2026/5/1 10:04:09

西门子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/5/1 7:04:55

Nginx 缓存清理

Nginx 缓存清理详解 Nginx 作为一个高效的 Web 服务器和反向代理服务器&#xff0c;在提供快速的页面响应和优化 Web 性能方面起着至关重要的作用。Nginx 的缓存机制通过存储来自后端服务器或客户端的请求和响应数据&#xff0c;减少了数据的重复处理&#xff0c;从而大幅提高了…

作者头像 李华
网站建设 2026/4/18 9:10:03

天津店铺设计|口碑工作室的商业空间美学实践[特殊字符]

天津店铺设计&#xff5c;口碑工作室的商业空间美学实践&#x1f3a8;当你走在天津五大道的梧桐树下&#xff0c;或滨江道的霓虹灯下&#xff0c;是否曾被某家店铺的门头吸引驻足&#xff1f;又是否在推门而入后&#xff0c;因为空间的局促、动线的混乱&#xff0c;转身就忘了它…

作者头像 李华
网站建设 2026/5/1 9:00:35

Nginx 之Rewrite 使用详解

文章目录 1. 概述2. Rewrite 指令 2.1 指令语法2.2 Flag 标记说明 3. Rewrite 与 Location 3.1 Location 分类3.2 Rewrite 和 Location 比较 4. Rewrite 实际场景 4.1 基于域名的跳转4.2 基于客户端 IP 访问跳转4.3 基于参数匹配的跳转4.4 基于目录下所有 PHP 文件跳转4.5 基于…

作者头像 李华
网站建设 2026/4/14 0:45:06

JFET放大电路耦合方式:电容耦合设计入门详解

JFET放大电路中的电容耦合设计&#xff1a;从原理到实战的完整指南 你有没有遇到过这样的问题——明明每一级放大器单独测试都表现良好&#xff0c;可一旦级联起来&#xff0c;输出信号就失真、漂移&#xff0c;甚至完全“罢工”&#xff1f; 这很可能不是器件选错了&#xff…

作者头像 李华
网站建设 2026/4/28 23:27:58

发票识别自动化:基于CRNN的智能OCR解决方案

发票识别自动化&#xff1a;基于CRNN的智能OCR解决方案 &#x1f4d6; 技术背景与行业痛点 在企业财务、税务管理、报销审核等场景中&#xff0c;发票信息提取是高频且重复性极高的任务。传统的人工录入方式不仅效率低下&#xff0c;还容易因视觉疲劳导致错录、漏录。随着AI技术…

作者头像 李华