DCL记忆上次输入值lisp_数据断电记忆方案的设计、电容容量详细计算方法

我们设计的简易PLC所提供的变量,有一类是断电记忆的。

所谓断电记忆也就是数据在断电重启之后保持断电前的数值。

MCU的存储器分为两类:RAM和ROM。

两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。

为了实现断电记忆,需要把数据写入到ROM,即FLASH中。

不幸的是,FLASH有两个致命的缺点:

1)擦写次数有限,一般仅有10万次的擦写次数,超过擦写次数,FLASH将被损坏。

2) FLASH的存储位只能由1改为0,如果需要将0改为1,则需要将数据擦除,最小擦除的单位为1个page。对于STM32F103为2KB,对于STM32F051为1KB。

通过BACKUP寄存器实现断电记忆

Cortex系列的处理器还有一种backup寄存器供断电记忆数据使用,比如给RTC时钟使用。

该寄存器的数据可以由VBAT的电压来维持,而一般VBAT电压由纽扣电池供电。

比如,我们选择CR1220的电池,其容量为40mAh, VBAT的工作电流低到2uA。

CR1220的电池可以保证backup寄存器的数据在断电之后一年内不丢失。

通过FLASH实现断电记忆

美中不足的是,STM32F103仅有84个字节的backup寄存器。

当需要断电记忆的数据比较多时,还是需要将其存入到FLASH中。

可以分为两种数据:

1)不会经常改变的数据,比如用户设置的运行参数(比如密码、温控器的温度阈值等)。

对于这种数据,只需要做几分钟的缓存,在数据改变过后几分钟再写入FLASH即可。

即使数据未存入FLASH,用户重新设置即可。由于发生概率低,也不会有什么问题。

2)改变频率非常高的数据,比如计数器,有一个客户将我们的控制器用于流水线上的计件。

基本上1s数据加一次,而且要求绝对准确。

保证任何不能错计任何数据。

对于这种应用,如果还是采用1分钟缓存的方法,10万次的擦写次数大概可以使用66天,不能满足要求。

而且如果在这1分钟内发生了断电,数据没能写入FLASH,将会导致这段时间的数据丢失。

当时,由于backup 寄存器数据有限,不得以需要采用FLASH来存储。

技术方案

d744894e3d92413db274454d88bbc1d7.png

断电延时电路

如上的电路图所示,二极管D1用于电源反接的保护,V+经过R1、R2的分压以及C5的滤波之后送入MCU的A/D口,用于检测电源电压。

补充:有网友留言,把检测电压的电路接到反向保护二极管的负极没有办法检测到掉电,放在正极是否更好?

我们的考虑是,放在D1的正极,当有负电压输入时(比如脉冲群),负电压经过R1,R2会直接到IO口,会形成所谓的潜通路。瞬间几千V的高压,是否会造成R1、R2以及IO口损坏,值得研究。

为了保证可靠,就放在了负极,避免了形成潜通路,同时对高频正脉冲可以通过E1,C1的可靠过滤。

当掉电时,E1开始放电,此时并不能立即检测到掉电,当放电至22V时,MCU认为掉电了,开始执行相应动作。

浪费了从23.2V到22V左右的能量,由于负载电流小,浪费这点能量并不导至C1无法取值。所以还是值得的。

小小的细节,却能体现我们设计电路时的深思熟虑,这得益于我们的团队之前从事汽车电子所形成的可靠性设计的思维。

E1用于储能,用于当电源断电时,给MCU供电,保证存储在RAM中的数据可靠存入FLASH。

采用大电容给控制器供电,MCU实时检测输入电压。

做了几下的设计改进:

1)MCU的供电和其它负载(比如继电器、WiFI模块等)的供电分开,MCU专门由一路电源供电。

2)让用户采用控制器所支持的最高工作电压为24V的电源供电。

3)在100us的定时中断时,启动A/D转换并读上次转换数据,如果读到的转换数据所对应的电压低于22V,则说明发生电源断电,立即切断所有输出,以及一些内设模块。从而在100us内就将功耗降到最低。

