微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 电力线载波通信系统中的单片机程序设计

电力线载波通信系统中的单片机程序设计

时间:02-21 来源: 点击:

引言

  近距离的单片机通信采用总线方式即可实现,远距离的单片机通信不能采用这种方式,寻找一种即可远距离传输,又保证安全可靠的通信方式很重要。电力线载波通信技术(PLC),是指利用已有的配电网作为传输媒介,实现数据传递和信息交换的一种技术。它能够充分利用最为普及的电力线网络资源,具有覆盖范围广、建设速度快、投资少、用电器可以直接作为网络终端等特点。低压配电网PLC技术根据数据传输速率可以分为低速和高速两种,低速PLC的数据传输速率小于1Mbit/s,目前技术比较成熟,而且已经有相应标准对其载波频进行了规定,中国电力线载波通信频带规定为3-500KHz。窄带电力线载波技术由于数据传输速率较低,目前用于工业控制、配电自动化、楼宇自动化等。双音频(DTMF)技术以其较强的抗干扰能力和较低的误码率低等优点,是一种较为常用的通信方式。因此以电力线为传输介质,使用双音频通信方式实现单片机远距离通信是很有价值的。双音频收发电路的设计和应用、通信传输协议的制定以及单片机的软件设计是本系统设计的关键。本文着重介绍单片机的软件设计。
系统结构

  系统的基本结构如图1所示,本系统采用巡回检测的方式实现多路检测报警,并通过USB接口连接到PC机,用VB报警界面集中监控显示。首先,可以根据防盗区的需求有规律地设置多路报警检测点(本系统可设置多达256个),即前端检测电路。其次,由中心控制系统的单片机有顺序地向前端发送检测信号,当某个前端被检测到时,会通过前端单片机向中心控制系统发回自己的代码并附上有无报警信息,如果有报警,中心控制系统就通过USB接口将数据传送给PC机,VB界面上会显示相应报警点,并把报警时间和报警点编号记录下来,接着就继续检测下一个检测点,否则就直接转去检测下一个检测点。但当中心控制系统向前端发送检测信号时,如果等待某一段时间后前端无应答时,就报出错信息。如此周而复始,以达到对防盗区域内的有效监控。


图1 系统结构

  本系统用软件设置发送与接收是分时的,可以避免控制信号和检测信号相互干扰,影响系统工作的正确性,又可减少硬件开销,顺利实现双音频信号的双向传输。还利用全速USB设备接口连接到PC机,既插即用,使用方便。用PC机的VB界面进行报警,直观明了,还可利用PC机的存储记忆功能,使本系统更完善可靠。

  本系统的功能指标为:
·256个点巡回检测。
·用220V低压电力线传输信息。
·巡回检测一次所有的前端的时间不超过1分钟。
·前端检测部分热释电人体红外传感器电路的感应距离在10米,感应持续时间为10s。
·PC监视界面能给出无报警、报警、故障三种状态的指标,并能以文本的格式存储报警信息。

通信传输协议

  为实现电力线载波通信的顺利进行,特制定如下传输协议:中心单片机控制信息的数据格式为:"#+目标地址+*",前端单片机返回检测信息的数据格式为:"本机地址+#或本机地址+*"。由于本系统采用巡回检测的方式,所以中心发送命令时要附上目标地址,前端接受信息时要与本机地址进行核对,以备前端判别是否要回送数据,中心接收前端返回的检测信息时,也要与发送出去的目标地址进行核对,以备中心判别是否其正在等待的信息。

单片机软件设计

  前端单片机软件

前端检测系统的程序流程图如图2所示。本机地址设为*000#,分别存放到内存单元30H、31H、32H、33H、34H。单片机AT89C2051从P3口读入五组8421代码。经过密码校验,如果密码正确,则检测P3.7口是否为低电平,如果是低电平就向中心发送报警信号"000#",否则就发送"000*"。如果密码不正确,前端就等待中心发送下一个检测信号的命令。每发送一个代码,都要调用一次延时子程序,这是为了有足够的时间进行编码和有足够的时间进行译码,实验测得25ms的延时是比较可靠的。


图2 前端检测系统的程序流程图

  中心单片机软件

中心控制系统的程序流程图如图3所示。由主程序、检测命令发送子程序、密码校对子程序、25ms延时子程序、USB中断处理子程序组成。中心单片机发出五位检测命令代码后,启动100ms的TO中断,如果在这段时间内没接收到前端的返回信息,中心就认定该前端出现故障,如果接收到信息,中心单片机先对前三位代码与内存单元中的目标地址进行一一校对,一致的话则继续判断下一位,最后判断地4位的报警状态,并通过USB接口发送数据给PC几的应用程序进行处理。接着中心继续发送检测下一个前端的命令。在程序中设置了大循环和小循环,目的是小循环完成以后装入下一个检测前端设定值,以保证有异常输入时,系统延迟一定的时间后自动恢复正常工作,当中心控制需要通过USB接口向PC发送数据时,只要调用中断数据发送子程序,执行三条语句就可以了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top