快速了解S7-1200 PLC的存储器及存储区的寻址方式

2023-05-16

S7-1200 PLC的存储器地址包括输入I、输出Q、位存储器M、数据块DB,以及本地或临时存储器L

 

 

eg:标识存储区M0.0 MB0 MW0 MD0 分别是 B位 字节B 8位 字W 16位 双字D 32位

输入过程映像存储器I

输入I是CPU用于接收外部输入信号的,比如按钮、开关、行程开关等。CPU会在扫描开始时从输入模块上读取外部输入信号的状态,放入到输入过程映像区,当程序执行的时候从这个输入过程映像区读取对应的状态进行运算。

但是如果我们给地址或变量后面加上“:P”这个符号的话,就可以立即访问外设输入,也就是说可以立即读取数字量输入或模拟量输入。它的数值是来自被访问的输入点的,而不是输入过程映像区的,这个我们需要注意一下。

输出过程映像存储器Q

输出Q是将程序执行的运算结果输出驱动外部负载的,比如指示灯、接触器、继电器、电磁阀等,但是需要注意它不是直接输出驱动外部负载的,而是需要先把运算结果放入到输出过程映像区,CPU在下一个扫描周期开始时,将过程映像区的内容复制到物理输出点,然后才驱动外部负载动作的。

如果我们需要把运算结果直接写入到物理输出点,需要在地址或变量名称后面加上“:P”这个符号。在使用输出Q的时候需要注意避免双线圈的情况,如果出现双线圈错误的话,会造成物理输出点不能输出的情况。

位存储器M

位存储器M既不能接收外部输入信号,也不能驱动外部负载,它是属于内部的软元件。用户程序读取和写入M存储器中所存储的数据,任何代码块都可以访问M存储器,也就是说所有的OB、FC、FB块都可以访问M存储器中的数据,这些数据可以全局性的使用。

位存储器M常用来存储运算时的中间运算结果,或者用于触摸屏中组态按钮开关的情况。对于前面说的双线圈错误,比如有两个驱动条件都要驱动Q0.0,这时我们就可以分别引入两个位存储器地址M0.0和M0.1,然后再将这两个位存储器并联再输出Q0.0,就可以避免双线圈的问题了。

临时存储器L

临时存储器L用于存储代码块被处理时使用的临时数据,我们只要去调用代码块,CPU就会将临时存储器自动分配给代码块,当代码块执行完成后,CPU会重新分配临时存储器用于其它要执行的代码块。

其实临时存储器L类似于位存储器M,区别在于M存储器是全局的,L存储器是局部的。也就是说在OB、FC、FB块的接口区生成的临时变量只能在生成它的代码块中使用,不能与其他代码块共享。我们需要注意的是临时存储器只能通过符号地址寻址。

数据块DB

数据块DB用于存储各代码块使用的各种类型的数据,数据块的访问可以按位、字节、字、双字的方式进行寻址,我们在访问数据块中的数据时,应该指明数据块的名称,比如DB0.DBB0。

在S7-1200 PLC中新建的DB块默认是采用优化块的访问方式进行访问的,所有通常都是使用符号的方式访问DB块中的数据,如果我们需要使用绝对地址访问的话,需要在属性设置中去掉优化访问块的选项。

这就是我们S7-1200 PLC的存储器啦,我们编程的过程中是一定会使用到这些存储器的哦,大家一定要掌握牢固哟~

上一篇文章中给大家介绍了(点击回顾: S7-1200 PLC的存储器)地址包括输入I、输出Q、位存储器M、数据块DB,以及本地或临时存储器L

那么这些存储器的大小是怎么进行表示的呢?

这是这一篇文章中所要告诉大家的,其实每个存储器的大小都是以字节为单位进行表示的,存储器中的每一个存储单元都有一个唯一的地址,用户程序利用这些地址去访问存储单元的数据。

访问的寻址方式主要有按位寻址、按字节寻址、按字寻址和按双字寻址。其实这跟S7-200/200 SMART PLC中的寻址方式是一样的,只不过我们S7-1200中存储器有 DB块,对于DB块中的地址寻址格式是需要另外注意的,这也是我们学习的一个重点。

