• 大小: 11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: 采集  电能表  

资源简介

基于集中器与下行通信模块本地接口通信协议645(广东规约)下,采集多种电能表及多种数据的ucos-II c程序的实现

资源截图

代码片段和文件信息

/**********************************************************************************
* Filename   : ammeter.c
* Discription : define the fucntions that read the ammeters
* Begin time  : 2008-8-5
* Finish time : 
* Engineer   : wei wang
* Version     : V1.0
*************************************************************************************/
//#include 
#include “ammeter.h“


INT16U read_amm_interval;   //抄表时间间隔

const INT8U  single_phase_645[] = {SIGNLE_PHASE_AMSINGLE_AM_LENGTH10x100x9040};
const INT8U  mux_func_645[] = 
{
     MUX_FUNC_AMMUX_FUN_AM_LENGTH42
     //正向有功电能
     0x100x9040   0x110x9044   0x120x9048   0x130x90412  0x140x90416
 //反向有功电能
 0x200x90420  0x210x90424  0x220x90428  0x230x90432  0x240x90436 
  //四象限无功电能 
 0x300x90440  0x400x90444  0x500x90448  0x600x90452 
 //A、B、C相电压电流    
 0x110xB6256  0x120xB6258  0x130xB6260  0x210xB6262  0x220xB6264  0x230xB6266 
 //A、B、C相有功无功功率  
 0x300xB6368  0x310xB6371  0x320x32374  0x330xB6377 
 0x400xB6280  0x410xB6282  0x420xB6284  0x430xB6286 
 //电表运行状态字,电表时钟,编程次数 编程时间  
 0x200xC0188  0x110xC0389  0x120xB2292  0x100xB2494
 //需量及发生时间
 0x100xA0398  0x100xB05101      
 0x110xA03106 0x110xB05109
 0x120xA03114 0x120xB05117
 0x130xA03122 0x130xB05125
 0x140xA03130 0x140xB05133       
};

struct  Ammeter_Index  ammeter_inform;  
struct AmmeterstyleNum AmmeterActualNum;

INT8U ammeter_data_single[TIMES_NUM][SINGLE_AM_NUM][SINGLE_AM_LENGTH+6];
#ifdef JZQ
INT8U ammeter_data_muxfunc[TIMES_NUM][MUX_FUN_AM_NUM][MUX_FUN_AM_LENGTH+6];
//other style ammeters;
#endif
struct  Read_Amme_time  Read_ammeter_time[TIMES_NUM];   //存放抄表时标

unsigned char now_rearnow_front;  //标识三个时间点那个是最近一次抄写的

/***************************************************************
* function : send a frame from port
* parameter: 
******************************************************************/

INT8U Send_frame(INT8U *strINT8U lengthINT8U port)    //指向要发送的数据首地址;
{
    INT8U i;
INT8U status;
    switch(port)
    {
     case COM33:
          GPIO_BitWrite(GPIO020);
          GPIO_BitWrite(GPIO030); 
          break;
     case COM34:
          GPIO_BitWrite(GPIO020);
          GPIO_BitWrite(GPIO031); 
          break;
     case COM35:
          GPIO_BitWrite(GPIO021);
          GPIO_BitWrite(GPIO030); 
          break;
     case COM36:
          GPIO_BitWrite(GPIO021);
          GPIO_BitWrite(GPIO031); 
          break;
     default:
          GPIO_BitWrite(GPIO020);
          GPIO_BitWrite(GPIO030); 
          break;
    }
 //   OSTimeDlyHMSM(000600);
for(i = 0;i < length;i++)
{
CommPutChar(COM3*str++0);   //str[i] 替换*str++   1000替换0
}
return 0;
}

INT8U Rev_frame(INT8U *Rev_frame_BufINT8U Port)
{
INT8U pos = 0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      17547  2011-07-17 20:43  ammeter\ammeter.c

     文件      17549  2011-07-17 20:43  ammeter\ammeter.c.bak

     文件       4894  2010-09-08 09:38  ammeter\ammeter.h

     目录          0  2011-08-07 15:39  ammeter

----------- ---------  ---------- -----  ----

                39990                    4


评论

共有 条评论