【关键词】高精度开关量测试 事件记录顺序
SOE GPS 50us
1 前言
目前,各电网公司和发电集团的变电站
SOE(事件记录顺序)系统所记录的SOE 事
件已成为事故分析、日常运维的重要数据,
但是对于SOE 记录时各输入通道间时间分辨
率、各输入通道传输回路的事件响应传输延迟
等缺乏有效、准确的现场测试手段,目前市面
上虽然有类似的SOE 测试仪,但是由于其精
度不高或功能不强操作不便等缺点,不能很好
的测试SOE 系统,从而影响电力系统事故分
析的准确性。因此,笔者研制了一种针对于变
电站SOE 的高精度开关量检测仪器(以下简
称开关量检测仪),时间输入、输出误差小于
50us,使用该仪器就基本能满足变电站SOE
检验的需要,从而提高检验效率和质量,保证
电网安全稳定运行。
2 仪器功能
根据相关的检验规程,所研制的高精度开
关量检测仪器仪主要完成开关量输入、输出的
检测,实现站内SOE 分辨率测试、站间SOE
测试、遥信风暴测试、遥信响应时间测试、脉
宽测试、遥控测试等功能,具有内部GPS 模
块和外部B 码输入两个时钟基准源,能任意
设置输出通道顺序,只需要软件设置即可改变
输出通道顺序。
3 仪器硬件结构
该仪器主要由三大功能模块组成,即主
机模块、从机模块。
文/郑学明
变电站高精度开关量检测仪
主要由主机模块、从机模块组成。
人机接口软件采用Keil C 软件开
发平台,运行C 语言进行编程,
主机模块采用美国德州仪器公司
(TI) 的MSP430 作为主机模块
的控制芯片,从机模块采用采用
DSP+CPLD 的硬件方案,实现误差
小于50us 的高精度开关量输入、
输出,实现变电站的站内SOE 测
试、站间SOE 测试、遥信风暴测试、
遥信输出测试、遥信响应时间测
试、脉宽测试等功能。
摘 要
主机模块采用MSP430 作为主控板的控
制芯片,由于仪器不仅需要实时的控制能力,
还需要具有数据的快速运算能力,因此我们选
用了美国德州仪器公司(TI)生产的6 位超低
功耗、具有精简指令集(RISC)的混合信号
处理器(Mixed Signal Processor),而从机模
块采用采用DSP+CPLD 的硬件方案,采用高
性能数字信号处理芯片(DSP,Digital Signal
Processor)-TMS320LF2407 作为从机模块的
核心CPU,主要负责GPS守时处理、LCD显示、
键盘扫描、输入输出接口控制、主从模块通讯
以及运行人机接口软件。
CPLD 主要用来做1 秒时间计数,实现守
时功能,同时也用于产生与门逻辑电路,为
RAM 提供片选信号。
GPS 授时采用Motolora M12T 模块, 这
是一款高精度的专用授时模块,可提供时间信
息(含年月日的日期信息和时分秒的时间信息)
和秒脉冲,经硬件及高精度软件算法处理后进
行精确授时,开关量输入、输出的时标准确度
优于50μS。
主控模块电路板采用四层板,为两个信
号层和一个电源层以及一个地层,使用多层电
路板不仅可以缩小电路板面积,缩短电子元器
件之间的连线,提高信号传输速度,而且加入
了地线层,使信号线对地形成恒定的低阻抗,
具有较好的屏蔽作用,使电磁抗干扰能力大大
增强。
仪器硬件结构如图1。
4 GPS高精度授时实现
本项目需要实现50us 的开关量高精度授
时输出,主要原理如下:
(1)计算标准秒脉冲对应的指令值:校
准时利用外界标准秒脉冲信号,MSP430 利用
晶振计数对此秒脉冲的长度进行计量,并将计
量值记录下来,作为时间延时的一个标准值,
如本设备是在某工作频率下记下秒脉冲的指令
数为39982560=65536*610+5600
(2) 将延时值转换为指令值: 根
据用户输入的具体延时时间值转化为
MSP430 的指令数, 如用户输入100ms, 于
是根据已知一秒总的指令数转换该延时值为
3998256=65536*61+560
(3)实现延时时间的指令值:如上述2
中的延时值,65536*61 中65536 为某定时器
的中断周期,即延时需要61 个以65536 个指
令为中期的周期数,在发生61 个中断后,该
定时器再跑560 个时钟数,就可以完成100ms
延时
(4)通过以上步骤可以实现具体的延时
值,而且在把延时值转换为指令值时,我们已
将器件的延时也考虑在内,故可以做到高精度,
同时由于定时器计数不受到其它事件包括中断
等影响,因此可以实现宽范围时间延时
5 开出量任意顺序输出实现
图1:仪器硬件结构
电子技术 • Electronic Technology
128 • 电子技术与软件工程 Electronic Technology & Software Engineering
在现场测试中,由于输出通道所连接的
物理连接线数量较多,需要改变通道输出顺序
时,更换连接线所耗费的时间将会占据大部分
测试时间,于是,笔者提出了由软件设定好输
出顺序的方法,实现了无需更换物理连接线即
可达到改变通道输出顺序的目的。
现场操作人员将所要输出的输出通道顺
序数据输入界面后,如顺序数据是:通道1,
3,5,7,6,2,4,8,我们将其保存在数组
SCI_REC_BUF1 中,待输出时,根据这个数
组中的数据,调用相应的通道输出子程序,实
现顺序任意输出,代码如下所示:
void zhannei_SOE(void)
{
int i;
unsigned long var32=0;
unsigned long f_int=0;
uint temp1=0;
uint temp2=0;
float f=0.0;
var32 = (SCI_REC_BUF1[14]*256 +
SCI_REC_BUF1[13])*1000;
v a r 3 2 = v a r 3 2 + ( S C I _ R E C _
BUF1[16]*256 + SCI_REC_BUF1[15]);// 将间
隔时间转化为us, 分两步写
f = (var32/1000000.0)*SECOND;
// 间隔时间转化为指令数,站内SOE 不需考
虑光耦的延时
if(f>36000000)//900ms
f +=400;
f_int = f/1;
// 取f 的整数部分
T3_CNT= f/65536;
// 计算整周期中断次数
T3PR_temp = f_int%65536;
// 计算最后一次中断周期
Channel_num = SCI_REC_BUF1[4];
for(i=0; i<8; i++)
Channel_data[i] = SCI_REC_
BUF1[5+i];
Channel_data[0] = 1;
Channel_data[1] = 3;
Channel_data[2] = 4;
Channel_data[3] = 5;*/
temp1 = 0xFFFF<<Channel_data[0];
t emp2 = ~(0xFFFF<<Channe l_
data[0]-1);
temp1 = temp1|temp2;
PCDATDIR=PCDATDIR&temp1;
// 起始通道输出
if(T3_CNT==0)
{
T3PR = T3PR_temp;
// 在启动T3 之前先设定
周期寄存器
}
Current_chnindex = 1;
Current_chn = Channel_data[1];