久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 基于CAN總線的集散控制系統智能節點的設計

基于CAN總線的集散控制系統智能節點的設計

作者: 時間:2009-08-14 來源:網絡 收藏
 b.報文發送部分

本文引用地址:http://cqxgywz.com/article/163649.htm

  unsignedcharcan_send(MSG_STRUCTsmsg)

  {

  unsignedcharv;

  inti;

  v=*(unsignedchar*)(BASE_+2);

  if(v0x08)/*判斷是否可以發送數據*/

  {v=smsg.id>>3;/*標識符送識別碼寄存器*/

  *(unsignedchar*)(BASE_+10)=v;

  v=*(unsignedchar*)(BASE_+10);

  v=smsg.id7;/*識別碼0-2位、RTR、DLC*/

  v=5;

  v+=smsg.dlen;

  *(unsignedchar*)(BASE_CAN+11)=v;

  for(i=0;i

  {*(unsignedchar*)(BASE_CAN+12+i)=smsg.data[i];}

  *(unsignedchar*)(BASE_CAN+1)=0x01;

  return(1);

  }

  else

  {return(0);}

  }

  c.報文接收部分
  

  unsignedcharcan_receive()

  {

  MSG_STRUCTrmsg;

  inti;

  unsignedcharbuf1,buf2;

  while((*(unsignedchar*)(BASE_CAN+2))0x01)/*判斷是否有可接收信息*/

  {buf1=*(unsignedchar*)(BASE_CAN+20);/*將一幀信息取出*/

  buf2=*(unsignedchar*)(BASE_CAN+21);

  rmsg.dlen=buf20x0f;/*數據長度*/

  for(i=0;irmsg.dlen;i++)/*取出數據*/

  {rmsg.data[i]=*(unsignedchar*)(BASE_CAN+22+i);}

  *(unsignedchar*)(BASE_CAN+1)=0x04;/*釋放接收緩沖器*/

  rmsg.rtr=(buf2>>4)0x01;/*遠程幀*/

  rmsg.id=buf1;/*取出報文標識符*/

  rmsg.id=3;

  rmsg.id|=(buf2>>5)0x06;

  switch(rmsg.id)/*按標識符轉入不同的數據處理程序*/

  case……

  {……

  ……}

  break;

  case……

  }

  }

5.結束語

  本文的創新點在于:將現場引入到中,克服了傳統的串行通訊的實時性不強,通訊可靠性差的問題。所給出的CAN已應用于某發電廠的中,經過一年多的運行情況發現該方案具有較好的可靠性、實時性和靈活性。CAN不僅可以應用于集散控制系統,還可以用于其它分布式控制系統。


上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