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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 可編程控制器與工業(yè)計算機通訊的應(yīng)用

          可編程控制器與工業(yè)計算機通訊的應(yīng)用

          作者: 時間:2009-07-30 來源:網(wǎng)絡(luò) 收藏

          引言

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

          (plc)由于其結(jié)構(gòu)緊湊、可靠性高、編程簡單、指令強大、靈活性強、能適用于比較惡劣環(huán)境等諸多優(yōu)點,現(xiàn)已在控制領(lǐng)域得到廣泛。現(xiàn)普遍采用觸摸屏加plc的方法來監(jiān)控設(shè)備,但觸摸屏視角窄,不適應(yīng)惡劣環(huán)境,且數(shù)據(jù)存儲容量有限,不易實現(xiàn)大規(guī)模網(wǎng)絡(luò)互聯(lián)。因此我們采用plc與的方式實現(xiàn)實時監(jiān)控,克服了觸摸屏的缺點。

          2 s7-200 cpu自由口方式的

          世界知名品牌的plc很多,如西門子、歐姆龍、松下、三菱等等,本人僅以西門子s7-200小型的cpu22×系列為例,介紹plc在網(wǎng)絡(luò)中與的功能。

          s7-200 cpu支持多樣的通訊功能,根據(jù)所使用的s7-200 cpu,其網(wǎng)絡(luò)可以支持一個或多個以下協(xié)議:

          點到點(point-to-point)接口(ppi)

          多點接口(multi-point)(mpi)

          profibus

          用戶定義協(xié)議(自由口)

          自由口通訊是通過用戶程序可以控制s7-200 cpu通訊口的操作模式。利用自由口模式,可以實現(xiàn)用戶定義的通訊協(xié)議連接多種智能設(shè)備。通過使用接收中斷、發(fā)送中斷、發(fā)送指令和接收指令,用戶程序控制通訊口操作。在自由口通訊模式下,通訊協(xié)議完全由用戶程序控制。通過smb30(口0)允許自由口模式,而且只有在cpu處于run模式時才能允許。當cpu出于stop模式時,自由口通訊停止,通訊口轉(zhuǎn)換成正常的ppi協(xié)議操作。

          近年來,隨著我國鐵路運輸環(huán)境的改善,列車速度越來越高,勢必對鐵道車輛提出較高的要求,其表現(xiàn)在對列車的舒適性和運行可靠性、安全性的要求提高,因此車輛上設(shè)備的自動化程度越來越高。自動化程度的提高,帶動了網(wǎng)絡(luò)技術(shù)在列車控制和監(jiān)控上的。車輛網(wǎng)絡(luò)控制、監(jiān)控簡圖如圖1所示。

          整列車設(shè)有車輛級計算機,每個車廂設(shè)有本車計算機,車輛級計算機與各個本車計算機組成車輛的主網(wǎng),本車計算機與本車廂內(nèi)的各個設(shè)備間組成子網(wǎng)。plc由于其自身的優(yōu)點,作為控制核心在車輛上的多種設(shè)備中得以應(yīng)用,例如列車自動門的控制、列車空調(diào)機的控制等,使其可以作為整個列車網(wǎng)絡(luò)系統(tǒng)中的一個節(jié)點。


          3 通訊協(xié)議

          siemens s7-200系列plc可以采用用戶定義通訊協(xié)議(自由口)模式實現(xiàn)計算機與plc、plc與plc的通訊。筆者所描述的例子中,雖然車輛計算機系統(tǒng)和車輛上的其它設(shè)備分別是多個設(shè)備供應(yīng)商的產(chǎn)品,但是只要制定好通訊協(xié)議,就能滿足相互通訊的要求。s7-200系列的plc正是由于其自由口通訊是通過用戶程序控制cpu串行通訊口的操作模式,所以可以方便地與車輛計算機通訊。

          計算機(主站)每隔100ms查詢plc(從站)一次,主站發(fā)出從站動作控制命令給從站,從站收到命令后發(fā)給主站應(yīng)答幀,從站接收到主站發(fā)送來的一幀數(shù)據(jù),計算出其校驗碼fcs,與接收到的一幀數(shù)據(jù)中的fcs比較,檢查是否有數(shù)據(jù)錯誤。如果有數(shù)據(jù)有誤,從站發(fā)送信息給主站,請求重發(fā)。
          l 字符結(jié)構(gòu):每個字符由11位構(gòu)成,奇偶校驗位采用奇校驗方式。

          起始位 數(shù)據(jù) 奇偶校驗位 停止位

          1位 8位 d7…d0 1位 1位

          l 傳輸數(shù)據(jù)幀格式

          byte(0)…byte(n) fcs

          byte(0)…byte(n)為字符串;

          fcs為異或校驗碼,是發(fā)送的所有數(shù)據(jù)字節(jié)和地址字節(jié)之異或值。

          l 主站命令幀結(jié)構(gòu)

          從站地址 從站地址補碼 控制字節(jié) 命令字節(jié) fcs

          l 從站應(yīng)答幀結(jié)構(gòu)

          從站地址 從站地址補碼 控制字節(jié) 應(yīng)答字節(jié) fcs

          4 通訊口初始化

          plc內(nèi)部特殊存儲器位smb30和smb130分別配置通訊端口0和1,為自由端口通訊選擇波特率、奇偶校驗和數(shù)據(jù)位數(shù)。自由端口的控制字節(jié)描述如表1所示。

          例如:在通訊協(xié)議中規(guī)定奇偶校驗為奇校驗、每個字符的數(shù)據(jù)為8位、波特率為19200、自由口協(xié)議,采用通訊端口0,則在plc初始化程序中將smb30賦值為0c5h。

          例://串口初始化

          network 7
          ld sm0.0
          movb 16#c5, smb30 //波特率為19200奇校驗 //1起始位1停止位8數(shù)據(jù)位
          eni //允許中斷
          movb 2, smb34
          movb 20, smb35
          atch int_0, 8

          5 plc實時數(shù)據(jù)處理

          由于s7-200系列plc在自由口模式下,通訊協(xié)議完全由梯形圖程序或stl編輯器控制,程序可以使用接收中斷、發(fā)送中斷、發(fā)送指令和接收指令來控制通訊操作。cpu連續(xù)掃描用戶程序,執(zhí)行用戶任務(wù)。plc在程序執(zhí)行過程中,基于穩(wěn)定、快速靈活等方面考慮,cpu每個掃描周期都通過輸入輸出映像寄存器來執(zhí)行實際輸入輸出操作,即讀實際輸入點值到映像寄存器、寫映像寄存器值到實際輸出點。由于在中斷中不能順利進行數(shù)據(jù)讀寫操作,因此,可通過編程,利用plc循環(huán)掃描執(zhí)行程序的特點,使得在程序掃描期間實現(xiàn)數(shù)據(jù)存儲區(qū)與輸入輸出映像寄存器區(qū)交換數(shù)據(jù)。

          在本實例中,plc上電初始化后轉(zhuǎn)入接收字符中斷,當上位機發(fā)出查詢命令后,plc判斷所發(fā)命令的地址和地址補碼是否正確;如果正確判斷上位機是向plc發(fā)送命令還是查詢plc狀態(tài);如果執(zhí)行命令則plc轉(zhuǎn)入主程序執(zhí)行相關(guān)命令,如果查詢plc狀態(tài)則將協(xié)議定義的信息發(fā)送給上位機,上位機收到信息后發(fā)送應(yīng)答幀給plc。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();