APP下载

PCF8574在道路照明RTU中的应用及可靠性研究

2018-03-01

单片机与嵌入式系统应用 2018年2期
关键词:遥信字节总线

(1. 江苏农牧科技职业学院,泰州 225300; 2.苏州大学)

引 言

RTU(Remote Terminal Unit,远动终端装置)广泛应用于各个行业,尤其是电力自动化系统,承担各种远动信息的“上传下达”工作,是电力系统实现远方数据采集与监控的重要设备[1]。道路照明自动化控制系统也属于电力自动化控制系统中的一种,在该系统中,RTU承担道路照明线路及设备的交流电压、电流、功率及功率因数的模拟量数据采集,交流接触器开关数字量输出控制以及各种开关量的状态输入采集等功能。这些功能可以简化为遥测、遥控和遥信功能,遥测主要进行模拟量信号采集,遥控主要通过数字量输出进行线路开闭控制,遥信主要将收集的被监测设备的状态信号传递给控制中心。

在RTU遥信中,涉及到的设备较多,如交流接触器、断路器、自动保护装置、调压装置等,这些设备运行状态一般有两种(关闭状态和开启状态),RTU进行状态采集都是通过读取开关量输入状态来获得。

由于遥信功能中需要获取的状态很多,因此在道路照明RTU中,设计16路开关量输入通道,以满足遥信功能需求。道路照明RTU采用的微处理器是NXP公司生产的MC9S08AW60[2](以下简称AW60)芯片,该芯片共44个引脚,除去其他功能引脚,通用输入输出(GPIO)引脚仅剩余8个,无法满足16路开关量输入读取的要求,因此必须通过接口扩展的方式才能满足需求。

1 设计思路

PCF8574是NXP公司推出的一款带有I2C总线接口的远程I/O扩展芯片。该芯片包含8位准双向端口、100 kHz速率的I2C总线接口以及中断输出引脚[3]。中断输出引脚可与MCU中断逻辑相连,发送中断信号。PCF8574的引脚A0~A2为芯片地址输入线,P0~P7为8位输入/输出引脚,SDA和SCL为I2C总线数据引脚和时钟信号引脚。

选择PCF8574芯片用于道路照明RTU中遥信开关量输入接口的扩展,通过微处理器AW60的I2C总线接口与其相连,同时对于运行过程中遇到的干扰信号进行软件方面的抗干扰处理,使道路照明RTU遥信功能不仅满足实际要求,而且在可靠性方面得到保障。

2 硬件设计

图2 主机从从机读数据

I2C总线是由Philips公司开发的两线式串行总线, 用于连接微控制器及其外围设备,具有接口线少、 控制方式简单、器件封装形式小、通信速率较高等优点[4]。

AW60芯片具有1个I2C总线接口,与PCF8574连接,同时道路照明RTU遥信开关量输入通道必须使用光耦进行隔离,以保证RTU控制板运行不受干扰,遥信输入通道共16路,其中遥信开关量输入检测电路如图1所示。

图1 遥信开关量输入检测电路

图1中J1为遥信接线端子,遥信外接开关为无源触点,因此由道路照明RTU电源部分供给,为保障可靠性,此12 V电源与芯片5 V电源完全隔离。

发光二极管D1用来指示遥信外接开关是否闭合,若闭合则D1亮,断开则D1暗。二极管D1和电容C1为保护和滤波使用。光耦U1用来进行隔离,外界信号可能带有较强干扰信号,因此必须借助光耦才能保护核心电路板芯片正常工作不受干扰。

U2芯片PCF8574连接光耦输出引脚,若遥信外接开关闭合则检测到电平信号为0,若断开则检测到电平信号为1。A0~A2三个引脚为地址输入线,U2的地址为000,则在U3芯片AW60访问时其地址为十六进制0x40,本设计中需要两片PCF8574,地址为0x40和0x41。

U3通过SDA和SCL与PCF8574连接,发送命令读取数据,为了避免CPU轮询效率较低,将PCF8574的INT引脚连接IRQ引脚,在检测到开关量输入发生变化时,PCF8574会将INT引脚电平从高电平变为低电平,通过中断方式检测,效率有了较大提高。

3 软件设计

AW60芯片的I2C模块驱动主要由模块初始化、接收一字节数据、发送一字节数据和接收/发送N字节数据组成。I2C总线协议规定,所有传输都需要由主机(也就是本设计中的AW60芯片)发起。

以读数据为例,主机从从机(本设计中为PCF8574)读数据过程如图2所示,具体程序代码不在此罗列。

4 可靠性设计

道路照明RTU在硬件设计和软件设计中采用了一些措施以保证运行抗干扰性能和可靠性,如通过光耦进行信号隔离,不同模块采用隔离电源、信号滤波、外部看门狗等硬件措施。

软件措施包括使用内部看门狗、避免死循环等待等,如在I2C总线程序设计中等待应答信号的程序中,使用了计时等待方式,而不是一直循环等待。代码如下:

ErrTime = 255*10; //定义查询超时时限

for (i = 0;i < ErrTime;i++){

if (x == 'A'){ //等待应答信号

if(( IICS & 0x01) == 0)

return 0; //传送完一个字节后,收到应答信号

}

else if (x == 'T'){ //等待传送完成一个字节信号

if ((IICS&0x02) != 0){

IICS &= 0x02; //清IICIF标志位

return 0; //成功发送完一个字节

}

}

}

if (i >= ErrTime)

return 1; //超时,没有收到应答信号或发送完一个字节

虽然如此,在实际运行过程中I2C总线还是遇到一些异常,受到某种干扰的情况下,PCF8574芯片的SCL和SDA信号线一直被拉低,导致无法进行数据传输。由于I2C总线还连接了时钟芯片,因此导致时钟无法读出,延误了道路照明开关灯控制,造成不良后果。

经研究和分析,此种情况属于I2C总线被锁死的情况:如果总显示存在干扰或SCL/SDA被某些特定因素拉成低电平,I2C总线就会产生锁定[5],这种情况下,即使主机芯片重启,对PCF8574重新初始化也不能恢复正常运行。

经过分析和实验之后,确定这种情况可以通过发送9个SCL时钟方式解除总线锁定,因此在程序运行开始对I2C总线进行初始化,当检测到I2C总线出现锁定的情况后,将SCL引脚切换为普通GPIO引脚,输出9个脉冲,然后重新进行I2C总线初始化操作,通过这种方式 有效地提高了道路照明RTU的抗干扰性能和可靠性。

结 语

[1] 丁书文, 黄训诚, 胡启宙. 变电站综合自动化原理及应用[M]. 北京:中国电力出版社,2002:2-3.

[2] NXP Semiconductors. MC9S08AW60 Data Sheet, 2006.

[3] NXP Semiconductors. PCF8574 Product DataSheet, 2013.

[4] 龚向东, 黄虹宾, 刘春平. 主从可配置I2C总线接口IP及其应用[J].电讯技术,2010(1): 36.

[5] 侯喆, 何凯. 由于I2C总线锁死引起保护装置异常的问题分析[J]. 电力系统保护与控制, 2010, 38(7):106-108.

刘雪兰(讲师)、田宏伟(高级工程师),主要研究方向为嵌入式系统应用。

猜你喜欢

遥信字节总线
No.8 字节跳动将推出独立出口电商APP
基于Python的遥信抑制分析系统
No.10 “字节跳动手机”要来了?
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
简谈MC7字节码
数据通信网关机的双机切换数据同步方法
多通道ARINC429总线检查仪
融合遥信报警和电气量分析的电网故障诊断方法
基于EtherCAT总线的ROV控制系统设计