本發(fā)明涉及MODBUS消息幀接收方法,具體涉及一種用于DSP/BIOS的MODBUS消息幀接收方法。
背景技術(shù):
Modbus是由Modicon在1979年發(fā)明的全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議,已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),也得到廣泛應(yīng)用。確定通訊線路的空閑時間并由此準(zhǔn)確區(qū)分兩消息幀,一直是MODBUS通訊過程必須解決的重要問題?,F(xiàn)有技術(shù)中,微處理器和MODBUS設(shè)備的通訊全都采用定時器中斷的方法來實現(xiàn),即令定時器定時值等于消息幀幀間時間間距,在每次進入SCI中斷程序時重置定時器的當(dāng)前計時值,當(dāng)進入定時器中斷程序時,就說明當(dāng)前消息幀已完成傳輸,此技術(shù)可見于《煤礦機械》2013年發(fā)表的《基于STM32F103和MODBUS的礦用DTU測試系統(tǒng)設(shè)計》、王諦的《基于MODBUS協(xié)議的PC機與dsPIC6014處理器的通訊》、《實驗室研究與探索》2012年發(fā)表的《基于Modbus協(xié)議的S7-200系列PLC與單片機主從通信研究》等。這種方法雖然簡單并容易實現(xiàn),但占用了微處理器寶貴的定時器資源,使其硬件資源得不到有效利用,也提高了自動控制系統(tǒng)對微處理器的外設(shè)資源需求。
技術(shù)實現(xiàn)要素:
為了解決上述現(xiàn)有的MODBUS通訊技術(shù)占用微處理器定時器資源的問題,本發(fā)明提供了一種用于DSP/BIOS的MODBUS消息幀接收方法。
為實現(xiàn)上述目的,本發(fā)明采用下述技術(shù)方法:
一種用于DSP/BIOS的MODBUS消息幀接收方法,基于DSP/BIOS軟件平臺實現(xiàn),包括消息幀接收流程和消息幀處理流程,所述消息幀接收流程選擇SCI硬件中斷線程實現(xiàn),所述消息幀處理流程選擇周期軟中斷線程實現(xiàn)。
進一步地,所述的SCI硬件中斷線程具體運行過程為:
(1)串口接收到1字符數(shù)據(jù)后進入SCI硬件中斷線程;
(2)重置消息幀處理周期軟中斷線程計時時鐘;
(3)讀取接收到的數(shù)據(jù),并保存到接收幀數(shù)組中當(dāng)前成員號值指向的成員;
(4)接收幀數(shù)組當(dāng)前成員號加1;
(5)從SCI硬件中斷線程返回;
進一步地,消息幀處理周期軟中斷線程計時時鐘由系統(tǒng)時鐘驅(qū)動。
進一步地,消息幀處理周期軟中斷線程時鐘周期為傳輸3.5字符數(shù)據(jù)所需的時間。
進一步地,消息幀處理周期軟中斷線程采用單次運行模式。
進一步地,所述的消息幀處理周期軟中斷線程具體運行過程為:
(1)消息幀處理周期軟中斷線程計時時鐘值等于設(shè)定的時鐘周期時進入運行;
(2)接收幀數(shù)組當(dāng)前成員號清零;
(3)數(shù)據(jù)處理;
(4)發(fā)送應(yīng)答消息幀;
(5)從消息幀處理周期軟中斷線程返回。
與現(xiàn)有技術(shù)相比,本發(fā)明采用系統(tǒng)時鐘取代現(xiàn)有技術(shù)中以定時器確定字符間隔時間并準(zhǔn)確區(qū)分兩消息幀的方法,可有效節(jié)省微處理器的硬件資源,降低自動化控制系統(tǒng)對微處理器的外設(shè)資源需求。
附圖說明
圖1為本發(fā)明實施例的消息幀接收流程圖;
圖2為本發(fā)明實施例的消息幀處理流程圖;
圖3為具體實施方式中TMS320F28335型DSP與MODBUS設(shè)備的連接圖。
具體實施方式
下面結(jié)合附圖和實例對本發(fā)明進一步說明。
如圖1和圖2所示,一種用于DSP/BIOS的MODBUS消息幀接收方法,基于DSP/BIOS軟件平臺實現(xiàn),包括消息幀接收流程和消息幀處理流程,所述消息幀接收流程選擇SCI硬件中斷線程實現(xiàn),所述消息幀處理流程選擇周期軟中斷線程實現(xiàn)。
具體而言,所述的SCI硬件中斷線程具體運行過程為:
(1)串口接收到1字符數(shù)據(jù)后進入SCI硬件中斷線程;
(2)重置消息幀處理周期軟中斷線程計時時鐘;
(3)讀取接收到的數(shù)據(jù),并保存到接收幀數(shù)組中當(dāng)前成員號值指向的成員;
(4)接收幀數(shù)組當(dāng)前成員號加1;
(5)從SCI硬件中斷線程返回。
具體而言,消息幀處理周期軟中斷線程計時時鐘由系統(tǒng)時鐘驅(qū)動。
具體而言,消息幀處理周期軟中斷線程時鐘周期為傳輸3.5字符數(shù)據(jù)所需的時間。
具體而言,消息幀處理周期軟中斷線程采用單次運行模式。
具體而言,所述的消息幀處理周期軟中斷線程具體運行過程為:
(1)消息幀處理周期軟中斷線程計時時鐘值等于設(shè)定的時鐘周期時進入運行;
(2)接收幀數(shù)組當(dāng)前成員號清零;
(3)數(shù)據(jù)處理;
(4)發(fā)送應(yīng)答消息幀;
(5)從消息幀處理周期軟中斷線程返回。
DSP是數(shù)字信號處理器的簡稱,本實例選用TI公司生產(chǎn)的C2000系列、型號為TMS320F28335的DSP處理器,TMS320F28335與MODBUS設(shè)備通過RS232連接(見圖3),波特率選用9600b/s,通訊模式采用MODBUS RTU,數(shù)據(jù)傳輸格式為1bit起始位、8bit數(shù)據(jù)位、1bit停止位、無校驗位。
DSP/BIOS是TI公司特別為其TMS320C6000TM,TMS320C5000TM和TMS320C28xTM系列DSP平臺所設(shè)計開發(fā)的一個尺寸可裁剪的實時多任務(wù)操作系統(tǒng)內(nèi)核。DSP支持四種不同優(yōu)先級的線程,按照優(yōu)先級從高到低順序排列,分別是硬件中斷(HWI)、軟件中斷(SWI)、任務(wù)(TSK)和后臺線程(IDL)。周期函數(shù)(PRD)是一種特殊的軟件中斷,當(dāng)其計時時鐘等于設(shè)定的時鐘周期值時進入就緒狀態(tài),其實例主要配置參數(shù)有:
(1)period:周期函數(shù)時鐘周期值,周期函數(shù)當(dāng)前時鐘計時值達到設(shè)定的時鐘周期值時進入就緒狀態(tài),計時時鐘可由系統(tǒng)時鐘驅(qū)動,或調(diào)用PRD_tick函數(shù)后加1;
(2)mode:周期函數(shù)運行模式,有連續(xù)運行(continuous)和單次觸發(fā)(one-shot)兩種。
本發(fā)明主要使用到的API函數(shù)及其功能如下:
(1)PRD_start:用于啟動一個周期函數(shù)的計時時鐘,該周期函數(shù)在啟動并等待設(shè)定的時鐘周期后進入運行。如果在周期函數(shù)當(dāng)前時鐘計時值達到設(shè)定的時鐘周期值前再次調(diào)用PRD_start,當(dāng)前時鐘計數(shù)值從零重新開始計時。
在TMS320F28335的DSP/BIOS程序中,將消息幀接收流程創(chuàng)建為SCI硬件中斷線程,消息幀處理流程創(chuàng)建為周期軟中斷線程。其中本發(fā)明的實現(xiàn)需要設(shè)置消息幀處理線程為單次觸發(fā)模式,且其時鐘周期值(period)設(shè)置為MODBUS通訊中兩消息幀或數(shù)據(jù)包之間的最小時間間隔,即3.5字符數(shù)據(jù)傳輸時間,其計時時鐘由系統(tǒng)時鐘驅(qū)動。在波特率為9600b/s、傳輸格式為10bit,消息幀處理周期軟中斷線程時鐘周期值如下:
當(dāng)串口接收到MODBUS設(shè)備傳輸?shù)?字符數(shù)據(jù)時,DSP/BIOS程序進入消息幀接收線程。在該線程中,首先調(diào)用PRD_start函數(shù)啟動消息幀處理PRD線程的計時時鐘,然后從SCI接收寄存器中讀取數(shù)據(jù)并保存到接收幀數(shù)組,在令接收幀數(shù)組當(dāng)前成員號加1后返回。在同一個數(shù)據(jù)包的傳輸過程中,DSP/BIOS程序不斷重復(fù)以上過程。由于一個數(shù)據(jù)包中兩字符數(shù)據(jù)傳輸間隔小于消息幀處理周期軟中斷線程的時鐘周期值,并且每次進入SCI硬件中斷線程時調(diào)用PRD_start復(fù)位消息幀處理周期軟中斷線程的當(dāng)前計時時鐘值,因此DSP/BIOS程序不會進入消息幀處理周期軟中斷線程。而當(dāng)前消息幀傳輸完畢后,通訊線空閑時間大于消息幀處理周期軟中斷線程的時鐘周期值,該線程在當(dāng)前計時時鐘達到時鐘周期值后進入運行。
消息幀處理周期軟中斷線程負(fù)責(zé)處理接收到的消息幀。首先重置接收幀數(shù)組當(dāng)前成員號,以接收下一消息幀。然后對消息幀進行處理,如CRC校驗、提取消息幀數(shù)據(jù)域中的有效數(shù)據(jù)等。若TMS320F28335為MODBUS從機,根據(jù)對有效數(shù)據(jù)的解釋發(fā)送相應(yīng)的應(yīng)答消息幀后從該線程返回;若為MODBUS主機,則直接返回。
本發(fā)明的上述實施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護范圍之內(nèi)。