<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 自動攤鋪機通信模塊的設計

          自動攤鋪機通信模塊的設計

          作者: 時間:2009-09-11 來源:網(wǎng)絡 收藏
          下面為實現(xiàn)串口的程序:

          本文引用地址:http://www.ex-cimer.com/article/157854.htm

          #include

          unsigned int a;

          interrupt(0x2B) void S0RINT(void)//接收中斷服務子程序

          {

          a=S0RBUF;//將接收數(shù)據(jù)保存

          }

          void putchar(unsigned char tdata)//串行發(fā)送程序

          {

          while(!S0TBIR){;}//等待發(fā)送緩沖區(qū)清空

          S0TBIR=0;//復位發(fā)送緩沖區(qū)中斷請求標志

          S0TBUF=tdata;//裝載發(fā)送緩沖寄存器

          }

          void ASC_vInit(void)//串行初始化

          {

          S0CON=0x8011;//定義控制寄存器:SOR=1;SOREM=1;串行方式1

          S0BG=0x0040;//定義波特率9 600Bd

          S0RIC=0x0062;//定義接收中斷控制寄存器

          S0TBIC=0x0080;//定義發(fā)送緩沖控制寄存器

          P3 |=0x0400;//定義P3.10引腳為輸出鎖存(TXD0)

          DP3 |=0x0400;//定義P3.10方向控制(TXD0為輸出)

          Dp3 =0xF7FF;//定義P3.11方向控制(RXD0為輸入)

          IEN=1;//開中斷

          }

          void main(void)

          {

          ………………;

          ASC_vInit();//串口初始化

          putchar(‘…..’);//串行發(fā)送

          ………………;

          }

          6.總線軟件

          6.1C164CI的概述

          C164CI的特點如下:

          (1)遵循CAN V2.0B規(guī)定(符號標準和擴展功能)。

          (2)最大CAN通信速率為1MB/S。

          (3)完全的CAN裝置:

          l15個信息體,帶有自己的識別器和狀態(tài)控制位;

          l每個信息體可以定義為發(fā)送或接收。

          (4)通過在片內(nèi)部XBUS(16位獨立方式)與主CPU相連(C166-內(nèi)核)。

          (5)接收濾波器用可編程屏蔽寄存器:

          l全域屏蔽輸入信息體(全CAN功能);

          l信息體15有附加屏蔽(基本CAN功能);

          l靈活的中斷事件控制;

          l帶有兩個接收緩沖器;

          l用自己的全域屏蔽寄存器進行接接收濾波。

          6.2CAN總線通信軟件

          系統(tǒng)CAN總線通信軟件的任務是:在選定通信規(guī)程CAN2.0B以后,規(guī)定各計算機傳送數(shù)據(jù)的格式和約定;協(xié)調(diào)各計算機之間的通信;統(tǒng)一考慮通信中的可靠性措施。

          6.2.1 數(shù)據(jù)發(fā)送模式

          由于要傳送數(shù)據(jù)的重要程度、傳送周期不同,在本系統(tǒng)的通信中采用兩種不同的數(shù)據(jù)發(fā)送模式:

          (1)發(fā)送模式0:即發(fā)送一次,不檢測接收是否正確,發(fā)送結(jié)束返回。接收方接收到此類數(shù)據(jù)包后,不必發(fā)送應答信息包。該數(shù)據(jù)包的特點是:按照一定周期定時發(fā)送,用于主操作面板上的狀態(tài)顯示,所以偶爾的傳送失敗不會影響系統(tǒng)的正常運行與操作。

          (2)發(fā)送模式1:即一定要將數(shù)據(jù)包正確發(fā)送給接收方。采用重發(fā)機制,等待接收方應答,若沒有接收到應答則重發(fā)。5次發(fā)送均失敗,則返回FALSE,由發(fā)送方做出相應的處理動作,如報警、停機等;成功則返回TRUE。該數(shù)據(jù)包的特點是:由相應事件觸發(fā)發(fā)送,如果傳送失敗,將影響系統(tǒng)的正常運行。

          6.2.2 數(shù)據(jù)發(fā)送模式

          對于系統(tǒng)來說,其CAN網(wǎng)絡中節(jié)點數(shù)量較少,而每種數(shù)據(jù)包只需要一部分節(jié)點來接收,因此在通信設計中利用數(shù)據(jù)幀標識符來實現(xiàn)定址組播。為避免接收不必要的數(shù)據(jù)包,對接收節(jié)點按位編址,每個節(jié)點對應驗收濾波中的一位。若一個報文標識符高8位中對應位為1,則接收;否則忽略。因此只要在發(fā)送節(jié)點根據(jù)數(shù)據(jù)包內(nèi)容設置合適的報文標識符,數(shù)據(jù)包即可被相關節(jié)點正確接收,而被無關節(jié)點忽略。

          6.2.3 校驗

          CAN結(jié)構(gòu)的MAC層中已經(jīng)實現(xiàn)了循環(huán)冗余碼〔CRC〕校驗。但工作環(huán)境惡劣,工作條件復雜,為了系統(tǒng)通信的可靠性,在控制程序級的通信中也進行校驗。為減輕系統(tǒng)負擔及降低程序復雜性,控制程序級的校驗采用了比較簡單的求和取模校驗方式,每個數(shù)據(jù)幀的最后一個數(shù)據(jù)字節(jié)作為校驗和,其值是之前所有數(shù)據(jù)字節(jié)求和后對256取模的值。各節(jié)點的接收接口中以相同方法計算校驗和,若校驗正確則將數(shù)據(jù)包壓入接收隊列,否則拋棄該包。

          6.2.4 數(shù)據(jù)包格式及內(nèi)容

          其中:L取值為2―8:采用CAN2.0B標準,使用29位標識符。

          ID28―ID21:確定此幀的接收節(jié)點,每位代表1個節(jié)點,可以廣播。

          ID20―IDl7:此幀的順序號,每發(fā)一個幀增1,用于區(qū)分不同數(shù)據(jù)幀與重發(fā)數(shù)據(jù)幀。

          IDl6:應答標志位:為1表示此幀需要應答,為0表示此幀不需應答。

          IDl5―IDl3:指定此幀的發(fā)送節(jié)點,0―3分別代表左交互機、右交互機、車體行駛測控機和找平輸分料測控機。

          ID12―ID0:無意義。

          6.3CAN總線通信編程

          CAN總線通信編程是一個比較煩瑣的事情,主要是涉及諸多的CAN寄存器,但只要掌握其規(guī)律和技術關鍵,就會變得容易起來。下面是CAN總線通信編程的實現(xiàn)步驟:

          (1)CAN模量初始化;

          (2)定義每一個信息體;

          (3)裝載信息體數(shù)據(jù)(僅針對發(fā)送信息體);

          (4)接收信息體接收數(shù)據(jù);

          (5)發(fā)送一個信息體;

          (6)檢查一個信息體;

          (7)檢查是否關閉CAN總線。

          為便于進行化編程,將CAN通信功能封裝成一個個子程序,并且生成一個專用的程序庫,供不同的程序員調(diào)用,這樣就提高了編程效率,并易于功能擴展。下面給出其中的兩個子程序。

          下面為發(fā)送一個信息體的CAN通信程序:

          #include //C164寄存器定義

          #include //CAN控制寄存器定義

          void send_mo_16x(unsigned char a)//發(fā)送信息體“a”(1..14)

          {

          if((a15)(a))*msgctrl_ptr_16x[a]=0xefff;//置位TXRQ

          }

          下面為檢查是否關閉CAN總線的CAN通信程序:

          #include //CAN控制寄存器定義

          unsigned char check_busoff_16x(void)//檢查總線是否關閉,并在必要時恢復

          {

          unsigned char busoff_var=0;

          if(SR0x80)//如果BOFF=1

          {

          busoff_var=1;

          CR=CR0xfe;//恢復關閉的總線(清零INIT)

          }

          }

          7.結(jié)論

          由于攤鋪機的功能繁多,運作復雜,工作環(huán)境十分惡劣,因此控制系統(tǒng)的工作可靠性問題就是自動攤鋪機設計的關鍵。在本系統(tǒng)中,利用RS232C實現(xiàn)了主交互機與移動電話之間的串行通信;采用帶CAN總線的單片機完成不同模塊各自的功能,又通過CAN總線傳送數(shù)據(jù)或命令,實現(xiàn)了功能分散又集中監(jiān)視,危險分散。因此,很適合于自動攤鋪機中分布式控制系統(tǒng)的實現(xiàn)。現(xiàn)場實驗結(jié)果表明:該通信模塊具有良好的可靠性、穩(wěn)定性和安全性。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();