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

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

3天内不再提示

如何在博途环境下载但不重新初始化数据块呢?

jf_61nrsJTz 来源:方正智芯 2023-11-10 09:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

现场设备运行过程中有时候我们需要更改在线数据块的结构(比如增加一些变量),但是如果直接更改数据块并下载会导致其重新初始化。这意味着CPU会将数据块中变量的实际值用初始值替换,将会导致实际数据的丢失,甚至引起设备故障。一种变通的方法是:使用快照先将实际值保存到初始值,然后尽快修改下载。这种方法只适用于实际值短时间变化影响不大的情况。有没有一种方法既能更改在线数据块的结构,又不引起数据块重新初始化呢?答案是:有的。下面我来详细介绍下。本文包括如下几个主题:

结构性更改;

下载但不重新初始化的工作原理

重置预留存储区

1、结构性更改

默认情况下,数据块的结构性更改会导致其下载时重新初始化。

数据块的结构性更改包括:

①其中变量名称的更改;

②其中变量的增加或删除;

③其中变量保持特性的更改;

从上面描述来看,我们在数据块中增加变量属于结构性更改,怎样使其不重新初始化呢?这需要使用数据块的一个属性——预留存储区。

注①:初始值修改不属于结构性更改,因此下载时不会引起数据块重新初始化。

注②:这里的数据块既可以是全局数据块,也可以是函数块的背景数据块。

2、数据块下载但不重新初始化的工作原理

首先,只有“优化的块”才支持该功能。勾选“优化的块访问”属性的数据块或函数块默认有一个预留存储区,激活该预留区后,后续声明的变量/参数都存放在该区域中。

选中数据块,右键单击,选择【属性】菜单,可以看到“优化的块访问”选项,如下图所示:

5a9490c0-7f55-11ee-939d-92fbcf53809c.png

在上述属性对话框中,单击【下载但不重新初始化】。勾选【启用下载,但不重新初始化变量】便启用该功能。在【存储器预留区域】中设置预留存储区的大小,比如100字节;在【预留可保持型存储器】中设置保持型存储器的大小,如下图所示:

5aa72e7e-7f55-11ee-939d-92fbcf53809c.png

设置完成后单击【确定】,该数据块便有了设定大小的预留存储区,但尚未激活。在未激活的情况下,往数据块中添加的变量仍存放在默认存储区。如果进行了结构性更改,则下载时仍会提示需要重新初始化。

那么怎样激活呢?

打开数据块,在其上方有一个红色的、激活预留存储区的按钮,如下图所示:

5ab0e22a-7f55-11ee-939d-92fbcf53809c.png

单击该按钮会弹出一个对话框:

5ac3c7c8-7f55-11ee-939d-92fbcf53809c.png

单击【确定】后,再次往数据块中添加的变量,都存放在预留存储区中。此时下载不会再提示需要重新初始化。

3、重置预留存储区

随着变量的添加,预留存储区会越来越小。在【下载但不重新初始化】页面可以查看剩余的存储区字节数。若项目已经阶段性完成,可以在适当的时候将预留存储区的数据集成到常规存储区,以清空预留存储区便于后续使用。此时可以选中数据块并单击右键,在弹出的对话框中选择【编译】→【软件(复位存储器预留区域)】,如下图所示:

5ad404d0-7f55-11ee-939d-92fbcf53809c.png

系统会提示下载时需要重新初始化,单击【确定】,完成重置,此时预留存储区的可使用字节数恢复成设定值。






审核编辑:刘清

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

    关注

    39

    文章

    7764

    浏览量

    172364
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11357

    浏览量

    226209

原文标题:怎样在博途环境下载但不重新初始化数据块?

