新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的無紙記錄儀通信設計

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

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

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

        本文引用地址:http://www.104case.com/article/104913.htm

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

          1 記錄儀中的通信協議

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

        ASCII報文幀格式

        圖1 ASCII報文幀格式

        RTU報文幀格式

        圖2 RTU報文幀格式

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

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

        ASCII與RTU報文幀格式比較

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

          2 記錄儀的通信實現

          2.1 整體設計

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

        串口通信功能框架圖

        圖3 串口通信功能框架圖

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

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

          2.2 編程實現

          軟件實現上,采用Linux的多線程編程技術,可以更好的滿足工業現場的實時性要求。多線程程序采用多任務、并發的工作方式[4],可以提高應用程序響應時間并且改善程序結構。Linux操作系統中提供了Linuxthread 庫[5],它實現了符合POSIX1003.1c標準的多線程支持,而且是內核級方式。

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 元江| 尤溪县| 同江市| 武穴市| 禄丰县| 姜堰市| 和硕县| 临江市| 垣曲县| 钟祥市| 连平县| 迭部县| 甘谷县| 黑龙江省| 卫辉市| 富平县| 扶绥县| 砚山县| 奉节县| 清远市| 辽阳县| 文化| 简阳市| 铁岭县| 亚东县| 渝北区| 台州市| 阜康市| 开化县| 宜君县| 绥棱县| 城固县| 霍林郭勒市| 阿尔山市| 海门市| 社旗县| 潼关县| 称多县| 和顺县| 托克托县| 铜陵市|