西门子1200与200SMART寻址的区别

本文介绍了西门子S7-1200和200SMART的寻址方式差异,200SMART支持多种存储区寻址,而S7-1200重点在于I/Q/M/DB区,特别是DB数据块在1200中扮演重要角色,用于存储用户数据和作为函数块的背景数据。DB数据块支持静态变量,创建时可选择单个实例、多重实例或参数实例。此外,文章还提到了PLC数据类型和变量类型的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

西门子S7-1200和200SMART同属于西门子品牌,其底层设计在一定程度上存在相似之处,但由于1200定位中小型系列,其功能更接近400系列,而200SMART是从200基础演变而来,所以在程序块的结构以及寻址方式都有很大的不同之处,本文就来一起聊聊它们的寻址方式有何异同。

正文

200SMART可以按位,字节,字和双字方式寻址,支持四种寻址的存储区有I(输入),Q(输出),M(位),S(顺控),V(数据存储区),L(局部),SM(特殊),除此之外还开发了AI(模拟输入),AQ(模拟输出),T(定时器),C(计数器),HC(高速计数器),AC(累加器),等。
而1200只开发了I区,Q区,M区,和DB数据块,I区既是数字量输入存储区,(如I0.0等,通常是以位寻址),也是模拟量输入存储区(如IW64),还是高速计数存储区(如ID1000),只是寻址方式不同,Q区既是数组输出存储区(如Q0.0),也是模拟量输出存储区(如QW64),M区用法与200SMART类似,可以位(M10.0),字节(MB12),字(MW20),双字(MD24)形式寻址,但通常数据存储不放在M区,这时候就需要用到DB数据块,DB数据块的功能类似于200SMART中的V区,可以用来存储用户数据,可实现断电保持,也可用来存储临时中转的变量,还可以作为FB函数块的背景数据块,是1200中非常重要的存储区,学习1200编程,必须要熟练掌握DB数据块的寻址。
通常我们可以手动增加一个全局数据块DB,用来存储程序中的重要数据,如下图所示:

在这里插入图片描述
全局数据块中只有一种变量类型Static(静态变量),可以在数据块中静态存储的变量,要使用变量首先要变量名称,再选择数据类型,DB数据块就会自动按照需要分配地址,所以DB数据块中优先选择符号方式寻址。
在这里插入图片描述
作为背景数据块时会自动生成,例如调用FB块,调用需要背景DB的指令等都会提示需要创建DB数据块。如下图所示:
在这里插入图片描述
可以选择三种方式创建DB:
单个实例:会生成一个独立的背景数据块,可以在系统>程序资源中查看。
多重实例:该指令的背景数据块会建立在FB块的背景数据块的Static静态变量中形成双重的背景数据块,这样方便管理,建议选用多重实例。
参数实例:该指令的背景数据块会建立在FB的背景数据块的InOut变量中,在调用FB块时再通过外部定义指令的背景数据块。
在这里插入图片描述
InPut:形参,从外部传递数据到内部。
Output:形参,将内部结果传递带外部。
Inout:形参,从外部传递数据到内部,处理后再返回给外部。
Static:静态变量
Temp:临时变量
Constant:常量数据类型有很多种,下表列出各种数据类型的范围以及寻址表达方式。
在这里插入图片描述
除位,字节,字,和双字以外,还有很多数据类型,例如:整数数据类型、浮点型实数数据类型有:
在这里插入图片描述
时间和日期数据类型
在这里插入图片描述
DTL(日期和时间长型)
在这里插入图片描述
在这里插入图片描述
字符和字符串数据类型
在这里插入图片描述
数组数据类型
在这里插入图片描述
PLC 数据类型PLC 数据类型可用来定义可以在程序中多次使用的数据结构。可以通过打开项目树的“PLC数据类型”分支并双击“添加新数据类型”项来创建 PLC 数据类型。在新创建的 PLC 数据类型项上,两次单击可重命名默认名称,双击则会打开 PLC 数据类型编辑器。可使用在数据块编辑器中的相同编辑方法创建自定义 PLC 数据类型结构。为任何必要的数据类型添加新的行,以创建所需数据结构。如果创建新的 PLC 数据类型,则该新 PLC 类型名称将出现在 DB编辑器和代码块接口编辑器的数据类型选择器下拉列表中。您可以按照以下方式使用 PLC 数据类型:● 作为代码块接口或数据块中的数据类型● 作为创建使用同一数据结构的多个全局数据块的模板● 作为 CPU I 和 Q 存储区中 PLC 变量声明的数据类型 Variant 指针数据类型
在这里插入图片描述
访问一个变量数据类型的“片段”可以根据大小按位、 字节、 或字级别访问 PLC 变量和数据块变量。 访问此类数据片段的语法如下所示:● “<PLC 变量名称>”.xn(按位访问)● “<PLC 变量名称>”.bn(按字节访问)● “<PLC 变量名称>”.wn(按字访问)● “<数据块名称>”.<变量名称>.xn(按访问)● “<数据块名称>”.<变量名称>.bn(按字节访问)● “<数据块名称>”.<变量名称>.wn(按字访问)双字大小的变量可按位 0 - 31、 字节 0 - 3 或字 0 - 1 访问。一个字大小的的变量可按位 0 - 15、字节 0 - 1 或字 0 访问。 字节大小的变量则可按位 0 - 7 或字节 0 访问。当预期操作数为位、字节或字时,则可使用位、字节和字片段访问方式。
在这里插入图片描述