文章出处:【微信号:方正智芯,微信公众号:方正智芯】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    何在 LPCXpresso IDE 上编写初始化控制器 PLL 的代码LPC2478?

    何在 LPCXpresso IDE 上编写初始化控制器 PLL 的代码LPC2478给我一个示例和正确的方法。
    发表于 04-27 08:27

    ELF-RV112B RKNN模型加载与运行时初始化

    ELF-RV112B RKNN模型加载与运行时初始化
    的头像 发表于 04-03 16:08 224次阅读
    ELF-RV112B RKNN模型加载与运行时<b class='flag-5'>初始化</b>

    PC强实时运动控制(一):C#的EtherCAT总线初始化(下)

    通过使用配置工具导出ZAR文件进行EtherCAT总线初始化
    的头像 发表于 02-05 10:00 2671次阅读
    PC强实时运动控制(一):C#的EtherCAT总线<b class='flag-5'>初始化</b>(下)

    国民技术发布N32Cube芯片配置与初始化代码生成工具

    1月30日,国民技术(NSING)正式发布N32Cube——芯片配置与初始化代码生成工具,让时钟、引脚与外设的配置一目了然、轻松上手!
    的头像 发表于 02-02 15:26 1021次阅读
    国民技术发布N32Cube芯片配置与<b class='flag-5'>初始化</b>代码生成工具

    MCU工程初始化,到底该不该交给工具?

    背景 工程初始化重复性高,但出错成本大。工程师常问:交给工具是不是会丢失掌控? 工具可做的事 时钟树、引脚复用、外设配置 工程生成、代码模板套用 参数校验和约束检查 工程师仍需做的事 特殊业务逻辑
    的头像 发表于 01-29 10:18 283次阅读
    MCU工程<b class='flag-5'>初始化</b>,到底该不该交给工具?

    EtherCAT总线初始化步骤

    EtherCAT(Ethernet for Control Automation Technology)是一种高性能的工业以太网通信协议,广泛应用于工业自动领域。其初始化过程是确保系统稳定运行
    的头像 发表于 12-22 10:10 1097次阅读
    EtherCAT总线<b class='flag-5'>初始化</b>步骤

    瀚海微SD NAND TF卡硬件识别与初始化类问题探讨

    在瀚海微SD NAND/TF卡的实际应用中,硬件识别与初始化是保障设备正常运行的首要环节,该环节出现故障会直接导致存储卡无法投入使用,尤其在工业控制、车载设备等关键场景中,可能引发设备停机、数据丢失
    的头像 发表于 11-18 09:58 891次阅读
    瀚海微SD NAND  TF卡硬件识别与<b class='flag-5'>初始化</b>类问题探讨

    串口通信基石:Air8000下Modbus RTU串口初始化详解!

    串口初始化是Modbus RTU通信稳定可靠的关键起点。本篇深入剖析Air8000开发板串口参数配置、初始化代码实现及调试要点,结合master_rtu示例,分享实际操作中的经验与避坑指南,让您
    的头像 发表于 10-28 16:33 1824次阅读
    串口通信基石:Air8000下Modbus RTU串口<b class='flag-5'>初始化</b>详解!

    NVMe高速传输之摆脱XDMA设计34:初始化功能验证与分析2

    本文主要交流NVMe设计思路,在本博客已给出相关文几十篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 2) PCIe 初始化功能测试结果 PCIe 初始化
    发表于 10-09 11:31

    NVMe高速传输之摆脱XDMA设计33:初始化功能验证与分析

    本文主要交流NVMe设计思路,在本博客已给出相关文五十多篇,希望对初学者有一定作用 初始化功能主要实现 PCIe 链路设备的初始化配置和 NVMe 初始化配置。 复杂的PCIe 事务
    发表于 10-08 08:02

    GraniStudio:IO初始化以及IO资源配置例程

    IO资源配置.gsp文件,点击打开,完成导入。 2.功能说明 实现连接格拉尼控制器IO以及配置输入输出IO点。 2.1通过初始化IO算子连接格拉尼控制器IO,导入工程自动进行连接。 2.2 通过IO配置算子输出配置的IO表。
    的头像 发表于 08-22 17:34 1122次阅读
    GraniStudio:IO<b class='flag-5'>初始化</b>以及IO资源配置例程

    GraniStudio:初始化例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入初始化例程,点击导入按钮。 打开初始化例程所在路径,选中初始化.gsp文件,点击打开,完成导入。 2.功能
    的头像 发表于 08-22 16:45 1091次阅读
    GraniStudio:<b class='flag-5'>初始化</b>例程

    MCU外设初始化:为什么参数配置必须优先于使能

    在微控制器领域,初始化参数配置阶段至关重要。此时,虽无电源驱动,但微控制器在使能信号到来前,借初始化参数配置这一精细步骤,开启关键准备进程。初始化参数配置如同物理坐标锚定、逻辑指令部署、内在秩序预设
    的头像 发表于 08-13 10:38 1027次阅读

    定义IO初始化结构体

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构体类型IOPORT_Init_t,它的成员包括了由上述所有枚举类型所声明的变量,因此该结构体类型的变量可以包含IOPORT的相关
    的头像 发表于 07-16 16:26 1638次阅读

    IM 系列设备过载保护机制下界面初始化中断的底层逻辑与解决方案

    ,系统立即启动保护策略。而界面初始化过程依赖于设备稳定的供电环境和充足的系统资源,当过载保护机制触发时,二者的关联被打破,导致界面初始化中断。从硬件层面看,供电模块可能因过载切断非必要电路;从软件层面讲,系统会优先
    的头像 发表于 06-27 09:58 738次阅读