壓力變送器HART接口通信的軟件流程,可以分成數(shù)據(jù)接收、命令處理、數(shù)據(jù)發(fā)送3個(gè)階段。數(shù)據(jù)接收階段,是對(duì)AD5700解調(diào)的串口數(shù)據(jù)進(jìn)行接收,有兩種方式:
先接收整幀的數(shù)據(jù)并保存,再進(jìn)行后續(xù)處理;
(2)每接收一個(gè)字節(jié)就進(jìn)行相應(yīng)處理,處理成功再保存。由于HART一個(gè)字節(jié)的時(shí)間大約10ms,時(shí)間較長,故采用第2種方式效率會(huì)高很多。串口每接收一個(gè)字節(jié)的中斷處理流程如圖3所示,先判斷CD載波檢測是否有效,再根據(jù)標(biāo)志“當(dāng)前狀態(tài)”判斷,“空閑”表示可以對(duì)該字節(jié)進(jìn)行處理,否則表示正在處理前一條命令而需忽略此時(shí)的信號(hào)。
根據(jù)HART鏈路層規(guī)定,同一幀的字節(jié)與字節(jié)之間時(shí)間不能超過10ms,超過10ms則認(rèn)為是下一幀數(shù)據(jù),即切換“字節(jié)類型”為“前導(dǎo)符”。之后根據(jù)HART協(xié)議幀的格式,通過標(biāo)志“字節(jié)類型”來選擇壓力變送器當(dāng)前串口字節(jié)數(shù)據(jù)的處理方式。
例如,標(biāo)志“字節(jié)類型”為“前導(dǎo)符”,那么串口接收的非常好個(gè)字節(jié)送入“前導(dǎo)符”處理方式,若該字節(jié)為0xFF,進(jìn)行計(jì)數(shù),繼續(xù)接收下個(gè)字節(jié)進(jìn)行相同處理,直到出現(xiàn)界定符0x02和0x82字節(jié),且此時(shí)0xFF的個(gè)數(shù)為2~20個(gè),則切換“字節(jié)類型”為“地址”,以便下一個(gè)字節(jié)按照“地址”處理方式,期間任何環(huán)節(jié)出現(xiàn)幀格式不匹配時(shí),就切換“字節(jié)類型”為“前導(dǎo)符”。這樣能保證壓力變送器每接收的一幀數(shù)據(jù)是基本正確的。命令處理階段,如圖4所示,標(biāo)志“當(dāng)前狀態(tài)”為“接收完成”,表示一幀數(shù)據(jù)已經(jīng)被完整接收,然后依次進(jìn)行校驗(yàn),命令處理和相應(yīng)的數(shù)據(jù)處理,非常后組建響應(yīng)幀并準(zhǔn)備發(fā)送,期間任何一步出現(xiàn)錯(cuò)誤,都應(yīng)當(dāng)組建相應(yīng)的錯(cuò)誤幀數(shù)據(jù)以通知主機(jī)。
另外根據(jù)HART鏈路層規(guī)定,主機(jī)請(qǐng)求之后,必須在255ms之內(nèi)從機(jī)應(yīng)答,所以整個(gè)命令處理階段必須限制在該時(shí)間內(nèi)。之后切換HART芯片進(jìn)入發(fā)送狀態(tài),將已經(jīng)組建好的響應(yīng)幀或錯(cuò)誤幀送入串口發(fā)送即可,發(fā)送完后將標(biāo)志“當(dāng)前狀態(tài)”切換為“空閑”,以便從壓力變送器進(jìn)入接收等待狀態(tài)。
注明,淮安三暢儀表文章均為原創(chuàng),轉(zhuǎn)載請(qǐng)注明本文地址http://www.tclife.cn/