色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于嵌入式Linux的無紙記錄儀通信設(shè)計

          基于嵌入式Linux的無紙記錄儀通信設(shè)計

          ——
          作者: 時間:2010-01-13 來源:電子產(chǎn)品世界 收藏
          引言

            在工業(yè)自動化控制系統(tǒng)中,記錄儀起著十分重要的作用,它可以實時采集、監(jiān)測和記錄一些影響工藝過程和產(chǎn)品質(zhì)量的重要參數(shù),被廣泛應(yīng)用于石化、冶金、電力、機械、醫(yī)藥、輕工業(yè)等行業(yè)。隨著電子技術(shù)的不斷發(fā)展,記錄儀已從傳統(tǒng)的有紙模擬式發(fā)展到如今的無紙數(shù)字式[1]。與傳統(tǒng)的有紙記錄儀相比,無機械磨損、顯示直觀、使用方便、故障率低和設(shè)備耗材少,因此被越來越多的應(yīng)用于工業(yè)控制領(lǐng)域。

          本文引用地址:http://cafeforensic.com/article/104913.htm

            隨著工業(yè)過程自動化的高速發(fā)展,企業(yè)對提出了越來越高的要求,基于8位單片機的的功能已遠(yuǎn)遠(yuǎn)達不到用戶的要求。ARM微處理核的32位RISC處理器以其強大的性能豐富的接口以及優(yōu)異的性價比等諸多優(yōu)勢,而被越來越多的應(yīng)用于無紙記錄儀,隨著硬件的改進,傳統(tǒng)的串行通訊方法也迫切需要改進,因此本文提出了基于的串口通信方案。操作系統(tǒng)是在標(biāo)準(zhǔn)的基礎(chǔ)上針對嵌入式系統(tǒng)進行內(nèi)核裁剪和優(yōu)化后形成[2],它繼承了Linux的開放源代碼、多任務(wù)、穩(wěn)定性高,內(nèi)核可裁剪等諸多優(yōu)點,其內(nèi)核精簡而高效,具有非常好的網(wǎng)絡(luò)性能。本文將使用嵌入式Linux作為無紙記錄儀上位機操作系統(tǒng),并利用其多線程編程技術(shù)實現(xiàn)上位機與下位機的串口通信。

            1 記錄儀中的通信協(xié)議

            由于無紙記錄儀主要在過程控制現(xiàn)場或監(jiān)控室中使用,與之進行通信的現(xiàn)場設(shè)備接口以串口居多,因此在該裝置的開發(fā)過程中采用十分通用的MODBUS協(xié)議作為串口通信協(xié)議。MODBUS協(xié)議是MODICON公司于1979年為建立智能設(shè)備間的主從式通信而開發(fā)的一種通信協(xié)議,它規(guī)定在一個系統(tǒng)中,每次命令應(yīng)由系統(tǒng)中主設(shè)備發(fā)起,從設(shè)備通過解析地址位決定是否應(yīng)答[3]。該協(xié)議具有兩種報文傳送幀格式,ASCII和RTU報文幀格式,分別如圖1和圖2所示。

          ASCII報文幀格式

          圖1 ASCII報文幀格式

          RTU報文幀格式

          圖2 RTU報文幀格式

            將兩種報文傳送幀格式異同總結(jié)如表1。由表1可知,兩種報文幀格式各有優(yōu)劣:ASCII格式使用的字符是RTU格式的兩倍,但ASCII格式數(shù)據(jù)的譯碼和處理更為容易一些;使用RTU報文幀格式傳輸數(shù)據(jù)時,報文字符必須以連續(xù)數(shù)據(jù)流的形式傳送,而使用ASCII格式,字符之間允許長達1s的時間間隔。

          表1 ASCII與RTU報文幀格式比較

          ASCII與RTU報文幀格式比較

            通常情況下,在一個MODBUS網(wǎng)絡(luò)中只采用一種報文幀格式進行數(shù)據(jù)交換。但在一些特殊情況下,同一系統(tǒng)中需要用到不同傳輸模式的控制器,即同時采用兩種報文幀傳輸格式。為了使無紙記錄儀具有更強的通用性,本文提出了一種新的可同時使用兩種報文幀格式的串口通信方案。在以下闡述過程中, 以ASCII和RTU報文幀格式傳輸?shù)臄?shù)據(jù)將分別簡稱為ASCII和RTU數(shù)據(jù)。

            2 記錄儀的通信實現(xiàn)

            2.1 整體設(shè)計

            無紙記錄儀主要通信對象為工業(yè)現(xiàn)場設(shè)備,因此通信過程中數(shù)據(jù)交換應(yīng)快速、準(zhǔn)確無誤。在MODBUS協(xié)議中,ASCII與RTU數(shù)據(jù)打包與解碼均不相同,數(shù)據(jù)讀寫方面需要獨立起來。串口通信功能框架如圖3所示。

          串口通信功能框架圖

          圖3 串口通信功能框架圖

            設(shè)備注冊掃描模塊主要負(fù)責(zé)設(shè)備地址表的維護,每間隔一定時間掃描在線設(shè)備,并記錄下設(shè)備地址和使用的報文幀格式,同時根據(jù)掃描得到信息動態(tài)開辟ASCII和RTU數(shù)據(jù)緩存區(qū)。ASCII數(shù)據(jù)讀寫模塊負(fù)責(zé)打包和解碼ASCII數(shù)據(jù),RTU數(shù)據(jù)讀寫模塊負(fù)責(zé)打包和解碼RTU數(shù)據(jù)。數(shù)據(jù)發(fā)送模塊根據(jù)優(yōu)先級排列好打包好的數(shù)據(jù)依次發(fā)送。數(shù)據(jù)接收模塊僅解碼下位機儀表每次傳回數(shù)據(jù)的首位,判斷是RTU數(shù)據(jù)還是ASCII數(shù)據(jù),存入RTU或ASCII數(shù)據(jù)緩存區(qū),以待處理。

            為了實現(xiàn)ASCII與RTU數(shù)據(jù)的共存,首要問題是每次設(shè)備掃描注冊時對使用ASCII和使用RTU數(shù)據(jù)的設(shè)備加以區(qū)分。由ASCII和RTU的報文幀格式可知,傳輸數(shù)據(jù)首位是判斷數(shù)據(jù)類型的關(guān)鍵,所以使用RTU報文幀格式的設(shè)備地址需避開ASCII數(shù)據(jù)的起始位和結(jié)束符。在未知在線設(shè)備情況下,上位機將所有設(shè)備地址輪詢一遍,解析接收數(shù)據(jù)首位,如果是ASCII的起始位,則ASCII設(shè)備注冊,反之,則RTU設(shè)備注冊。

            2.2 編程實現(xiàn)

            軟件實現(xiàn)上,采用Linux的多線程編程技術(shù),可以更好的滿足工業(yè)現(xiàn)場的實時性要求。多線程程序采用多任務(wù)、并發(fā)的工作方式[4],可以提高應(yīng)用程序響應(yīng)時間并且改善程序結(jié)構(gòu)。Linux操作系統(tǒng)中提供了Linuxthread 庫[5],它實現(xiàn)了符合POSIX1003.1c標(biāo)準(zhǔn)的多線程支持,而且是內(nèi)核級方式。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          關(guān)鍵詞: 嵌入式 Linux 無紙記錄儀

          評論


          相關(guān)推薦

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

          關(guān)閉