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

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

3天内不再提示

S7-300 CPU数据块初始值与实际值

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-10-17 17:28 次阅读

S7-300 CPU 数据块

数据块(DB)用来分类存储设备或生产线中变量的值,数据块也是用来实现各逻辑块之间的数据交换、数据传递和共享数据的重要途径。数据块丰富的数据结构便于提高程序的执行效率。与逻辑块不同,数据块只有变量声明部分,没有指令部分。不同型号CPU允许建立数据块的块数和每个数据块可以占用的最大字节数均不同,具体的参数可以查看CPU的技术规范手册。

数据块分为共享数据块和背景数据块两种。共享数据块又称全局数据块,它不属于任何逻辑块。背景数据块是专门指定给某个功能块(FB)或者系统功能块(SFB)使用的数据块,它是FB或SFB运行时的工作存储区。

数据块初始值与实际值(STEP 7)

在共享数据块的变量声明表中可以定义变量的名称、数据类型、注释和变量初始值。

初始值为纯粹的组态值,当由UDT生成数据块或在全局数据块中生成新变量时,组态的初始值被用作为实际值。可以通过菜单命令 “View > Data view” 来查看实际值。

初始值对于数据块或新声明的变量数据块来说,组态的有效次数仅为一次。如果变量已经存在,实际值将不会随着初始值的变化而发生改变。

对于CPU来说,生效的数据为实际值,初始值虽也可以下载到CPU中并可在线监控,但不会被CPU采用。

以下方法可以将初始值传送给 CPU 作为实际值:

图1 变量视图

图2 切换到数据视图

f41849b2-4bcb-11ed-a3b6-dac502259ad0.png

图3 执行初始化DB块

f43c3df4-4bcb-11ed-a3b6-dac502259ad0.png

图4 是否使用初始值覆盖实际值

f45b3420-4bcb-11ed-a3b6-dac502259ad0.png

图5 执行初始化数据结果

3. 最后将数据块下载至CPU中,初始值就会替代实际值在CPU中生效。

注意:

在共享数据块的声明视图(Declaration view)中,用户可以添加或者删除DB变量,而在数据视图中(Data view)中,用户可以查看变量实际值,但不可以添加或者删除DB变量。

而在STEP 7中,如需装载实际值到初始值中,没有与之相关的菜单命令,可以通过如下操作来实现:

STEP 7中,如何将数据块的实际值保存为初始值

数据块初始值与实际值(TIA Protal)

在TIA Protal中,数据块的使用和STEP 7基本一致,并且建立数据块也可以设置初始值,但是下载数据块时可以选择重新初始化使初始值生效,也可以选择无操作,则数据块的实际值会生效。

f47b07e6-4bcb-11ed-a3b6-dac502259ad0.png

图6 下载时数据块初始化

TIA Protal中监视数据块,可以使用快照功能把数据块的实际值复制到初始值中

f4b4b996-4bcb-11ed-a3b6-dac502259ad0.png

图7 使用快照

执行将快照值复制到起始值中功能,软件会提示是否覆盖所选块的所有值,点击确定。

f4de986a-4bcb-11ed-a3b6-dac502259ad0.png

图8 复制快照值到起始值

执行完将快照值复制到起始值功能,快照值会复制到起始值中,结果如下:

f50f582e-4bcb-11ed-a3b6-dac502259ad0.png

图9 执行快照复制结果

数据块属性

在建立DB块时,有时需要设置DB块属性:DB在PLC中写保护 、未链接和非掉电保持,如下图所示:

f5406f36-4bcb-11ed-a3b6-dac502259ad0.png

图10 STEP 7 中DB属性的设置

f54eb4a6-4bcb-11ed-a3b6-dac502259ad0.jpg

图11 TIA Protal V15 中DB属性的设置

数据块各设置的含义

1. 勾选DB在PLC中写保护

2. 勾选未链接

3. 不勾选非掉电保持

f565f9b8-4bcb-11ed-a3b6-dac502259ad0.jpg

图12 315-2PN/DP保持性存储器的使用情况

数据块的属性对于数据块的内存占用影响

数据块属性/内存区域 装载存储器(MMC) 工作存储器(CPU) 保持性存储器(CPU)
非掉电保持不勾选(系统默认)
非掉电保持勾选
未链接不勾选(系统默认)
未链接勾选

1. 打开DB数据块,菜单栏切换到声明视图 “View > Declaration view ”,在“Initial value” 栏输入新的初始值;

f39f4436-4bcb-11ed-a3b6-dac502259ad0.png

2. 菜单栏切换到数据视图“View > Data view ”,然后,执行菜单命令 “Edit > Initialize Data Block”将所有“Intial value”栏的数值传送至“Actual value”栏。

f3f8cbb4-4bcb-11ed-a3b6-dac502259ad0.png

