微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于以太网的电力智能监控终端的研究

基于以太网的电力智能监控终端的研究

时间:07-19 来源:21IC 点击:

图3 TCP/IP建立联接过程


4.2 软件实现

1) 初始化W3100

初始化W3100时,应首先对其进行硬复位,然后设定MAC地址及IP,最后初始化SOCKET接口。
  ResetEthernet(); //硬复位W3100
  InitW3100A(); //初始化W3100
  InitNetConfig(); //配置以太网卡参数
  InitSocket(); //初始化SOCKET

2) 中断服务程序

  根据W3100的使用手册,在系统中提供一个硬件中断作为W3100的中断输入,在中断服务程序中记录状态值。代码如下。
  _interrupt(INT_PCA0) _using(INT_PCA0_PSW)
  {
  u_char status;
  status = INT_STATUS;
  while (status)
  {
  if (status & 0x01) {
  S_STATUS[0] = STATUS(0);
  INT_STATUS = 0x01;
  }//第1、2、3类似处理
  if (status & 0x10) {
  S_STATUS[0] = STATUS(0);
  INT_STATUS = 0x10;
  }//第1、2、3类似处理
  status = INT_STATUS;
  }
  INT_STATUS = 0xFF;
  }

3) 收发数据

  设计一个任务定时10毫秒进行数据收发处理,其过程如下。
  SOCKET i;
  INT len;
  WORD TSCKNUM = 2404;
  for (i = 0; SockNo < 4; SockNo++)
  {
  switch (Select(i, SEL_CONTROL))
  {
  case SOCK_ESTABLISHED:
  if ((len = select(i, SEL_RECV)) > 0)
  {
  if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
  len = recv(i, data_buf, len);
  send(i, data_buf, len);
  }
  break;
  case SOCK_CLOSE_WAIT: if ((len = select(i, SEL_RECV)) > 0)
  {
  if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;
  len = recv(i, data_buf, len);
  }
  close(i);
  break;
  case SOCK_CLOSED:
  init_sock(i);
  break;
  }
  }

5 结束语

在设计与实现电力智能监控终端过程中,应用W3100作为以太网协议栈转换器具有接口简单、编程方便、通讯速率高、工作稳定等特点,能够简化设计难度、加快设计进度,因此W3100在快速实现网络化的设计中具备良好的应用前景。本文以成熟的应用技术为基础,增加了硬件协议转换器,减少了开发风险,缩短了开发周期,提高了产品的应用水平。该电力智能监控终端系统已经产品化,累计创造了1000万元产值。

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

网站地图

Top