常见的PLC浮点数字节序转换方法

article/2025/8/5 3:42:11

变量的字节序

在 PLC 中,寄存器的长度通常为 16 bit,常见的数据类型有 16bit、32bit长度的

对于 32 bit 长度的数据,比如浮点型(在西门子、Codesys 中称为 REAL 型),由于长度较长,在不同平台、使用不同协议进行数据传输时,双方传输的数据的字节排布的方式有可能不同,举例如下:

  • 设按照 IEEE754 标准,从高字节到低字节的一个浮点数为:A B C D
  • 则不同数据对以上数据的存储方式可能有 4 种:ABCD、CDAB、BADC、DCBA

因此,不同厂商、设备之间若使用浮点数进行数据交换,有可能要做数据转换,转换的本质是改变不同字节的排列顺序,因此又称为【字节序转换】

常见的字节序转换方法

现成的字节交换指令 + 类型转换指令

如汇川、西门子、三菱都提供了SWAP指令,此指令可实现同一个寄存器高低字节的交换

(下图引自大佬的文章:https://blog.csdn.net/qq_42983533/article/details/125691077)

下图引自西门子指令文档

总体逻辑

REAL 变量输入 --1–> WORD 类型数组 --2–> 交换字节的 WORD 类型数组 --3–> REAL 类型输出

  • 1:使用系统的数据类型转换函数,将 REAL 型变量转换为 WORD 类型数组
  • 2:使用上面介绍的SWAP指令,交换每个 WORD 中的字节
  • 3:使用系统的数据类型转换函数,将 WORD 型数组转回 REAL 型变量

部分厂商直接提供了相关的指令,比如:

  1. 西门子博途高版本提供的一系列大端/小端读写指令:READ_LITTLE/WRITE_LITTLE/READ_BIG/WRITE_BIG介绍见:https://support.industry.siemens.com/cs/mdm/109759862?c=81971440011&lc=en-AF
    在这里插入图片描述

  2. Codesys 的 Memory 库中提供的 (倍福、欧姆龙、汇川、信捷、禾川等能导入对应Codesys库的也都可使用)
    介绍见:https://content.helpme-codesys.com/en/libs/CAA%20Memory/Current/CAA_Memory/Reverse-Bit-Swap-ByteWord-order/fld-Reverse-Bit-Swap-ByteWord-order.html
    在这里插入图片描述

Byte 数组/结构体 AT 映射 Float 直接操作

参考这位大佬的文章:http://www.ymmfa.com/read-gktid-1643979.html
关键是编程软件要 支持构造直接指向 REAL 型变量的 Byte [] 数组 或 UDT结构体

PCS7、博途、CodeSys 均支持以上写法

循环左移 + 类型转换

  • 高低字转换:通过按字交叉赋值实现
  • 高低字节转换:在 WORD 中使用【循环左移 ROL 】实现(循环左移 8 位 = 每个字交换高低字节)

比如以下的文档:https://www.schneider-electric.cn/zh/faqs/FA414474/

图片摘自上面的网页
在这里插入图片描述


http://www.hkcw.cn/article/pPwjQkqZOV.shtml

相关文章

【Day42】

DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 """ Day 42: Grad-CAM与Hook函数本节主要内容: 1. 回调函数(Callback)和lambda函数- 回调函数是作为参…

各种乱码问题解决措施

1.乱码问题原因 1.数据的编码和解码使用的不是同一个字符集 编码就是我们能看懂的数据转换为计算机能够识别的二进制编码 解码就是将存在计算机里面的二进制编码的文件转化为我们能够识别的字符等内容。 2.使用了不支持某个语言文字的字符集。 1,1html文件乱码 在<meta c…

c++ 异常处理

测试代码&#xff1a; #include <exception>void testException() { // test exceptionclass MyException : public exception {public:using std::exception::exception; // 关键&#xff1a;继承父类所有构造函数};struct Divide {int operator() (int a, int b) cons…

yolo个人深入理解

卷积层的理解,通过云端服务器训练模型,模型构建的重要性,针对极低像素的处理,模型训练召回率提高技巧,卷积层2,4,8,16,32的小模型与大模型的理解 一.关于backbone,neck,head深入理解 1,backbone的主要组成部分是sppf和conv,这是backbone的核心,其中yolov5和yolov8…

Git基本操作

目录 1. 创建Git本地仓库 2. 配置Git 3. 认识工作区、暂存区、版本库 4. 添加文件 -- 场景一 5. 查看.git文件 6. 添加文件 -- 场景二 7. 修改文件 8. 版本回退 9. 撤销修改 9.1 情况一&#xff1a;对于工作区的代码&#xff0c;还没有add 9.2 情况二&#xff1a;已…

《中国棒垒球》注册青少年运动员需要什么条件·棒球1号位

青少年注册棒球/垒球运动员&#xff1a; 基础条件 | Basic Requirements 年龄范围 通常6-18岁&#xff08;按U8/U10/U12/U15/U18分组&#xff09; Typically 6-18 years old (grouped as U8/U10/U12/U15/U18) 健康证明 需提交体检报告&#xff0c;重点关注心肺功能与运动损…

华为深度学习面试手撕题:手写nn.Conv2d()函数

题目 只允许利用numpy包&#xff0c;实现Pytorch二维卷积函数nn.Conv2d() 解答 此代码考察二维卷积的概念&#xff0c;详见&#xff1a; 6.2. 图像卷积 — 动手学深度学习 2.0.0 documentation 6.3. 填充和步幅 — 动手学深度学习 2.0.0 documentation 6.4. 多输入多输出通…

MMR 最大边际相关性详解

最大边际相关性&#xff08;MMR&#xff0c;max_marginal_relevance_search&#xff09;的基本思想是同时考量查询与文档的 相关度&#xff0c;以及文档之间的 相似度。相关度 确保返回结果对查询高度相关&#xff0c;相似度 则鼓励不同语义的文档被包含进结果集。具体来说&…

美业+智能体,解锁行业转化新密码(2/6)

摘要&#xff1a;中国美业市场近年蓬勃发展&#xff0c;规模持续扩大&#xff0c;预计不久将突破万亿级别&#xff0c;但同时也面临着诸多挑战&#xff0c;如获客成本攀升、服务质量不稳定、难以满足消费者多元化个性化需求等。智能体技术的出现为美业带来了新的发展机遇&#…

Mybatis-Plus 学习

Mybatis-Plus 简介 官网&#xff1a;https://baomidou.com/ github 地址&#xff1a;https://github.com/baomidou/mybatis-plus 什么是 Mybatis-Plus MyBatis-Plus&#xff08;简称 MP&#xff09;是 MyBatis 的增强工具库&#xff0c;旨在简化开发流程&#xff0c;减少样…

Linux开发追踪(IMX6ULL篇_第一部分)

前言 参数&#xff1a;cortex-A7 698Mhz flash 8GB RAM 512M DDR3 2个100M网口 单核 初期&#xff1a; 一、安装完虚拟机之后&#xff0c;第一步先设置文件之间可以相互拷贝复制&#xff0c;以及通过CRT连接到虚拟机等 折磨死人了啊啊啊啊啊啊 1、关于SSH怎么安装…

中国观鸟数据集(CSV)

数据简介 今天我们分享的数据是观鸟数据集&#xff0c;该数据整理中国观鸟记录中心的鸟类报告数据&#xff0c;在2024年获取了该网站种鸟类的报告信息&#xff0c;详情信息以及鸟种信息&#xff0c;分别整理为各省的数据&#xff0c;方便大家研究使用&#xff0c;方便大家研究使…

【AI论文】SWE-rebench:一个用于软件工程代理的任务收集和净化评估的自动化管道

摘要&#xff1a;基于LLM的代理在越来越多的软件工程&#xff08;SWE&#xff09;任务中显示出有前景的能力。 然而&#xff0c;推进这一领域面临着两个关键挑战。 首先&#xff0c;高质量的训练数据稀缺&#xff0c;尤其是反映现实世界软件工程场景的数据&#xff0c;在这些场…

【计算机系统结构】习题2

目录 1.有一条静态多功能流水线由5段组成&#xff0c;加法用1、2、4、5段&#xff0c;乘法用1、3、5段&#xff0c;第3段时间为&#xff0c;其余各段为&#xff0c;且流水线的输出可直接返回输入端或暂存器&#xff0c;若计算&#xff0c;试计算吞吐量、加速比、效率 2.有一动…

多模态大语言模型arxiv论文略读(103)

Are Bigger Encoders Always Better in Vision Large Models? ➡️ 论文标题&#xff1a;Are Bigger Encoders Always Better in Vision Large Models? ➡️ 论文作者&#xff1a;Bozhou Li, Hao Liang, Zimo Meng, Wentao Zhang ➡️ 研究机构: 北京大学 ➡️ 问题背景&…

[ElasticSearch] RestAPI

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

【irregular swap】An Examination of Fairness of AI Models for Deepfake Detection

文章目录 An Examination of Fairness of AI Models for Deepfake Detection背景points贡献深伪检测深伪检测审计评估检测器主要发现评估方法审计结果训练分布和方法偏差An Examination of Fairness of AI Models for Deepfake Detection 会议/期刊:IJCAI 2021 作者: 背景…

初学大模型部署以及案例应用(windows+wsl+dify+mysql+Ollama+Xinference)

大模型部署以及案例应用&#xff08;windowswsldifymysqlOllamaXinference&#xff09; 1.wsl 安装①安装wsl②测试以及更新③安装Ubuntu系统查看系统以及版本安装Ubuntu系统进入Ubuntu系统 2、docker安装①下载安装包②安装③docker配置 3、安装dify①下载dify②安装③生成.en…

【Linux系统编程】Ext系列文件系统

目录 磁盘文件系统的必要性 认识磁盘结构 理解硬件 磁盘的物理结构 磁盘的存储结构 磁盘的逻辑结构 引入磁盘文件系统 引入"块"概念 引入"分区"概念 引入"分组"概念 ext*系列文件系统 inode、inode Bitmap、inode Table Block Bitm…

基于ZYNQ ARM+FPGA异构平台的声呐数据采集系统设计

0 引 言 近年来&#xff0c;随着海洋工程技术的发展&#xff0c;水下无人 航行器 (underwater unmanned vehicle, UUV)) 因其 灵活性、低风险性以及多功能性的优点&#xff0c;在维护国 家海洋权益以及海洋安全发挥着日益重要的作用 [1-3] 。 UUV 在完成目标搜索、…