4) 在主程序中,判断由定时中断置位的断电标志,如果判断有检测到断电,降低主频,

立即将需要断电存储却暂存在RAM保存的数据写入FLASH。

电容容量的计算

DC-DC最低输入电压为5.0V左右。

STM32F103在禁用外设时,其工作电流大概为8mA@16MHz。

算上DC-DC的效率80%,以及DC-DC和LM1117的工作电流,以8/80%+2mA=12mA计算。

FLASH擦除时间为40ms/page, 写入速度为70us/1bit。

假设需要存入的数据总量为1024Byte即512Word。

由擦写+写入需要花费的时间为80ms,实际可以在运行过程中先擦写一个page备用,从而可以省去擦写的时间,在这里,仍以80ms来考虑。

要求断电之后,电容E1上的电压以12mA 的电流放电,从22V放电至 5V的时间需要大于80ms。

根据电容流过电容的电流I=C*du/dt,将电流、电压降、时间等代入,得到:

C=12mA * 80ms /(22-5)=56uF,可选择100uF的电容。

另一种计算方法可以从能量的角度考虑,计算更准确:

电容从22V放电至5V,所释放的能量为1/2*C*(22*22-5*5),考虑到DC-DC的效率0.8,到5V的能量为:

1/2*C*459*0.8=5V*12mA*t=60mW*80ms。

解得C=26uF。