下面小编分别给大家介绍一下吧。

按位寻址

按位寻址的格式是由存储器标识符、字节地址、分隔符、字节的位号这四个部分组成的,什么是存储器标识符?

比如说上篇文章介绍的输入I、输出Q、位存储器M等,就是使用存储器的字母I/Q/M。

字节地址表示的是第几个字节,是直接用数字表示的。

分隔符是一个固定的小的黑点表示。

字节的位号表示的是要访问的字节中的哪个位。

因为一个字节是8个位,分别是0~7,所以字节的位号可以是0~7的任意一个数字。比如M3.3,这是按位寻址的,访问的是M存储器的第 3个字节中的bit3位(从第0个位/字节开始数起)。

按字节、字、双字寻址

按字节、字和双字寻址的格式都是一样的,都是由存储器标识符、字节/字/双字的表示符B/W/D、字节的起始地址这三个部分组成的。

比如以输出过程映像存储器为例,如果将字节3的0~7位都描黑,描黑的色块代表访问的地址是QB3。我们还可能会看到这样的地址:MW10、QW2、ID0等。

在CPU中我们能够访问的小的地址是位,8个位可以组成1个字节,2个字节组成1个字,2个字可以组成1个双字。

比如说QB0包含了Q0.0~Q0.7这8个位,QW0包含了QB0和QB1这2个字节,其中QB0是高字节、QB1是低字节,QD0包含了QW0和QW2这2个字,也含了QB0、QB1、QB2、QB3这4个字节。

DB块中地址的寻址格式

对于DB块,如果使用的优化访问的块,那么在对DB块寻址时是通过符号寻址的,如果使用的是非优化的访问块,那么DB块中建立的变量都会有一个对应的绝对地址。我们使用的时候需要注意的是,对于DB块的访问,在一个程序中可以添加多个DB块,所以在访问时候需要在访问的地址前面加上DB块的名称。

比如访问DB1中的第0个字节的第0个位,地址应该是DB1.DBX0.0;访问DB1中的第1个字节,地址为DB1.DBB1;访问DB1中的第2个字,地址为DB1.DBW2;访问DB1中的第4个字,地址为DB1.DBD4。

很显然,我们看到地址中的DB1是DB块的名称,后面用小黑点间隔开,后面的地址就是DB X/B/W/D 数字的形式就可以了。

