一、数据单位(数据长度类型)

术语名称位数所占字节说明
Bit1 bit1/8 Byte最小数据单位(0或1)
BByte 字节8 bit1 Byte字节单位
WWord 字16 bit2 Byte通常用于整数、状态字等
DWDouble Word 双字32 bit4 Byte常用于浮点、双整数

1双字 = 2字        1双字 = 4字节        1双字 = 32位

1字 = 2字节        1字 = 16位

1字节 = 8位


三、存储区域(Memory Area)

区域名称说明大小(S7-200 SMART)举例
I区输入映射区外部信号输入1KBI[字节号].[位号]:
(如 I0.0、I2.7)
Q区输出映射区外部信号输出1KBQ[字节号].[位号]
(如 Q0.1、Q5.3)
M区Merker 标志寄存器程序内部临时变量、
中间状态存储
4KBM[字节号].[位号]
(如 M0.2、M10.5)
DB区数据块用户自定义数据结构的存储区128 个 DB 块,
单个4096 字节(4KB)
DB1.DBX04 (X = Bit)
DB1.DBB4 (B = 字节)
DB1.DBW4 (W = 字)
DB1.DBD4 (D = 双字)
T区定时器用于时间控制(接通延时、断开延时等)最多 256 个定时器(T0~T255),支持 1ms、10ms、100ms 分辨率
C区计数器用于计数控制(增计数、减计数、增减计数)最多 256 个计数器(C0~C255),计数范围 0~32767
L区局部变量仅在函数(FC)或功能块(FB)内部使用,调用时临时分配每个块最多 64 字节(512 位)

四、寻址(读写)

在 PLC 中,定位变量通常采用的格式为:

  1. 格式一: [存储区] + [偏移量]
  2. 格式二: [存储区] + [偏移量] + [数据单位]
  3. 格式三:[存储区] + [数据单位] + [偏移量]
  • 存储区:表示变量所在的内存区域(如 I 输入区、Q 输出区、M 内存区等)
  • 偏移量:变量在该存储区中的起始地址
  • 数据单位:变量的存储粒度(如 bit、byte、word、dword 等)

例 1:位(bit)寻址 [存储区] + [偏移量]
数据单位隐含了

I0.3

  • I:表示输入区
  • 0:字节偏移量(第 0 个字节)
  • .:作用是区分字节地址和位地址
  • 3:位偏移量(第 3 位)

含义:读取(或写入)输入区第 0 字节的第 3 位的值,例如某个按钮的开关状态。

例 2:字节(byte)寻址 [存储区] + [数据单位] + [偏移量]

QB2

  • Q:表示输出区
  • B:数据单位,表字节
  • 2:字节偏移量:2(第 2 个字节)

含义:读取(或写入)输出区第 2 个字节的内容,1字节=8个位 即可表示8个输出继电器。

例 3:字(word)寻址 [存储区] + [数据单位] + [偏移量]

MW20

  • M:程序内部临时变量、中间状态存储
  • W:数据单位,表字
  • 20:字节偏移量(从字节 20 开始)

含义:读取(或写入)从字节 20 开始的 2 个字节,例如一个整数计数值。

例 4:数据块(DB)寻址 [存储区] . [数据单位] + [偏移量 ]

DB1.DBX0.4 (X = Bit)
DB1.DBB4 (B = 字节)
DB1.DBW4 (W = 字)
DB1.DBD4 (D = 双字)

  • DB1:表示数据块 1(Data Block 1),这本身就是一个存储区,但它是用户定义的存储区。
  • .:第1个.相当于“进入”这个数据块的意思。
  • .:第2个.作用是区分字节地址和位地址。

五、扩展:底层内存存储方式

当多个字节组成一个Word(16位)、Double Word(32位)或更大数据时,低字节和高字节的存放顺序是怎样的???

什么是字节序(Endian)
当多个字节表示一个数据时,存在两种存储顺序

类型名称说明
Little Endian小端序最低有效字节存放在低地址最高有效字节存放在高地址
Big Endian大端序最高有效字节存放在低地址最低有效字节存放在高地址

例如,假设有一个 类型(1字=2字节)数值为 0x1234,组成字的两个字节是(按8位分组):

  1. 高字节(前8位一个字节):0x12
  2. 低字节(后8位一个字节):0x34
类型DB0.DBB0DB0.DBB1
Little Endian0x120x34
Big Endian0x340x12

