關 閉

        新聞中心

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

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

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

        本文引用地址:http://www.104case.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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 杨浦区| 灵武市| 威海市| 波密县| 溧水县| 靖江市| 定远县| 开远市| 芒康县| 辽中县| 湘阴县| 新建县| 崇左市| 梓潼县| SHOW| 凌源市| 克东县| 辽宁省| 两当县| 江津市| 南平市| 宁波市| 灵石县| 澄城县| 巴青县| 灵璧县| 连南| 鄢陵县| 五大连池市| 瓦房店市| 乐山市| 涿州市| 武隆县| 定兴县| 高淳县| 湘阴县| 柳江县| 兴海县| 中方县| 会东县| 兴义市|