W77E58在RTU遥信单元中的应用
扫描二维码
随时随地手机看文章
W77E58 是中国台湾的华邦电子公司(WinBond)推出的高速、高集成、增强型MCS-51系列高性能的单片机。使用W77E58时,系统速度要比传统51系列单片机快2.5倍左右。工作频率为40MHz的W77E58相当于100MHz左右的8051;加上其内置32KB可重复编程的Flash EPROM,1KB用MOV指令访问的内部SRAM(节省了16条数据/地址I/O口线),以及2个增强型全双工串行口和较低的价格,是一款高性能、功能丰富、高集成度的8位微控制器。它非常适合要求高速、双串口、外围简洁、低成本系统应用的高性能单片机。
1 RTU遥信单元简介
电网调度自动化中远动测控系统通过安装于各个厂站内的RTU(远动终端设备)采集各机组各变压器等电力设备输出功率、各线路潮流和各母线电压等实时数据以及各断路器、刀闸开关等实时状态,再通过远动通信通道传送给远方监控调度室;同时RTU响应远方监控调试室下达的各项命令,完成各种设备控制操作,实现四遥(遥测、遥信、遥控、遥调)等功能,达到无人值守和电网调度自动化等目的。
遥信单元为RTU设备中重要的组成部分,负责完成电力设备、机组各控制开关、位置/行程开关等的实时状态的收集、产生相应SOE(事件顺序记录)报告以及对计量电能表输出的电能脉冲进行累积计数等功能,实现“四遥”中的“遥信”功能。
RTU系统对每一遥信单元的要求:
监测遥信通道数量64个
SOE(事件顺序记录)分辨率≤2.0ms
不同遥信单元间时钟相差≤1.0ms
通信端口(EIA RS485)2个
通信速率19.2kbps
综合考虑系统要求、速度、结构及成本等因素,我们选用了W77E58为遥信单元的主嵌入控制芯片。
2 W77E58在遥信单元中的应用
由以上要求可以看出,RTU遥信单元中单片机设计的难点在于系统要求遥信通道事件的高时钟分辨率和所需管理通道数量大,且工作量较多。
每一个通道都要进行状态变位判定(是由开到关还是由关到开),根据本通道消抖时间定值作消抖处理。消抖完毕后,再根据本通道性质定值判定是否产生 SOE报告或作脉冲计数工作。产生SOE报告的需状态变位发生时间、通道号、变位过程等信息写入SOE缓存区,以备RTU通过RS485通信提取;为脉冲计数的通道作脉冲计数处理,并根据命令作脉冲计数冻结保存处理等。
所以,软硬件设计的重点是如何尽量提高系统处理速度和效率,减少不必要等待、空操作和无关事件的打扰处理。
因W77E58有32KB EPROM、256+1KB的RAM,程序空间等不是大问题,所以RAM资源分配、程序设计等一切以时间优先为主考虑。
遥信单元硬件结构如图1所示。
64 路监测通道开关状态信号经过2级光电隔离后通过8片SN74245切换到W77E58 P0口作为状态信号输入;同时64路隔离后的状态信号通过8片SN74373锁存保留后以原始状态身份与实时状态信号分别输入到8片SN74519八位数字比较器的A、B端,8片SN74519的输出(有4路经1片SN7408两输入端门相与后)成为W77E58外部中断INT0~INT5的输入信号。这样便由硬件电路完成了64路状态信号变位的检测工作,并由中断响应,可大大提高了系统对变位的响应速度,同时使软件判别工作量大为减少,运行时间得以满足系统要求。
因W77E58的外部中断INT2~INT5只有边沿触发方式,为简化程序设计,外部中断INT0~INT5全部设置成沿触发方式,并且由软件来清除外部中断标志位。
W77E58的P2口作输出用,控制8片SN74245的G端(19脚),完成8个8路开关状态信号通道选择工作。
串行口0、1经光电隔离后通过MAX487E芯片与RTU系统进行双RS485网通道。在任一网络发生通信故障时,将其工作由另一通信网络来兼任,完成监测状态、电能脉冲累积计数、SOE的数据上传和定值以及GPS时钟校对等数据下传。
2个串行通信速率都为19.2kbps。制定通信协议时很好地考虑了W77E58硬件的多机通信自动地址识别功能。
协议第1字节是接收单元地址帧,为9位数据格式,最后1位(数据/地址识别位)为1。通信初始化时,将串行口设置成通信方式3,且SM2位置1, SADDR=单元地址号,SADEN=0XFFH。这样,遥信单元只有在接收到与本单元地址号相同的地址帧时,才产生中断。中断程序再将通信设置成通信方式1,中断接收随后的8位格式数据。本次通信完成后,再将通信设置成通信方式3。
经过以上处理,遥信单元不再被众多无关通信打扰,大大减少了系统的时间开销。
扩展1片24C32 EEPROM芯片,用于遥信单元定值和掉电状态数据以及单元地址号等需要保存的数据的存放。
因RTU系统对各遥信单元时钟的准确性要求严格,单元机晶振选用稳定性较高的4脚方形MHz晶体振荡器,并每隔1分钟进行1次GPS广播对时,以统一RTU系统中各遥信单元的软件时钟。
经过以上几个方面的处理,系统设计达到了产品整体性能要求,很好地满足了成本控制的需要,批量应用效果良好。
3 W77E58使用注意事项
①在使用MOVX指令访问W77E58内含的1KB SRAM前,须用MOV PMR,#01H指令给PMR寄存器赋值01H,以选择使用内部1KB SRAM区。
②串行口1只能使用定时器1作为其波特率发生器;而串行口0既可以使用定时器0,也可以使用定时器1。若使用时2串口通信波特率相同,则可以同时使用定时器1,从而减少占用1个定时器0。
③W77E58的外部中断INT2~INT5只有边沿触发方式,但可分别设置成硬件或软件清除外部中断标志位。
④使用时,数据指针DPTR到底是DPTR0还是DPTR1由DPS.0位来决定。
当DPS.0=0时,选择DPTR0;
当DPS.0=1时,选择DPTR1。
DPS.0位不能用位指令来操作。如:SETB DPS.0指令不能达到将DPS.0位置1选择DPTR1的目的,而必须使用MOV DPS,#01H指令。
双数据指针在对内含的1KB SRAM中(对片外扩展的RAM也是一样)进行数据块的移动时显得非常灵活方便。请看下面1段程序使可知较双数据指针的优越性。
MOV PMR,#01H ;使用内部1KB
MOV R2,#CNT ;移动块的长度
MOV DPS,#00H ;选择DPTR0
MOV DPTR,#DHDL ;移入地址
MOV DPS,#01H ;选择DPTR1
MOV DPTR,#SHSL ;移出地址
LOOP;
MOVX A,@DPTR ;移出地址数据到A
INC DPTR ;DPTR1+1
MOV DPS 。#00H ;选择DPTR0
MOVX @DPTR,A ;A数据到移入地址
INC DPTR ;DPTR0+1
MOV DPS 。#01H ;选择DPTR1
DJNZ R2,LOOP ;R2-1≠0,继续
⑤W77E58在工作时易产生较大开关噪声,影响系统工作电源。建立使用时在VDD脚就近并联1个0.1μF瓷介电容和1个47μF钽电容后再串联1个JSZ-S62多孔EMI吸收磁珠到系统工作电源,以使系统具有更好地电磁兼容性。