<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

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

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

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

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

ASCII報文幀格式

圖1 ASCII報文幀格式

RTU報文幀格式

圖2 RTU報文幀格式

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

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

ASCII與RTU報文幀格式比較

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

  2 記錄儀的通信實(shí)現

  2.1 整體設計

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

串口通信功能框架圖

圖3 串口通信功能框架圖

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

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

  2.2 編程實(shí)現

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

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


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>