使用树莓派实现主机远程断电重启

2014-11-22 02:09刘佳诞
电力工程技术 2014年6期
关键词:针脚低电平断电

刘佳诞,周 琦

(无锡供电公司,江苏无锡 214061)

在实际运行维护中,遇到变电站远程录音终端(嵌入式系统)死机,经常采用的方法是通过远程桌面或远程TELNET、或者远程多电脑切换器(KVM)等方式进行服务重启。但在操作系统宕机情况下,远程登陆和远程KVM 方式就无法进行,此时常用的解决方法就是人员赶往现场进行设备的断电重启,费时费力;或者通过采用安装智能电源分配单元(PDU)的技术解决方案,实现远程设备的断电重启。但是,PDU的方案也存在一些不足,一是价格昂贵,一般在3 千元至五千元;二是扩展性不够,功能较单一,无法根据客户的需求进行功能扩展。

Raspberry Pi(树莓派)是一款迷你电脑,预装Linux 系统,体积仅信用卡大小,搭载ARM 架构处理器,运算性能和智能手机相仿。它最大的特点就是成本低廉,仅35 美元,接口较丰富。除具备HDMI,USB,ETHERNET 接口外,同时具备8 路GPIO(通用输入输出口)接口,非常适合进行一些简单的自动化设备控制,也方便进行功能的扩展。树莓派官方在软件编程方面推荐使用Python 语言,其提供了GPIO 库,可以帮助用户非常方便的完成相关IO 口的操作。同时,Python 作为脚本语言[1],在web 编程方面具有天然的优势,其包含的webpy 库能够帮助用户以很少量的代码轻松的完成轻量级的web 框架的搭建。因此,基于树莓派的上述优势,考虑采用它来控制远程录音终端的电源并通过远程访问实现断电重启。

1 方案设计

1.1 方案原理

解决方案如图1 所示。首先在树莓派上搭建web服务器,采用webpy 搭建Python Web 框架,并根据控制终端的请求实现GPIO 控制。控制终端首先通过web 方式远程访问树莓派web 主文件(在本网站配置中定义为index.py),经过用户名密码认证后,进入设备断电重启网页对远端录音终端进行重启操作。树莓派web 主文件根据重启请求,调用GPIO 操作函数,控制GPIO的输出电平,从而控制继电器触点动作,实现录音终端断电重启。

图1 方案原理图

1.2 硬件连接与配置

树莓派GPIO 针脚定义如表1 所示。

表1 树莓派GPIO 针脚定义

根据表1的针脚定义,选用GIPO 0 作为输出。因此使用2,6,11 号针脚与继电器(驱动电压为直流5 V)连接。其中2 号针脚提供5 V 电压输出,与继电器Vcc 针脚相连;6 号针脚为信号地,与继电器GND 针脚相连,7 号针脚为GPIO 0 输出,与继电器IN 针脚相连,如图2 所示。

图2 GPIO 连接示意图

2 软件实现

2.1 Web 服务器搭建

选用nginx+webpy+fastcgi+flup的组合。

2.1.1 安装上述应用程序

使用如下命令行:

Sudo apt-get install python-webpy nginx spawn-fcgi python-flup[1]

2.1.2 修改Nginx 配置文件

Nginx(1.2.1 版本)的配置文件nginx.conf(在/etc/nginx/ 目录下)包含了default文件(在/etc/nginx/sites-available/ 目录下),关于server,location等配置都在default 文件中,这与以往的版本不同。对default 文件进行如下修改:

2.1.3 修改web 主文件属性

在启动spawn-fcgi 前将index.py 改为可执行,使用以下命令行:

Sudo chmod+x index.py

2.1.4 启动spawn-fcgi

在树莓派9002 端口启动webpy 应用,webpy 主文件路径为/home/pi/www/index.py,webpy的程序主目录为/home/pi/www/,总共启动10个spawn 进程.起用如下命令行:

spawn-fcgi -F 10 -d/home/pi/www -f/home/pi/www/index.py-a 127.0.0.1-p 9002

