關 閉

        新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 蒲城县| 赤水市| 禄丰县| 聂荣县| 怀宁县| 敖汉旗| 安溪县| 龙山县| 东莞市| 衡南县| 龙口市| 绥滨县| 沙坪坝区| 富宁县| 三明市| 东乌珠穆沁旗| 监利县| 吉林省| 汕尾市| 抚顺县| 江永县| 怀安县| 濮阳市| 张北县| 康保县| 博野县| 晋中市| 江西省| 电白县| 阿克陶县| 五大连池市| 元阳县| 贵港市| 罗甸县| 乌鲁木齐县| 宁乡县| 长兴县| 集安市| 伊宁县| 边坝县| 南丰县|