午夜dj在线观看免费视频,把腿抬高我要添你下面小说,国产v亚洲v天堂无码久久久,亚洲偷偷自拍高清

產(chǎn)品推薦:水表|流量計(jì)|壓力變送器|熱電偶|液位計(jì)|冷熱沖擊試驗(yàn)箱|水質(zhì)分析|光譜儀|試驗(yàn)機(jī)|試驗(yàn)箱


儀表網(wǎng)>技術(shù)中心>應(yīng)用設(shè)計(jì)>正文

歡迎聯(lián)系我

有什么可以幫您? 在線咨詢

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

來(lái)源:杭州盡享科技有限公司   2009年02月13日 11:25  

引言

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

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

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

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

圖1 ASCII報(bào)文幀格式

圖2  RTU報(bào)文幀格式

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

表1 ASCII與RTU報(bào)文幀格式比較

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

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

2.1 整體設(shè)計(jì)

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

圖3 串口通信功能框架圖

設(shè)備注冊(cè)掃描模塊主要負(fù)責(zé)設(shè)備地址表的維護(hù),每間隔一定時(shí)間掃描在線設(shè)備,并記錄下設(shè)備地址和使用的報(bào)文幀格式,同時(shí)根據(jù)掃描得到信息動(dòng)態(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)先級(jí)排列好打包好的數(shù)據(jù)依次發(fā)送。數(shù)據(jù)接收模塊僅解碼下位機(jī)儀表每次傳回?cái)?shù)據(jù)的*,判斷是RTU數(shù)據(jù)還是ASCII數(shù)據(jù),存入RTU或ASCII數(shù)據(jù)緩存區(qū),以待處理。

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

2.2 編程實(shí)現(xiàn)

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

串口通信通過(guò)三個(gè)線程來(lái)實(shí)現(xiàn),主線程、發(fā)送子線程和接收數(shù)據(jù)處理子線程,如圖4所示。同時(shí),為了使收發(fā)數(shù)據(jù)管理更加方便,建立了四個(gè)數(shù)據(jù)緩存區(qū):⑴ 發(fā)送緩存區(qū),存放準(zhǔn)備發(fā)送的命令; ⑵ 已發(fā)送緩存區(qū),存放已發(fā)送好但未經(jīng)接收確認(rèn)的命令;⑶ RTU接收緩存區(qū),存放接收到的RTU數(shù)據(jù);⑷ ASCII接收緩存區(qū),存放接收到的ASCII數(shù)據(jù)。所有線程共享上述四個(gè)數(shù)據(jù)緩存區(qū)的數(shù)據(jù),并設(shè)置互斥鎖用來(lái)確保一個(gè)時(shí)間段內(nèi)只有一個(gè)任務(wù)在訪問(wèn)共享數(shù)據(jù)。

圖4  串口通信多線程程序流程圖

主線程主要負(fù)責(zé)設(shè)備的注冊(cè),掃描是否有數(shù)據(jù)發(fā)送,如果有發(fā)送數(shù)據(jù),進(jìn)行優(yōu)先級(jí)設(shè)置,將發(fā)送數(shù)據(jù)轉(zhuǎn)為發(fā)送所需的ASCII和RTU格式,存入發(fā)送緩存區(qū)以待發(fā)送。串口初始化主要功能為設(shè)置串口通信屬性,如波特率、數(shù)據(jù)位、校驗(yàn)位和流控制等。串口通信采用異步通信模式,并以全局變量作為接收標(biāo)志。解析數(shù)據(jù)時(shí)應(yīng)將已收到數(shù)據(jù)和已發(fā)送數(shù)據(jù)進(jìn)行匹配,根據(jù)發(fā)送的數(shù)據(jù)分析接收數(shù)據(jù)是否正確,如果接收數(shù)據(jù)正確則丟棄已發(fā)送命令,否則重發(fā)。

3 快速數(shù)據(jù)轉(zhuǎn)換算法

由于上位機(jī)與下位機(jī)的個(gè)別數(shù)據(jù)存儲(chǔ)格式不同,需要轉(zhuǎn)換為對(duì)方能夠識(shí)別的數(shù)據(jù)。下面以浮點(diǎn)數(shù)為例,說(shuō)明本次設(shè)計(jì)中的數(shù)據(jù)轉(zhuǎn)換機(jī)制。

上位機(jī)采用Linux操作系統(tǒng),浮點(diǎn)數(shù)采用IEEE-754數(shù)據(jù)存儲(chǔ)格式。IEEE規(guī)定一個(gè)浮點(diǎn)數(shù)在內(nèi)存中占四字節(jié),其數(shù)據(jù)格式如圖5所示。

圖5  IEEE浮點(diǎn)數(shù)數(shù)據(jù)格式

在IEEE浮點(diǎn)數(shù)數(shù)據(jù)存儲(chǔ)格式下,第1位為符號(hào)位,指示浮點(diǎn)數(shù)的正負(fù)。指數(shù)部分共8位,*個(gè)字節(jié)的后7位和第二個(gè)字節(jié)的第1位,表示范圍是0 ~ 255。實(shí)際上的指數(shù)值應(yīng)是-128 ~ 127的有符號(hào)整數(shù),為了存儲(chǔ)方便,指數(shù)值都加127轉(zhuǎn)為0 ~ 255存儲(chǔ),即實(shí)際指數(shù)值是E-127。zui后23位為小數(shù)部分,需要注意的是,在計(jì)算時(shí),要將小數(shù)部分zui高位補(bǔ)1。因此,實(shí)際的浮點(diǎn)數(shù)值可以通過(guò)下面的公式計(jì)算:

