电力通信模块的实现

[复制链接]
3135|8
 楼主| 拿起书本 发表于 2012-4-7 22:35 | 显示全部楼层 |阅读模式
电力通信的关键是如何保证在电力线上长距离的可靠通信。在电力线上通信存在以下问题:电力线间歇性噪声较大,信号衰减快,线路阴抗波动等。这些问题使电力线通信非常困难,电力线载波通信的关键是功能强大的电力线载波专门电路。
Intellon公司为适应这一形势发展的需要,设计出了基于电力线载波技术和各种网络接品控制器,例如SSCP300(具体参考手册)
SSCP300单片机的连接如图,用到的主要器件为单片机和SSCP300,单片机通过P0口的低四位口线与SSCP300相连接。

程序如下*******************************************************************************
应用 SSCP300 的难点在于对 SSCP300 内部寄存器的读写操作 ,因而在合理设计硬件电路的基础上 ,要充分了解 SSCP300 的数据读写控制逻辑 ,尤其是 SSCP300 本身所属网络的系统属性及自身配置信息 ,这里给出对 SSCP300 进行上电后初始化过程的代码。
*******************************************************************************
#include <reg51.h>        // 引用标准库的头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCK = P0^0;     // SPI时钟
sbit SI= P0^1;     // SPI从器件数据输入
sbit SO = P0^2;     // SPI从器件数据输出
sbit RST= P0^3;     // 复位控制端
sbit CS = P0^4;     // 片选端
sbit INT= P0^5;     // SSCP300中断信号

uchar tbuf[7]={0,0,0,0,0,0,0,0};       // 写入配置代码存储缓冲区
uchar rbuf[7]={0,0,0,0,0,0,0,0};       // 读取配置代码存储缓冲区

#include<eg51.h>
#include<lic.h>
#define  uchar  unsigned char   
#define  uint  unsigned int
uchar  data  
*******************************************************************************
51单片机通过SPI总线对SSCP300发送命令、数据读写程序
*******************************************************************************
void  main()
{
P0=0xff;
CS=0;
delay(20);                       //延时20ms,SSCP300上电稳定复位
send(code=0x04)                 读取sscp300接口状态
while(INT=0)
SCK=1;
state=read();
while(INT=0)
SCK=1;
if((state&01)=0x01)               //中断标志位0
    {
        ……
        ……
}
if((state&02)=0x02)               //中断标志位1
    {
        ……
        ……
}
if((state&04)=0x04)               //中断标志位2              
    {
        ……
        ……
}
  if((state&08)=0x08)               //中断标志位3
    {
        ……
        ……
}
if((state&10)=0x10)               //中断标志位4
    {
        ……
        ……
}
if((state&20)=0x20)               //中断标志位5
    {
        ……
        ……
}
if((state&40)=0x40)               //中断标志位6
    {
        ……
        ……
}
if((state&80)=0x80)               //中断标志位7
    {
        ……
        ……
}
}
  //单片机开始对SSCP300配置
send(code=0x03)               //发送命令03H
while(INT=0);                 //等待响应
for(i=0;i<7;i++)
    {
send(code=tbuf[i++]);       //连续发送7个字节
while(INT=0);
}
send(code=0x02)              //发送命令02H
while(INT=0)                //等待响应
for(i=0;i<7;i++)
    {
rbuf[i++]=read();      //连续接收7个字节
while(INT=0);
}
for(i=0;i<7;i++)
    {
if(rbuf=tbuf)        //比较发送和接收到的数据
    {
i++;               //相等的话进行下一个数据的比较
}
      return;
}
rst()                    //不相等,复位
}
//51单片机作为主机作为SPI主机接收一个字节数据
void  read(void)
{
  uchar  temp
  CS=0;
  SCK=1;               //时钟上升沿
  for(i=0;i<8;i++)
     {
      SCK=0;
      SCK=1;               //时钟上升沿
      if(SO=1)
{
temp=(temp︱0x01);     //保存1
temp=(temp<<0x01);
}
      else
      {
temp=(temp︱0x00);      //保存0
temp=(temp<<0x01);
}
     }
   return temp;
}
//51单片机作为主机发送,SSCP300接收一个字节数据
void  send(uchar data)
{
  uchar  temp
  temp=data;
     CS=0;                        //片选控制
  for(i=0;i<8;i++)
     {
      SCK=0;
if((data0&&0x80)!=0)           //判断待发送数据位
{
SI=1;                         //发送‘1’
}
      else
      {
SI=0;                         //发送‘0’
}
      delay(10)                     //延时稳定数据               
SCK=1;                      //时钟上升沿
}
}
//SSCP300复位子程序
void rst()
{
send(code=0x01)          //复位命令:01H
while(INT=0)
delay(20)                //延时20ms,SSCP300稳定复位
SCK=1;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
tianli1980 发表于 2012-4-8 12:08 | 显示全部楼层
电力线载波通信具有良好的前景和巨大的市场潜力。顶一下
shenmulzb1985 发表于 2012-4-8 16:12 | 显示全部楼层
电力载波方面,我学校的黄新波老师是专家的,这方面是非常有市场滴。。。
ddllxxrr 发表于 2012-4-8 16:13 | 显示全部楼层
顶一下
liqaz 发表于 2012-4-8 17:48 | 显示全部楼层
电力载波,
啊 在如今的市场前景下,
国家智能电网改造
jxmzzr 发表于 2012-4-10 09:04 | 显示全部楼层
电力线载波通信不仅提供了实用的新兴通信手段,而且具有现有物理链路,易维护,易推广,易使用,低成本等优点。顶是必须的。
lolp 发表于 2012-4-12 20:46 | 显示全部楼层
好长啊  优点很明显
lolp 发表于 2012-4-12 20:46 | 显示全部楼层
huangfeng33 发表于 2012-4-13 09:26 | 显示全部楼层
非常实用的东西,谢谢楼主的分享。
这个实现要用到很强的抗干扰能力的芯片。楼主多推荐几款。谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部