可以给数据块分配写保护,此时不能在程序执行期间覆盖它们。

具有"未链接"属性的数据块仅存储在装载存储器中。

这种块不占用工作存储器中的空间,因此可以节省CPU的工作存储器空间,并且不存在与工作存储区数据一致的问题。

该地址区域不能由工作存储区直接访问,需要使用SFC83或者SFC84把这类DB的内容传送到工作存储区或者由工作存储区传送到对应DB。

使用SFC83和SFC84读写MMC卡中DB数据

本选项允许用户定义数据块的断电保持特性。

不勾选代表此类数据块具有断电保持功能。

每次断电后工作存储器中数据块的当前值保持到保持寄存器中。

用于保持性数据块的非易失性存储器的最大大小与CPU的具体型号有关系。下图为CPU 315-2PN/DP保持性存储器的使用情况。

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

    关注

    68

    文章

    10446

    浏览量

    206574
  • 数据
    +关注

    关注

    8

    文章

    6512

    浏览量

    87609
  • step
    +关注

    关注

    0

    文章

    40

    浏览量

    20274

原文标题:S7-300 CPU 数据块

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #硬声创作季 #PLC S7-300PLC-40 基于S7-300的给料分拣控制系统-1

    plcS7-300
    水管工
    发布于 :2022年10月21日 15:25:32

    #硬声创作季 #PLC S7-300PLC-40 基于S7-300的给料分拣控制系统-2

    plcS7-300
    水管工
    发布于 :2022年10月21日 15:25:51

    怎么样给输入变量设定初始值啊?

    我想在每次运行程序的时候对应的输入控件有相应的初始值(不要全是0),我是新手,求大神们解答,谢谢!!!
    发表于 11-11 22:19

    编译出错,初始值太多

    在写一个音乐盒的程序,写简谱初值时会有较多值,编译报错有初始值太多,有什么号的解决方法呢?恳请各位前辈提出宝贵意见~~~
    发表于 01-16 19:07

    怎么基于正计数的赋初始值

    `我想赋上初始值0,可以实现从0开始计数。怎么改,或者类似从10计数到100谢谢!`
    发表于 04-22 09:58

    如何查全局变量的初始值

    对于一些全局变量,我找不到它们的初始值,哪位能告诉我如何查出来?
    发表于 01-13 23:17

    如何查询全局变量的初始值

    LABVIEW中的一些变量我不知道怎么查初始值,哪位能告诉我如何查询?谢谢了
    发表于 01-13 23:19

    PROTEUS电容C与电感L初始值设置

    请教下,仿真中,电容两端电压(或者电感的电流)PROTEUS默认是0吗,如果不是,如何设置他们的初始值啊,没在软件中找到啊
    发表于 03-15 15:18

    在哪里可以在PAR之后检查RAM的初始值

    大家好,在地图报告中有一个第12节,其中,直到ISE 11,可以读取RAM / ROM初始值。现在,我使用11.3并且没有关于RAM / ROM初始值的信息。只有配置DCM等的字符串如何/在哪
    发表于 10-10 11:47

    请问中OSrunning初始值是多少?

    ucos中OSrunning初始值为多少啊,true or false?
    发表于 02-20 00:56

    抑制初始值的警告

    我将一些寄存器的初始值用作永不改变的“常量”。另外,我使用$ readmemb以传统方式初始化内存。 这导致“警告:HDLC编译器:872 ......:使用XXX的初始值,因为它从未被分配。有可能
    发表于 02-25 11:10

    具有VHDL初始值的分布式RAM?

    大家好,我正在尝试用VHDL中的初始值实现分布式RAM。我的目标是Virtex-5- 某处有一个例子吗?我知道有些Virtex组件确实有一个可以使用泛型传递的初始值 - 我应该将它与全局重置或其他
    发表于 02-26 11:15

    请问如何指定EEPROM的初始值

    :(1324).ier“eeprom”忽略,事实上数据没有写入EEPROM。在情况2中(在任何情况下我都不想使用它,因为我需要指定超过8个字节的初始值。有人能告诉我我在做什么吗?ON,我如何指定EEPROM的初始值?非常感谢您的
    发表于 09-17 07:32

    变量仍然保持初始值

    你好,当我一步一步地执行我的程序时,我有一个奇怪的行为:当程序在上面代码的第二行上停止,并且我执行该行(一步一步地过去),光标转到下一行。但变量仍然保持初始值。另一步…然后光标走到前面的行!一个新的步骤,然后再到第三行……你知道我为什么会有这种行为吗?谢谢你的帮助让玛丽
    发表于 09-19 13:30

    S7-300模块数据(中文)

    S7-300模块数据(中S7-300模块数据(中S7-300模块数据(中
    发表于 06-16 17:57 3次下载