这就是S7-1200 PLC存储区的寻址方式,我们要重点掌握DB块中地址的寻址格式哦。可能在刚开始接触看到这样的地址会有点陌生,但是其实自己也可以随便写个地址去确定它到底是访问的那个地址,用的多了也就熟悉了哦~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速了解S7-1200 PLC的存储器及存储区的寻址方式 的相关文章

  • C++的 remove函数

    一 介绍 remove函数原型如下 xff1a template lt class ForwardIt class T gt ForwardIt remove ForwardIt first ForwardIt last const T a
  • 主板上的南桥与北桥

    一 历史 曾经 xff0c 北桥芯片和南桥芯片都是主板芯片组中最重要的组成部分 传统来说 xff0c 靠上方的叫北桥 xff0c 靠下方的叫南桥 北桥负责与CPU通信 xff0c 并且连接高速设备 xff08 内存 显卡 xff09 xff
  • CMake的add_library与target_link_libraries

    一 add library介绍 使用该命令可以在Linux下生成 xff08 静态 动态 xff09 库so或者 a文件 xff0c Windows下就是dll与lib文件 xff0c 它有两种命令格式 1 1 第一种格式 xff1a No
  • Linux下终止正在执行的shell脚本

    一 问题 Linux系统Shell中提交了一个脚本 xff0c 但是需要停止这个进程 xff0c 如何处理 xff1f 二 方案1 killall fileName 说明 xff1a killall是一个命令 xff0c 不是kill al
  • Qt对象树的销毁

    一 问题 在C 43 43 中中 xff0c 我们都知道 xff1a delete 和 new 必须配对使用 一 一对应 xff1a delete少了 xff0c 则内存泄露 为什么Qt使用new来创建一个控件 xff0c 但是却没有使用d
  • DNS域名解析之递归与非递归查询

    DNS域名解析之递归与非递归查询 递归查询迭代查询实例 递归查询 主机向本地域名服务器的查询一般是递归查询 xff1a 如果本地域名服务器不知道查询的IP地址 xff0c 那么本地域名服务器就会以DNS客户的身份向根域名服务器继续发生请求
  • spi,iic,uart,pcie区别

    一 spi SPI 是英语Serial Peripheral interface的缩写 xff0c 顾名思义就是串行外围设备接口 xff0c 是同步传输协议 xff0c 特征是 xff1a 设备有主机 xff08 master xff09
  • 决策树的介绍

    一 介绍 决策树 decision tree 是一类常见的机器学习方法 它是一种树形结构 xff0c 其中每个内部节点表示一个属性上的判断 xff0c 每个分支代表一个判断结果的输出 xff0c 最后每个叶节点代表一种分类结果 例如 xff
  • 支持向量机

    一 是否线性可分的问题 考虑图6 1中 xff0c A D共4个方框中的数据点分布 xff0c 一个问题就是 xff0c 能否画出一条直线 xff0c 将圆形点和方形点分开呢 xff1f 比如图6 2中 xff0c 方框A中的两组数据 xf
  • cmake 链接库名称扩展

    多个文件 macro span class token punctuation span configure lib by types OUTLIBS DebugSuffix span class token punctuation spa
  • 如何自定义TCP通信协议

    物联网行业智能硬件之间的通信 异构系统之间的对接 中间件的研发 以及各种即时聊天软件等 xff0c 都会涉及自定义协议 为了满足不同的业务场景的需要 xff0c 应用层之间通信需要实现各种各样的网络协议 以异构系统的对接为例 在早期 xff
  • 使用米联客FPGA开发板 固化程序失败

    问题描述 xff1a 使用米联客FPGA ZYNQ7020开发板 xff0c 在利用工程和FSBL生成BOOT bin和fsbl elf文件 烧录FLASH时 xff0c 总是失败 这个问题折腾我小半天 xff0c xff0c 无语了 后来
  • Qt串口接收数据长度不稳定问题

    最近在做一个实时接收数据的项目 xff0c 需要每2ms接收下位机发来的两帧数据 xff0c 算是串口高速接收 在使用的过程中 xff0c 发现串口接收的数据长度不稳定 xff0c 有时长有时短 代码如下 xff1a connect ser
  • git的使用入门

    1 添加个人信息 git config global user name 名字 git config global user email 邮箱 git config global user phone 手机号 查看是否提交 git conf
  • Python-OpenCV之形态学转换

    目标 学习不同的形态学操作 xff0c 例如腐蚀 xff0c 膨胀 xff0c 开运算 xff0c 闭运算等 我们要学习的函数有 xff1a cv2 erode xff0c cv2 dilate xff0c cv2 morphologyEx
  • 在windows10系统中搭建mmdetection(2020.7.19)

    参考博客 https blog csdn net david lee13 article details 102940221 本人使用的版本 python 61 3 6cuda 61 10 0cudnn 61 7 5 1pytorch 61
  • C语言字节对齐详解

    C语言字节对齐12345 不同系统下的C语言类型长度 Data TypeILP32ILP64LP64LLP64char8888short16161616int32643232long32646432long long64646464poin
  • 深入学习卷积神经网络中卷积层和池化层的意义

    xff08 文章转载自 xff1a https www cnblogs com wj 1314 p 9593364 html xff09 为什么要使用卷积呢 xff1f 在传统的神经网络中 xff0c 比如多层感知机 xff08 MLP x
  • 关于LSTM的units参数

    LSTM units input shape 3 1 这里的units指的是cell的个数么 xff1f 如果是 xff0c 按照LSTM原理这些cell之间应该是无连接的 xff0c 那units的多少其意义是什么呢 xff0c 是不是相
  • C语言的queue函数

    转自 xff1a https blog csdn net zhang2622765758 article details 81709820 queue 模板类的定义在 lt queue gt 头文件中 与stack 模板类很相似 xff0c

随机推荐