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