2.1.5 启动nginx

命令行:Sudo nginx

2.1.6 增加自启动功能

为了能让树莓派在系统启动后自动加载fcgi,首先对/etc 目录下rc.local 文件增加可执行权限。

命令行:sudo chmod+x rc.local[2]

编辑rc.local,在exit 0 行的前面增加2.1.4 中的命令行。

2.2 GPIO 编程要点

GPIO 控制程序为control.py,作为模块导入web主文件中。其具备初始化GPIO 和断电重启功能。

2.2.1 初始化GPIO

通过initGPIO()函数,选用GPIO 0,设置GPI0的使用方式为BOARD(该方式参考Raspberry Pi 主板上P1 接线柱的针脚编号。使用该方式的优点是无需考虑主板的修订版本,硬件始终都是可用的状态,无需从新连接线路和更改代码),设置GIPO 0为输出通道,并输出低电平(因为选用的继电器模式在高电平下为释放,低电平下吸合),使继电器触点处于常闭状态,录音设备保持有电状态。

2.2.2 断电重启

通过调用powerreboot()函数,将GPIO 0 通道输出设置为高电平,释放继电器触点,断开设备电源断开设备电源,保持断电3 s,将GPIO 0 通道输出设置为低电平,接通设备电源,进行设备重启。

其中pwoerreboot()函数中主要调用了GPIO 模块的以下几个主要函数:

(1)调用GPIO.setup(0,GPIO.OUT),将GPIO 0通道设置为输出模式。

(2)调用GPIO.output(0,true),将GPIO 0 通道输出设置为高电平,断开设备电源。

(3)调用time.sleep(3),让断电保持3 s。

(4)调用GPIO.output(0,false),将GPIO 0 通道输出设置为低电平,接通设备电源。

2.3 Web 主文件编程要点

编写web 主文件index.py,将改文件放置于web服务器根目录下(即在2.1.2 配置文件设置的web 根目录)。

2.3.1 功能

Index.py 文件实现以下几项主要功能:

(1)导入模块control.py;(2)用户登录校验;(3)根据用户GET 请求,控制GPIO 电平输出,进行断电重启操作。

2.3.2 处理流程

Inder.py 处理流程如图3 所示。用户通过访问web主文件index.py 进入登陆界面,通过密码认证后,树莓派开始对GPIO 0 端口进行初始化,并向用户返回电源重启操作网页。当index.py 接收到用户断电重启请求后,调用powerreboot()函数,控制GPIO 端口的输出电瓶,完成对控制设备的断电重启操作。

3 结束语

在生产实际运行维护过程中,已多次通过使用树莓派,对远程出现死机故障的主机进行断电重启,避免了人员赶往变电站现场人工复位的问题,节约了故障处理时间和人力资源。与采用智能PDU的技术方案相比,成本约为前者的1/20,价格优势明显。缺点是与设备电源接线稍显麻烦,且没有进行工业化封装,布线和设备美观性上明显不足。

树莓派功能强大,设备运行稳定,后续可进一步进行开发。比如外接摄像头,实现对站内设备的图像监控;外接温湿度传感器实现温湿度采集;通过串口对其他运行设备进行运行工况监测和维护等。合理应用树莓派,能给电力通信信息运行维护工作带来很大便利。

图3 index.py 处理流程

[1]MAGNUS L H.Python 基础教程[M].北京:人民邮电出版社,2010:1-3.

[2]SARWAR S M.UNIX 教程[M].北京:机械工业出版社,2003:179-180.

猜你喜欢
针脚低电平断电
吉利帝豪EV汽车手自一体式灯光系统电路检修*
高压感应电动机断电重启时的瞬态仿真
日光灯断电关闭及自动延时开关设计
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
浅谈物理电路与数字电路
诗句如针脚,绣遍倾城旧事
一种继电器单元的设计与应用
15-MeV电子直线加速器的低电平系统
空客A320 发动机(V2500)启动过程中意外断电的影响
高、低压断电对高炉喷煤系统的影响及处理