news 2026/7/1 19:29:34

西门子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/18 2:54:11

IEEE RBTS BUS4标准系统 (roy billinton test system)

IEEE RBTS BUS4标准系统 (roy billinton test system) Matlab/simulink仿真 该模型自己搭建(Matlab 2016a)&#xff0c;与标准参数一致&#xff0c;可观测电压&#xff0c;潮流。 还可接入各类故障、DG等最近在折腾电力系统仿真&#xff0c;发现IEEE RBTS BUS4真是个不错的练手…

作者头像 李华
网站建设 2026/6/23 14:44:45

边缘设备模型加载提速

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘设备模型加载提速&#xff1a;能耗优化与未来路径目录边缘设备模型加载提速&#xff1a;能耗优化与未来路径 引言&#xff1a;边缘AI的加载瓶颈与核心价值 现在时&#xff1a;主流技…

作者头像 李华
网站建设 2026/6/23 14:44:44

基于 YOLOv8 的智能杂草检测识别实战 [目标检测完整源码]

基于 YOLOv8 的智能杂草检测识别实战 [目标检测完整源码] 引言&#xff1a;为什么杂草识别是智慧农业中的“硬问题”&#xff1f; 在智慧农业场景中&#xff0c;杂草识别一直被认为是目标检测中难度较高的一类任务&#xff0c;原因主要集中在以下几点&#xff1a; 杂草与作物…

作者头像 李华
网站建设 2026/6/23 14:44:42

1小时打造简易SQL注入检测工具原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个简易SQL注入检测工具原型&#xff0c;要求实现以下核心功能&#xff1a;1) 基础URL参数检测 2) 错误型注入识别 3) 简单结果返回。界面只需包含&#xff1a;URL输入框…

作者头像 李华
网站建设 2026/6/23 2:42:39

我想使用这个Qt Designer设计一个调用YOLO目标检测的界面,要求越简单越好,我只是想学会使用这个Qt Designer,你给我详细的步骤吧,比如如何画好布局界面,槽,响应什么的。

问题描述: 我想对现有的YOLO检测模型开发一个检测界面,使用Qt Designer设计一个调用YOLO目标检测的界面,然后使用pyinstaller打包成exe程序。 问题解答: 第一步: 先下载好ultralytics代码,然后配置环境,调通程序。 第二步骤: 利用Qt Designer设计设计界面,下面是…

作者头像 李华
网站建设 2026/6/22 3:39:38

LLaMA-Factory微调显存优化:云端GPU镜像深度解析

LLaMA-Factory微调显存优化&#xff1a;云端GPU镜像深度解析 作为一名经常微调大模型的研究员&#xff0c;你是否也遇到过显存不足的困扰&#xff1f;每次调整参数、优化配置都要花费大量时间&#xff0c;严重拖慢实验进度。今天我要分享的是如何通过预优化的LLaMA-Factory镜像…

作者头像 李华