文中有任何错误,欢迎留言指正!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注意不是书籍,是随书源代码 《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》重点讲解autolispdcl、visual lisp三合一的autocad二次程序开发技术。《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》分为4篇,共35章。第1篇(第1~10章)为autollsp程序设计基础篇,主要介绍了autollsp的基本结构、语法、功能函数、对象属性、循环、判断式、子程序、选择集、符号表、读文件以及写文件等autolisp程序设计的相关知识与技巧。第2篇(第11章)为62个精选实用autolisp程序设计范例,通过精讲62个autolisp程序设计范例,让读者将autolisp知识融会贯通。第3篇(第12~21章)为autolispdcl对话框整合应用,主要介绍了dcl的基础知识、dcl对象属性的定义速查、autolisp掌控dcl的关键技巧;还介绍了编辑框、按钮和文字、切换开关、单选按钮、列表框、下拉菜单、图像,图像按钮及滑动条的设计技巧;另外介绍了新手常犯错误分析及应对技巧。第4篇(第22~35章)为visuallisp程序设计应用与整合,主要介绍visual lisp的基本环境、重要函数和程序调试;还介绍了autocad activex对象控制以及visual lisp在e2d、3d、文字编辑、图层管理、块与属性管理、options选项控制、excel及word中的应用;最后介绍了visual lisp应用程序的创建与维护。   《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》语言风趣生动,内容全面,是一本不可多得的完全学习指南。它可以帮助读者扎扎实实学好autolisp+dcl+visual lisp程序设计,迅速提升读者的设计效率及绘图品质。《autocad完全应用指南.autolisp+dcl+visual lisp程序设计篇》非常适合autocad的初、中、高级读者使用。
### 回答1: 《AutoCAD完全应用指南-AutoLISPDCL、Visual LISP程序设计篇》是一本介绍AutoCAD软件中自动化编程的书籍。本书内容包括AutoLISPDCL和Visual LISP程序设计的指导与应用。 首先,AutoLISP是一种针对AutoCAD软件开发的脚本编程语言。通过AutoLISP,用户可以编写自定义的命令和程序,以实现一些复杂的自动化任务。本书详细介绍了AutoLISP的语法、常用函数和操作方法,并通过一系列实例讲解了如何使用AutoLISP编写工具和自动化脚本。 其次,DCL(Dialog Control Language)是一种用于创建AutoCAD软件中对话框和用户界面的编程语言。本书介绍了DCL的语法和操作方法,以及如何使用DCL编写自定义的对话框和用户界面,实现图形界面化的交互式操作。 此外,本书还涵盖了Visual LISP程序设计,它是一种在AutoCAD中开发应用程序的集成开发环境(IDE)。通过Visual LISP,用户可以编写更加复杂和功能强大的应用程序,扩展AutoCAD的功能。本书详细介绍了Visual LISP的开发环境、调试工具和常用函数,以及如何使用Visual LISP开发自定义程序和工具。 总结来说,本书提供了对AutoCAD自动化编程的全面指南,涵盖了AutoLISPDCL和Visual LISP的相关知识和技巧。读者通过学习这些内容,可以了解如何利用脚本语言和自定义程序,提高AutoCAD的使用效率,并实现一些特定的需求和功能。无论是AutoCAD的初学者还是有一定经验的用户,都可以从本书中获得有用的知识和实用的编程经验。 ### 回答2: 《AutoCAD完全应用指南 AutoLISP DCL Visual LISP程序设计篇》是一本关于AutoLISPDCL和Visual LISP的程序设计指南。AutoCAD是一款流行的计算机辅助设计软件,而AutoLISP是AutoCAD的一种编程语言,可以用于自定义功能和增加特定功能。DCL(Dialog Control Language)是一种用于创建自定义对话框和界面的脚本语言。Visual LISP是AutoCAD的一种开发环境,可以用于编写更复杂和高级的LISP程序。 这本指南系统地介绍了AutoLISPDCL和Visual LISP的基础知识和应用。它从最基础的语法规则和数据类型开始讲解,然后逐步引入更复杂的概念和技术。读者将学习如何使用AutoLISP编写脚本,从而实现自动化和高效的设计任务。同时,还会了解如何使用DCL创建自定义对话框,以便用户可以更方便地与脚本进行交互。 此外,指南还介绍了使用Visual LISP进行程序开发的高级技术。Visual LISP提供了更多的功能和库,可以帮助开发人员实现更复杂和强大的程序。读者将学习如何使用Visual LISP进行调试、优化和扩展现有的AutoLISP脚本。 总之,《AutoCAD完全应用指南 AutoLISP DCL Visual LISP程序设计篇》对于AutoCAD用户来说是一本非常有价的指南。它可以帮助读者掌握AutoLISPDCL和Visual LISP的编程技巧,从而更高效地使用AutoCAD进行设计和开发。无论是初学者还是经验丰富的用户,都可以从中获得实用的知识和技能。 ### 回答3: 《AutoCAD完全应用指南:AutoLISPDCL和Visual LISP程序设计篇》是一本专门介绍AutoCAD软件的编程技术的书籍。 AutoCAD是一款专业的绘图软件,用于制作和编辑各种类型的图纸。而AutoLISP是一种用于自动化和扩展AutoCAD功能的编程语言,可以编写自定义的命令和程序来完成特定的绘图任务。DCL(Dialog Control Language)是一种用于创建图形用户界面的编程语言,可以为自定义命令和程序设计出交互式的对话框。Visual LISP是一个集成在AutoCAD中的开发环境,可以通过可视化界面来编写AutoLISP程序。 《AutoCAD完全应用指南:AutoLISPDCL和Visual LISP程序设计篇》通过详细的实例和教程,介绍了这些编程技术的基础知识和实际应用。读者可以学习如何编写简单的AutoLISP命令,掌握AutoCAD的基本操作和命令,了解DCL语言和图形用户界面设计,以及使用Visual LISP进行更复杂的程序设计。 这本书适合那些已经熟悉AutoCAD,想要进一步了解和掌握AutoCAD编程技术的人员阅读。无论是对于建筑设计师、机械工程师还是其他需要使用AutoCAD软件的专业人士来说,掌握编程技术可以提高工作效率和自动化设计过程。 总之,《AutoCAD完全应用指南:AutoLISPDCL和Visual LISP程序设计篇》是一本实用的技术书籍,可以帮助读者深入了解和掌握AutoCAD的编程技术,提高工作效率并实现自定义的绘图功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值