香港腕表价格交流群

电表丨智能电表的软件抗干扰设计

2020-05-31 06:14:54

软件抗干扰设计


在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。因此,除了采取硬件抗干扰方法外,还要采取如下软件抗干扰措施。


(1)指令冗余技术

当指针受到干扰出现程序跑飞时,可能会出现将操作数数值改变及将操作数误当作操作码的情况。当“跑飞”到某双字节或三字节指令的操作数上时,会将操作数当作操作码,程序将出错,因此可在双字节和三字节指令之后插入两个或三个单字节NOP指令,这可保证其后的指令不被拆散。对程序流向起决定作用的指令(如浸水使柔软、RETI、ACALL、LCALL、LJMP、JZ、JNZ、JC、.INC等)和对系统工作状态起重要作用的指令(如SETB、EA等)之前插入两条NOP指令,可保证跑飞程序迅速纳入轨道;或者在其后面重复写上这些指令,以确保这些指令的正确运行。


(2)软件陷阱

当微处理器受到各种干扰时,若PC指针跳到非程序区,可能会陷入某种循环不能跳出。如果循环中无清WDT指令,在给定看门狗定时器条件下,经过一定时间 WDT起作用,将PC指针复位,工作恢复正常。如果循环中包含了清WDT的指令,则产生死机。对于后者可在非程序区放置软件陷阱加以解决。

软件陷阱有三条指令组成:

* LJMP EER

安排软件陷阱的位置有:

1.未使用的中断区。如果设计的智能电表未使用全部的中断向量区,则可在剩余的中断区安排软件陷阱,以便能捕捉到错误的中断。

2.未使用的大片EPROM空间。对于单片机未编程的空间,其初始值为OFFH。OFFH对51指令来说,相当于单字节指令MOV R7,A。当程序跑飞入该区后,不仅无法迅速入轨,而且破坏R7的内容。因此在该区每隔一段地址设一个陷阱,就一定能捕捉到跑飞的程序。

3.在表格的最后安排陷阱。注意表格中不应被放入。

4.在程序区。前面曾指出,跑飞的程序在用户程序内部跳转时可用指令冗余加以解决,也可以设置一些软件陷阱,能更有效地抑制程序跑飞。可以将陷阱指令放置在各模块之间的空余单元里。在正常运行中不执行这些陷阱指令,一旦程序跑飞落入这些陷阱区,马上将乱飞的程序拉入正确轨道。由于软件陷阱都安排在正常程序执行不到的地方,故不会影响程序的执行效率。所以在EPROM容量允许的条件下,这种陷阱多一点为好。


(3)“看门狗”措施

如果跑飞的程序落入一个临时构成的死循环中时,冗余指令和软件陷阱都将无能为力,这时可以采用复位的方法使系统恢复正常。“看门狗”电路的功能就是对 CPU进行实时检测,当CPU落入死循环之后,能及时发现并使整个系统复位。在软件编程中,设置约1秒访问一次看门狗芯片,当程序跑飞或大于1.4秒(设置的超时时间)没有访问看门狗芯片,X5045将输出复位脉冲,直至程序正常运行。


(4)保证EEPROM数据写入的可靠性措施

需要注意的是,看门狗如果起作用说明程序计数器内容被破坏,因此其它寄存器或片内公羊的内容也有被破坏的可能,会导致把错误的数据写入EEPROM。在电表工作中,每产电量改变0.1度写入一次EEPROM,如果出现将错误的数据写入EEPROM,这是不允许的。采取以下措施可很好的解决此问题:

1.正常写入EEPROM之前,要进行一系列操作,可将其分成几部分。每一部分设置一写入口令。只有程序正常一步一步运行,口令才会逐一被赋予正确的值,到最后写入时再判断所有的口令是否正确。若正确,写入,否则退出。写入完成,口令清除。

2.数据双备份。当由于干扰使微处理器中的寄存器数据改变时,鉴于三组数据在同一值出错的概率较小,故在写入之前,将三组数据比较,若相等则写入,若不相等则将相等的两组数据写入。

3.写入之前对数据的合法性进行判别,即对电量或参数的数据格式进行判别。有了这样的限制,可进一步提高可靠性。

4.定时设置I/0口状态;微处理器受到干扰,I/0口状态可能改变,比如电脉冲输入口若改变为输出态,会造成用户用了电但微处理器却检测不到的可能。所以周期性地重复定义I/0口的输入/输出状态对于干扰环境下运行的电表是有好处的。


(5)串行通信数据的冗余校验

在抄表通信过程中,由于信道上各种因素的影响,所传输的信号受一定程度的干扰,PC机、集中器、电表间的性能参数不完全一致,在串行通信中仅靠奇偶校验是不够的。而采用国际上较为流行的传输码校验方法——循环冗余码校验(CRC),可收到了很好的效果。CRC是一种多用于同步通讯方式中的差错检出方式,在该方式中,将所传数据系列看成高次多项式G(x),将此多项式用预先规定的生成多项式P(x)去除,再将其余数码BCC附加在所传数据的尾部一并传送:在接收方,用同样的生成多项式去除,若除得结果为零,则可判断所接收到的数据是正确的。在发送端的一方,即电表先将发送数据转换,连同原数据一同发给集中器,集中器不做校验,直接发给PC机,在接收端,PC机用高级语言实行CRC算法解码;以确定数据的真伪。经实验证明,冗余校验使误码率大为降低,确保了数据传输的可靠性。

另外在软件的编制过程中应注意在执行各功能子模块之前,可先进行功能标志冗余判断,以增强其程序运行可靠性。



来源/中国电子网

中国电工仪器仪表信息网(www.tc104.org)

2015年与您携手同行 如有合作意愿

请咨询 0451-86659398 任小姐

友情链接

Copyright © 2023 All Rights Reserved 版权所有 香港腕表价格交流群