当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]片机系统运行参数的保存及有效性判别

【摘 要】 对单片机控制系统运行参数有效性的判别方法进行了介绍,并对系统运行参数如何实现保存进行了探讨。同时给出了存储过程中的数据校验和运行参数的取值范围检验过程。
    关键词:单片机,运行参数,数据校验,取值范围


1 引 言
  在单片机构成的控制系统中,系统控制时需要使用和保存已经设置或优化的参数。如果将运行参数仅仅存储于单片机的RAM区中,则系统在掉电或重启时将会丢失这些重要参数,不能正常运行。为了解决上述问题,保证控制系统正常、可靠地运行,需要将这些运行参数保存在足够容量的电可擦除存储器(EEPROM)中。在写入或读出EEPROM中的数据时,为保证数据操作的正确性,则需要进行数据校验。在系统运行这些参数之前,为检查运行参数的取值是否在许可范围之内,则需要进行参数取值范围的检验。本文结合作者开发的电梯轿厢门机控制系统,来详细讨论参数保存和校验的设计及实现。
2 系统运行参数的存储
  在单片机组成的控制系统中,系统设置的运行参数是系统正常运行所必须使用的,既要保证运行参数的可修改性,又要保证运行参数在系统停机或掉电的情况下能够正确保存,因而运行参数应保存在电可擦除存储器(EEPROM)中。根据参数个数的多少,决定所使用EEPROM的存储容量。例如,在本文的单片机系统中,电梯轿厢门机控制运行所需要的参数有:门宽参数、有无光电检测、输出保持力矩、开门加速步频、关门加速步频、开门减速步频、关
门减速步频、工作计数器等,设计中要求存储的参数共需28个字节,再加上一个字节校验和,所以选用32字节容量的EEPROM。Xicro公司的X24C44能满足上述可修改性和容量的要求。
2.1 EPROM芯片简介及硬件组成
  电可擦除存储芯片X24C44是一个八引脚的芯片,其内部有存储矩阵和RAM两个存储区,外部引脚的功能如图1所示。芯片各引脚的功能为:CE为芯片使能引脚;Vcc及Vss为电源引脚;电压为+5V;SK是读写X24C44数据时所用到的外部时钟同步信号;DI为命令或数据串行输入X24C44的信号引脚;DO为X24C44数据串行输出的信号引脚;STORE为低电平时,允许将EEPROM中RAM的内容保存到存储矩阵;RECALL为低电平时,允许将EEPROM的存储矩阵的内容传送到EEPROM的RAM中。


 

  对X24C44的读写操作是串行数据操作,其读时序如图2所示。结合图2中的读时序,读出  X24C44中某两字节的数据操作为:芯片的使能引脚CE为高电平,在时钟SK信号的同步下,先向X24C44的数据串行输入引脚DI送读出两字节的命令1AAAA11X(其中AAAA为要读出的起始地址,X表示X24C44对该值忽略),数据串行输出引脚在第9个时钟由高阻态转为数据串行输出,16个比特为一个读出内容,通过将CE信号置为低电平,先关闭芯片的读出数据操作。


 


  按照向X24C44写入两字节内容的时序,写入两字节数据的操作类似于读出操作过程。
  X24C44采用串行读写数据,其与单片机的接线简单,除了片选信号CE外,只要与单片机的三根I/O引脚相连即可,作用为时钟CLK,数据输入DI,数据输出DO,其中DO引脚要接一个10kΩ的上拉
电阻。硬件电路接线如图3所示。


 


2.2 EEPROM读写的实现
  控制系统中所采用的是51系列单片机,其中读写子程序设计用汇编也较容易  实现结构化编程。根据X24C44的时序和操作过程,下面给出读出EEPROM中数据的汇编子程序。单片机将数据写入EEPROM的过程与读出过程相类似。读出EEPROM中数据的汇编子程序如下:
read:push psw;读数据子程序入口 

[!--empirenews.page--]

3 运行参数的数据校验
  系统运行参数是单片机控制系统正确运行的关键数值,能确保系统按设置的特性运行。在许多单片机组成的控制系统中,系统在运行过程中需读出EEPROM中的数据,为了确定所读出的数据与原先写入的数据一致,就要用到数据校验。在一般的校验中,一是采用数据字节值进行异或运算;二是字节值作相加运算并忽略进位的方法。本文介绍了采用一种16位循环冗余法(CRC)思想的自定义数据校验法。