### 西门子 S7-200Smart PLC 间接寻址方法 对于西门子 S7-200SMART PLC 来说,寻址可以分为直接寻址和间接寻址两种方式。直接寻址是指通过具体的地址来访问存储单元中的数据;而间接寻址则是利用寄存器或其他变量作为索引来动态指定要操作的数据位置。 #### 寻址机制概述 间接寻址主要用于那些需要在运行期间改变目标地址的应用场景中,尤其是在处理大量连续排列的数据时显得尤为重要。这种方式不仅提高了编程灵活性,还能够有效减少程序占用的空间[^2]。 #### 实现间接寻址的方法 为了实现间接寻址,在 S7-200SMART 中通常会采用指针的概念来进行操作。具体而言: - **定义指针**:创建一个特殊类型的字节或整数型变量用于保存实际的目标地址。 - **加载地址到指针**:将所需访问的实际内存区域起始地址写入上述定义好的指针变量内。 - **读取/写入数据**:基于该指针对应的位置执行相应的读取或写入指令完成对特定地址处数值的操作。 下面是一个简单的例子展示如何使用间接寻址技术在一个数组里查找最大值并返回其所在位置的过程: ```plc // 定义一个包含若干个整数元素的一维表 VB100 至 VD198 (假设共有50个) LD SM0.0 ; 当首次扫描周期为真时启动初始化过程 MOVW #100 AC0 ; 将VB100的偏移量装载至累加器AC0 MOVW AC0 VW4 ; 把当前指向第一个元素的地址复制给VW4(即我们的'指针') MOVD VW4 AC1 ; 使用AC1暂存这个初始地址以便后续比较过程中保持不变 MOVD VW100 AC2 ; 取得首个元素值放入AC2准备参第一次对比 DECW VW6 ; 初始化计数器减去一次因为循环体内还会再自增一次 JMP LAB1 ; 跳转过初始化部分继续往下走 LAB0: INCD VW4 ; 更新指针使其指向下一个待检视项目 MOVD @VW4 AC3 ; 获取新位置上的内容送入另一个工作区等待评估 CMPD AC2 AC3 ; 对比现有最高记录同最新发现哪个更大些 JC LAB2 ; 如果前者胜出则跳过去不做任何更改保留现状 MOVD AC3 AC2 ; 否则更新最佳成绩同时也记住它的确切地点 MOVD VW4 AC0 ; 记录下此时此刻所停留之处成为新的冠军诞生地 LAB1: DECW VW6 ; 每次迭代都要消耗掉一轮机会直到全部考察完毕为止 JC END ; 若次数耗尽意味着整个流程结束可退出主逻辑框架 JMP LAB0 ; 返回重新开始新一轮检测直至满足终止条件 LAB2: JMP LAB1 ; 继续前进探索更多可能性... END: ``` 此段伪代码展示了如何遍历一段由多个相同类型组成的序列,并运用间接寻址技巧高效定位其中的最大成员及其确切坐标的全过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值