0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SMART200的数据类型和变量寻址方式

冬至子 来源:亚控斯诺自动化电气设备 作者:地猫子 2023-06-26 15:16 次阅读

为什么要区分数据类型

现实生活中我们可以随意在纸上写出一串数字,并运用小学学过的知识准确识别出数字的大小。但在计算机中,受到机器运算方式和存储空间的限制,必须将数据分成不同的组织形式,以便进行更高效的运算,每种数据类型所占存储空间不同,可表示的数值范围也不同。

PLC编程需要认识的基本数据类型

学习PLC编程需要熟知以下数据类型

图片

按数据类型的所占存储空间的大小进行分类如下:

图片

从上图可以看出,除字符串数据类型,其他数据类型都是按照位的长度来分类的。其实不论是什么数据类型,存储后只要以二进制的形式查看,都是1/8/16/32等二进制位的0或1组合。

图片

相同的二进制数按照不同的规则解析,可以解析成不同类型的数据,可表示的数据大小最终受限于所占用的存储空间的大小。

PLC中的变量

PLC中变量的概念可以认为是一个用于存储数据的存储空间,空间的内容可变,所以称为变量。

由于PLC的数据存储器已经被明确划分好了种类和范围,我们可以直接使用这些明确的存储区而不需要像计算机编程那样先声明一个某类型的变量再在后面的程序中使用。

西门子PLC编程只需要指定出变量的存储区类型,地址索引和长度,而变量的类型(用哪种规则解析)是由具体调用的指令来和子程序的接口来定义的。

指令区分数据类型,匹配相应的变量长度。例如ADD_I指令会将长16位(2个字节)的变量按整型来处理计算,ADD_DI指令会将长32位(4个字节)的变量按双整型来处理计算,而ADD_R指令会将长32位(4个字节)的变量按浮点数来处理计算。

图片

下图左边的子程序形参类型决定了实参变量的类型,在调用子程序时,会按照形参定义的数据类型处理对应长度的变量。

图片

变量的寻址

因为各种存储空间已经被划分好,不需要再定义,那么我们怎样才能找到这片存储空间呢?这就是寻址的概念。西门子PLC的寻址方式分为两种,直接寻址和间接寻址。直接寻址又可以分为两种,绝对寻址和符号寻址。

图片

直接寻址

PLC的数据存储空间,这里总结出直接访问数据存储空间的三个要素,存储区类型,地址索引和长度。

图片

例如如果访问的是V0.0,其中V代表存储器类型是V存储器,0代表存储器索引值,.0代表访问的长度是1个位并且指出是第0个位。

例如如果访问的是VB1,其中V代表存储器类型是V存储器,1代表存储器索引值,B代表访问的长度是1个字节。

例如如果访问的是VW2,其中V代表存储器类型是V存储器,2代表存储器索引值,W代表访问的长度是1个字(2个字节)。

例如如果访问的是VD4,其中V代表存储器类型是V存储器,4代表存储器索引值,D代表访问的长度是1个双字(4个字节)。

图片

如果访问的是VD0,,其中V代表存储器类型是V存储器,0代表存储器索引值,D代表访问的长度是1个双字(4个字节),这次访问包含了V0.0-V3.7共32个位区域,VB0-VB3共4个字节区域,VW0-VW2共2个字区域。

绝对寻址

绝对寻址直接指出存储区类型,地址索引和访问长度即可。

图片

符号寻址

为绝对地址定义一个符号,同时添加相应的注释。符号也是可以用来寻址的,即通过符号名称找到对应的地址,例如在编程时可以通过“瞬时流量1”这个符号名称来找到VD6000这个地址。符号表中定义变量是不需要指定变量的数据类型的,而变量的类型(用哪种规则解析)是由具体调用的指令来和子程序的接口来确定的。其中地址的基本要素也是存储区类型,地址索引和访问长度。

图片

在程序中直接使用符号名称来指代某个变量,在定义符号表时已经定义了数据存储器的类型,地址索引和访问长度。

图片

直接寻址的两种方式单独显示即同时显示的切换方法如下

图片

间接寻址

你可以将指针想象成一辆自动取送货的小车,变量是货架上的一个个货位,只需要将货位号发给小车,小车就能找到这个位置来取送货物。

图片

间接寻址的过程是,首先定义一个指针变量,让指针变量指向存储区的纯数值索引。再通过指针访问这个存储区,通过改变指针数值,指向另一个存储区,再访问另一个存储区。

指针是包含另一个存储位置地址的双字存储位置。只能将 V 存储位置、L 存储位置或累加器寄存器AC1、AC2、AC3)用作指针。要创建指针,必须使用“移动双字”指令,将间接寻址的存储位置地址移至指针位置。指针还可以作为参数传递至子程序。

注意:修改指针值时,切记调整所访问数据的大小:访问字节时,指针值加 1;访问定时器或计数器的字或当前值时,指针值加 2;访问双字时,指针值加 4。