3.1 循环冗余法的简介
  循环冗余法是基于将位串看成是系数为0或1的多项式,一个k位的帧可以看成是从xk-1到x0的k次多项式的系数序列,这个多项式的阶数为k-1。高位(最左边)是xk-1项的系数,下一位是xk-2项的系数,依此类推。例如11001001有8位,表示成多项式是x7+x6+x3+x0,多项式的系数分别是1,1,0,0,1,0,0和1。
  如果采用循环冗余法进行校验,在产生校验和时及检验数据时,运算必须用相同的生成多项式G(x),生成多项式的高位和低位必须是1。以2为模  展开运算。运算法则是:加法不进位,减法不借位;加法和减法两者都异或运算相同。如果分计算m位的数据序列M(x)的校验和,生成多项式G(x)必须比多项式M(x)短,即m>k。校验的基本思想是:将校验和加在数据序列M(x)的末尾,使这个带校验和的多项式能被G(x)除尽。当检验数据时,用G(x)去除这个带校验和的多项式,如果余数不等于零,则所检验的数据有错。
计算检验和的算法如下:
  (1)设G(x)为r阶,在数据序列的末尾附加r个零,使数据序列为m+r位,则相应的多项式是xrM(x)。
  (2)按模2除法,用对应于G(x)的位串去除对应于xrM(x)的位串,得余数。
  (3)按模2减法,从对应于xrM(x)的位串中减去余数。结果就是带校验和的数据序列,叫多项式T(x)。
  该方法是经过严密数学推导的,有三项多项式已成为国际标准,即12位的CRC-12:x12+x11+x3+x2+x1+1;16位的CRC-16:x16+x15+x2+1和CRC-CCITT:x16+x12+x5+1。
3.2 自定义数据校验的软件实现
  循环冗余法在通讯中的实现一般是用一种简单的移位寄存器电路来进行运算,并用硬件来完成对校验和的校验。实际应用中几乎都在使用此硬件。在单片机控制系统中,参考这一产生数据序列校验和的思想,由于单片机的运算速度已相当高,用软件实现这一校验也是可行的。在检错要求较高的情况下,并考虑到单片机的运算是基于字节(8位数据)的,数据校验采用以下自定义数据校验算法。自定义算法的生成多项式取G(x)=x7+x5+1,可以检出1位错和2位错,显然比字节和或者异或和的检错能力大。
  自定义数据序列校验的软件实现流程如图4所示。根据流程图,校验用到异或和移位操作运算,软件编程用相应的单片机汇编语言较易实现,程序简捷,实时性好。
  单片机控制系统在保存运行参数过程中,首先在RAM区中连续存储运行参数,并用自定义数据校验算法计算运行参数的校验和。系统向X24C44写入运行参数值时,也将校验和写入。在读出X24C44中的运行参数时,再用同一算法计算检验和,与X24C44中原有的校验和比较,判别数据是否合法,如果校验和相同,则对运行参数的读写是正确的。这一检验算法可有效保证程序所使用的运行参
数的有效性。
  在读出X24C44的运行参数时,如果所读出的数据按同一方法计算校验和与X24C44中原有的校验和不一致,则表明读出的是错误的数据。这时可不用这些数据,在程序中调用默认的运行参数值,从而
保证了门机控制系统的安全运行,提高了可靠性。

4 参数的取值范围检验
  在单片机控制系统中,所使用的参数数值如果超过了系统的允许范围,则有可能使系统运行出现不可预见的工作状况。为了保证控制系统按所要求的功能运行,系统在使用运行参数之前要进行取值范围检验。
  在单片机组成的系统中,系统的运行参数绝大多数是正数。如果运行参数1的取值范围为N11≤参数1≤N12,则在运行参数的取值范围检验子程序中,系统进行条件处理为:当参数1<N11时,令参数1取值为N11;当参数1>N12时,令参数1取值为N12;当参数1在许可范围之内时,参数1取值不变。运行参数的取值范围检验子程序处理流程如图5所示。
5 结束语
  本文所讨论的运行参数的保存及参数有效性判别的实现方法,在作者所开发的电梯门机单片机控
制系统中使用,实际应用表明:可以保证运行参数在设计的许可范围内,保证系统有较强的容错能力,提高控制系统的运行可靠性。这一方法也可应用于需要保存参数的单片机组成系统中,如智能仪表、运动控制等领域的系统。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