亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dev103.c

?? 簡單103規(guī)約程序示例
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*****************************************************************************
編寫人  :TT(06.2.21于淮鋼220變)
裝置說明:103規(guī)約,9600BD,偶校驗(yàn),485接口.
程序說明:上送保護(hù)信息,定值,軟壓板,對時.
*****************************************************************************/
#include "Dev103.h"

//接收中斷回調(diào)函數(shù),用以判斷數(shù)據(jù)幀的結(jié)束
static WORD c103_check_packet(const BYTE *p_data, WORD data_len)
{
  if ((data_len == 1) && ((p_data[0] == 0x68) || (p_data[0] == 0x10)))
  {
    return UART_PKT_CON;
  }
  if (data_len < 5)
  {
    return UART_PKT_CON;
  }
  if (p_data[0] == 0x10 && data_len == 5 && p_data[4] == 0x16)
  {
    return UART_PKT_FIN;
  }
  else if (p_data[0] == 0x68 && data_len == p_data[1]+6 && p_data[data_len-1] == 0x16)
  {
    return UART_PKT_FIN;
  }
  return UART_PKT_CON;
}
//===================================================================
//設(shè)備初始化
BOOL IED_Initialize()
{
  return DEV_Create_IED(g_ied_list, sizeof(g_ied_list)/sizeof(T_IED));
}
//===================================================================
//校驗(yàn)和
BYTE calc_check_sum(const BYTE *p_data, WORD data_len)
{
  WORD  i;
  BYTE  sum =0;

  for(i=0;i<data_len;i++)
  {
    sum+=p_data[i];
  }
  return sum;
}
//===================================================================
//串口管理
WORD c103_serial_com(T_IED* p_ied,T_C103_FRAME* p_frame,BOOL brx)
{
  WORD wSize,size,i;

  m_c103_fcb[p_ied->dev_id] ^=0x20;//幀記數(shù)位取反

  NU_Sleep(20);
  switch(p_frame->type)
  {
  case FRAME_T_CON:
    //固定幀長報文
    m_tx_buf[0] =p_frame->type;
    m_tx_buf[1] =p_frame->contral | m_c103_fcb[p_ied->dev_id];
    m_tx_buf[2] =0x01;//p_frame->address;
    m_tx_buf[3] =calc_check_sum(&m_tx_buf[1], 2);
    m_tx_buf[4] =p_frame->endbyte;
    wSize =5;
    break;
  case FRAME_T_VOL:
    //可變幀長報文
    m_tx_buf[0] =p_frame->type;
    m_tx_buf[1] =p_frame->len;
    m_tx_buf[2] =p_frame->len;
    m_tx_buf[3] =p_frame->type;
    m_tx_buf[4] =p_frame->contral | m_c103_fcb[p_ied->dev_id];
    m_tx_buf[5] =0x01;//p_frame->address;
    m_tx_buf[4 +p_frame->len] =calc_check_sum(&m_tx_buf[4], p_frame->len);
    m_tx_buf[5 +p_frame->len] =p_frame->endbyte;
    wSize =p_frame->len +6;
    break;
  default:
    break;
  }
  //出現(xiàn)差錯重傳三次
  for(i =0; i <3; i++)
  {
    UART_Write(m_dev_port, m_tx_buf, wSize);
    if(!brx) break;
    size=UART_Read(m_dev_port,m_rx_buf,2000);
    if(size !=0) break;
    NU_Sleep(200);
  }
  //接收報文分類
  if(size)
  {
    p_ied->dev_flag |= DEV_F_ONLINE;//連接正常
    switch(m_rx_buf[0])
    {
    case FRAME_T_CON://固定幀長
      p_frame->type =FRAME_T_CON;
      p_frame->contral =m_rx_buf[1];
      p_frame->address =m_rx_buf[2];
      p_frame->crc =m_rx_buf[3];

      if(p_frame->crc ==calc_check_sum(&m_rx_buf[1],2)
        && p_ied->dev_data[0] == p_frame->address);//校驗(yàn)
      {
        memset(&m_rx_buf[5], 0, (UART_PACKET_SIZE-5));
        return size;
      }
      break;
    case FRAME_T_VOL://可變幀長
      p_frame->type =FRAME_T_VOL;
      p_frame->len =m_rx_buf[1];
      p_frame->contral =m_rx_buf[4];
      p_frame->address =m_rx_buf[5];
      p_frame->crc =m_rx_buf[p_frame->len +4];

      if(p_frame->crc ==calc_check_sum(&m_rx_buf[4], p_frame->len)
        && p_ied->dev_data[0] == p_frame->address);//校驗(yàn)
      {
        return size;
      }
      break;
    }
  }
  if (brx && !size && p_frame->contral != 0x40)	//超時無應(yīng)答發(fā)送復(fù)位(復(fù)位無應(yīng)答返回)
  {
    p_ied->dev_flag &=~DEV_F_ONLINE;
  }
  return 0;
}
//===================================================================
//用于初始化的串口函數(shù)。出現(xiàn)差錯不重傳,減少時間
WORD c103_serial_com_init(T_IED* p_ied,T_C103_FRAME* p_frame,BOOL brx)
{
  WORD wSize,size,i;

  m_c103_fcb[p_ied->dev_id] ^=0x20;	//幀記數(shù)位取反

  NU_Sleep(20);
  switch(p_frame->type)
  {
  case FRAME_T_CON:
    /* 固定幀長報文 */
    m_tx_buf[0] =p_frame->type;
    m_tx_buf[1] =p_frame->contral | m_c103_fcb[p_ied->dev_id];
    m_tx_buf[2] =0x01;//p_frame->address;
    m_tx_buf[3] =calc_check_sum(&m_tx_buf[1], 2);
    m_tx_buf[4] =p_frame->endbyte;

    wSize =5;
    break;
  case FRAME_T_VOL:
    /* 可變幀長報文 */
    m_tx_buf[0] =p_frame->type;
    m_tx_buf[1] =p_frame->len;
    m_tx_buf[2] =p_frame->len;
    m_tx_buf[3] =p_frame->type;
    m_tx_buf[4] =p_frame->contral | m_c103_fcb[p_ied->dev_id];
    m_tx_buf[5] =0x01;//p_frame->address;
    m_tx_buf[4 +p_frame->len] =calc_check_sum(&m_tx_buf[4], p_frame->len);
    m_tx_buf[5 +p_frame->len] =p_frame->endbyte;

    wSize =p_frame->len +6;
    break;
  default:
    break;
  }
  UART_Write(m_dev_port, m_tx_buf, wSize);
  size=UART_Read(m_dev_port,m_rx_buf,1000);
  //接收報文分類
  if(size)
  {
    p_ied->dev_flag |= DEV_F_ONLINE;	//連接正常
    switch (m_rx_buf[0])
    {
    case FRAME_T_CON:	//固定幀長
      p_frame->type =FRAME_T_CON;
      p_frame->contral =m_rx_buf[1];
      p_frame->address =m_rx_buf[2];
      p_frame->crc =m_rx_buf[3];

      if (p_frame->crc ==calc_check_sum(&m_rx_buf[1], 2)
        && p_ied->dev_data[0] == p_frame->address);		//校驗(yàn)
      {
        memset(&m_rx_buf[5], 0, (UART_PACKET_SIZE-5));
        return size;
      }
      break;
    case FRAME_T_VOL:	//可變幀長
      p_frame->type =FRAME_T_VOL;
      p_frame->len =m_rx_buf[1];
      p_frame->contral =m_rx_buf[4];
      p_frame->address =m_rx_buf[5];
      p_frame->crc =m_rx_buf[p_frame->len +4];

      if (p_frame->crc ==calc_check_sum(&m_rx_buf[4], p_frame->len)
        && p_ied->dev_data[0] == p_frame->address);		//校驗(yàn)
      {
        return size;
      }
      break;
    }
  }

  if (brx && !size && p_frame->contral != 0x40)
  {
    //超時無應(yīng)答發(fā)送復(fù)位(復(fù)位無應(yīng)答返回)
    p_ied->dev_flag &=~DEV_F_ONLINE;
  }
  return 0;
}
//===================================================================
//請求一級用戶數(shù)據(jù)
BOOL c103_request_first(T_IED* p_ied)
{
  T_DATE        t_date;
  T_EVENT       t_event;
  T_ALARM       t_alarm;
  T_LIST        t_list;
  T_DIC	        t_dic;
  T_SOE	        t_soe;
  T_DI	        t_di;
  T_C103_FRAME  t_frame;
  T_C103_ASDU	*p_asdu;
  WORD          di_lo;
  WORD          di_hi;
  BYTE          di_grp;
  BYTE          i;

  t_frame.type = FRAME_T_CON;
  t_frame.contral = 0x5a;
  t_frame.address = (BYTE)p_ied->dev_data[0];
  t_frame.len =3;
  t_frame.endbyte =0x16;

  if(!c103_serial_com(p_ied, &t_frame,1))
  {
    return false;
  }

  p_asdu = (T_C103_ASDU *) &m_rx_buf[6];
  switch(p_asdu->type)
  {
  case ASDU5://設(shè)備標(biāo)識
    break;
  case ASDU8://總查詢結(jié)束
    break;
  case ASDU2://動作事件
    if(p_asdu->cot != 1)
      break;
    SYS_Get_Clock(&t_date);
    t_event.dev_id = m_rx_buf[9];
    t_event.e_state =p_asdu->data[0] - 1;
    t_event.e_date.msec =MAKEWORD(p_asdu->data[5],p_asdu->data[6]);
    t_event.e_date.minute =p_asdu->data[7];
    t_event.e_date.hour =p_asdu->data[8];
    t_event.e_date.day =t_date.day;
    t_event.e_date.month =t_date.month;
    t_event.e_date.year =t_date.year;

    t_list.l_type =LIST_T_EVENT;
    t_event.e_code =C103_Get_Code(p_ied, &t_list, p_asdu->inf);
    if(t_event.e_code!=0)
      INF_Record_Event(&t_event);
    break;
  case ASDU1://自檢信息(硬壓板的信息是通過ASDU1上送的,以下作為遙信處理)
    if((p_asdu->cot==1)||(p_asdu->cot==9))
    {
      SYS_Get_Clock(&t_date);
      t_alarm.dev_id =m_rx_buf[9];
      t_alarm.e_state =p_asdu->data[0] - 1;
      t_alarm.e_date.msec =MAKEWORD(p_asdu->data[1],p_asdu->data[2]);
      t_alarm.e_date.minute =p_asdu->data[3];
      t_alarm.e_date.hour =p_asdu->data[4];
      t_alarm.e_date.day =t_date.day;
      t_alarm.e_date.month =t_date.month;
      t_alarm.e_date.year =t_date.year;
      t_list.l_type =LIST_T_ALARM;
      t_alarm.e_code = C103_Get_Code(p_ied, &t_list, p_asdu->inf);
      if(t_alarm.e_code!=0)
      {
        if((p_asdu->cot==1)&&(t_alarm.e_code<=(t_list.l_size-p_ied->dev_data[5])))
        {
          //告警事件(不上送壓板的事件信息)
          INF_Record_Alarm(&t_alarm);
        }
        //告警事件和硬壓板的遙信
        t_dic.dev_id = p_ied->dev_id;
        t_dic.e_code = t_alarm.e_code;
        t_dic.e_state = p_asdu->data[0] - 1;
        INF_Record_Dic(&t_dic);
      }
    }
    break;
  case ASDU10://響應(yīng)ASDU21的報文(定值,描述...)
    if(p_asdu->cot !=42 || p_asdu->fun !=254 || p_asdu->inf !=241)
      break;
    else
      //此處要返回,讓通用報文處理.
      return true;
  case ASDU44://上送全遙信
    break;
    if(p_asdu->cot != 9) break;
    if(p_asdu->fun != 1) break;
    t_di.di_num = p_asdu->vsq * 16;
    di_grp = (t_di.di_num + 31)/32;
    for(i = 0; i < di_grp; i++)
    {
      di_lo = MAKEWORD(p_asdu->data[10*i + 0], p_asdu->data[10*i + 1]);
      di_hi = MAKEWORD(p_asdu->data[10*i + 5], p_asdu->data[10*i + 6]);
      t_di.di_val[i] = MAKEDWORD(di_lo, di_hi);
    }
    INF_Set_Di(p_ied->dev_id, &t_di);
    break;
  case ASDU40://變位遙信
    break;
    if(p_asdu->cot != 1)
      break;
    if(p_asdu->fun == 2)
    {
      t_dic.e_code = p_asdu->inf - DI_FIRST_INF+42;
    }
    else if(p_asdu->fun ==1 )
    {
      t_dic.e_code = p_asdu->inf - DI_FIRST_INF;//超過106個遙信需要計算FUN
    }
    else
      return FALSE;
    t_dic.dev_id = p_ied->dev_id;
    t_dic.e_state= p_asdu->data[0];
    INF_Record_Dic(&t_dic);
    break;
  case ASDU41://SOE
    //break;
    if(p_asdu->cot != 1)
      break;
    SYS_Get_Clock(&t_date);
    t_soe.dev_id = p_ied->dev_id;
    if(p_asdu->fun == 2)
    {
      t_soe.e_code = p_asdu->inf - DI_FIRST_INF+42;
    }
    else if(p_asdu->fun ==1 )
    {
      t_soe.e_code = p_asdu->inf - DI_FIRST_INF;
    }
    t_soe.e_state= p_asdu->data[0];
    t_soe.e_date.msec  = MAKEWORD(p_asdu->data[1],p_asdu->data[2]);
    t_soe.e_date.minute= p_asdu->data[3];
    t_soe.e_date.hour  = p_asdu->data[4];
    t_soe.e_date.day   = t_date.day;
    t_soe.e_date.month = t_date.month;
    t_soe.e_date.year  = t_date.year;
    INF_Record_Soe(&t_soe);
    break;
  case ASDU64:
    break;
  default:
    break;
  }
  //檢查是否有一級用戶數(shù)據(jù)
  if((t_frame.contral &0x20)!=0)
  {
    return c103_request_first(p_ied);
  }
  if(t_frame.contral == 0x08 || t_frame.contral ==0x09)
  {
    return true;
  }
  return false;
}
//===================================================================
//請求二級用戶數(shù)據(jù)
BOOL c103_request_second(T_IED* p_ied)
{
  T_C103_FRAME	t_frame;
  T_C103_ASDU	*p_asdu;
  T_MEASURE		mea;
  BYTE			i;

  t_frame.type = FRAME_T_CON;
  t_frame.contral = 0x5b;
  t_frame.address = (BYTE)p_ied->dev_data[0];
  t_frame.len =3;
  t_frame.endbyte =0x16;

  if(!c103_serial_com(p_ied, &t_frame,1))
  {
    return false;
  }

  if(t_frame.type == FRAME_T_CON)
  {
    if((t_frame.contral &0x20)==0)	//無所響應(yīng)的數(shù)據(jù)
      return true;
  }
  else//遙測值
  {
    p_asdu = (T_C103_ASDU *) &m_rx_buf[6];
    if(p_asdu->type != ASDU50 || p_asdu->cot != 0x02) return FALSE;

    mea.ms_num = p_asdu->vsq;
    for (i = 0; i < mea.ms_num; i++)
    {
      if (p_asdu->data[2*i+1] & 0x80)//負(fù)數(shù)
      {
        mea.ms_val[i] =(0-MAKEWORD(p_asdu->data[2*i]&0xf8, (p_asdu->data[2*i+1])))/8
          & INF_MS_VALUE_MASK | INF_MS_NEGATIVE;
      }
      else
      {
        mea.ms_val[i] = (MAKEWORD(p_asdu->data[2*i]&0xf8, (p_asdu->data[2*i+1])))/8
          & INF_MS_VALUE_MASK;
      }
    }
    INF_Set_Measure(p_ied->dev_id, &mea);
  }

  if((t_frame.contral &0x20)!=0)
  {
    //有一級用戶數(shù)據(jù)
    return c103_request_first(p_ied);
  }
  else
    return FALSE;
}
//===================================================================
/* 主站ASDU21讀一個(組/條目)的屬性/值 */
/*	p_ied:	設(shè)備標(biāo)識
ginh:	條目號(0:全部條目)
ginl:	組號  0 描述 1 參數(shù),2區(qū)號 3 保護(hù)定值 6 阮壓板 9 模擬量
kod:	數(shù)據(jù)類型
*/
static BOOL c103_generic_read(T_IED *p_ied, BYTE ginl, BYTE ginh, BYTE kod)
{
  T_C103_FRAME t_frame;
  T_C103_ASDU* p_asdu;
  int i;

  /* 構(gòu)建ASDU21通用分類讀命令 */
  p_asdu =(T_C103_ASDU *)&m_tx_buf[6];
  p_asdu->type =21;
  p_asdu->vsq =0x81;
  p_asdu->cot =42;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av电影天堂| 欧美日韩aaa| 成人午夜伦理影院| 国产伦精品一区二区三区免费迷| 人人狠狠综合久久亚洲| 蜜桃视频第一区免费观看| 婷婷久久综合九色综合绿巨人| 亚洲成av人影院| 婷婷成人综合网| 热久久免费视频| 日韩av电影天堂| 久草在线在线精品观看| 国产一区二区福利视频| 国产成人8x视频一区二区| 成人性生交大片免费看中文| 成人动漫视频在线| 日本高清不卡在线观看| 欧美亚洲一区二区在线观看| 欧美久久久影院| 日韩一区二区精品| 久久亚洲综合色一区二区三区| 欧美激情一区二区三区蜜桃视频| 中文字幕中文字幕在线一区 | 国产欧美日韩综合| 中文字幕+乱码+中文字幕一区| 一区精品在线播放| 亚洲网友自拍偷拍| 美女网站一区二区| 国产91清纯白嫩初高中在线观看| 成人高清免费观看| 欧美视频一二三区| 日韩精品中文字幕在线不卡尤物| 国产丝袜欧美中文另类| 亚洲一区二区五区| 久久成人久久鬼色| 99国内精品久久| 91精品国产一区二区三区香蕉 | 亚洲综合自拍偷拍| 免费一级片91| 成人福利在线看| 欧美人与z0zoxxxx视频| 久久先锋影音av| 一区二区三区中文在线| 日本sm残虐另类| av不卡免费在线观看| 欧美视频一区在线观看| 久久久精品人体av艺术| 亚洲精品伦理在线| 捆绑调教美女网站视频一区| 99精品国产热久久91蜜凸| 欧美一级专区免费大片| 国产精品福利影院| 美女任你摸久久| 91美女在线观看| 欧美哺乳videos| 亚洲资源在线观看| 国产成人亚洲综合a∨婷婷| 欧美性猛交xxxx乱大交退制版| 久久一留热品黄| 亚洲午夜激情av| 成人av在线看| 精品久久国产字幕高潮| 亚洲一区二区三区四区在线| 国产99久久久国产精品潘金网站| 7777精品伊人久久久大香线蕉超级流畅 | 一本色道久久综合狠狠躁的推荐 | 亚洲成av人片在www色猫咪| 国产乱码字幕精品高清av| 欧美午夜精品久久久久久超碰 | 亚洲va中文字幕| av成人免费在线| www激情久久| 亚洲成av人片在www色猫咪| 波多野结衣中文一区| 日韩精品一区二区三区视频在线观看 | 国产成人在线视频播放| 91精品国产高清一区二区三区蜜臀| 国产精品福利影院| 国产成人精品免费在线| 日韩片之四级片| 亚洲一区二区在线免费看| 波多野结衣中文字幕一区二区三区| 精品国产自在久精品国产| 亚洲国产aⅴ成人精品无吗| 91偷拍与自偷拍精品| 久久九九久久九九| 久久99精品久久久久| 欧美精品v日韩精品v韩国精品v| 亚洲免费观看高清完整版在线 | 日韩视频免费观看高清完整版| 一区二区激情视频| 91免费视频观看| 日韩一区日韩二区| 国产不卡视频一区| 久久久久久久久久久久久女国产乱| 日本中文字幕一区| 91精品国产麻豆| 喷水一区二区三区| 69p69国产精品| 日韩电影网1区2区| 69久久99精品久久久久婷婷| 午夜精品免费在线观看| 在线观看日韩国产| 亚洲综合无码一区二区| 91免费版pro下载短视频| 国产精品国产三级国产a| 成人综合日日夜夜| 国产精品视频麻豆| 成人avav在线| 最新中文字幕一区二区三区 | 国产精品久久久久三级| 成人免费黄色大片| 国产精品国产三级国产普通话三级| 99麻豆久久久国产精品免费 | 不卡av在线免费观看| 亚洲视频在线观看一区| 在线观看精品一区| 午夜精品久久久| 日韩精品资源二区在线| 国产一区二区视频在线| 国产三级精品在线| 99精品久久只有精品| 亚洲午夜精品在线| 日韩欧美一区二区视频| 国精产品一区一区三区mba桃花| 国产免费久久精品| 色综合久久久久综合99| 亚洲午夜国产一区99re久久| 91精品国产福利| 国产高清不卡一区二区| 亚洲天堂网中文字| 欧美日韩国产综合久久| 美国三级日本三级久久99| 久久久99久久| 在线亚洲精品福利网址导航| 日本女人一区二区三区| 久久久午夜精品理论片中文字幕| 成人黄页在线观看| 午夜激情一区二区| 国产午夜精品一区二区三区四区| 色综合天天做天天爱| 日本在线不卡视频| 亚洲国产精品高清| 欧美日韩在线播放| 国产福利视频一区二区三区| 亚洲色图欧洲色图婷婷| 欧美精品aⅴ在线视频| 国产在线一区二区| 亚洲精品视频免费看| 日韩欧美中文一区二区| caoporn国产精品| 日本特黄久久久高潮| 国产精品视频在线看| 欧美高清视频www夜色资源网| 国产福利91精品一区| 亚洲福利一区二区| 国产亚洲婷婷免费| 欧美日韩一卡二卡三卡 | 欧美亚洲综合另类| 国产精品影视在线| 肉丝袜脚交视频一区二区| 国产欧美一区二区精品仙草咪| 欧美色男人天堂| 粉嫩av亚洲一区二区图片| 午夜欧美大尺度福利影院在线看| 国产精品免费看片| 欧美成人a∨高清免费观看| 在线欧美小视频| 国产黄人亚洲片| 日韩电影在线免费看| 亚洲欧美日韩久久| 精品国产在天天线2019| 欧美乱熟臀69xxxxxx| 色综合一个色综合亚洲| 国产一区999| 免费成人你懂的| 亚洲成人av资源| 亚洲精品国产视频| 欧美国产精品一区二区| www国产成人| 91精品国产免费久久综合| 在线视频你懂得一区| av福利精品导航| 国产91精品在线观看| 久久99精品国产麻豆婷婷洗澡| 性做久久久久久久免费看| 亚洲欧美日韩成人高清在线一区| 国产亚洲欧美在线| 久久久影院官网| 欧美不卡一区二区三区| 91精品久久久久久久91蜜桃| 欧美在线观看一二区| 色网综合在线观看| 99精品久久只有精品| 成人爱爱电影网址| 成人午夜av影视| 成人美女视频在线观看18| 国产精品1区2区3区| 国产麻豆一精品一av一免费| 久久超碰97中文字幕|