哪些存储区支持间接寻址

S7-200 SMART 允许指针访问下列存储区:I、Q、V、M、S、T(仅限当前值)、C(仅限当前值)、SM、AI 和 AQ。单个位或访问 HC、L 或 AC 存储区不支持间接寻址访问。

总结

直接寻址时,绝对寻址和符号寻址这两种方式本质是三要素,一般在编程中,不需要监视的临时变量,中间过渡变量可以采用绝对寻址的方法来使用,需要监视的变量更适合符号寻址,也方便调试监控。而间接寻址更适合批量操作一定区域的变量,特别是与循环指令配合使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5301

    浏览量

    119865
  • 存储器
    +关注

    关注

    38

    文章

    7440

    浏览量

    163529
  • S7-200
    +关注

    关注

    13

    文章

    407

    浏览量

    50292
  • PLC编程
    +关注

    关注

    46

    文章

    246

    浏览量

    37340
  • 累加器
    +关注

    关注

    0

    文章

    50

    浏览量

    9436
收藏 人收藏

    评论

    相关推荐

    西门子SMART200 PLC的远程下载方法

    本文将向大家介绍如何远程下载西门子SMART200的方法。
    发表于 09-02 10:02 4050次阅读

    C语言中基本数据类型变量和常量的使用

    C语言中基本数据类型变量和常量的使用
    发表于 08-18 16:42 2459次阅读
    C语言中基本<b class='flag-5'>数据类型</b>、<b class='flag-5'>变量</b>和常量的使用

    技术干货驿站 ▏深入理解C语言:基本数据类型变量

    在C语言中,数据类型变量是编程的基础,也是理解更复杂概念的关键。数据类型决定了变量的内存分配、存储范围和操作方式,而
    的头像 发表于 07-26 17:53 1874次阅读
    技术干货驿站 ▏深入理解C语言:基本<b class='flag-5'>数据类型</b>和<b class='flag-5'>变量</b>

    关于变量数据类型的问题

    这些变量在初始化已经定义过数据类型了,为什么编程时还要表明,有的又没有标,怎么回事?用的芯片是2812
    发表于 06-03 09:36

    Verilog 变量声明与数据类型

    Verilog 变量声明与数据类型二上节介绍了wire,reg数据类型及其用法,并对变量定义中的向量的定义及使用做了说明。本节主要介绍其它几种类型
    发表于 08-06 09:21

    Verilog 变量声明与数据类型

    Verilog 变量声明与数据类型一Verilog语法中最基本的数据类型有 线网(wire),寄存器(reg)和整数(integer)三种类型,这三种
    发表于 08-10 14:01

    SMART200资料

    SMART200资料,感兴趣的小伙伴们可以看看。
    发表于 07-26 10:26 0次下载

    vhdl数据类型

    VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。VHDL中的数据类型可以分成四大类: 标量型(SCALAR TYPE):属单元素的最基本的数据类型,通常用于描述一个单值数据
    发表于 03-30 15:59 11次下载

    python教程之变量和简单数据类型

    本文档的主要内容详细介绍的是python教程之变量和简单数据类型
    发表于 04-26 08:00 7次下载
    python教程之<b class='flag-5'>变量</b>和简单<b class='flag-5'>数据类型</b>

    重视变量数据类型

    不管在什么语言中,定义一个变量时必然要在内存中开辟一个相应大小的空间来存储该变量。不同的数据类型在内存所占的空间大小不同,其所能表示的数据范围也不相同。在单片机C语言中,常用的基本
    发表于 01-13 15:05 1次下载
    重视<b class='flag-5'>变量</b>的<b class='flag-5'>数据类型</b>

    Profinet分布IO模块与SMART200 PLC进行数据采集

    Profinet分布IO模块与SMART200 PLC进行数据采集
    的头像 发表于 01-03 16:21 1810次阅读
    Profinet分布IO模块与<b class='flag-5'>SMART200</b> PLC进行<b class='flag-5'>数据</b>采集

    西门子SMART200为什么要加信号板电源呢?

    SMART200加了信号板电源,影响端口0走不了485通讯
    的头像 发表于 02-16 09:42 1053次阅读

    一文轻松学会西门子Slice方式变量寻址

    【导读】博途中不但变量数据类型的隐式转换很好用,而且对于变量的Slice(直译:片或部分)寻址也很方便,下面就来说下S7-1200/1500如何以用Slice
    的头像 发表于 04-07 10:58 2505次阅读

    MATLAB变量数据类型的基本介绍

    在MATLAB中,变量数据类型是非常重要的概念。
    的头像 发表于 07-05 09:44 1754次阅读

    ARRAY 数据类型变量

    要求 全局数据块已打开。 操作步骤 要声明一个 ARRAY 数据类型变量,请按以下步骤操作: 在“名称”(Name) 列中,输入变量的名称。 在“
    的头像 发表于 07-06 11:08 1032次阅读