本發(fā)明涉及工業(yè)糧食分選機(jī)領(lǐng)域,特指是糧食分選機(jī)中高速氣閥的雙復(fù)合控制方法。具體是一種基于fpga的高速氣閥雙復(fù)合控制的方法。
背景技術(shù):
在工業(yè)糧食分選機(jī)領(lǐng)域,進(jìn)行分選操作時(shí),執(zhí)行分選動(dòng)作的方式通常有兩種。一種為通過(guò)機(jī)械結(jié)構(gòu)執(zhí)行分選動(dòng)作,另一種為使用高壓氣閥執(zhí)行分選動(dòng)作。其中,使用高壓氣閥由于結(jié)構(gòu)簡(jiǎn)單,成本低,便于控制,因此在實(shí)際應(yīng)用中被廣泛使用。在現(xiàn)實(shí)應(yīng)用中,對(duì)高壓氣閥的控制直接影響著糧食分選系統(tǒng)對(duì)糧食分選的速度和精度。在現(xiàn)有的技術(shù)中,工業(yè)糧食分選機(jī)中控制氣閥進(jìn)行分選操作的方法通常是基于單片機(jī)或者arm為核心,同過(guò)軟件算法的方式實(shí)現(xiàn),由于受到控制器的工作模式及速度的限制,因此在速度和精度上都有一定的上限。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提出一種基于fpga的高速氣閥雙復(fù)合控制的方法,通過(guò)接收雙路rs485信號(hào)復(fù)合產(chǎn)生64路氣閥控制信號(hào)。
一種基于fpga的高速氣閥雙復(fù)合控制的方法,該方法具體包括以下步驟:
步驟一:首先通過(guò)兩個(gè)獨(dú)立的串口接收模塊分別接收雙路rs485氣閥控制信號(hào),雙路信號(hào)可以同時(shí)到達(dá),也可不同時(shí)到達(dá)。
每路氣閥控制信號(hào)為14個(gè)字節(jié)組成的一個(gè)控制幀,其中幀頭為一個(gè)字節(jié),接下來(lái)的8個(gè)字節(jié),共64位代表氣閥的控制信號(hào),0到63位若對(duì)應(yīng)位上的值為1則代表打開該路氣閥,值為0代表關(guān)閉該路氣閥。之后兩分字節(jié)代表低壓信號(hào)持續(xù)時(shí)間,分別為低壓信號(hào)持續(xù)時(shí)間高八位,低壓信號(hào)持續(xù)時(shí)間低八位。之后兩個(gè)字節(jié)為校驗(yàn)位,最后一個(gè)字節(jié)為幀尾,代表一個(gè)控制幀的結(jié)束。
步驟二:定義64位氣閥控制信號(hào)寄存器qifa_1z,0到63位對(duì)應(yīng)位若為1則代表改路氣閥打開,0代表該路氣閥關(guān)閉;定義16位低壓信號(hào)延時(shí)寄存器delay_1z,寄存低壓信號(hào)持續(xù)時(shí)間t1;當(dāng)接收完成信號(hào)rxd_1_done到來(lái)時(shí),將氣閥控制幀對(duì)應(yīng)信息置入上述兩個(gè)寄存器;
步驟三:定義第一通道的基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt,基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt為0到tt循環(huán)計(jì)數(shù),若系統(tǒng)時(shí)鐘是f,單位為mhz,則基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt為tt/f循環(huán)計(jì)數(shù)。此時(shí)間tt/f為低壓信號(hào)時(shí)間精度;其中tt為自定義的一個(gè)數(shù)值;
步驟四:定義計(jì)數(shù)器cnt_delay_1z來(lái)產(chǎn)生第一通道低壓信號(hào),當(dāng)rxd_1_done信號(hào)到來(lái)時(shí)將計(jì)數(shù)器cnt_delay_1z清零。當(dāng)基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt記到tt-1且計(jì)數(shù)器cnt_delay_1z的數(shù)值小于等于delay_1z的數(shù)值時(shí),計(jì)數(shù)器cnt_delay_1z向上計(jì)數(shù),否則保持原值。當(dāng)計(jì)數(shù)器cnt_delay_1z大于0且小于delay_1z值時(shí)第一通道的低壓控制信號(hào)為1,否則為0。
步驟五:產(chǎn)生第二通道的低壓控制信號(hào)
產(chǎn)生第二通道的低壓控制信號(hào)與產(chǎn)生第一通道的低壓控制信號(hào)方法完全相同,即重復(fù)步驟二-步驟四;
步驟六:將第一通道的低壓控制信號(hào)與第二通道的低壓控制信號(hào)相或得到最終復(fù)合的低壓控制信號(hào);
步驟七:高壓控制信號(hào)由狀態(tài)機(jī)產(chǎn)生,定義兩個(gè)狀態(tài)分別為空閑態(tài)idle以及計(jì)數(shù)態(tài)cnt;用復(fù)合低壓信號(hào)的上升沿作為空閑態(tài)idle向計(jì)數(shù)態(tài)cnt跳轉(zhuǎn)的信號(hào);進(jìn)入計(jì)數(shù)態(tài)cnt后計(jì)數(shù)器cnt_h開始計(jì)數(shù),當(dāng)該計(jì)數(shù)器記滿tc后將其清空,并將狀態(tài)回到空閑態(tài)idle,若系統(tǒng)時(shí)鐘是f,單位為mhz,則計(jì)數(shù)時(shí)間是t3=tc/f,單位為s;tc為自定義的一個(gè)數(shù)值;
步驟八:當(dāng)計(jì)數(shù)器cnt_h大于0且小于tc時(shí),高壓控制信號(hào)為1,否則為0;
步驟九:若需打開一路的氣閥,則只需將控制該路氣閥打開的高壓以及低壓信號(hào)置入該路氣閥對(duì)應(yīng)的控制管腳;依次判斷雙通道0至63位氣閥控制信號(hào)寄存器qifa_1z,qifa_2z,若雙路中至少有一路為1,則將復(fù)合低壓信號(hào)以及高壓信號(hào)置入對(duì)應(yīng)該路氣閥控制信號(hào)管腳;否則在對(duì)應(yīng)的控制管腳輸出初始電平0。這樣就可以對(duì)64路氣閥進(jìn)行精確控制。
與現(xiàn)有的技術(shù)相比,本發(fā)明的有益效果是:同時(shí)接收雙路rs485信號(hào)做為高速氣閥控制信號(hào),可用于更為復(fù)雜的控制系統(tǒng)?;趂pga的高速氣閥雙復(fù)合控制的方法,系統(tǒng)頻率可達(dá)100m,氣閥噴氣時(shí)間精度可達(dá)1ms,可同時(shí)精確控制64路高速氣閥,大大提高了糧食分選機(jī)分分選效率與分選精度。
附圖說(shuō)明
圖1為該方法硬件結(jié)構(gòu)示意圖;
圖2為氣閥控制信號(hào)時(shí)序圖。
具體實(shí)施方式
如圖1所示,由兩個(gè)獨(dú)立的串口接收模塊:串口接收模塊1、串口接收模塊2,分別接收兩路rs485氣閥控制幀信號(hào);串口接收模塊1接收完成后,將接收到的64路氣閥開關(guān)信息及第一通道低壓12v信號(hào)持續(xù)時(shí)間信息傳給第一通道低壓12v信號(hào)產(chǎn)生組合邏輯以產(chǎn)生第一通道低壓12v信號(hào);第一通道低壓12v信號(hào)產(chǎn)生組合邏輯產(chǎn)生第一通道低壓12v信號(hào)后把第一通道低壓12v信號(hào)傳給雙路低壓12v信號(hào)復(fù)合模塊,并把第一通道的64路氣閥開關(guān)信息傳給64路氣閥信號(hào)選擇器;同理,串口接收模塊2接收完成后,將接收到的64路氣閥開關(guān)信息及第二通道低壓12v信號(hào)持續(xù)時(shí)間信息傳給第二通道低壓12v信號(hào)產(chǎn)生組合邏輯以產(chǎn)生第二通道低壓12v信號(hào);第二通道低壓12v信號(hào)產(chǎn)生組合邏輯產(chǎn)生第二通道低壓12v信號(hào)后把第二通道低壓12v信號(hào)傳給雙路低壓12v信號(hào)復(fù)合模塊,并把第二通道的64路氣閥開關(guān)信息傳給64路氣閥信號(hào)選擇器。雙路低壓12v信號(hào)復(fù)合模塊,在接收到雙路低壓12v信號(hào)后通過(guò)復(fù)合雙路低壓12v信號(hào)產(chǎn)生復(fù)合的12v低壓信號(hào),并將復(fù)合的12v低壓信號(hào)傳給高壓110v信號(hào)產(chǎn)生狀態(tài)機(jī)以及64路氣閥信號(hào)選擇器;高壓110v信號(hào)產(chǎn)生狀態(tài)機(jī)根據(jù)復(fù)合的12v低壓信號(hào)的上升沿產(chǎn)生高壓110v信號(hào)并將高壓110v信號(hào)傳給64路氣閥信號(hào)選擇器;64路氣閥信號(hào)選擇器根據(jù)接收的雙路64路氣閥開關(guān)信息以及復(fù)合的12v低壓信號(hào)和高壓110v信號(hào)產(chǎn)生64路氣閥高壓和低壓控制信號(hào)。
復(fù)合的12v低壓信號(hào)和高壓110v信號(hào)產(chǎn)生的具體時(shí)序如圖2所示:第一通道串口接收完成信號(hào)rxd_1_done到來(lái)時(shí)產(chǎn)生第一通道的12v低壓信號(hào)(s_1_12v)持續(xù)時(shí)間為t1;第二通道串口接收完成信號(hào)rxd_2_done到來(lái)時(shí)產(chǎn)生第二通道的12v低壓信號(hào)(s_2_12v)持續(xù)時(shí)間為t2;第一通道的12v低壓信號(hào)與上第二通道的12v低壓信號(hào)得到復(fù)合的12v低壓信號(hào)(s_12v);通過(guò)復(fù)合的12v低壓信號(hào)產(chǎn)生110v高壓信號(hào)(s_110v),持續(xù)時(shí)間為t3。
產(chǎn)生復(fù)合的64路氣閥高壓110v和低壓12v控制信號(hào)的具體步驟如下:
步驟一:首先通過(guò)兩個(gè)獨(dú)立的串口接收模塊分別接收雙路rs485氣閥控制信號(hào),雙路信號(hào)可以同時(shí)到達(dá),也可不同時(shí)到達(dá)。
每路氣閥控制信號(hào)為14個(gè)字節(jié)組成的一個(gè)控制幀,其中幀頭為一個(gè)字節(jié),接下來(lái)的8個(gè)字節(jié),共64位代表氣閥的控制信號(hào),0到63位若對(duì)應(yīng)位上的值為1則代表打開該路氣閥,值為0代表關(guān)閉該路氣閥。之后兩分字節(jié)代表低壓信號(hào)持續(xù)時(shí)間,分別為低壓信號(hào)持續(xù)時(shí)間高八位,低壓信號(hào)持續(xù)時(shí)間低八位。之后兩個(gè)字節(jié)為校驗(yàn)位,最后一個(gè)字節(jié)為幀尾,代表一個(gè)控制幀的結(jié)束。
步驟二:定義64位氣閥控制信號(hào)寄存器qifa_1z,0到63位對(duì)應(yīng)位若為1則代表改路氣閥打開,0代表該路氣閥關(guān)閉;定義16位低壓信號(hào)延時(shí)寄存器delay_1z,寄存低壓信號(hào)持續(xù)時(shí)間t1;當(dāng)接收完成信號(hào)rxd_1_done到來(lái)時(shí),將氣閥控制幀對(duì)應(yīng)信息置入上述兩個(gè)寄存器;
步驟三:定義第一通道的基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt,基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt為0到tt循環(huán)計(jì)數(shù),若系統(tǒng)時(shí)鐘是f,單位為mhz,則基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt為tt/f循環(huán)計(jì)數(shù)。此時(shí)間tt/f為低壓信號(hào)時(shí)間精度;其中tt為自定義的一個(gè)數(shù)值;
步驟四:定義計(jì)數(shù)器cnt_delay_1z來(lái)產(chǎn)生第一通道低壓信號(hào),當(dāng)rxd_1_done信號(hào)到來(lái)時(shí)將計(jì)數(shù)器cnt_delay_1z清零。當(dāng)基準(zhǔn)時(shí)間計(jì)數(shù)器cnt_1_bt記到tt-1且計(jì)數(shù)器cnt_delay_1z的數(shù)值小于等于delay_1z的數(shù)值時(shí),計(jì)數(shù)器cnt_delay_1z向上計(jì)數(shù),否則保持原值。當(dāng)計(jì)數(shù)器cnt_delay_1z大于0且小于delay_1z值時(shí)第一通道的低壓控制信號(hào)為1,否則為0。
步驟五:產(chǎn)生第二通道的低壓控制信號(hào)
產(chǎn)生第二通道的低壓控制信號(hào)與產(chǎn)生第一通道的低壓控制信號(hào)方法完全相同,即重復(fù)步驟二-步驟四;
步驟六:將第一通道的低壓控制信號(hào)與第二通道的低壓控制信號(hào)相或得到最終復(fù)合的低壓控制信號(hào);
步驟七:高壓控制信號(hào)由狀態(tài)機(jī)產(chǎn)生,定義兩個(gè)狀態(tài)分別為空閑態(tài)idle以及計(jì)數(shù)態(tài)cnt;用復(fù)合低壓信號(hào)的上升沿作為空閑態(tài)idle向計(jì)數(shù)態(tài)cnt跳轉(zhuǎn)的信號(hào);進(jìn)入計(jì)數(shù)態(tài)cnt后計(jì)數(shù)器cnt_h開始計(jì)數(shù),當(dāng)該計(jì)數(shù)器記滿tc后將其清空,并將狀態(tài)回到空閑態(tài)idle,若系統(tǒng)時(shí)鐘是f,單位為mhz,則計(jì)數(shù)時(shí)間是t3=tc/f,單位為s;tc為自定義的一個(gè)數(shù)值;
步驟八:當(dāng)計(jì)數(shù)器cnt_h大于0且小于tc時(shí),高壓控制信號(hào)為1,否則為0;
步驟九:若需打開一路的氣閥,則只需將控制該路氣閥打開的高壓以及低壓信號(hào)置入該路氣閥對(duì)應(yīng)的控制管腳;依次判斷雙通道0至63位氣閥控制信號(hào)寄存器qifa_1z,qifa_2z,若雙路中至少有一路為1,則將復(fù)合低壓信號(hào)以及高壓信號(hào)置入對(duì)應(yīng)該路氣閥控制信號(hào)管腳;否則在對(duì)應(yīng)的控制管腳輸出初始電平0。這樣就可以對(duì)64路氣閥進(jìn)行精確控制。