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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 由RS-232串口到PROFIBUS-DP總線的轉換接口設計

          由RS-232串口到PROFIBUS-DP總線的轉換接口設計

          作者: 時間:2014-01-22 來源:網(wǎng)絡 收藏

            SPC3需外接48MHZ晶振,能自動檢測波特率從9.6K到12M。總線訪問是由硬件驅動的,與應用對象之間通信采用數(shù)據(jù)接口,因此數(shù)據(jù)的交換獨立于總線周期。SPC3的方式寄存器0用于設置PROFIBUS-DP的操作方式,如minTSDR、SYNC、FREEZE等,方式寄存器1設置可動態(tài)改變的狀態(tài)。狀態(tài)寄存器存放從站的狀態(tài)信息,以便在任何時間能掃描總線的介質訪問子層(MAC)。集成的監(jiān)視定時器(WatchDog),可自動識別波特率,并防止出現(xiàn)故障危及外圍設備。一個公共的中斷輸出,CPU可以通過讀取中斷寄存器來判斷中斷源并執(zhí)行相應中斷。在UART中,實現(xiàn)并行數(shù)據(jù)流和串行數(shù)據(jù)流的變換。在第一個字符發(fā)送前,SPC3生成發(fā)送請求信號RTS。它集成了完整的DP從站狀態(tài)機,PROFIBU協(xié)議的周期性循環(huán)部分數(shù)據(jù)通信由SPC3中預先分配的各緩沖區(qū)指針的來回切換完成,其余非循環(huán)部分數(shù)據(jù)通信則需要由微處理器中的軟件來實現(xiàn)。

          SPC3內(nèi)存單元地址分配

          SPC3自身帶有1.5KB的數(shù)據(jù)存儲區(qū),至少需要11位地址線。單片機P0口的P0.0~P0.7接SPC3的DB0~DB7端,既作為SPC3的數(shù)據(jù)線,也作為SPC3地址總線的低8位。單片機P2口的P2.0~P2.2接SPC3的AB0~AB2端,作為SPC3地址總線的高3位,同時要使SPC3的高5位AB7..3=00000。在軟件程序的設計中,SPC3的數(shù)據(jù)存儲器的地址區(qū)被強制在1000H~15FFH,這要求P2.7~2.4=0001,要想AB4仍為0,就必須將P2.4通過一個非門接SPC3的AB4端。在實際電路中,SPC3的AB7~5通過一個接地電阻接地,使得AB7..5=000,AB3接P2.3始終給出低電平信號即AB3=0,AB4的輸入端通過一個可編程邏輯芯片對P2.7~2.4的編碼電路來實現(xiàn)(AB4=P2.7|P2.6|P2.5|非P2.4),這樣只要使P2.7~2.4=0001,AB4始終為1,從而保證SPC3的數(shù)據(jù)存儲器的地址范圍為1000H~15FFH。

            3.2PROFIBUS總線接口

            PROFIBUS接口是PROFIBUS標準驅動電路,由由兩個輸入光電隔離電路(6N137,10MBit/s)、一個輸出光電隔離電路(6N136)、一個RS-485驅動芯片(SN75LS176)、一個D型9針插頭組成及輔助電路組成。光隔是用以消除來自零線的干擾,如果現(xiàn)場通信的波特率需要到12M,在光隔選用時還需要考慮更高的性能,如HCPL7720等。

          西門子plc相關文章:西門子plc視頻教程




          評論


          相關推薦

          技術專區(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); })();