Real =(-1)*Sign*(D/224)*2E-126

下位機(jī)浮點(diǎn)數(shù)在內(nèi)存中同樣占四字節(jié),其數(shù)據(jù)格式如圖6所示。

圖6  下位機(jī)浮點(diǎn)數(shù)數(shù)據(jù)格式

下位機(jī)浮點(diǎn)數(shù)數(shù)據(jù)格式中,數(shù)符用來(lái)指示浮點(diǎn)數(shù)的正負(fù),階符用于指示指數(shù)的正負(fù),階碼有6位,即指數(shù)范圍是0~64,小數(shù)部分比IEEE浮點(diǎn)數(shù)數(shù)據(jù)格式中多1位,因此在計(jì)算時(shí)高位無(wú)需補(bǔ)1。實(shí)際的浮點(diǎn)數(shù)數(shù)值可以通過(guò)下面公式計(jì)算:

Real =(-1)*Sign*(D/224)*2(-1)*SignE*E

實(shí)際傳輸過(guò)程中,從下位機(jī)傳來(lái)的浮點(diǎn)數(shù),需要先轉(zhuǎn)為IEEE標(biāo)準(zhǔn)格式,傳給下位機(jī)的數(shù)據(jù)同樣需要轉(zhuǎn)為下位機(jī)能夠識(shí)別的格式。由于浮點(diǎn)數(shù)存儲(chǔ)格式復(fù)雜,在轉(zhuǎn)換數(shù)據(jù)時(shí)應(yīng)盡量避免使用浮點(diǎn)數(shù)運(yùn)算。通過(guò)比較圖5和圖6可知,兩種存儲(chǔ)格式的zui后23位相同,可以共用。因此,在編程時(shí),采用共同體能夠更快的解決兩者之間的轉(zhuǎn)換。編寫共同體如下:

union {

float fdata;

unsigned char byte[4];

}data_change;

fdata中存放轉(zhuǎn)換前得浮點(diǎn)數(shù),而字符型數(shù)組byte直接對(duì)應(yīng)浮點(diǎn)數(shù)在計(jì)算機(jī)中以二進(jìn)制存儲(chǔ)的四個(gè)字節(jié)。通過(guò)對(duì)字符型數(shù)組的簡(jiǎn)單的加減法及移位計(jì)算就可以快速在兩種存儲(chǔ)格式之間轉(zhuǎn)換。 實(shí)際測(cè)試時(shí),采用共同體的數(shù)據(jù)轉(zhuǎn)換在響應(yīng)時(shí)間上要明顯優(yōu)于未采用共同體的數(shù)制轉(zhuǎn)換,提高了串口通信的實(shí)時(shí)性。

4 結(jié)論

本文創(chuàng)新點(diǎn):(1)將嵌入式Linux系統(tǒng)應(yīng)用于無(wú)紙記錄儀,使得該裝置體積小,功能強(qiáng),實(shí)時(shí)性能及可擴(kuò)展性能良好;(2)實(shí)現(xiàn)了MODBUS協(xié)議中RTU與ASCII傳輸模式的共存,使無(wú)紙記錄儀具有更強(qiáng)的通用性;(3)通過(guò)在數(shù)據(jù)轉(zhuǎn)換編程中采用共同體這方面的改進(jìn),提高了無(wú)紙記錄儀串口通信的實(shí)時(shí)性。

免責(zé)聲明

  • 凡本網(wǎng)注明“來(lái)源:儀表網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-儀表網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:儀表網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源(非儀表網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
聯(lián)系我們

客服熱線: 15024464426

加盟熱線: 15024464426

媒體合作: 0571-87759945

投訴熱線: 0571-87759942

關(guān)注我們
  • 下載儀表站APP

  • Ybzhan手機(jī)版

  • Ybzhan公眾號(hào)

  • Ybzhan小程序

企業(yè)未開通此功能
詳詢客服 : 0571-87759942
真人性做爰无遮无挡| 免费精品国偷自产在线青年| 男人放进女人阳道视频观看| 国模吧无码一区二区三区| 被按摩师玩弄到潮喷在线播放| 久久99热久久99精品| 免费无码又爽又刺激a片涩涩| 老男人把舌头伸进我下面| 97亚洲狠狠色综合久久久久| 小sao货揉揉你的奶真大视频| 国产av天堂无码一区二区三区| 女人荫蒂添的好舒服a片| 永久域名18勿进永久域名在线| 日韩精品久久日日躁夜夜躁影视| 欧美又粗又大又硬又长又爽视频| 夜精品a片一区二区三区无码白浆| 普通一本和二本的区别| 久久久久无码精品国产| 新婚警花太紧和局长出差小说| 精品人妻码一区二区三区| 浓毛妇女老太bbwbbw| 日本黄a级a片国产免费| 嫩草av久久伊人妇女超级a| 老头趴在两腿中间添我| xxxxx性bbbbb欧美| 俄罗斯少妇性做爰片| 色综合色狠狠天天综合网| 高洁在公车被灌满jing液| 国产精品久久久久9999吃药| 亚洲国产精品无码久久久老少| 亚洲无线码一区二区三区| 大肉大捧一进一出的视频| 情欲情欲欲超市全文无删减| 精品国产日韩欧美一区二区三区| 办公室少妇激情呻吟a片在线观看| 宝宝好涨水快流出来免费视频| 丰满少妇高潮惨叫久久久一| 亚洲爆乳无码精品aaa片蜜桃| 我被五个黑人p了一夜| 欧美又大又粗无码视频| 无敌神马在线观看免费完整一|