新闻详情

新闻详情

首页 / 资讯中心 / 详情

七天学会plc 加机器视觉完整笔记:S7-1200 数据类型、存储区与寻址方式(I/Q/M/DB 详解)。

发布时间:2026/6/8 22:30:46
七天学会plc 加机器视觉完整笔记:S7-1200 数据类型、存储区与寻址方式(I/Q/M/DB 详解)。
S7-1200 PLC 自学笔记第二章 数据类型、存储区与寻址方式I/Q/M/DB 全讲解前面看完基础参数先不急着写程序。咱们先搞懂核心问题PLC 是怎么运行的、数据存在哪、怎么找到对应数据。把这些吃透后面写梯形图、SCL 代码都会轻松很多。一、CPU 三种工作状态PLC 的三种作息把 CPU 比作人它日常就三种状态分工很明确。STOP 停止模式相当于睡觉完全不执行咱们写的程序也不会刷新输入输出信号。但可以正常通讯、下载程序。STARTUP 启动模式上电 / 从停止切到运行的过渡阶段就像刚睁眼、赖床整理状态。只执行一次启动 OB初始化程序做完初始化再进入运行状态。RUN 运行模式正常干活状态循环执行主程序不停刷新输入、输出信号。状态切换规则6 种固定情况上电 → 启动模式默认暖启动上电直接停在停止模式停止 → 启动模式拨 RUN 档位 / 远程启动启动失败 → 退回停止启动程序报错就无法开机必须改程序启动完成 → 进入运行模式运行中出错 / 拨 STOP 档位 → 切回停止重点暖启动 启动 OB暖启动S7-1200 默认启动方式。上电后普通临时数据清空勾选了保持性的数据会保留再执行初始化程序。启动 OBOB100 等只在开机瞬间执行一次不会循环跑。一般在这里写初始化代码计数器清零、设置高速计数器、配置通讯 / 传感器参数等。可以创建多个启动 OB按编号顺序依次执行。二、程序结构与各类程序块模块化编程S7-1200 不是从头到尾逐行跑代码靠各类程序块组合调用类似搭积木、套娃。1. 组织块 OB程序入口系统自动调用OB1 循环 OB相当于 C 语言的main主函数PLC 运行后一直循环执行是整个程序的核心入口。启动 OB上电 / 启动时只跑一次负责初始化。中断 OB外部紧急信号触发比如急停立刻打断当前程序优先处理紧急任务。2. FC / FB / DB功能块、数据仓库表格块名称通俗解释核心特点FC 功能单纯干活的工具函数无独立存储输入计算出结果就结束不保存中间状态FB 功能块带记忆的功能模块自带专属背景数据块DB断电 / 反复调用都能保存状态比如电机启停、定时状态DB 数据块数据存储仓库分两种全局 DB公共数据所有程序都能用、背景 DB专属某个 FB单独存该模块数据3. 块嵌套调用模块化用法主程序 OB1 里可以调用多个 FB、FCFB 里面还能再调用其他块。同一个 FB 可以多次调用只要搭配不同的背景 DB就能实现 “一个功能控制多台设备”比如用一套电机控制 FB分别控制 1 号、2 号电机数据互不干扰。三、存储区与寻址数据存在哪、怎么找这是入门重中之重搞懂内存分区和地址就不会出现数据冲突、变量丢失的问题。1. CPU 三类存储器三种存储特性装载存储器类似电脑硬盘断电数据不丢失用来存放完整程序、组态、参数。空间不够可以插 SD 卡扩展。工作存储器类似电脑内存条只存放当前正在运行的代码和实时数据断电全部清空无法额外扩展。保持性存储器专属保险柜专门存放勾选了「保持性」的变量计数器、关键参数等断电数据也能保留。避坑计数器断电归零基本都是没开启保持性功能。2. 五大常用地址区I/Q/M/DB/L1I 输入区耳朵接收外部信号对应 PLC physical 输入端子接按钮、传感器、接近开关。每个扫描周期一开始PLC 会把外部端子状态统一读到 I 区程序运行期间 I 区数据不会临时变动保证信号稳定。示例I0.0第 0 字节第 0 个位单个开关量、IW016 位字。2Q 输出区手脚控制外部设备对应 PLC 输出端子接指示灯、接触器、继电器。程序只修改 Q 区内部数据一个扫描周期结束后统一把数据刷新到外部端子避免输出频繁抖动。示例Q0.0、QW0。3M 位存储区内部中间变量没有物理端子纯程序内部使用用来做中间状态标记、临时运算。整个程序全局通用大型项目少用 M 区容易出现地址冲突。示例M0.0位、MW10字、MD20双字。4DB 数据块专属数据仓库西门子推荐的主流用法支持自定义变量、结构体、数组。全局 DB公共数据所有块都能读写背景 DB绑定 FB 使用只给对应功能块存数据。优点支持中文 / 自定义变量名符号寻址方便阅读和维护。5L 临时存储区草稿纸只在当前程序块OB/FC/FB运行时生效块执行完毕数据直接清空。只能做临时计算不能存关键状态。3. 两种访问端子的方式常规访问I0.0 / Q0.0走过程映像区信号稳定普通开关、电机控制首选。直接物理访问I0.0:P / Q0.0:P跳过映像区直接读写硬件端子响应速度极快。只用在高速计数、高速定位等对实时性要求高的场景。4. 按「位 / 字节 / 字 / 双字」访问最常用寻址按不同大小读取内存严禁地址重叠比如用了 MW10就不要再单独用 MB10、MB11数据会互相覆盖位Bit1 个点位Bool 开关量例I0.0、M1.7字节B8 个位组成例IB0、MB0字W2 个字节 16 位存普通整数例IW0、MW10双字D4 个字节 32 位存大数、小数例ID0、MD205. 进阶寻址方式Slice 切片访问把一个字 / 双字拆分成单独的位、字节读取。比如一个 32 位数据里存了 32 路报警信号可直接单独读取某一位报警不用复杂运算。AT 覆盖访问同一块内存既可以当成整数使用也可以拆成多个开关量使用不额外占用内存灵活转换数据格式。四、数据类型详解PLC 里所有变量都要指定数据类型类型和寻址地址必须匹配。1. 基础数据类型必记Bool 布尔1 位只有 0/1代表开关通断Byte/USInt8 位无符号整数范围 0~255SInt8 位有符号整数范围 - 128~127Word/UInt16 位无符号整数0~65535Int16 位有符号整数最常用整数类型-32768~32767DWord/UDInt32 位无符号大数DInt32 位有符号大数计数、累计数值优先用它不容易溢出Real 浮点数32 位存带小数点的数值温度、压力精度有限LReal 长浮点64 位高精度小数财务、精密计算推荐时间、日期、字符串专门用来存时长、日期、文字报错信息重点提醒Real 浮点数是二进制近似存储不要直接判断两个浮点数是否相等2. 复合数据类型进阶用法数组 Array一串同类型数据比如 10 个温度值做成一组数组结构体 Struct把不同类型数据打包比如一台电机状态、电流、温度放一起UDT 自定义数据类型做成通用模板重复调用适合多台同类型设备3. 浮点数比较 3 种正确写法实战高频问题因为存储精度问题A B基本判定失效推荐三种方案差值容差法最常用计算两个数的差值只要差值小于极小值就判定为相等。区间判断指令用IN_RANGE指令判断数值是否在误差区间内。放大转整数比较工业现场首选把小数乘以倍数转为整数再对比规避浮点精度问题。五、本章速记口诀方便复盘运行状态STOP 睡觉STARTUP 初始化只跑一次RUN 循环干活程序块OB 是入口FB 带记忆配 DBFC 纯运算无存储DB 是公共 / 专属数据仓库存储器装载 硬盘工作 内存保持区 断电不丢的保险柜地址区I 是输入耳朵Q 是输出手脚M 是内部临时标记DB 是主力数据仓库L 是临时草稿纸寻址普通控制用映像区高速场景加:P直连硬件位 / 字节 / 字 / 双字别重叠地址数据类型Bool 管开关Int 管普通整数大数用 DInt小数慎用 Real浮点比较不能直接判相等。
网站建设 高端定制 企业官网