注意:西门子 PLC(如 S7-200 SMART、S7-1200/1500)默认采用小端序存储。

字节序注意场景

  1. 正确解析多字节数据(避免数值错误)
    当你在 PLC 中处理字(Word,16 位)、双字(DWord,32 位)等多字节数据时,必须遵循小端序规则才能正确拆分或组合字节。
  2. 确保跨设备通信的数据一致性
    PLC 常需与上位机(如 HMI、SCADA)、传感器、仪表等外部设备交换数据(如温度、流量等数值),而不同设备可能采用不同的字节序(如部分仪表默认大端序)。
  3. 正确处理数据块(DB)的结构化数据
    在数据块中定义数组、结构体等复杂数据类型时,字节序决定了各成员的存储位置。
  4. 避免程序调试中的 “隐蔽错误”
    字节序错误属于 “逻辑正确但结果错误” 的隐蔽问题,不影响程序运行,但会导致数据异常(如显示值错误、控制逻辑失效)。

六、扩展: 数据类型(Data Type)

类型名称位数示例值
BOOL布尔型1 bitTRUE / FALSE
BYTE字节8 bit16#FF
WORD字(整型)16 bit16#FFFF
DWORD双字32 bit16#FFFFFFFF
INT有符号整数16 bit-32768 ~ 32767
DINT双字整数32 bit-21亿 ~ 21亿
REAL浮点型32 bit3.14, -1.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95022.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95022.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95022.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案

现代企业运营中,重复性任务的自动化处理已成为提升组织效率的核心需求。从基础数据录入到复杂工作流管理,企业持续寻求技术创新来降低人工成本、减少操作错误,并将人力资源重新配置到更具价值的战略性工作中。大型动作模型(Large …

部署Web UI自动化测试平台:SeleniumFlaskTester

1. Python环境准备 推荐Python3.11,可从https://www.python.org/downloads/release/python-3119/ 下载,见下图: 安装后,cmd命令行查看版本:python --version 2. 下载源码包 从 https://gitee.com/ligaopan/SeleniumFlaskTester…

计算机网络:到底什么是可变长子网掩码VLSM?

VLSM 是可变长子网掩码,对应的是 FLSM(固定长子网掩码) FLSM 中,子网掩码是固定的,比如一个 C 类地址用 255.255.255.128(/25)划分,每个子网只能有 126 台主机,但如果实际需要的主机数不同,比如有的子网需要 20 台,有的需要 50 台,FLSM 会导致地址浪费。所以 VLSM …

太极行业观察:从传统技艺到数字化转型的演变|创客匠人

太极拳作为中华传统文化的重要组成部分,在全球范围内具有广泛影响力。目前全球太极习练者已超过一亿人,仅中国大陆就有约千万固定练习者。每年与太极相关的赛事、培训、教学、养生旅游等活动,形成了数百亿元的市场规模。尽管如此,…

Kafka服务端NIO操作原理解析(二)

Kafka系列文章 基于Kafka2.1解读Producer原理 基于Kafka2.1解读Consumer原理 Kafka服务端NIO操作原理解析(一) 文章目录Kafka系列文章前言一、基本认知二、Acceptor的主体流程2.1 run方法源码2.2 acceptNewConnections方法源码2.3 主体逻辑流程示意图三…

当服务器负载过高时该怎么办?

当服务器出现负载过高时,要对内存、网络等硬件设备进行查看,其中CPU是重中之重,对CPU使用率进行查看和了解,确定哪些进程占用了大量CPU资源,如果是某个应用程序进程导致CPU高负载,需分析该程序是否存在算法…

跨境电商增长突围:多维变局下的战略重构与技术赋能

在全球化商业浪潮与数字技术迭代的双重驱动下,跨境电商行业正经历前所未有的变革。平台规则的动态调整、市场需求的非线性波动、技术工具的持续革新,共同构成了复杂多变的竞争格局。对于卖家而言,如何在不确定性中锚定增长路径,已…

软件运行时 ffmpeg.dll 丢失怎么办?从原因排查到完美修复的完整方案

在计算机的软件生态系统中,ffmpeg.dll 扮演着一个至关重要却又常被普通用户忽视的角色。这个看似普通的文件,实际上是众多多媒体相关软件能够正常运行的基石之一。当你的视频剪辑软件突然无法导入特定格式的视频,或者心爱的游戏在启动时弹出令…

Axure 11

下载 Axure RP - UX Prototypes, Specifications, and Diagrams in One Tool 激活 Axure RP11 2025-8-7日亲测有效: 49bb9513c40444b9bcc3ce49a7a022f9 汉化 Axure Rp 11 安装、汉化、授权_axure11汉化包-CSDN博客 中文社区 https://www.axure.com.cn/

论文阅读:User Behavior Simulation with Large Language Model-based Agents

https://dl.acm.org/doi/pdf/10.1145/3708985 https://www.doubao.com/chat/15495707526837250 Advances and Challenges in Foundation Agents–Memory调研 论文翻译 基于大型语言模型代理的用户行为模拟 摘要 在推荐系统、社交网络等以人为中心的应用中,高质…

基于ECharts的智慧社区数据可视化

引言数据可视化是现代Web应用的重要组成部分,它能将复杂的数据以直观的图形方式呈现,帮助用户快速理解数据背后的信息。本文将介绍如何使用ECharts库实现智慧社区住户数据的可视化展示,包括柱状图和饼图两种常见图表类型的实现与优化。技术栈…

Qt 综述:从基础到一般应用

摘要: Qt,作为久经考验的跨平台C开发框架,以其强大的功能、丰富的类库和灵活的机制,在桌面应用、嵌入式系统、网络编程等领域占据重要地位。本文将深入解析Qt的核心技术体系,涵盖基础架构、核心机制、UI开发、外观定制…

基于PyTorch一文讲清楚损失函数与激活函数并配上详细的图文讲解

PyTorch损失函数与激活函数 目录 激活函数详解损失函数详解实战案例性能优化技巧 激活函数详解 1. 什么是激活函数? 激活函数是神经网络中的关键组件,它决定了神经元是否应该被激活。没有激活函数,神经网络就只是线性变换的堆叠&#xf…

苍穹外卖-Day1 | 环境搭建、nginx、git、令牌、登录加密、接口文档、Swagger

目录 nginx: nginx反向代理和负载均衡概念 nginx反向代理和负载均衡如何配置? 后端环境:maven管理 sky-common sky-pojo sky-server: 后端环境搭建--Git进行版本控制 后端数据库--Mysql 前后端联调 前后端运行&#xf…

论文阅读-ZeroDCE和ZeroDCE++

文章目录1 概述2 模块2.1 总体说明2.2 LE曲线(Light Enhance Curve)2.3 DCE-Net2.4 无监督损失2.4.1 空间一致性损失2.4.2 曝光控制损失2.4.3 颜色恒定损失2.4.4 照明平滑度损失2.5 ZeroDCE3 效果3.1 不同损失函数组合的效果3.2 参数设置影响3.3 训练数据…

Web自动化技术选择

我想学习自动化技术,我的诉求是: 1.我想做自动报社保功能,先从我们自己的系统里面下载Excel,然后自动登录到社保局的系统,自动填写Excel,自动上传Excel。 2.可以自动的到社保局的系统里面查下数据&#xff…

【celeba】-数据集的介绍

CelebA 数据集在 MTCNN 中的使用 1 数据集结构 CelebA_副本/ ├── Anno/ │ ├── list_bbox_celeba.txt # 边界框 │ ├── list_landmarks_celeba.txt # 5 关键点 │ ├── list_attr_celeba.txt # 40 属性 │ └── identity_CelebA.txt …

解读 GPT-5:从“博士级 AI 专家”能力到 OpenAI API Key 获取与实践(提示工程→性能调优全流程)

GPT-5深度解读:一位“博士级专家”的诞生与思考第一部分:新范式——化繁为简的统一智能体 OpenAI的GPT-5,远不止是一次常规的模型升级。它的发布,标志着一种颠覆性的架构思想变革:从过去那个让用户在各种“Turbo”、“…

8.3.1 注册服务中心Etcd

etcd是什么 etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁, leader选举保障可靠的分布式协同。 etcd 特点 完全复制,集群中的每个节点均拥有全量数据 强一致性,etcd通过raft共识算法…

异或循环冗余

异或代码CRC8-ITU例程比较计算CRC16异或改进测试重点代码 def fun_crc(datas):crc 0xFF poly 0x07 for i in range(len(datas)):for j in range(7, -1, -1):if (crc & 0x80) 0x80: crc (crc << 1) ^ polyelse:crc (crc << 1)if (datas[i] & 2**j):#值…